# 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. ```rust 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 support - `reflect`: Runtime type information for debugging ## License This project is licensed under the MIT License - see the LICENSE file for details.