Single source of truth for APID allocation and direction on the STAR BusOBC-PayOBC link.
This repository is shared mission configuration. It is intentionally separate
from payload-link: the framing library transports opaque bodies and must not
know which CCSDS APIDs are legal. BusOBC flight software, the PayOBC simulator,
production PayOBC software, and ground tooling should pin the same reviewed
commit of this repository.
registry/apids.jsonis the only hand-edited APID allocation.include/star/payload_apids.his the generated C/C++ consumer interface.docs/apid-table.mdis the generated review/documentation table.tools/generate.pyvalidates the registry and regenerates both artifacts using only the Python standard library.
The initial allocation comes from interface-document section 3. RevB removes
the old SPICEnet-only reservations 0x000-0x002; this registry retains the
protocol reservations for LTP, CFDP, and idle packets.
Add this repository as a pinned submodule or CMake FetchContent dependency,
then link the header-only target:
target_link_libraries(your_target PRIVATE STAR::payload_apids)#include "star/payload_apids.h"
if (!star_payload_apid_allowed_pay_to_bus(received_apid)) {
/* Drop and count the disallowed packet. */
}Symbols use absolute packet names such as STAR_APID_PAYLOAD_COMMAND; they do
not use endpoint-relative _TX or _RX suffixes that reverse meaning between
consumers.
An APID is only the low 11 bits of the CCSDS packet identifier. It does not by itself determine the complete cFE message ID: command/telemetry and secondary header flags also matter. Those header-type mappings are not fully settled in the current interface document, so this first registry deliberately does not generate cFS MIDs. Add that mapping here after the interface decision is reviewed; do not guess it independently in each consumer.
The bridge application's local housekeeping and control MIDs are also outside this registry because they do not cross the BusOBC-PayOBC link.
make generate # after editing registry/apids.json
make check # verify generated files are current
make test # validate JSON and compile the C and C++ consumer interfaces