Add Flight Test Telemetry example plugin (PCM, MIL-STD-1553, TSPI, faults, IRIG 106 Ch10 adapter) - #16
Add Flight Test Telemetry example plugin (PCM, MIL-STD-1553, TSPI, faults, IRIG 106 Ch10 adapter)#16erikrozi wants to merge 2 commits into
Conversation
Adds example/flightTest, an opt-in example plugin for aircraft flight-test / mission-systems integration telemetry: - Flight Test Telemetry root with Test Article TA-01 exposing PCM parameters, MIL-STD-1553 Bus A/B health, TSPI and a test-card event stream - Deterministic simulated sortie (climb, cruise, wind-up turn, recovery, descent) backing both historical requests and realtime subscriptions - Warning/critical limit provider for Nz, AOA, EGT and 1553 word errors - Fault Management provider raising faults for critical exceedances and degraded/failed buses, with acknowledge and shelve support - IRIG 106 Chapter 10 packet header and MIL-STD-1553 Format 1 adapter - Karma specs for the profile, providers, limits, faults and the adapter Registered as openmct.plugins.example.FlightTest; not installed by default. Co-Authored-By: Erik Rozi <erik.rozi@cognition.ai>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
Original prompt from Devin Bot
|
Manual browser verification (
|
…cleanup - Chapter10Adapter.parsePacket rejects header checksum mismatches and packets whose declared Packet Length runs past the buffer, so truncated or corrupted packets are never partially decoded - FlightTestTelemetryProvider keeps every returned sample on the one-second grid inside [start, end] for both ordinary and latest requests, returning nothing when the window contains no sample boundary - FlightTestFaultProvider cancels pending shelve timers when a fault is removed so no notification is published for an unlisted fault - Specs cover each case Co-Authored-By: Erik Rozi <erik.rozi@cognition.ai>
Describe your changes:
Adds an opt-in example plugin,
openmct.plugins.example.FlightTest, underexample/flightTest/for aircraft flight-test / mission-systems integration telemetry — the kind of ground-station display used during a test event. It follows theexample/generator,example/eventGeneratorandexample/faultManagementconventions and the structure of #14.Enable it (not installed by default in
index.html, so the e2e tree baseline is unchanged):Object tree
Modules
plugin.jsstart/destroyflightProfile.jssampleFlight(utc)returns every parameter for a timestamp;eventsBetween(start, end)returns test-card events. Bus B degrades → fails → fails over → restores during recoveryparameters.jsutcdomain,valuerange,phase)FlightTestObjectProvider.jsflight-testnamespaceFlightTestTelemetryProvider.jsrequest()— honorsoptions.size,strategy: 'latest', caps at 50,000 datums, never returns future values, chronological — and realtimesubscribe()on a fixed 1 s interval reading the same profile; event stream request/subscribeFlightTestLimitProvider.jsFlightTestFaultProvider.jsopenmct.faults: CRITICAL faults for critical telemetry exceedances and FAILED buses, WARNING for DEGRADED buses; faults latch until acknowledged, support shelving with timed/indefinite durationsChapter10Adapter.js0xEB25, channel ID, packet/data length, data type version, sequence, flags, data type, 48-bit RTC, header checksum) + MIL-STD-1553 Format 1 (0x19) intra-packet header parser (bus ID, error flags, gap times, word count/message length) with a channel → telemetry-key map. Not a full PCM/1553 decoderREADME.mdsrc/plugins/plugins.jsplugins.example.FlightTest.cspell.jsonLimits
Every sortie the wind-up turn (minutes 12–14) drives Nz and AOA through both thresholds, and Bus B word errors pass both thresholds during recovery (minutes 14–17). EGT peaks in the warning band by design.
Chapter 10 adapter accepts
ArrayBuffer,DataViewor typed arrays, validates every read against the buffer and the declared packet/data lengths, and rejects bad sync, non-multiple-of-4 packet lengths, truncated buffers, checksum mismatches and inconsistent message lengths with aChapter10Errorcarrying the byte offset. Header layout follows IRIG 106 Chapter 10 §10.6.1 (packet header) and §10.6.4 (MIL-STD-1553 Format 1); the public references are cited in the module header comment.Note on mixed tables: all parameters share the
valuerange key (as real telemetry adapters do), so a telemetry table mixing several parameters shows a single value column whose header takes the name of the last object added (this is existingTelemetryTableConfiguration.getAllHeadersbehavior). Per-row names, units and highlighting are correct.Tests
npm run lint(js, vue, spelling) is clean. Six new Karma spec files, 96 specs:flightProfileSpec.jsFlightTestTelemetryProviderSpec.jsFlightTestLimitProviderSpec.jsFlightTestFaultProviderSpec.jsChapter10AdapterSpec.jspluginSpec.jsnpm testvs. a detachedmasterbaseline run on the same machine (Node 24.14.1, Chrome Headless 133):masterbaselinedist/present)The six failures on the first two runs are the identical set (pre-existing, unrelated to this change):
The Object API Search Function×4 (in-memory search worker404: /base/dist/inMemorySearchWorker.js),The Image Exporter ... can render an element to a blob,The URLIndicator ... has a default icon class if none supplied. They disappear once adist/build exists on the machine, which is why the re-run after the review fixes is fully green. +96 executed / +96 success, 0 new failures.Browser verification
Verified with
npm startafter temporarily adding the twoopenmct.installlines above toindex.html(not committed). Full-size screenshots and the screen recording are in the PR comment below.Original prompt
All Submissions:
Author Checklist
type:label? Note: this is not necessarily the same as the original issue.Reviewer Checklist
Link to Devin session: https://app.devin.ai/sessions/58e880f15fa6477b8f09391369d3f0b0
Open in Devin Desktop: https://app.devin.ai/desktop/session/58e880f15fa6477b8f09391369d3f0b0?variant=devin
Requested by: @erikrozi