Messages and packets can be viewed as a finite collection of fields. The list of valid field types is presented below.
Name | Size | Description |
---|---|---|
int8_t | 1 | 8 bit signed integer. |
uint8_t | 1 | 8 bit unsigned integer. |
int16_t | 2 | 16 bit signed integer. |
uint16_t | 2 | 16 bit unsigned integer. |
int32_t | 4 | 32 bit signed integer. |
uint32_t | 4 | 32 bit unsigned integer. |
int64_t | 8 | A 64 bit signed integer |
fp32_t | 4 | 32 bit single precision floating point number in IEEE 754 format. |
fp64_t | 8 | 64 bit double precision floating point number in IEEE 754 format. |
rawdata | n/a | Variable length byte stream. |
plaintext | n/a | Variable length ASCII character stream. |
message | n/a | An inline message. Useful for encapsulating other messages. |
message-list | n/a | A list of messages. |
To ensure accurate transportation some field types may require special treatment on transmission and reception. The operation of preparing a field type for transmission is called serialization, the inverse action is called deserialization. No special serialization is required for types that are not described in the table below, their values should be used as is.
Name | Serialization |
---|---|
rawdata | A sequence of type rawdata is serialized by prepending a value of type uint16_t, representing the length of the sequence, to the stream of bytes. On deserialization the prepended value is used to retrieve the correct size of data bytes. The rawdata type length is limited only by the communication protocol in use. |
plaintext | A sequence of type plaintext is serialized by prepending a value of type uint16_t, representing the length of the sequence, to the stream of ASCII characters. On deserialization the prepended value is used to retrieve the correct ASCII character sequence size. The plaintext type length is limited only by the communication protocol in use. |
message | A field of type message is serialized by prepending a value of type uint16_t, representing the identification number of the message, to the serialized message payload. The special identification number 65535 must be used when no message is present. On deserialization the prepended value is used to retrieve the correct message identification number. The message type length is limited only by the communication protocol in use. |
message-list | A field of type message-list is serialized by prepending a value of type uint16_t, representing the number of messages in the list, to the serialized message payload. On deserialization the prepended value is used to retrieve the correct number of messages |
The packet header contains handling information in the form of supplemental fields, it is always placed at the beginning of a packet.
Name | Type | Fixed Value | Description |
---|---|---|---|
Synchronization Number (sync) | uint16_t | 0xFE55 | The synchronization number marks the beginning of a packet. It denotes the packet API version and can be used to deduce the byte order of the sending host. It encodes value 0xFE[major][minor] where [major] equals the major version number of the protocol and [minor] equals the minor version of the protocol. The packet recipient is responsible for the correct interpretation of the synchronization number and byte order conversions. |
Message Identification Number (mgid) | uint16_t | - | The identification number of the message contained in the packet. This field is used for correct message interpretation and deserialization. |
Message size (size) | uint16_t | - | The size of the message data in the packet. |
Time stamp (timestamp) | fp64_t | - | The time when the packet was sent, as seen by the packet dispatcher. The number of seconds is represented in Universal Coordinated Time (UCT) in seconds since Jan 1, 1970 using IEEE double precision floating point numbers. |
Source Address (src) | uint16_t | - | The Source IMC system ID. |
Source Entity (src_ent) | uint8_t | - | The entity generating this message at the source address. |
Destination Address (dst) | uint16_t | - | The Destination IMC system ID. |
Destination Entity (dst_ent) | uint8_t | - | The entity that should process this message at the destination address. |
Name | Abbreviation | Description |
---|---|---|
Periodic | periodic | - |
Deprecated | deprecated | - |
The following table lists the units used in the subsequent chapters.
Abbreviation | Name | Description |
---|---|---|
A | Ampere | - |
bit | Bit | - |
bps | Bits per second | - |
byte | Byte | - |
g | Gravity acceleration | - |
cm | Centimeter | - |
cm/s | Centimeter per second | - |
dm | Decimeter | - |
dB | Decibel | - |
dB/m | Decibel per meter | - |
dBHz | Decibel hertz | - |
dBm | Decibel milliwatts. | - |
° | Degree | - |
°C | Degree Celsius | - |
G | Gauss | - |
hPa | Hectopascal | - |
Hz | Hertz | - |
kg/m/m/m | Kilogram per cubic metre | - |
MiB | Mebibyte | - |
m | Meter | - |
m/s | Meter per second | - |
m/s/s | Meter per square second | - |
Mbps | Megabits per second | - |
ms | Millisecond | - |
µs | Microsecond | - |
ns | Nanosecond | - |
S/m | Siemens per meter | - |
kg | Kilogram | - |
Nm | Newton meter | - |
NTU | Nephelometric Turbidity Unit | - |
N | Newton | - |
Pa | Pascal | - |
% | Percent | - |
PPM | Parts per million | - |
PPB | Parts per billion | - |
PSU | Pratical Salinity Unit | - |
1/m | Inverse Meter | - |
px | Pixel | - |
µg/L | Microgram per liter | - |
µM | Micromolar | - |
rad | Radian | - |
rad/s | Radian per second | - |
rpm | Revolutions per minute | - |
rpm/s | Revolutions per minute per second | - |
s | Second | - |
V | Volt | - |
Enumerated | Enumeration of integer values | - |
List | Comma separated list of values | - |
Bitfield | Bit field | - |
TupleList | List of key/value tuples | This unit is a list of label/value tuples and is only valid in plaintext fields. The label and value portions of a tuple are separated using the equal sign (=) and tuples are separated using the semicolon character (;). These delimiting characters must not be used elsewhere. Leading and trailing semicolons must be removed. Examples: “label1=12;label2=3” or “label1=12” or “label1=test_2”. |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | False | FALSE | - |
1 | True | TRUE | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | Relinquish / Handoff Control | RELINQUISH_HANDOFF_CTL | - |
1 | Request Control | REQUEST_CTL | - |
2 | Override Control | OVERRIDE_CTL | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | Meters per second | METERS_PS | - |
1 | RPM | RPM | - |
2 | Percentage | PERCENTAGE | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | CCU | CCU | - |
1 | Human-portable Sensor | HUMANSENSOR | - |
2 | UUV | UUV | - |
3 | USV | USV | - |
4 | UAV | UAV | - |
5 | UGV | UGV | - |
6 | Static sensor | STATICSENSOR | - |
7 | Mobile sensor | MOBILESENSOR | - |
8 | Wireless Sensor Network | WSN | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | None | NONE | - |
1 | Depth | DEPTH | - |
2 | Altitude | ALTITUDE | - |
3 | Height | HEIGHT | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | Decibel | dB | - |
1 | Percentage | PERCENTAGE | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0 | Fixed-Wing | FIXEDWING | - |
1 | Copter | COPTER | - |
2 | Vtol | VTOL | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0x00000000 | None | NONE | - |
0x00000001 | Path Control | PATH | - |
0x00000002 | Teleoperation Control | TELEOPERATION | - |
0x00000004 | Altitude Control | ALTITUDE | - |
0x00000008 | Depth Control | DEPTH | - |
0x00000010 | Roll Control | ROLL | - |
0x00000020 | Pitch Control | PITCH | - |
0x00000040 | Yaw Control | YAW | - |
0x00000080 | Speed Control | SPEED | - |
0x00000100 | Yaw Rate Control | YAW_RATE | - |
0x00000200 | Vertical Rate Control | VERTICAL_RATE | - |
0x00000400 | Torque Control | TORQUE | - |
0x00000800 | Force Control | FORCE | - |
0x00001000 | Velocity Control | VELOCITY | - |
0x00002000 | Throttle Control | THROTTLE | - |
0x40000000 | Unspecified External Control | EXTERNAL | - |
0x80000000 | Non-overridable control | NO_OVERRIDE | - |
0xFFFFFFFF | All | ALL | - |
No description
Value | Name | Abbreviation | Description |
---|---|---|---|
0x01 | Maximum Depth | MAX_DEPTH | - |
0x02 | Minimum Altitude | MIN_ALT | - |
0x04 | Maximum Altitude | MAX_ALT | - |
0x08 | Minimum Speed | MIN_SPEED | - |
0x10 | Maximum Speed | MAX_SPEED | - |
0x20 | Maximum Vertical Rate | MAX_VRATE | - |
0x40 | Operation Area | AREA | - |
No description
No description
Message |
---|
Desired Z |
Desired Heading |
Desired Roll |
Desired Pitch |
Desired Speed |
Desired Path |
Desired Throttle |
No description
Message |
---|
Remote Command |
Historic Data Sample |