working on thread safety, preparing for static RTOS

This commit is contained in:
2023-12-12 22:55:22 +01:00
parent c3be10903b
commit 07d9f52b8d
6 changed files with 142 additions and 45 deletions

View File

@ -1,6 +1,5 @@
#![no_std]
//TODO look into using core::ffi (some types do not seem to work)
//TODO os errors in API calls
//TODO look into a pattern for late initialized stuff, currently using Option (can we make it compile time safe?)
@ -60,7 +59,7 @@ impl datasets::HasTypeId for HandlerData {}
struct Handler {
id: objectmanager::ObjectId,
command_queue: queues::MessageQueue,
command_queue: queues::MessageQueue<10>,
data: datasets::OwnedDataset<HandlerData>
}
@ -94,8 +93,8 @@ impl tasks::ExecutableObjectIF for Handler {
sifln!("Handler {} performs", self.id);
let result = self.command_queue.receive();
match result {
Ok(message) => self.handle_message(message),
Err(_) => {
Some(message) => self.handle_message(message),
None => {
sifln!("Handler {} got nothing", self.id);
}
}
@ -149,8 +148,9 @@ impl DatapoolOwnerIF for HandlerSender {}
impl SystemObjectIF for HandlerSender {
fn get_command_queue(&self) -> crate::fsrc::queues::MessageQueueSender {
queues::MessageQueueSender::new()
queues::MessageQueueSender::new() //TODO
}
fn get_id(&self) -> objectmanager::ObjectId {
self.id
}
@ -173,7 +173,7 @@ fn mission() {
let mut h1 = Handler {
id: 1,
command_queue: queues::MessageQueue::new(5),
command_queue: queues::MessageQueue::new(),
data: datasets::OwnedDataset::new()
};
let mut h2 = HandlerSender {