UDP Networking

Introduction

The radar acts as a UDP client/server and therefore can send and receive UDP datagrams. The radar supports a UDP IP address that can be a multicast address and defaults to 239.69.69.69 on port 6317, which, is IANA allocated to Navtech. The IP addresses and the port are all configurable via the radar management software.

Contents



UDP Message Structure

Each message includes a header of 8 bytes followed by a variable length payload. The header includes the message type and payload size enabling the client software to reliably decode the payload data as required. When sending messages to a radar if the Radar Serial number field is set to 0 then the message is considered a broadcast and all radar will respond. To send a message to specific radar set the serial number to that of the radar that is required to respond.

Typically there are 2 types of payloads;

  • Byte array representing a structure made up from standard C++ data types

  • Byte array representing a serialised Protocol Buffer message

  • Byte arrays that represent both of the above

For more information on Google Protocol Buffers please see reference [https://developers.google.com/protocol-buffers/ ]. Navtech can provide Protobuf message files on request.

All network data is sent in Network Order i.e. big-endian.

The Complete UDP Message Structure

The UDP Message Header

This is the first part of every message sent using this protocol. The provides information about the body of the message.

UDP Message Header Structure

Field

Type [Size]

Description

Field

Type [Size]

Description

Version

uint8_t [1]

Protocol version – indicates the revision of the protocol messages

Message Id

uint8_t [1]

Message type – indicates the type of the payload

Radar Serial

uint16_t [1]

Serial number of radar only used when receiving will be set to 0 on send

Payload Size

uint32_t [1]

The size, in bytes, of the main body of the message

UDP Message Types

Message Name

Message Id

Direction

Description

Message Name

Message Id

Direction

Description

Discovery

10

From Radar

Sends minimal radar configuration properties required to connect the client software to correctly receive data

Update Network Settings

20

To Radar

Update Network settings on radar and a reboot

Keep Alive

30

From Radar

Keep-alive ping

Point cloud

40

From Radar

Point-cloud data message

The UDP Message Body

The body of the message will contain one of the message types outlined in section 2.3.2. This payload will be variable length, the size being specified in the message header. The rest of this document describes the message types.

Discovery Message

The discovery message contains the minimal information a client application needs to connect to the radar. The message provides all critical data in fixed length fields at the beginning of the message. These values are the minimum required in order to successfully connect a client to the TCP server. These fields can be accessed using the normal process of decoding a byte stream coming across the network. The remainder of the message is made up from a variable length Protocol Buffer message which contains additional information about the radar, such as serial numbers and service dates. Advanced customer applications would be expected to decode this message data however the information is optional. The size of this message body is specified by the payload size field in the header. The size of the Protocol Buffer message can be calculated by subtracting the size of the fixed length fields from the payload size (i.e. Payload Size – 22 bytes). A configuration message is always sent when a client first connects and is also sent in response to a request from the client.

Discovery Message Structure

Field

Type [Size]

Description

Field

Type [Size]

Description

Azimuth Samples

uint16_t [2]

Number of azimuth samples taken per rotation

Bin Size / Resolution

uint16_t [2]

The range resolution per bin. In tenths of millimetres. For example 0.2997m would be 2997.

Range In Bins

uint16_t [2]

Configured detection range, in bins

Encoder Size

uint16_t [2]

The total number of available steps on the encoder wheel

TCP IP Address

uint8_t [4]

The TCP server IP address e.g. 192.168.0.1 - 192 = [0], 168 = [1]

TCP Port

uint16_t [2]

The TCP server port

Radar Serial

uint16_t [2]

Radar serial number

MAC Address

uint8_t [6]

MAC Address e.g. 7E:0C:08:34:0E:19 – 7E = [0], 0C = [1]

Discovery Protocol Buffer Payload

Field

Type [Size]

Description

Field

Type [Size]

Description

Field

Type [Size]

Description

Field

Type [Size]

Description

Model

RadarModel PB Message

Model information of Radar

Max Clients Allowed

uint32_t [4]

Maximum number of clients this radar supports

Clients

String list

List of IP addresses connected to the radar

Feature Flag

uint32_t [4]

Feature Flag bit field 1 = AutoTune, 2 = Secondary Processing Module Present

Update Network Settings

The update network settings message contains all of the information required to change the IP settings of the radar. The message provides all critical data in fixed length fields at the beginning of the message. These values are the minimum required in order to successfully configure the IP settings of the radar. These fields can be accessed using the normal process of decoding a byte stream coming across the network.

Update Network Settings Message Structure

Field

Type [Size]

Description

Field

Type [Size]

Description

IP Address

uint8_t [4]

The Radar IP address e.g. 192.168.0.1 - 192 = [0], 168 = [1]

Subnet Mask

uint8_t [4]

The Subnet Mask e.g. 255.254.0.0 - 255 = [0], 254 = [1]

Gateway

uint8_t [4]

The Gateway IP address e.g. 192.168.0.4 - 192 = [0], 168 = [1]

Primary DNS

uint8_t [4]

The Primary DNS IP address e.g. 192.168.0.4 - 192 = [0], 168 = [1]

Secondary DNS

uint8_t [4]

The Secondary DNS address e.g. 192.168.0.4 - 192 = [0], 168 = [1]

NTP Server

uint8_t [4]

The NTP Server IP address e.g. 192.168.0.4 - 192 = [0], 168 = [1]

Point Cloud Data

Point Cloud data messages are emitted by the radar if the Point Cloud output is enabled.

A point cloud data message represents one azimuth of data. The message payload consists of zero or more points, which represent a set of radar returns along the azimuth that exceed some configured threshold. The parameters for controlling the point cloud output are controlled via the Navigation Configuration Colossus TCP message.

Point Cloud Data Message Structure

Field

Type [Size]

Description

Field

Type [Size]

Description

Azimuth number

uint16_t [2]

The return azimuth number [0 .. (azimuths per rotation - 1)]

NTP seconds

uint32_t [4]

The number of seconds since the epoch

NTP split seconds

uint32_t [4]

The nanosecond component of the time since the epoch.

Bearing

float [4]

The azimuth angle, in degrees, from radar North. [0.0 <= bearing < 360.0]

Point count

uint8_t [1]

The number of points that exceed the defined threshold. [0 .. max peaks per azimuth] (see Navigation Configuration)

Points

 

Range/power pairs, as defined below

Point Cloud Point Structure

Field

Type [Size]

Description

Field

Type [Size]

Description

Range

float [4]

Range, in metres

Power

float [4]

Power, in dB