Astronode Serial Commands
Introduction
This section describes how to use and interact with the Astronode S module. It is intended for users and integrators of Astrocast products. It provides specifications for the communication protocol over UART and various IO lines.
What hardware products does this cover?
This covers all Astrocast Products that include an Astronode™ S module:
- Astronode Satellite DevKit: the satellite version of the Development Kit.
- Astronode Wi-Fi DevKit: the Wi-Fi version of the Development Kit, which makes development easier with lower latency, by replacing the satellite communication with Wi-Fi.
- Astronode S: the standalone solder-down module.
Conventions and Data Format
Hexadecimal
Hexadecimal values are always prefixed by the two characters 0x. e.g. 0x8000 is equal to the decimal value 32768.
Bit Numbering Convention
The first bit in a field to be transmitted (i.e. the right-most justified bit when writing a byte) is defined to be "Bit 0"; the following bit is called "Bit 1" and so on up to "Bit N-1". Bit 0 is the Least Significant bit (LSb). Bit N-1 is the Most Signficant bit (MSb). In this documentation bit fields are written as X.Y where X is the byte position and Y is the bit position. E.g. 5.0 is byte 5, bit 0 (LSb of byte field); 6.1 is byte 6, bit 1; 8.7 is byte 8, bit 7 (MSb of byte field).
Bit N-1 | Bit0 | |
---|---|---|
N-Bit Data Field | ||
MSb | LSb |
Byte Ordering
Little-endian format shall be used. When a field expresses a value larger than a single byte the Least Significant Byte (LSB) shall be the first transmitted byte, and the Most Significant Byte (MSB) shall be transmitted last.
Transmission of the 4 byte number 0x12345678 will result in the follow byte transmission order:
Byte 0 (LSB) | Byte 1 | Byte 2 | Byte 3 (MSB) |
---|---|---|---|
0x78 | 0x56 | 0x34 | 0x12 |
Type Names
A byte is 8-bits in length. UInt8 is an unsigned byte. Int8 is a signed byte.
A nibble is half a byte, 4 bits in length. A byte, UInt8, or Int8 is composed of 2 nibbles: high and low. E.g. 0x78: 7 is the high nibble and 8 is the low nibble.
A short word is 16-bits in length (i.e. 2 bytes). UInt16 is an unsigned short. Int16 is a signed short.
A word is 32-bits in length (i.e. 4 bytes). UInt32 is an unsigned word. Int32 is a signed word.
A long word is 64-bits in length (i.e. 8 bytes). UInt64 is an unsigned long. Int64 is a signed long.
Numbering of bytes in a field is done from LSB as byte 0 to MSB as byte N-1 in an N-byte field.
Byte N-1 | Byte N-2 | etc... | Byte 1 | Byte 0 |
---|---|---|---|---|
N-byte Data Field | ||||
MSB | LSB |
Protocol Layering Overview
The protocol is described in 3 layers:
- Physical layer: uart and optionally RS232.
- Transport layer: message synchronisation, encoding and integrity checking.
- Application layer: messages of operation IDs and parameters