Skip to content

chore: bump lib/fprime-zephyr to fprime-zephyr#26 head (CI validation only, do not merge) - #506

Closed
Mikefly123 wants to merge 6 commits into
feat/usp-radiofrom
chore/bump-fprime-zephyr-fix-integration
Closed

chore: bump lib/fprime-zephyr to fprime-zephyr#26 head (CI validation only, do not merge)#506
Mikefly123 wants to merge 6 commits into
feat/usp-radiofrom
chore/bump-fprime-zephyr-fix-integration

Conversation

@Mikefly123

Copy link
Copy Markdown
Contributor

Purpose

CI-validation-only PR — not intended to merge as-is.

Temporarily re-pins lib/fprime-zephyr to fa2be9b (Open-Source-Space-Foundation/fprime-zephyr#26, fix/uspradio-integration-c123) to get a real build signal for three safety fixes to Zephyr::UspRadio:

  • async run port (was sync, raced the component thread on RX-profile revert)
  • RX re-apply before every continuous-RX re-arm (was leaving the chip in TX modulation after asymmetric TX/RX profile use)
  • comStatus one-in-flight invariant (closes a reachable FW_ASSERT/boot-loop via the documented TRANSMIT-DISABLED deaf-recovery lever)

fprime-zephyr has no CI of its own, so this repo's build is the only way to compile-check that stack before it's reviewed.

Base: feat/usp-radio (#439), currently pinned at 9e3bedc.

Do not merge

Once fprime-zephyr#26 is reviewed and merged into its own feat/usp-radio, this pin should be replaced by re-pointing at that post-merge head (or this PR closed and superseded), not merged as a standalone bump.

🤖 Generated with Claude Code

Temporarily re-pins the fprime-zephyr submodule to
fix/uspradio-integration-c123 (fa2be9b, Open-Source-Space-Foundation/fprime-zephyr#26)
to get a real build signal for the async-run-port + RX-reapply +
comStatus-oneinflight fixes, since fprime-zephyr has no CI of its own.

Not intended to merge as-is: fprime-zephyr#26 targets feat/usp-radio,
not this repo's pin history. Revert this pin (or replace it with
feat/usp-radio's post-merge head) once the fix lands and #439's pin
is updated for real.
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 16321e43-0d79-4c7d-bde3-302272d89c49

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Follow-up to the previous pin bump: the initial validation run on
this PR caught a real regression (rf_profile_matrix_test.py:
BytesSent frozen on first TX after P0->P4/P5 -- the anomaly-B wedge
signature). Root cause: the RX-reapply fix's rearmRx() call in
deferredSetTxProfile clobbered the TX profile's modulation right
after it was set, before any frame was sent. Fixed upstream in
fprime-zephyr#26 by re-applying the TX profile immediately before
every transmitPacket() call instead of relying on stale chip state.
Re-running full CI to confirm.
Second follow-up: the previous fix (re-apply TX profile before every
send) still reproduced the anomaly-B wedge on CI. Root cause:
SET_TX_PROFILE was cycling the chip through TX->RX->TX config three
times within milliseconds (its own eager TX apply, immediately
overwritten by rearmRx()'s RX apply, then overwritten again by the
per-TX apply moments later). fprime-zephyr#26 now drops the eager TX
apply from SET_TX_PROFILE entirely -- it's redundant now that TX
re-applies its own profile at send time -- cutting reconfiguration
count from three back-to-back applies to two spread further apart.
Re-running full CI to confirm.
Root cause of the prior two failing validation runs found: radio TX
was permanently muted by a comStatus FAILURE parking Svc::ComQueue in
WAITING, with the new one-in-flight guard suppressing the priming
SUCCESS that used to recover it. fprime-zephyr#26 now never reports
FAILURE (matching TxOutcomePolicy's existing rule) and never records a
comStatus debt for one. Re-running full CI.
Run 4 result: integration-uart PASSED (incl. test_08 wedge kill
recipe) -- the comStatus FAILURE-park fix worked. integration-radio
still failed because applyProfile() logged ProfileChanged on the two
per-frame call sites, producing two ACTIVITY_HI events per transmitted
frame; at P0's 2.73 kbps that saturates the downlink and starves
command acks. fprime-zephyr#26 now gates that logging to
operator-visible changes only. Re-running full CI.
The new host UT harness caught a regression the HWIL suite could not:
rearmRx() armed the COMMITTED RX profile instead of the pending one,
making SET_RX_PROFILE a no-op on hardware (chip stayed on the old
profile while telemetry reported the new one, and no frame could ever
confirm the change). Fixed in fprime-zephyr#26. Re-running CI to
confirm no HWIL regression.
@Mikefly123 Mikefly123 closed this Aug 30, 2026
@github-project-automation github-project-automation Bot moved this to Done in V1.X.X Aug 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant