Add satrs::fdir::FaultCounter, an FSFW-style error threshold counter:
counts faults, decrements over time when faults stop, and reports
when a threshold is exceeded. Two variants for now, mirroring the
hk.rs helper pattern:
- FaultCounterStd, backed by std::time::Instant
- FaultCounterEmbassy, backed by embassy_time::Instant (embassy-time
feature), with an optional defmt::Format impl gated on the defmt
feature
Add satrs::health::HealthTableMapSync::default() for easy construction
of a shared, global health table.
Wire both into the example app's MGM device handler as the first real
FDIR use case:
- the minisim MGM model gains SpiFaultMode (None/AllZeros/AllOnes) and
a SetSpiFault request, so a stuck SPI bus can be injected for testing,
independent of switch state
- MgmHandlerLis3Mdl::poll_sensor checks the SPI transfer result: a
comm timeout or an all-1s stuck-bus reply (the same pattern the sim
already uses for "device off") counts as a fault. Above threshold,
the component is marked Faulty in a HealthTableMapSync shared from
main.rs. This logic lives in the device handler, not the SPI comm
layer, since deciding what a failed transfer means for FDIR is a
handler concern.
- an all-0s reply is deliberately not treated as a fault, since it
collides with a legitimate zero-field reading
Introduced high-level abstractions for targetable requests in general.
- PUS Service 3 (HK) abstraction for targetable HK requests
- PUS Service 8 (Action) abstraction for targetable action requests
- Add new shared subcrate satrs-shared to split off some shared
components not expected to change very often.
- Renmame `satrs-core` to `satrs`. It is expected that sat-rs will remain
the primary crate, so the core information is superfluous, and core also
implies stability, which will not be the case for some time.
- Added diagrams for sat-rs example for both structure and data flow.
- Added explanations for those diagrams as well.
- Some renaming: Use `Pool` instead of `Store` for pool components.
- General improvements for satrs-book.
- Increased example modularization by moving the majority
of app logic inside dedicated modules
- Added a new `dyn_tmtc` feature for the satrs-example which is used
to configure the heap as the backing store for TMTC packages instead
of static stores.
- Added dedicated satrs-example chapter in satrs-book
- Better naming for pool abstractions
- Added last unittests for PUS helper services
- Introduce new abstraction for PUS schedulers
- `StoreAddr` is now a generic u64
- `spacepackets` points to 0.7.0 release