01 / Abrams Event Address
Keep the context with every state record.
A position means little without its time and reference frame. AEA keeps them together: a fixed-size record of position, velocity, attitude, and timing, with an integrity check that can be reproduced independently.
A state.
Its context.
An integrity check.
Operational purpose
When the link drops,
the record stays useful.
An onboard system can continue recording its estimated state during a communications interruption. When those records are recovered, each carries its declared coordinate frame, time scale, and a digest to check for changed data.
AEA supplies this recording interface. The host supplies the navigation estimate, clock, storage, and transport. Integration work defines how those parts meet at the boundary.
Explore integration scenariosSystem boundary
A small interface inside your architecture.
Provide the state
Navigation estimate, timestamp, body and frame identifiers.
Validate & seal
Validate fields, encode the canonical prefix, calculate SHA-256.
Store & verify
Transport or retain the record; independently check its digest.
Frame tags describe supplied coordinates. Coordinate transformations, clock synchronization, state estimation, and authenticated transport remain host responsibilities.
Embedded integration
C at the boundary.
Rust in the core.
The public aea.h interface exposes sealing, verification, and version functions. The Rust core builds as a static library, with no_std for bare-metal targets, no heap allocation, and no external crate dependencies.
Evaluation begins with your target processor, compiler, telemetry interface, and timing budget. The linked source and known-answer vectors provide a concrete starting point for a reproducible integration test.
Read the implementationPublic C ABI / v1.0
#include "aea.h"
int32_t aea_seal(AeaRecord *record);
int32_t aea_verify(
const AeaRecord *record
);
uint32_t aea_version(void);Sealing writes the digest. Verification returns a match, mismatch, or validation error. The caller owns the record memory.
Interface control / AEA-STATE/1
Every byte accounted for.
The C structure is naturally aligned to 8 bytes, without packing directives. Its wire encoding is explicitly little-endian. The digest covers canonical encoded fields, rather than a raw copy of host memory.
| Offset | Bytes | Field | C type | Meaning |
|---|---|---|---|---|
| 0 | 4 | version | uint32_t | Record version: 1 |
| 4 | 4 | body_naif | uint32_t | NAIF body identifier; 399 = Earth |
| 8 | 8 | time_sec | int64_t | Seconds since 1970-01-01 on the declared time scale |
| 16 | 4 | time_nsec | uint32_t | Nanoseconds: 0–999,999,999 |
| 20 | 2 | frame | uint16_t | ITRF2020 / GCRS / BCRS / BODY |
| 22 | 2 | time_scale | uint16_t | TAI / TT / TCB / TDB |
| 24 | 24 | pos_m | double[3] | Cartesian position, metres |
| 48 | 24 | vel_mps | double[3] | Cartesian velocity, metres per second |
| 72 | 32 | quat_xyzw | double[4] | Attitude quaternion, x / y / z / w |
| 104 | 32 | hash | uint8_t[32] | SHA-256 of the canonical 104-byte prefix |
Floating-point negative zero is canonicalized for hashing. Quaternion normalization remains the caller's responsibility; v1 uses the same identity value for aligned and unmeasured attitude.
The unkeyed digest detects corruption when checked against the stored digest. Source authentication requires an outer signature or authenticated container. See the full ICD for enums, validation rules, and integration caveats.
Evidence & evaluation
Start with a record
you can reproduce.
The public repository includes the C interface, source, and a Cambridge known-answer test vector. Use the browser inspector or reference CLI to decode that record and recompute its digest.
- Available today
- Public specification, implementation, C ABI, and reproducible test vector.
- Evaluation measures
- Target build, memory use, execution time, and telemetry behavior to be measured on the proposed host.
- Maturity assessment
- A formal TRL rating and flight qualification are not assigned here. Evaluation milestones are defined with the program partner.
- SWaP-C
- 136 bytes describes the record size. Processor load, power, memory footprint, and system cost require target-specific measurements.
Contracting & research partnerships
Put a requirement on the table.
Discuss a research objective, an SBIR/STTR teaming opportunity, or sample batch requirements with Joshua M. Abrams, Founder & Principal Investigator.