Skip to main content

Popoto Acoustic Message Header

Every acoustic packet contains a header packet. Some acoustic packet types consist only of a header, while others contain a subsequent payload packet.

Header Packet Format

BitsFieldPurposeFormat
0-7Message TypeIdentifies packet type, such as data packet, packet with payload, ranging, or status.8-bit MessageID. 0: Data; 128: Range Response; 129: Range Request; 130: Status.
8-15SenderIDID of the transmitting modem.0x0 to 0xfe: modem ID; 0xff: broadcast.
16-23ReceiverIDIntended ID of the destination receiver.0x0 to 0xfe: modem ID; 0xff: broadcast message.
24-31TxPowerTransmitted scale factor as entered by the transmitting modem.Transmit-power setting as a Q8 scale value.
32-47PayloadInfoIf the message does not contain a payload, this field is 0. If a payload follows, the bits are assembled according to the payload info fields described below.See Payload Structure.

Payload Structure

If header bytes 4 and 5 are not zero, modulated payload data immediately follows the modulated header data. The payload is described by the 16 bits in the header's payload info field.

Header Byte 4

Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Plen7Plen6Plen5Plen4Plen3Plen2Plen1Plen0

Header Byte 5

Bit 15Bit 14Bit 13Bit 12Bit 11Bit 10Bit 9Bit 8
Mod4Mod3Mod2Mod1Mod0StreamPlen9Plen8

The payload length in bytes is set by the 10 bits of the Plen field. Although this field contains 10 bits, the payload size is capped by software to a maximum of 256 bytes.

Bits 11-15 of header byte 5 contain the modulation used for the payload. Popoto uses the following enumerated modulations.

Modulation Types

Modulation BitfieldModulation SchemeData Rate
0Frequency hopped FSK80 bps
1Phase shift keying5120 bps
2Phase shift keying2560 bps
3Phase shift keying1280 bps
4Phase shift keying640 bps
5Phase shift keying10240 bps, uncoded

Streaming Mode

When large files are transmitted, it is more efficient to transfer the file in streaming mode.

When streaming mode is invoked, bit 10 of header byte 5 is set to indicate streaming mode. In streaming mode, the payload length Plen indicates the number of 255-byte frames that follow before another header transmission. All 255-byte packet remainders are handled by the software automatically.