During eVLBI the JIVE correlator control software issues the following commands from the Mark5A command set to the Mark5 at the station:
The Mark5A protocol uses two TCP ports:
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:
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.
[=!=]play_rate = 0 ;
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.
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
[=!=]net_protocol = 0 ;
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.
[=!=]in2net = 0 ;
Used to make the Mark5 at the station start sending data.
[=!=]in2net = 1 ;
Used to make the Mark5 at the station stop sending data and terminate the (tcp) connection.
[=!=]in2net = 0 ;
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.
[=!=]mode = 0 ;
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.
[=!=]status? 0 : 0x00000001 ; (when not sending data)
[=!=]status? 0 : 0x00010001 ; (when sending data)
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.