Technical Reference:SignalSharingClient Library: Difference between revisions
Created page with "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..." |
|||
| Line 56: | Line 56: | ||
==See also== | ==See also== | ||
[[Programming Reference:BCI2000Remote Class]], [[Contributions:BCI2000Command]], [[Contributions:BCI2000PresentationLink]], <!--[[Contributions:BCI2000Automation]],--> | [[Technical Reference:BCI2000Remote Library]], [[Programming Reference:BCI2000Remote Class]], [[Contributions:BCI2000Command]], [[Contributions:BCI2000PresentationLink]], <!--[[Contributions:BCI2000Automation]],--> | ||
[[Contributions:Applications]] | [[Contributions:Applications]] | ||
[[Category:External Interfaces]][[Category:User Application]] | [[Category:External Interfaces]][[Category:User Application]] | ||
Revision as of 14:08, 11 March 2026
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.
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)
SSC_RESULT DLLEXPORT STDCALL SSC_RegisterStatesCallback(SSC_HANDLE, SSC_CALLBACK, void* refdata)
SSC_RESULT DLLEXPORT STDCALL SSC_RegisterParametersCallback(SSC_HANDLE, SSC_CALLBACK, void* refdata)
Register callbacks to be called whenever new signal, states, or parameter data is available.
SSC_RESULT DLLEXPORT STDCALL SSC_LockSignal(SSC_HANDLE, const double**, int* channels, int* samples, const char* const** channelNames)
Lock signal data and obtain signal information.
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