Jump to content

Technical Reference:SignalSharingClient Library: Difference between revisions

From BCI2000 Wiki
Mellinger (talk | contribs)
Mellinger (talk | contribs)
Line 4: Line 4:


===SSC_RESULT DLLEXPORT STDCALL SSC_CreateConnector(const char* listeningAddress, SSC_HANDLE*)===
===SSC_RESULT DLLEXPORT STDCALL SSC_CreateConnector(const char* listeningAddress, SSC_HANDLE*)===
Create a connector object, and obtain a handle to it.  
Create a connector object, and obtain a handle to it. A connector object is necessary to handle a connection to BCI2000.
  Listening address is in the format IP:port with IP being a name or numeric address.
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)===
===SSC_RESULT DLLEXPORT STDCALL SSC_DeleteConnector(SSC_HANDLE)===
Delete a connector object. Must be called when connector object is no longer used.
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_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 <tt>SSC_RegisterSignalCallback()</tt> with a <tt>nullptr</tt> 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)===
===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 <tt>SSC_RegisterStatesCallback()</tt> with a <tt>nullptr</tt> 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)===
===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.
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 <tt>SSC_RegisterParametersCallback()</tt> with a <tt>nullptr</tt> 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**, int* channels, int* samples, const char* const** channelNames)===
===SSC_RESULT DLLEXPORT STDCALL SSC_LockSignal(SSC_HANDLE, const double**, int* channels, int* samples, const char* const** channelNames)===

Revision as of 14:13, 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. 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**, 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