Skip to content

30 operational status v1#34

Merged
mrksngl merged 4 commits intomainfrom
30-operational-status-v1
Mar 2, 2026
Merged

30 operational status v1#34
mrksngl merged 4 commits intomainfrom
30-operational-status-v1

Conversation

@fixje
Copy link
Copy Markdown
Contributor

@fixje fixje commented Feb 26, 2026

Fixed Operational Mode Codes

Moved single antenna and GPS antenna offset flags from V1 to V2
operational status messages.

Fixed Capability Class Codes

Correct Capability Class Code parsing for ADS‑B v0/v1/v2; add BitReader
and tests:

  • Parse all Operational Status fields with BitReader to fix bit
    offsets and endian handling.
  • Correct extraction of subtype, capability_class_code,
    operational_mode_code, and version.
  • Align NIC supplement, NACp, SIL, NIC baro/track, and HRD
    flags with DO‑260A/B.
  • Airborne V1 (AirborneOperationalStatusV1Msg):
    • Fix hasOperationalTCAS() logic per capability bit semantics.
    • Correct masks for Air‑Referenced Velocity and Target State Report.
    • Expose BAQ and NIC baro flags.
    • Rename 1090ES IN capability to CDTI presence for clarity.
  • Surface V1 (SurfaceOperationalStatusV1Msg):
    • Correct 12‑bit capability_class_code parsing and related flags.
  • Replace 1090ES IN with hasOperationalCDTI(); add
    hasPositionOffsetApplied() (POA).
  • Keep length/width decoding per DO‑260B Table 2‑74; tidy Javadoc and
    formatting.
  • V0 (OperationalStatusV0Msg): documentation/formatting cleanups; no
    logic changes beyond style.
  • V2 classes: minor consistency/formatting updates; no behavioral
    changes intended.
  • Example: update ExampleDecoder to new API
  • Add BitReader utility and BitReaderTest covering cross‑byte and
    variable‑width reads.

Fixes: Capability Class Codes for different ADS‑B versions were not
assigned correctly

BREAKING CHANGE:

  • AirborneOperationalStatusV1Msg: has1090ESIn() renamed to
    hasOperationalCDTI();
    semantics clarified.
  • SurfaceOperationalStatusV1Msg: has1090ESIn() renamed to
    hasOperationalCDTI();
    hasPositionOffsetApplied() added.
  • Some previously exposed fields/methods tied to misinterpreted

- GVA is not defined on the surface: removed from
SurfaceOperationalStatusV1Msg
- SDA introduced in ADS-B V2: moved from
Airborne/SurfaceOperationalStatusV1Msg to
Airborne/SurfaceOperationalStatusV2Msg
- GVA introduced in ADS-B V2: moved from AirborneOperationalStatusV1Msg
to AirborneOperationalStatusV2Msg
- NIC suppl C introduced in ADS-B V2: moved from
SurfaceOperationalStatusV1Msg to SurfaceOperationalStatusV2Msg
Correct Capability Class Code parsing for ADS‑B v0/v1/v2; add BitReader
and tests:

- Parse all Operational Status fields with `BitReader` to fix bit
offsets and endian handling.
- Correct extraction of `subtype`, `capability_class_code`,
`operational_mode_code`, and `version`.
- Align `NIC supplement`, `NACp`, `SIL`, `NIC baro/track`, and `HRD`
flags with DO‑260A/B.
- Airborne V1 (`AirborneOperationalStatusV1Msg`):
  - Fix `hasOperationalTCAS()` logic per capability bit semantics.
  - Correct masks for Air‑Referenced Velocity and Target State Report.
  - Expose BAQ and NIC baro flags.
  - Rename 1090ES IN capability to CDTI presence for clarity.
- Surface V1 (`SurfaceOperationalStatusV1Msg`):
  - Correct 12‑bit `capability_class_code` parsing and related flags.
- Replace 1090ES IN with `hasOperationalCDTI()`; add
`hasPositionOffsetApplied()` (POA).
- Keep length/width decoding per DO‑260B Table 2‑74; tidy Javadoc and
formatting.
- V0 (`OperationalStatusV0Msg`): documentation/formatting cleanups; no
logic changes beyond style.
- V2 classes: minor consistency/formatting updates; no behavioral
changes intended.
- Example: update `ExampleDecoder` to new API (`hasOperationalCDTI`).
- Add `BitReader` utility and `BitReaderTest` covering cross‑byte and
variable‑width reads.

Fixes: Capability Class Codes for different ADS‑B versions were not
assigned correctly

BREAKING CHANGE:
- `AirborneOperationalStatusV1Msg`: `has1090ESIn()` renamed to
`hasOperationalCDTI()`; semantics clarified.
- `SurfaceOperationalStatusV1Msg`: `has1090ESIn()` renamed to
`hasOperationalCDTI()`; `hasPositionOffsetApplied()` added.
- Some previously exposed fields/methods tied to misinterpreted
Moved `single antenna` and `GPS antenna offset` flags from V1 to V2
operational status messages.
@fixje fixje assigned fixje and mrksngl and unassigned fixje Feb 26, 2026
@fixje
Copy link
Copy Markdown
Contributor Author

fixje commented Feb 26, 2026

fixes #30

@mrksngl
Copy link
Copy Markdown
Member

mrksngl commented Mar 2, 2026

BREAKING CHANGE:
AirborneOperationalStatusV1Msg: has1090ESIn() renamed to hasOperationalCDTI(); semantics clarified.
SurfaceOperationalStatusV1Msg: has1090ESIn() renamed to hasOperationalCDTI(); hasPositionOffsetApplied() added.

I wonder if this is necessary

  • the flag is named 1090ES IN in V1 and V2
  • in V0, there was a flag that didn't really have a name but its semantics were described as "CDTI not Operational or unknown" / "CDTI Operational"
  • so I doubt renaming a flag from its modern name to a name that was not declared as such clarifies semantics

Considering that is is a breaking change, I'd discourage renaming.

The flag is named 1090ES IN in V1 and V2.
In V0, there was a flag that didn't really have a name but its semantics
were described as "CDTI not Operational or unknown" / "CDTI Operational"

Renaming a flag from its modern name to a name that was not declared as
such does not clarify semantics --> reverting
@mrksngl mrksngl merged commit 9548b7e into main Mar 2, 2026
2 checks passed
@mrksngl mrksngl deleted the 30-operational-status-v1 branch March 2, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants