Configure Berlin network I/O controller

Top  Previous  Next

Configure hardware Berlin network I/O controller.

 

This option entered Whisker in May 2010. The biology group in Charité Universitätsmedizin Berlin led by York Winter has network-based I/O controllers; that is, they have software that talks to digital I/O devices. Whisker communicates with this software (thereby supporting their I/O devices) through TCP/IP.

 

You can configure up to 16 controllers (numbered 0-15). Each has the following options:

 

WhiskerServer_ConfigureBerlin

 

Note that Whisker looks for these servers at startup time. If it finds them, it adds them to the set of Whisker's digital I/O lines (and if not, then Whisker won't look for them again). If communication with one of the Berlin servers is lost, Whisker flags an errors in its log, and flags all the lines as "FAILED" in its line list - but it does not attempt to reconnect (on the principle that if the connection is unreliable, then the lines shouldn't be used). Clearly, this system is designed to work on internal networks (within a single computer) or local networks of guaranteed connectivity.

 

The communications specification used by the Berlin servers is as follows:

TCP/IP
Messages separated by CR LF (\n\r).
Nagle algorithm disabled on both sides (necessary for real-time performance).

 

The command syntax used by the Berlin servers is as follows:

FROM WHISKER TO BERLIN SERVER:

GetNumberOfInputChannels (leads to NumberOfInputChannels message)
GetNumberOfOutputChannels (leads to NumberOfOutputChannels message)
SetChannelOn channel (no response)
SetChannelOnPulse channel durationms (no response)
SetChannelOff channel (no response)
GetSensorState channel (leads to SensorState message)

FROM BERLIN SERVER TO WHISKER:

NumberOfInputChannels max (input channels are numbered from 0 to max-1)
NumberOfOutputChannels max (output channels are numbered from 0 to max-1)
SensorState channel state (no response; "state" is "0" or "1"; may arise spontaneously as the inputs change state, or in response to a GetSensorState message)