Real-time Framework for Embedded systems (RFE)
RFE is a framework for building real-time embedded applications in Rust. It provides a message-passing architecture for inter-application communication, time management, and scheduling at different rates.
Features
- Message-passing architecture for inter-application communication
- Time management for both system and monotonic time
- Scheduling of applications at different rates (1Hz to 100Hz)
- Support for different platforms through feature flags
- Connectors for communication between instances (TCP, UDP, Memory)
Usage
To use RFE, you need to create an RfeInstance, add applications to it, and then run it at 100Hz. Applications must implement the App trait.
use rfe::*;
struct MyApp;
impl App for MyApp {
fn init(&mut self, rfe: &mut Rfe) -> anyhow::Result<()> {
// Initialize the application
Ok(())
}
fn run(&mut self, rfe: &mut Rfe) {
// Run the application
}
fn hk(&mut self, rfe: &mut Rfe) {
// Generate housekeeping data
}
fn out_data(&mut self, rfe: &mut Rfe) {
// Generate output data
}
fn get_app_rate(&self) -> Rate {
Rate::Hz10 // Run at 10Hz
}
}
Platform Support
RFE supports multiple platforms through feature flags:
std: Standard library support (Unix, Windows)rp2040: Raspberry Pi Pico supportreflect: Runtime type information for debugging
License
This project is licensed under the MIT License - see the LICENSE file for details.