APEX v1.0 Protocol - #5
Open
joseph-neros wants to merge 5 commits into
Open
Conversation
APEX v1.0 is a deliberately breaking revision of the wire protocol; v0 and v1 endpoints do not interoperate except through the optional host-local v0 dual-stack. The mechanical standard is unchanged from v0.9. See CHANGELOG.txt for the exhaustive change list. Highlights: - Non-zero outer header + decode-free routing; traffic_type registry shifted +1; unassigned device_id marker moved 0x00 -> 0x01. - Two-tier versioning: one wire version plus independent per-class versions, with VERSION_BEACON as the immutable discovery frame and proactive mutual beaconing. - Provisional configuration phase; single global ack-code namespace; DEVICE_INFO mass plus the PHYS_REQUEST/PHYS_INFO/PHYS_ACK spatial-inertia family about the dovetail datum (origin = CG reference point, 36.71 mm from the wedge front face, laterally centered, on the mating surface). - New core messages: device-initiated post-CONNECTED baud change; RESET_REQUEST re-enumeration; watchdog-arbitrated hotplug. - Activation class v1: lifecycle-ordered states, capability-gated reversals, DISPLAY_TEXT/HOST_DISPLAY_INFO, and self-disarm on session loss. - Full v1 rework of the embeddable C reference library (10 gtest suites, 130 tests) and a rewrite of every spec, with datum diagrams added to Core 2.1.
Reference implementation only; no wire-protocol or spec change. Adds convenient, symmetric device APIs for behavior the spec already allows: split execute callbacks (on_execute_request / on_executed) with report_execution(); disable(), fault(), and trigger_window_expired(); autonomous-precondition helpers and an on_precondition_change observer; status-returning trigger(); and read-only getters. See CHANGELOG.txt.
Add a warnings field to HOST_STATE alongside flight_state — an advisory bitfield orthogonal to the flight phase, so a warning (e.g. RC link loss) coexists with any phase and several can be set at once. Bit 0 = RC link loss; bits 1-7 reserved. See CHANGELOG.txt.
Delete the retired class v0 PRECOND_INFO placeholders and renumber HOST_DISPLAY_INFO 7->5 and DISPLAY_TEXT 8->6, compacting the class message-id space with no gap. Spec §6.1 table + §9 byte examples and the reference lib updated. See CHANGELOG.txt.
The device-side Activation API ergonomics were under a separate "Unreleased" heading, but they ship as part of v1.0.0. Fold them into the v1.0.0 "Reference implementation" section, drop the Unreleased heading, and set the release date.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This has been in progress for a few weeks now, but since we have finally landed all of the features that were required in the short term, it's time to finalize it.
APEX 1.0 Highlights:
traffic_typeIDs up by one in order to eliminate 0 as an optiondevice_idpool up by one to eliminate 0 as an option (unassigned devices now use 0x01)