User Tools

Site Tools


lbaops:expres:commandset

Minimal Mark5A Command Set for eVLBI

During eVLBI the JIVE correlator control software issues the following commands from the Mark5A command set to the Mark5 at the station:

  • play_rate
  • play
  • net_protocol
  • in2net
  • mode
  • status?

The Mark5A protocol uses two TCP ports:

  • m5data 2630/tcp # Mark5 data
  • m5drive 2620/tcp # Mark5 control

Commands are sent to the m5drive port as newline terminated strings. The replies should be newline terminated too. Data should be sent to the m5data port.

Here's a more detailed description for the commands issued:

play_rate=data:<rate>

Used to set the output data rate of the Mark5 at the station. It's probably safe to ignore this command, but there might be problems if you send data at a higher data rate than the Mark5 on our end expects. In that case you could use the value in combination with the mode to determine the data rate at which to send data. This command is probably going to change slightly for Mark5A+/Mark5B. We'll have to figure out the details when we get eVLBI working with Mark5B.

Expected response:

[=!=]play_rate = 0 ;

play=off

Used to make the Mark5 stop playing if it was playing back data from disk. You should never see this command if you never report that your fake Mark5 is playing in your replies to the status? query.

net_protocol=<protocol>:<sockbuf size>:<workbuf size>

Used to set the network data-transport protocol. The <workbuf size> argument is probably only relevant for a real Mark5. The <sockbuf size> argument is the socket send buffer size, which we can control on our side on a per-station basis. You should probably use this value in a setsockopt(…, SOL_SOCKET, SO_SBDBUF, …) call on the socket used to send the data. Protocol can be tcp or udp, but lately we only have been using tcp. You should re

Expected response:

[=!=]net_protocol = 0 ;

in2net=connect:<ip>

Used to make the Mark5 at the station connect to the Mark5 at JIVE. The <ip> argument will be the IP address of the Mark5 at JIVE, which should at that point be ready to accept a connection from the Mark5 at the station. The connection should be made to the m5data port. No data should be sent yet.

Expected response:

[=!=]in2net = 0 ;

in2net=on

Used to make the Mark5 at the station start sending data.

Expected response:

[=!=]in2net = 1 ;

in2net=disconnect

Used to make the Mark5 at the station stop sending data and terminate the (tcp) connection.

Expected response:

[=!=]in2net = 0 ;

mode=<data mode>:<data submode>

Used to set the playback mode of the Mark5 at the station. It's probably safe to ignore this command, but as with the play_rate command, the information might ne needed to send data out at the right data rate. This command is probably going to change slightly for Mark5A+/Mark5B. We'll have to figure out the details when we get eVLBI working with Mark5B.

Expected response:

[=!=]mode = 0 ;

status?

Used to query the status of the (remote) Mark5. At the very minimum, report system ready (bit 0) and in2net sending (bit 16) when appropriate. You might want to set error bits too, if you detect something is amiss.

Expected response:

[=!=]status? 0 : 0x00000001 ; (when not sending data)
[=!=]status? 0 : 0x00010001 ; (when sending data)

An example session

Here is a log file from the su_control program that does all the interaction with the local and remote Mark5. All the issued commands are in there. Here The local Mark5 at JIVE has IP address 10.88.0.55, the remote Mark5A at Mc has IP address 192.168.89.195.

su_control.log

lbaops/expres/commandset.txt · Last modified: 2015/12/18 16:38 (external edit)