This project requires the Presentation SDK, Boost 1.51, and the Lab Streaming Layer source code.
The project files should be placed in a folder structure as follows:
[basedir]/lslpresentation - this repository
[basedir]/external/boost/boost_1_51_0/ - boost files
[basedir]/external/lsl - the LSL source repository
[basedir]/PresentationSDK - the Presentation SDK files
The extension DLL depends on the LSL dll (liblsl32.dll), which should be placed in the same folder as the extension. It may be necessary to rebuild that DLL from source rather than using the one distributed in the bin directory of the LSL repository. The extension may be stored in any convenient location, though it may not be moved after registration with Presentation.
Once the extension is registered with the Presentation extension manager, it can be selected as a data port in Presentation's port settings. Information about the stream outlet name, ID, and connection status can be found in the data port properties window reachable through the "Properties" button that appears when the data port is selected within Presentation's port settings. The Connection Settings property allows users to choose whether the LSL stream outlet should be automatically opened whenever when Presentation starts, or whether it must be manually opened after Presentation is launched.
All events that are logged in the Presentation logfile will also be sent out as LSL string markers. The LSL local clock time for the marker event is the Presentation time for the event. The extension has 3 modes that determine the content of this string.
1) All event information (XML format)
Each event string contains a section of XML (not a complete document) with the following format:
<pevent><etype>[Event Type]</etype><ecode>[Event Code]</ecode><unc>[Uncertainty]</unc>[Other]</pevent>
2) Event codes only
Each event string will be the Presentation "event code" for the event.
3) Event codes only (Only allow non-negative integer output)
If the Presentaton "event code" for the event is the string representation of a non-negative integer, that string is sent. If it is not, a default string (which must be a non-negative integer) specified in the data port settings is sent instead. Thus, this mode guarantees that all markers are string representations of non-negative integers.
The PCL data_port_ext::process_message method can be used to send an arbitrary string to LSL. However, the data_port_ext::process_message method argument must begin with the substring "send:". The string content after the initial "send:" will be send to LSL. However, if the "integer only" mode of the extension is being used, that restriction is applied. The LSL event time will be the time of the call.
The wiki uses Markdown syntax.