Skip to content

Resolve YAMCS telemetry updates - #265

Open
FarkasJoseph wants to merge 6 commits into
nasa:mainfrom
FarkasJoseph:hermes-yamcs/numeric-id-telemetry-resolution
Open

FarkasJoseph wants to merge 6 commits into
nasa:mainfrom
FarkasJoseph:hermes-yamcs/numeric-id-telemetry-resolution

Conversation

@FarkasJoseph

Copy link
Copy Markdown

This PR is designed to handle yamcs's compact telemetry messages. Yamcs chooses to send the full parameter name in the first telemetry message; however, later messages only include the numeric parameter ID. This PR adds a map to remember the parameter names and restore them for incoming telemetry messages. For updates that cannot yet be resolved, Hermes safely ignores them.

This PR also includes a number of compatibility changes which are covered in another PR. Once that one is merged, this one's scope should only be telemetry updates.

- Make ParameterValue fields optional/defaultable (id, raw_value, eng_value, acquisition_status, monitoring_result, expire_millis)
- Maintain per-subscription HashMap<u32, NamedObjectId> for numeric_id resolution
- Merge incoming mapping on each message
- Resolve numeric_id to name if id is missing
- Extract component and name from qualified name in TelemetryRef
- Skip unresolved parameters with debug log instead of failing the stream
- Fix SourcedTelemetry.source to use instance name instead of filter.source
Split out of a later commit that bundled these alongside unrelated raw
packet subscription tests - these two specifically validate the numeric_id
resolution fix (ParameterValue with only numericId, mapping resolution),
not anything about packet subscription.
@FarkasJoseph
FarkasJoseph force-pushed the hermes-yamcs/numeric-id-telemetry-resolution branch from 0b2d2f4 to eeafcbd Compare September 16, 2026 00:20
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 20 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main@4ccce82). Learn more about missing BASE report.

Files with missing lines Patch % Lines
crates/hermes-yamcs/src/service.rs 0.00% 12 Missing ⚠️
crates/hermes-yamcs/src/convert.rs 0.00% 8 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #265   +/-   ##
=======================================
  Coverage        ?   44.05%           
=======================================
  Files           ?       56           
  Lines           ?     4208           
  Branches        ?        0           
=======================================
  Hits            ?     1854           
  Misses          ?     2354           
  Partials        ?        0           
Flag Coverage Δ
rust 44.05% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

ParameterValue.id became Option<NamedObjectId> so a value can arrive
with only a numeric id before the name mapping resolves it. Fall back
to a placeholder string instead of unwrapping.
Both files had new logic with no direct test: convert.rs's handling of
an unresolved parameter (id missing, skip it) and the id-resolution
lookup in service.rs, which was inlined in the subscription loop.

Pulled the lookup out into resolve_param_id so it can be tested on its
own, and added tests for it and for yamcs_param_to_hermes's two new
outcomes (a resolved value converts, an unresolved one is skipped).
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