Jump to content

Programming Reference:NatusADC: Difference between revisions

From BCI2000 Wiki
No edit summary
No edit summary
Line 11: Line 11:
== NatusDataServer ==
== NatusDataServer ==
This class handles the server-side processing. It performs the following functions - starts-up the TCP and UDP server, check for new connections, gracefully disconnects from the client, registers various callbacks on client connection and deregister the callbacks when the client disconnects and responds to the following commands from the client via TCP protocol:
This class handles the server-side processing. It performs the following functions - starts-up the TCP and UDP server, check for new connections, gracefully disconnects from the client, registers various callbacks on client connection and deregister the callbacks when the client disconnects and responds to the following commands from the client via TCP protocol:
; CMD_Ping : a
; CMD_Ping : To check if the connection is successful and data can be sent and received.
; CMD_GetInformation : a
; CMD_GetInformation : To send the device information such as the number of channels and sampling rate to the client.
; CMD_GetChannelNames : a
; CMD_GetChannelNames : To send the channel names as set by the device to the client. If no channel names are set, NULL is sent.
; CMD_StartStream : a
; CMD_StartStream : To start sending channel data over UDP port.
; CMD_StopStream : a
; CMD_StopStream : To stop sending channel data
; CMD_SelectChannels : a
; CMD_SelectChannels : To send data only for the channels numbers mentioned in the payload
; CMD_SetBlockSize : a
; CMD_SetBlockSize : To set the number of blocks to send per packet.
; CMD_GetDecimationFactor : a
; CMD_GetDecimationFactor : To get the current decimation factor of the device/server.
; CMD_SetDecimationFactor : a
; CMD_SetDecimationFactor : To set the decimation factor of the device/server.


== NatusClient ==
== NatusClient ==
This class handles the client-side processing. It connects with the server/device, gets data from the operator module of the NatusADC and sends it to the server/device. It uses various commands as described in the NatusDataServer to set different parameters. Another important function of this class is to linearly interpolate the missing UDP packets.
This class handles the client-side processing. It connects with the server/device, gets data from the operator module of the NatusADC and sends it to the server/device. It uses various commands as described in the NatusDataServer to set different parameters. Another important function of this class is to linearly interpolate the missing UDP packets.

Revision as of 17:51, 22 May 2019

NatusADC module has 3 main classes - NatusPackageInterface, NatusDataServer and NatusClient. Need to add image

NatusPackageInterface

This class handles the communication between the server/device and the client. It should be included with both - NatusDataServer and NatusClient Class. The class performs the following functions -constructing TCP and UDP packets, calculating the CRC of a packet and checking the CRC on the receiving side, sending the packets over TCP/UDP port, receiving packets over TCP/UDP Port, reconstructing the data from the packets and listening for connections on device/server-side.
The format of the packets constructed is as follows: Need to add image (uint32_t)Length of the packet,(uint8_t) command, (variable)payload, (uint8_t) CRC

NatusDataServer

This class handles the server-side processing. It performs the following functions - starts-up the TCP and UDP server, check for new connections, gracefully disconnects from the client, registers various callbacks on client connection and deregister the callbacks when the client disconnects and responds to the following commands from the client via TCP protocol:

CMD_Ping
To check if the connection is successful and data can be sent and received.
CMD_GetInformation
To send the device information such as the number of channels and sampling rate to the client.
CMD_GetChannelNames
To send the channel names as set by the device to the client. If no channel names are set, NULL is sent.
CMD_StartStream
To start sending channel data over UDP port.
CMD_StopStream
To stop sending channel data
CMD_SelectChannels
To send data only for the channels numbers mentioned in the payload
CMD_SetBlockSize
To set the number of blocks to send per packet.
CMD_GetDecimationFactor
To get the current decimation factor of the device/server.
CMD_SetDecimationFactor
To set the decimation factor of the device/server.

NatusClient

This class handles the client-side processing. It connects with the server/device, gets data from the operator module of the NatusADC and sends it to the server/device. It uses various commands as described in the NatusDataServer to set different parameters. Another important function of this class is to linearly interpolate the missing UDP packets.