Taken from Mark5B System User's Manual (9 June 2006) Section 5.
Data on disk is divided into equal-length disk frames (DF). Each DF has a header of 4 32-bit words followed by 2500 32-bit words of data (10000 bytes). The DF boundary is aligned with the UT second tick.
Word 0 | Synchronization word (0xABADDEED) |
Word 1 | Bits 31-16: User specifed |
Bit 15: T - tvg data (test data if set) | |
Bits 14-0: DF # within second | |
Word 2-3 | VLBA BCD Time code and 16 bit CRC |
Sync word (32 bit) | ||
User-specifed (16 bits) | T | Frame# within second (starting at 0) |
VLBA BCD Time code word 1 ('JJJSSSSS') | ||
VLBA BCD Time code word 2 (16 bit) ('.SSSS') | CRC 16 bit |
Raw VLBI data is packed within a 32 bit word, with the earliest time sample corresponding to the least significant bit.
The Mark5A protocol uses two TCP ports:
Commands are sent to the m5drive port as newline terminated strings. The replies are newline terminated also.
Data is sent to the m5data port.
Used to set the output data rate of the Mark5 at the station.
Expected response:
[=!=]play_rate = 0 ;
Used to make the Mark5 stop playing if it was playing back data from disk.
Used to set the network data-transport protocol. The <sockbuf size> argument is the socket send buffer size. You should probably use this value in a setsockopt(…, SOL_SOCKET, SO_SBDBUF, …) call on the socket used to send the data.
Expected response:
[=!=]net_protocol = 0 ;
Set the mtu for UDP transfers
Expected response:
[=!=] !mtu = 0 : $mtu bytes;
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 will be sent yet.
Expected response:
[=!=]in2net = 0 ;
Used to make the Mark5 at the station start sending data.
Expected response:
[=!=]in2net = 1 ;
Used to make the Mark5 at the station stop sending data and terminate the connection.
Expected response:
[=!=]in2net = 0 ;
??
Expected response:
[=!=]in2net = 0 ;
Used to set the playback mode of the Mark5 at the station.
Expected response:
[=!=]mode = 0 ;
Used to query the status of the (remote) Mark5.
Expected response:
[=!=]status? 0 : 0x00000001 ; (when not sending data)
[=!=]status? 0 : 0x00010001 ; (when sending data)
Request play state (disk only??)
Expected response:
[=!=]status? 0 : 0x00000001 ; (when not sending data)
[=!=]status? 0 : 0x00010001 ; (when sending data)
To set the Mark5b clock rate to “rate”
[=!=]clock_set = 0 ;
To setup the Mark5 to send the TVG test vector, run:
mode=tvg:8 play_rate=data:4
This will send 8 tracks at 4 Mbps, ie a total of 32 Mbps.