Skip to content

V1.1.0 rc1#393

Open
Mikefly123 wants to merge 52 commits into
v1.x.xfrom
v1.0.0-rc1
Open

V1.1.0 rc1#393
Mikefly123 wants to merge 52 commits into
v1.x.xfrom
v1.0.0-rc1

Conversation

@Mikefly123
Copy link
Copy Markdown
Contributor

V1.1.0 Release Candidate 1

Description

Related Issues/Tickets

How Has This Been Tested?

  • Unit tests
  • Integration tests
  • Z Tests
  • Manual testing (describe steps)

Screenshots / Recordings (if applicable)

Checklist

  • Written detailed sdd with requirements, channels, ports, commands, telemetry defined and correctly formatted and spelled
  • Have written relevant integration tests and have documented them in the sdd
  • Have done a code review with
  • Have tested this PR on every supported board with correct board definitions

Further Notes / Considerations

yudataguy and others added 30 commits January 26, 2026 13:13
* Add TELL_JOKE command to AmateurRadio component

Adds joke functionality directly to the AmateurRadio component instead of
creating a separate component, saving memory. Features:
- TELL_JOKE command returns a random joke via event
- 16 approved jokes stored in JokesList.hpp
- True random selection using Zephyr's sys_rand32_get()
- Both Repeat_Name and TELL_JOKE added to auth bypass list

* shorten joke list

* linter

* removed name echo (danger FCC no swaeras)

* update sdd

* adding filtering out apid seq not aligned to startup seuqences

* added invalidlen

* Refactor jokes to use one event per joke to reduce stack usage

* lint

---------

Co-authored-by: ineskhou <ineskhouider03@gmail.com>
* Add watchdog tests for system behavior with and without watchdog active

- Implemented `get_boot_count` helper function to retrieve BootCount telemetry.
- Added `test_04_system_stays_running_with_watchdog` to verify system stability with watchdog active.
- Added `test_05_system_reboots_without_watchdog` to confirm system reboots when watchdog is stopped.
- Enhanced existing tests for better telemetry assertions and system state validation.

* Fix whitespace

* Make sleep longer

* Merge in Main

* removed seq files

* Align submodules with main

---------

Co-authored-by: Michael Pham <61564344+Mikefly123@users.noreply.github.com>
Co-authored-by: ineskhou <ineskhouider03@gmail.com>
* Replace pytest long tests with interactive stress test script

- Add manual_stress_test.py for interactive testing with GDS
- Remove mode_manager_test.py from long/ directory
- Fix GDS connection using StandardPipelineParser instead of direct strings
- Add safe mode tests: cycle, counter, load switches, reason tracking, persistence
- Organize menu by category (Load Switches, Sequences, OTA, Safe Mode, Telemetry)

Interactive approach is more reliable for long-running tests that require
manual GDS startup and hardware verification.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Replace pytest long tests with interactive stress test script

- Add manual_stress_test.py for interactive testing with GDS
- Remove mode_manager_test.py from long/ directory
- Fix GDS connection using StandardPipelineParser instead of direct strings
- Add safe mode tests: cycle, counter, load switches, reason tracking, persistence
- Organize menu by category (Load Switches, Sequences, OTA, Safe Mode, Telemetry)

Interactive approach is more reliable for long-running tests that require
manual GDS startup and hardware verification.

* lint

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: ineskhou <ineskhouider03@gmail.com>
* Add filesystem power-loss resilience tests

Interactive stress tests that interrupt filesystem write operations
with COLD_RESET to expose FAT32 corruption scenarios on 8MB flash.
Covers file create, append, delete, directory create, rapid writes,
and large file writes with varied reset timing. Auto-recovers via
FsFormat.FORMAT when corruption is detected so the full suite runs
through all scenarios.

* move test file to long folder

* change test location and make it interactive

* Change test file locaiton and update interactive menu

* Fix ruff formatting
Standalone GDS client pipelines can send commands but don't reliably
receive events/telemetry via ZMQ. Switch to send_command() with
time-based waits instead of assert_event(), matching the proven
manual_stress_test.py pattern. Users observe results in GDS GUI.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* updated readme with bootloader instructions

* Add MCUBoot Bootloader installation instructions

Added instructions for installing the MCUBoot Bootloader for new flight controller boards.

* Update build command for MCUBoot bootloader

---------

Co-authored-by: Michael Pham <61564344+Mikefly123@users.noreply.github.com>
* Initial plan

* Add MkDocs Material site for SDD documentation deployment

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add documentation link to README and GitHub Pages setup instructions

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Run linter and fix formatting issues for CI compliance

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add make docs-serve and docs-build targets for local documentation preview

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* removed disable optionin auth not true anymore

* Fix documentation issues: update navigation description, add component links, fix broken F Prime links, and correct table formatting

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add make docs-sync target to copy SDD files from components to docs-site

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add ComCcsdsLora component and remove Home link from navigation

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix table formatting and broken links in original SDD source files

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
Co-authored-by: ineskhou <ineskhouider03@gmail.com>
* make the writing only happen on first boot

* bug fix:

* no file needed

* added 45 min wait

* urn safe mode seuaence on safe mode boot

* removed 5 hour wait

* changed watchdog stop so it always otos into safe mode

* watchdog boot

* changed safe mode seq to be safe
#306)

* Initial plan

* Add RTC time set sequence cancellation implementation

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix sequence path string type in RtcManager

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Address code review feedback on RTC sequence cancellation

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Replace sequence-based cancellation with direct signal port approach

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Address PR feedback: single port, add safeModeSeq, cancel before time set

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Correct to use port array [3] instead of single port

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add integration test for RTC time set sequence cancellation

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix test sequence to use existing command with longer delay

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fixed Sequence and Appeased Linter

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
#305)

* Initial plan

* Add comprehensive FSM diagram for ModeManager Safe Mode transitions

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix: Clarify PersistentState struct size is architecture-dependent

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix Mermaid diagram line breaks: replace \n with &lt;br/&gt;

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Appeased Linter

* Update safe mode sequence filename and consolidate event documentation

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
* added Makefile edit

* edit readme

* Apply suggestion from @hrfarmer

Co-authored-by: aychar <aychar@aychar.dev>

---------

Co-authored-by: aychar <aychar@aychar.dev>
Co-authored-by: aychar <aychar@aychar.dev>
Co-authored-by: Michael Pham <61564344+Mikefly123@users.noreply.github.com>
…ved channel tracking (#317)

* Initial plan

* Add data budget tool for analyzing telemetry sizes

- Create tools/data_budget.py to parse FPP files and calculate telemetry byte sizes
- Add Makefile targets: data-budget, data-budget-report, data-budget-json
- Support for all F Prime primitive types, structs, enums, and arrays
- Analyze telemetry packets and calculate total packet sizes
- Add comprehensive documentation in tools/README.md
- Update .gitignore to exclude generated reports

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Add bytes per telemetry group summary to data budget report

- Add new "BYTES PER TELEMETRY GROUP" section at bottom of report
- Show total bytes, packet count, and description for each group (1-6)
- Include group summaries in JSON output as well
- Update documentation to describe new group summary section
- Groups: Beacon, Live Satellite Sensor Data, Satellite Meta Data,
  Payload Meta Data, Health and Status, Parameters

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Simplify data budget tool - remove file/JSON output, add verbose flag

- Remove --output and --json arguments and generate_json_report method
- Add --verbose flag to control output detail level
- Default mode shows only SUMMARY and BYTES PER TELEMETRY GROUP
- Verbose mode shows full details (channels, packets, breakdown)
- Update Makefile: remove data-budget-report and data-budget-json targets
- Update Makefile: add VERBOSE=1 support to data-budget target
- Remove data_budget_report.txt and data_budget.json from .gitignore
- Update tools/README.md to reflect simplified usage

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Appease the Linter

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address code review feedback

- Expand FPP file search to entire FprimeZephyrReference tree (fixes missing ComCcsds* components)
- Reset module context per file to prevent context leakage across files
- Update packet parsing to handle 2-segment channel refs and special chars like $
- Track and report unresolved channel references in packets
- Show unresolved count in summary with verbose mode hint
- Display unresolved channels per packet in verbose mode
- Update README to clarify search scope and document unresolved channel tracking

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Appease the Linter

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Updates fprime-zephyr from orphaned commit 44a4aa2 to merged main at 3139971.

This brings in 20 commits of LoRa radio development that were previously
orphaned, including:
- LoRa send/recv counts telemetry
- WriteRead interface stub
- Bandwidth tx/rx parameters
- File system integration
- SPI and I2C driver improvements
- Improved error handling

Fixes #324
* Initial plan

* Unify docs and docs-site directories

- Moved all content from docs/ to docs-site/
  - docs/main-content/ → docs-site/getting-started/
  - docs/additional-resources/ → docs-site/additional-resources/
  - docs/uploading/ → docs-site/uploading/
- Updated mkdocs.yml navigation to include all sections
- Fixed broken links in moved documentation files
- Copied safe-mode-fsm.md from component source to docs-site
- Removed old docs/ directory and docs-site/README.md (conflicts with index.md)
- Updated references in copilot-instructions.md and issue templates

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Fix MkDocs formatting in migrated documentation

- Converted GitHub-style admonitions to MkDocs format (!!! syntax)
- Updated repository names from fprime-zephyr-reference to proves-core-reference
- Fixed typo: "deployent" -> "deployment"
- Removed TODO comment about updating repo name
- Fixed broken link in STM32CubeProgrammer URL

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

* Removed Unused Docs

* Reset Fprime Zephyr to Main

* Updated Root readme

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* Partially reverting #320

* Remove fprime-zephyr submodule change
…#331)

* Find and Replace FprimeZephyrReference

* Renamed to PROVESFlightControllerReference

* Renammed Stragger

* Update gitignore
…337)

* Added Make Target for Updating Spacecraft ID

* Updated CI Build YAML

* Flipped IDs

* Implement Some Usability Stuff

* Fix Flipped ID's

* Fixed Validation Check
* veml6031 deprecation warning fix

* updated veml6031 deprecation warning resolution

---------

Co-authored-by: Samantha Hanna <sammy@Samanthas-MacBook-Pro.local>
* clarified bootloader reqs

* update on generate feedback
* clarified bootloader reqs

* update on generate feedback

* added UV instution
* fix rtc test

* "fix" the file manager tests

* skip tmp test
ineskhou and others added 22 commits March 4, 2026 02:14
* skafoding

* proper buffer extraction

* properlly remove the authen

* fixed overlapping and sjh

* added pass for wrong sq num skips JIC

* ensured bypass was correct

* Apply suggestions from code review

* lint

---------

Co-authored-by: aychar <aychar@aychar.dev>
… to init() (#345)

* Initial plan

* Move AntennaDeployer file creation from constructor to init()

Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
)

* Begin exporting artifacts necessary to flash firmware with openocd

* switch ci to upload firmware using openocd

* pass correct paths

* wait after flashing

* make gds run on custom tty port

* switch sequence number to need gds open

* add cube reboot step

* explicitly point to python inside of venv

* some reorganization

* tweaks

* fix the indentation.........

* update checkout and download-artifacts because github decided to not say these were deprecated until now even though theyve been deprecated for months!!!!!!!!

---------

Co-authored-by: aychar <aychar@aychar.dev>
* Add temperature threshold events to Thermal Manager

* Use params for thresholds

* Add throttling to temperature threshold events

* Add debouncing to threshold events, reduce throttle to 1

* pull out threshold values

* Update temperature threshold parameters and update documentation
* Add Pico Temperature Manager

* Fix topology errors

* Fix build casing on telemetry, fix error logging

* Fix errors, now builds

* Add die_temp to device tree

* add deinit function

* fix lint errors

* Office hours debugging

* idk

* add integration test

* typo

* try adding io-channel

* Working

* fix integration test

* fix int test pt2

* Change command string

* Add documentation

* Integrate Pico die temperature sensor into ThermalManager and update documentation

* Remove unused events and functions

---------

Co-authored-by: Nate Gay <email@nategay.me>
…iled (#362)

* send an message/event saying the startup sequence has been initiated

* send an message/event saying the startup sequence has been initiated

* added port connection for reading which sequence has been started

* added field for logging the file path of the initialized sequence

* compare the logged file path to the default file path of the cmd sequence and respond with success or failure

* edited where cmd seq handler looks for sequence file

* suggested cleanup has been cleaned

* ran fmt

---------

Co-authored-by: Michael Pham <61564344+Mikefly123@users.noreply.github.com>
* Added structure for alarm manager

* more structure

* rollback if I did something wrong

* Inital alarm contract

* does it work? IDK, does it build? yes.

* list alarm

* freezes when ALARM_SET is recieved

* pushing changes from office hours

* Updated code

* Mostly works

* Updated code

* updated code

* Flexible mask for different boards

* I know I should have this done but I'm really tired

* input val

* Alarm trigger issues

* full functionality

* Update sdd.md

* tests

* fix tests

* codespell

* Update PROVESFlightControllerReference/test/int/rtc_test.py

Co-authored-by: Nate Gay <email@n8.gay>

* AAA

* Update PROVESFlightControllerReference/Components/Drv/RtcManager/RtcManager.cpp

Co-authored-by: Nate Gay <email@n8.gay>

* ruff

* post review changes

* oops

* final final

* ehh

* Refactor

* Catch RC for callback

* updated catch

* return cap

---------

Co-authored-by: Nate Gay <email@nategay.me>
Co-authored-by: Nate Gay <email@n8.gay>
* Incremental Progress

* Add YAMCS integration (Option B auth bridge)

- yamcs/yamcs-data/etc/: YAMCS server config (global + fprime-project
  instance) with spacecraftId=68, frameLength=248, UDP ports 50000/50001
- yamcs/yamcs-data/etc/processor.yaml: YAMCS realtime processor config
- yamcs/yamcs-data/mdb/.gitkeep: placeholder for generated fprime.xtce.xml
- yamcs/fprime-gds.yml: yamcs-specific GDS config (omits options unknown
  to fprime-yamcs such as output-unframed-data and file-uplink-cooldown)
- yamcs/pyyaml-override.txt: uv override to satisfy fprime-yamcs>=0.1.0
  which requires PyYAML>=6.0.3 while fprime submodule pins ==6.0.2
- yamcs/docker-compose.yml: Docker Compose for remote server deployment
- tools/yamcs/proves_adapter.py: auth bridge; serial/TCP <-> YAMCS UDP
  with HMAC-SHA256 wrapping via AuthenticateFramer (Option B)
- Makefile: yamcs-dict, yamcs, yamcs-server, yamcs-adapter-tcp targets;
  fprime-yamcs-events launched alongside YAMCS; pyyaml uv override wired in
- .codespell-ignore-words.txt: add 'ser' (pyserial handle variable)

Verified: YAMCS 5.12.0 boots to RUNNING, all UDP data links OK,
Beacon container present in MDB from generated XTCE.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* patches: add fprime-yamcs-noapp-path.patch and wire into fprime-venv

fprime-yamcs 0.1.1 has two bugs when used with --no-app and --communication-selection none:

1. launch_app() is called unconditionally even when --no-app is set, crashing
   on parsed_args.app.name (NoneType). Fix: skip launch_app when noapp=True.

2. fprime-yamcs-events (run by YAMCS ProcessRunner, now by the Makefile) and
   other venv binaries are not on PATH for Java subprocesses spawned by Maven.
   Fix: prepend sys.executable's parent (venv bin) to PATH in launch_yamcs().

patches/fprime-yamcs-noapp-path.patch encodes both fixes. The fprime-venv
Makefile target applies it after pip install, using a grep sentinel to detect
whether it has already been applied (idempotent).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix fprime-yamcs-events missing dict arg and short TM frame reads

- Pass --dictionary to fprime-yamcs-events in Makefile yamcs target so
  the events bridge can resolve F Prime event IDs (previously failing
  with "Supply --dictionary or set the FPRIME_DICTIONARY env var")
- Fix _forward_tm_serial() to accumulate bytes in a loop until exactly
  frame_length bytes are available before forwarding; pyserial read()
  with a short timeout returns partial data, causing YAMCS to receive
  truncated frames

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix YAMCS adapter steady-state misalignment and process cleanup

- proves_adapter.py: add per-frame CRC validation in the steady-state
  read loop; re-sync byte-by-byte on failure instead of forwarding
  misaligned frames to YAMCS permanently.  Prints first 6 bytes of any
  failed frame for diagnosis.  Add sys.stdout line-buffering so
  diagnostics flush immediately to logs.

- Makefile yamcs-stop: kill fprime_yamcs Python wrapper and Maven in
  addition to the JVM; poll until the JVM exits (up to 5 s, then
  SIGKILL) before returning, preventing port-8090 conflicts on restart.

- fprime-yamcs-events busy-wait fix: replace the 100% CPU while True:
  pass loop with subscription.result(); persist via
  tools/apply-events-cpu-fix.py wired into the fprime-venv Make target.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix YAMCS packet preprocessor so Space Packets appear in Packets tab

- yamcs.fprime-project.yaml: replace placeholder MyPacketPreprocessor
  with org.yamcs.tctm.cfs.CfsPacketPreprocessor + useLocalGenerationTime.
  CcsdsPacketPreprocessor is abstract; GenericPacketPreprocessor requires
  timestampOffset/seqCountOffset args; CfsPacketPreprocessor handles the
  standard CCSDS primary header and, with useLocalGenerationTime: true,
  uses reception time instead of a CFS secondary header — correct for
  F Prime packets. Also remove MyCommandPostprocessor placeholder (not
  required for TC frames).

- tools/apply-yamcs-instance-config-fix.py: new script that patches the
  fprime-yamcs venv template (which is what the yamcs-maven-plugin
  actually reads) with the same fixes: correct preprocessor, frame
  length 248, remove ProcessRunner for fprime-yamcs-events.

- Makefile fprime-venv: wire apply-yamcs-instance-config-fix.py into
  the venv setup so the template is re-patched on every reinstall.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix YAMCS parameter extraction by specifying tm_realtime rootContainer

fprime-to-xtce does not designate a root container in the generated XTCE.
Mdb.getRootSequenceContainer() therefore returns null, causing
StreamTmPacketProvider to log "MDB does not have a root sequence container
and none was defined under streamConfig -> tm" and XtceTmExtractor to run
with rootContainer=null — packets arrived in the Links/Packets tabs but
zero parameters were ever extracted from any packet.

Fix: add rootContainer to the tm_realtime streamConfig entry pointing to
CCSDSSpacePacket, the CCSDS primary-header root container from which the
full F Prime container hierarchy (FPrimeTelemetryPacket/Channel/Event →
concrete per-packet/per-channel containers) descends.

Also wired into tools/apply-yamcs-instance-config-fix.py so the fix
survives venv reinstalls (the venv template is what yamcs-maven-plugin
actually reads).

Result: Beacon packet parameters (BootCount, CurrentMode, etc.) now
appear and update in the YAMCS Parameters tab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix YAMCS→FSW command path: correct TC framing and CCSDS header fields

The adapter's TC path had two problems preventing commands from reaching
the FSW correctly:

1. Wrong framing order — the adapter wrapped auth around the entire TC
   Transfer Frame from YAMCS, producing Auth(SDLink(SpacePacket)).  The
   FSW uplink pipeline (frameAccumulator → tcDeframer → authenticate →
   spacePacketDeframer) expects SDLink(Auth(SpacePacket)).  Fix: extract
   the SpacePacket from YAMCS's TC Transfer Frame, auth-wrap just the
   SpacePacket, then re-frame in a new TC Transfer Frame using
   SpaceDataLinkFramerDeframer.

2. CCSDS Packet Data Length was zero — fprime-to-xtce encodes this as a
   FixedValueEntry of 0 in the XTCE, and no built-in YAMCS command
   postprocessor fills it in without also adding a CFS checksum that
   corrupts F Prime's FW_PACKET_COMMAND field.  Fix: patch Packet Data
   Length and Source Sequence Count in the adapter before auth-wrapping.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix TM frame loss caused by FSW console text on shared UART

The FSW interleaves debug/console output (e.g. [Os::...]) on the same
UART as CCSDS TM frames. The previous fixed-length read approach would
read a mix of console text and partial frame data, causing CRC errors
and frame loss during event bursts.

Replace the fixed-length read + resync approach with a rolling buffer
that scans for TM sync headers and validates CRC before accepting each
frame. Non-frame bytes are efficiently skipped, so frames on both sides
of console text are recovered. Also enlarge the OS serial receive buffer
to 64 KB to absorb TM bursts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Updated README With YAMCS Instructions

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fixed YAMCS Shutdown / Port Management

* Update tools/yamcs/proves_adapter.py

Removed unused functions.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Bump fprime-yamcs to 0.1.2 and track upstream drift

fprime-yamcs 0.1.2 / fprime-xtce 0.1.1 broke the YAMCS startup path in
several ways that all surfaced together on `make yamcs`:

- Upstream `fprime_yamcs/__main__.py` main() now handles the no-app case
  natively (`[launch_app] if parsed_args.app is not None else []`), so
  the second hunk of our noapp/path patch is obsolete. Patch regenerated
  to keep only the PATH-injection hunk.
- Upstream `main()` passes `parsed_args.dictionary` (str) to
  `construct_temporary_configuration`, which eventually calls
  `dictionary.open()` and crashes with `'str' object has no attribute
  'open'`. Added a hunk that wraps the arg in `Path(...)`. This is a
  real upstream bug; should be filed against LeStarch/fprime-yamcs.
- Upstream `fprime-yamcs` no longer accepts `--no-convert-dictionary`
  (the flag was removed or never existed in 0.1.2). Dropped it from the
  Makefile `yamcs` target. `fprime-yamcs` regenerates the XTCE itself
  via `construct_temporary_configuration`, so `make yamcs-dict` is
  redundant but harmless and left in place.
- `fprime-to-xtce` 0.1.1 changed the root SpaceSystem name separator
  from `|` to `_` (now `ReferenceDeployment_ReferenceDeployment`),
  breaking the `rootContainer` path in the instance config. Updated
  both `yamcs/yamcs-data/etc/yamcs.fprime-project.yaml` (the config
  `fprime-yamcs` actually copies into the mvn tempdir) and
  `tools/apply-yamcs-instance-config-fix.py` (which patches the venv
  template on `make fprime-venv`).

Verified end-to-end on hardware: `make fprime-venv` applies all three
patches cleanly against a pristine 0.1.2 install, and `make yamcs
UART_DEVICE=/dev/tty.usbmodem101` brings YAMCS up at :8090, loads the
XTCE (200 params / 217 containers / 337 commands), connects the events
bridge, and streams TM frames from the board.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: aychar <aychar@aychar.dev>
* RTC Hardening

* Minor reorg after merge

* Update SDD

* Add important SDD note about lack of event use in the timeGetPort handler

* Fix unit tests

* Use int32 instead of uint32 for errno capture to prevent accidental wrap from negative error codes
* change default mode

* fix formatting
* Fix throtting on thermal manager

* Fix threshold logic and add helper function to ThermalManager

* Update sdd

Co-authored-by: Copilot <copilot@github.com>

* address comments

Co-authored-by: Copilot <copilot@github.com>

* fix throttle reset logic

* fix

* separate above and below threshold states

* Opposite throttle flag is now cleared at trigger time, Update sdd. Use switch case for thresholds.

---------

Co-authored-by: Copilot <copilot@github.com>
UART0_RX (GPIO1) and UART1_RX (GPIO5) were configured input-enable
without bias. When the payload connector is unattached, or when the
attached payload device is mid-reset during the longer MCUBoot+app
boot window, the floating RX pin picks up environmental noise. The
PL011 interprets the noise as start bits and asserts RXIM
continuously; on uart_irq_rx_enable() during topology setup, the CPU
becomes pinned in the RX ISR and the main thread never advances,
producing an apparent boot hang that only a hard power cycle clears.

Adding bias-pull-up; idles RX HIGH (UART idle state) when undriven,
eliminating the false start bits and the resulting interrupt storm.

Diagnosis confirmed via gdb halt on the live hung CPU: stack pinned
in pl011_irq_rx_ready -> serial_cb -> pl011_isr from inside
peripheralUartDriver.configure.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* Add local OpenOCD build and debug Make targets

* fix: apply CodeRabbit auto-fixes

Fixed 1 file(s) based on 2 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>

* correct dir

* use current hash

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
Agent-Logs-Url: https://github.com/Open-Source-Space-Foundation/proves-core-reference/sessions/4d9f98ef-4701-468c-aef0-7e689244afa9

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Mikefly123 <61564344+Mikefly123@users.noreply.github.com>
* add make format-filesystem command

* review changes
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

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: d87d920f-0f2d-4309-8971-568d94b3cd4a

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 and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.