Skip to content
Michael Shipman edited this page Jan 26, 2024 · 19 revisions

Welcome to the std-cmd wiki! This standard is designed for balloon command and control (vent, terminate, etc.) using LoRa or other methods.

Since the primary delivery method is LoRa features such as error correction, payload length, etc. don't need to be built in since LoRa already implements them.

Note: A lot of this is written with the RP2040 in mind as that's the current platform I'm working on. The standard should be platform agnostic though.

-- Shipman

Format

Byte 0 - Header

  • 0x42

Identifiable byte that indicates that the following complies with the standard.

Byte 1 - Device ID

FF for all, other value for specific device

Byte 2 - Op Code

  • 2 bits: RFU
  • 6 bits: Op Code

Gives space for 64 commands with space for expansion to 256 or other features (maybe repetition?)

Byte 3 - 9

Some variable number of parameters (max 5 bytes) specific to the op code

Commands

0x00: nop

No operation.

0x01: test

The idea here is that this could run specific test sequences to verify device functionality.

0x02: send

Sends string to target device(s). The idea here being that a given device could handle these however appropriate (e.g. you could implement custom commands not defined by this standard).

0x03: vent

Venting controls for a GHOUL variant. Open/Close/Timed vent support.

0x04: reset

Reset parts of the rp2040.

0x05: pos

Position reporting control/request.

0x06: term

Flight termination control.

0x07: ack

Command received response, includes op-code and optionally detailed response data.

0x08: nack

Command received but not recognized (includes op-code)

0x09: err

Some error occurred.

0x0A: stat

Returns diagnostics information.

  • ID
  • Run time
  • Clock speed
  • Chip version
  • ROM version
  • Software Version #

0x0B: get

Get the value of a configuration parameter.

0x0C: set

Set the value of a configuration parameter.

0x0D: log

Log data to log file.

0x0E: lstn

Listens for strings from other devices. The idea here being that a given device could handle these however appropriate (e.g. you could implement custom commands not defined by this standard).