Technical Reference:SignalSharingClient Library
The SignalSharingClient library provides a SignalSharing client, wrapped into a C interface. It may be used to tap into signal and state data at any point of processing from external applications. The SignalSharingClient library can be used from any programming language that allows using a shared library (DLL). Although the SignalSharingClient library is written in C++, its DLL interface is plain C, and can be used with compiled languages such as C, C++, C#, Pascal, but also with interpreted languages that can call functions in a DLL, such as Python, Matlab, VisualBasic, etc. Interfacing with Java requires a JNI (Java Native Interface) wrapper, which is currently not provided by BCI2000.
Functions provided by the Library
SSC_RESULT DLLEXPORT STDCALL SSC_CreateConnector(const char* listeningAddress, SSC_HANDLE*)
Create a connector object, and obtain a handle to it. A connector object is necessary to handle a connection to BCI2000. The listening address is in the format <IP>:<port> with <IP> being a name or numeric address.
SSC_RESULT DLLEXPORT STDCALL SSC_DeleteConnector(SSC_HANDLE)
Delete a connector object. Must be called when connector object is no longer used.
SSC_RESULT DLLEXPORT STDCALL SSC_RegisterSignalCallback(SSC_HANDLE, SSC_CALLBACK, void* refdata)
Register a callback to be called whenever new signal data is available. For each connector object, it is only possible to register one signal callback at a time. To unregister a signal callback, call SSC_RegisterSignalCallback() with a nullptr argument. Use the <refdata> argument to specify auxiliary data which will be provided to the callback function when it is called.
SSC_RESULT DLLEXPORT STDCALL SSC_RegisterStatesCallback(SSC_HANDLE, SSC_CALLBACK, void* refdata)
Register a callback to be called whenever new state data is available. For each connector object, it is only possible to register one states callback at a time. To unregister a signal callback, call SSC_RegisterStatesCallback() with a nullptr argument. Use the <refdata> argument to specify auxiliary data which will be provided to the callback function when it is called.
SSC_RESULT DLLEXPORT STDCALL SSC_RegisterParametersCallback(SSC_HANDLE, SSC_CALLBACK, void* refdata)
Register a callback to be called whenever new parameter data is available. For each connector object, it is only possible to register one parameters callback at a time. To unregister a signal callback, call SSC_RegisterParametersCallback() with a nullptr argument. Use the <refdata> argument to specify auxiliary data which will be provided to the callback function when it is called.
SSC_RESULT DLLEXPORT STDCALL SSC_LockSignal(SSC_HANDLE, const double** pSignal, int* channels, int* samples, const char* const** channelNames)
Lock signal data and obtain signal information. Typically, this function will be called from a signal callback. Locking blocks the arrival of new signal data, so call SCC_ReleaseSignal() as soon as possible. All pointer arguments are optional, may be nullptr.
SSC_RESULT DLLEXPORT STDCALL SSC_ReleaseSignal(SSC_HANDLE)
SSC_RESULT DLLEXPORT STDCALL SSC_LockStates(SSC_HANDLE, const double**, int* count, int* samples, const char* const** pStateNames)
Lock state data and obtain state information.
Locking blocks the arrival of new state data, so call SCC_ReleaseStates() as soon as possible.
All pointer arguments are optional, may be nullptr
SSC_RESULT DLLEXPORT STDCALL SSC_ReleaseStates(SSC_HANDLE)
SSC_RESULT DLLEXPORT STDCALL SSC_LockParameters(SSC_HANDLE, const char* const** parameterLines, int* count)
Lock signal data and obtain signal information.
Locking blocks the arrival of new parameter data, so call SCC_ReleaseParameters() as soon as possible.
All pointer arguments are optional, may be nullptr
SSC_RESULT DLLEXPORT STDCALL SSC_ReleaseParameters(SSC_HANDLE)
SSC_RESULT DLLEXPORT STDCALL SSC_GetSignalDimensions(SSC_HANDLE, int*, int*)
Get signal dimensions for use with PushSignal()
SSC_RESULT DLLEXPORT STDCALL SSC_PushSignal(SSC_HANDLE, const double*)
Push signal data
SSC_RESULT DLLEXPORT STDCALL SSC_PushState(SSC_HANDLE, const char*, unsigned int)
Push a state value
SSC_RESULT DLLEXPORT STDCALL SSC_Commit(SSC_HANDLE)
Commit pushed signal and state data to BCI2000
See also
Technical Reference:BCI2000Remote Library, Programming Reference:BCI2000Remote Class, Contributions:BCI2000Command, Contributions:BCI2000PresentationLink, Contributions:Applications