beautypg.com

3 sending gcf streams over a serial link – Guralp Systems CMG-DM24 User Manual

Page 110

background image

CMG-DM24

Recovering missing data

Because the UDP packets have sequence numbers, the client can
detect when a packet has been lost. To recover this data, it initiates a

TCP connection to the server, on the same port number. If the server
accepts the connection, the client sends a single-byte command to the

server. The commands available are:

0xf9 (249) : Requests the server to use TCP only when communicating
with this client. Subsequent GCF data packets will be sent over the

active TCP connection, with the same format as the normal UDP
packets.

This feature is supported by the server in Scream! 4.0 and above.

0xfc (252) : Requests a version string, returned in PASCAL format

(i.e. first octet = length, remainder = null-terminated string)

0xfe (254) : Requests the oldest sequence number held by the server.
The sequence number is returned as 2 octets in big-endian byte order

0xff (255) sequence-number : Requests a block by sequence

number. The block is returned on the TCP connection in one of the
above formats. If the block is not available, the server returns 0xff
0xff 0xff 0xff. The sequence number is 2 octets long, with big-
endian byte order.

When the client has all the blocks it needs, it is free to close the

connection.

7.3 Sending GCF streams over a serial link

Before it can be sent over a serial link, each GCF data block must be

packaged in a 'transport layer', which consists of a 4-byte transmission
header and a 2-byte checksum tail.

The transport layer

The transmission header consists of 4 bytes:

1

2

3

4

ASCII G (0x47)

Block sequence
number

Block size (MSB)

Block size (LSB)

110

Issue N