Appendix VIII Sonic Control Commands
14 APPENDIX VIII: R2Sonic Control Commands
14.1 Introduction
This describes the commands sent from the user interface to the sonar head and SIM.
Head firmware version 14-Mar-2011 and SIM firmware version 08-Apr-2010 utilize the commands in
this document. Future versions of firmware will adhere to this format and may include additional
commands.
Older versions of head and SIM firmware are not compatible with this format.
14.2 General Notes
1. These formats are designed for easy 4-byte alignment. Be sure your compiler/linker doesn't
insert any extra padding between values. If necessary, use your compiler's "packed" directive.
2. All values have big-endian byte order. Your compiler may provide conversion functions such as
htonl, htons, ntohl, ntohs, however those assume integers so you'll need to be very careful with
floats.
3. u32 means unsigned integer, 32 bits.
f32 means IEEE-754 32-bit floating point.
4. All packets are UDP/IP datagrams.
5. It’s recommended that all commands be sent periodically, at a 1 to 0.5 Hz rate. This ensures that
the sonar head and SIM always have the proper settings should a power interruption occur.
14.2.1 Ethernet Port Numbers
Head & SIM status & command port = Baseport +2
GUI command port = 53810 (fixed port number)
GUI remote command input port = gui baseport + 7
14.2.2 Type Definitions
typedef unsigned int u32;
typedef float f32
;
14.2.3 Command Packet Format
Pseudo C format for commands:
// *** BEGIN PACKET: COMMAND FORMAT 0 ***
u32 PacketName; // 'CMD0'
// Command (for network efficiency, the packet can contain multiple commands,
// but ensure the IP datagram reaches the sonar unfragmented).
u32 CommandName; // example 'RNG0' to set range
x32 CommandValue; // a 4-byte value such as u32 or f32
// *** END PACKET: COMMAND FORMAT 0 ***
Page 167 of 210
Version 5.0 Rev r002
Date 05-08-2014