Core Components of a Rust Flight Software Framework #2

Open
opened 2022-06-09 12:55:23 +02:00 by muellerr · 0 comments
Owner

This is a collection of ideas and features a minimal version of a Rust Flight
Framework would require. For a first prototype, a full runtime is assumed to simplify development. Later, it might sense to extend or adapt these abstractions to support something like FreeRTOS or RTIC.

Core Components

- [x] Task Abstraction: Merged as part of rust/launchpad#1 I think it's easier for now to not provide executors.
- [x] Object Manager: First rudimentary implementation: https://egit.irs.uni-stuttgart.de/rust/launchpad/src/branch/main/src/core/objects.rs. Not feasble for Rust.

Core Extension

  • Store Abstraction. A pool abstraction to allow storing TCs/TMs and IPC packets. Merged in rust/launchpad#5
  • Serialization and Deserialization helpers. serde looks huge. Maybe it can be used for our purposes. postcard also looks really useful to serialize structs and other similar data.
    Actually, looking at the postcard 1.0 announcement post, this seems like a really good choice with the crate being specifically targeted towards embedded applications and having an active sponsoring from Mozilla
  • Custom Packet Specification: Issue rust/fsrc-launchpad#13
  • Datapool: Issue rust/fsrc-launchpad#14
  • PUS Service 1 Verification: Merged as part of rust/fsrc-launchpad#11
  • PUS Service 5 Events: Merged as part of rust/fsrc-launchpad#19

Additional

This is a collection of ideas and features a minimal version of a Rust Flight Framework would require. For a first prototype, a full runtime is assumed to simplify development. Later, it might sense to extend or adapt these abstractions to support something like FreeRTOS or RTIC. ## Core Components ~~- [x] Task Abstraction: Merged as part of https://egit.irs.uni-stuttgart.de/rust/launchpad/pulls/1~~ I think it's easier for now to not provide executors. ~~- [x] Object Manager: First rudimentary implementation: https://egit.irs.uni-stuttgart.de/rust/launchpad/src/branch/main/src/core/objects.rs~~. Not feasble for Rust. - [x] Event Manager: First version merged in https://egit.irs.uni-stuttgart.de/rust/launchpad/pulls/4 - [x] Packet Stack. Implemented inside the https://egit.irs.uni-stuttgart.de/rust/spacepackets crate, `v0.1.0` released - [x] First Communication Interface to allow commanding. Start with PUS and a UDP server. Part of https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/pulls/8 - [x] Basic packet routing or dispatch mechanism which dispatches CCSDS packets or PUS packets to registered packet handlers. Part of https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/pulls/8 - [x] IPC: Look into how to smartly perform IPC. Maybe start with something like Events or Action Messages - [x] Logging: See dedicated issue https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/issues/12 ## Core Extension - [x] Store Abstraction. A pool abstraction to allow storing TCs/TMs and IPC packets. Merged in https://egit.irs.uni-stuttgart.de/rust/launchpad/pulls/5 - [x] Serialization and Deserialization helpers. [serde](https://serde.rs/) looks huge. Maybe it can be used for our purposes. [postcard](https://github.com/jamesmunns/postcard) also looks really useful to serialize structs and other similar data. Actually, looking at [the postcard 1.0](https://jamesmunns.com/blog/postcard-1-0-run/) announcement post, this seems like a really good choice with the crate being specifically targeted towards embedded applications and having an active sponsoring from Mozilla - [ ] Custom Packet Specification: Issue https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/issues/13 - [x] Datapool: Issue https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/issues/14 - [x] PUS Service 1 Verification: Merged as part of https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/pulls/11 - [x] PUS Service 5 Events: Merged as part of https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/pulls/19 ## Additional - [x] Find a good/better name. Issue https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/issues/9 - [ ] Power and Thermal Components and abstractions - [ ] Assembly, Subsystem, General Mode Tree abstraction. Partly https://egit.irs.uni-stuttgart.de/rust/fsrc-launchpad/issues/15
muellerr added the
enhancement
help wanted
concepts
labels 2022-08-29 10:29:13 +02:00
muellerr added this to the satrs v0.1.0 milestone 2022-08-29 10:30:53 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: rust/sat-rs#2
No description provided.