Compare commits
No commits in common. "09f75f97eb707ccd1adac494dfd5b5235314a08f" and "d5ad70666ef6077b8fe8aae613c5cd71695a4f92" have entirely different histories.
09f75f97eb
...
d5ad70666e
6 changed files with 16 additions and 39 deletions
|
|
@ -1,14 +0,0 @@
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
pub struct ChildIdentity {
|
|
||||||
id: u32,
|
|
||||||
parent_id: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ChildIdentity {
|
|
||||||
pub fn new(id: u32, parent_id: u32) -> Self {
|
|
||||||
Self {
|
|
||||||
id,
|
|
||||||
parent_id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
macro_rules! impl_identifiable {
|
macro_rules! impl_identifiable {
|
||||||
($target:ident, { $($body:tt)* }) => {
|
($target:ident, { $($body:tt)* }) => {
|
||||||
impl Parenchyma for $target {
|
impl Parenchyma for $target {
|
||||||
fn identity(&self) -> child_identity::ChildIdentity {
|
fn id(&self) -> u32 {
|
||||||
self.identity
|
self.id
|
||||||
}
|
}
|
||||||
|
|
||||||
$($body)*
|
$($body)*
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ pub mod coordinates;
|
||||||
pub mod protocols;
|
pub mod protocols;
|
||||||
pub mod system;
|
pub mod system;
|
||||||
pub mod macros;
|
pub mod macros;
|
||||||
pub mod child_identity;
|
|
||||||
|
|
||||||
use std::fmt::Alignment::Left;
|
use std::fmt::Alignment::Left;
|
||||||
use tracing::{debug, info};
|
use tracing::{debug, info};
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,15 @@
|
||||||
use crate::child_identity::ChildIdentity;
|
use crate::impl_identifiable;
|
||||||
use crate::organs::parenchyma::Parenchyma;
|
use crate::organs::parenchyma::Parenchyma;
|
||||||
use crate::protocols::{OrganCommand, OrganCommandEnvelope, OrganResponse};
|
use crate::protocols::{OrganCommand, OrganCommandEnvelope, OrganResponse};
|
||||||
use crate::system::time::Time;
|
|
||||||
use crate::{child_identity, impl_identifiable};
|
|
||||||
use tracing::{info};
|
|
||||||
pub struct LedPump {
|
pub struct LedPump {
|
||||||
identity: child_identity::ChildIdentity,
|
id: u32,
|
||||||
last_beat: u64,
|
last_beat: u128,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_identifiable!(LedPump, {
|
impl_identifiable!(LedPump, {
|
||||||
fn do_work(&mut self, _envelope: OrganCommandEnvelope) -> OrganResponse {
|
fn do_work(&mut self, _envelope: OrganCommandEnvelope) -> OrganResponse {
|
||||||
// Your logic here
|
// Your logic here
|
||||||
let now = Time::time_stamp_millis();
|
|
||||||
if now > self.last_beat + 500 {
|
|
||||||
info!("LED Pump heart beat at {} {:?}", now, self.identity);
|
|
||||||
self.last_beat = now;
|
|
||||||
}
|
|
||||||
OrganResponse::Ok
|
OrganResponse::Ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -26,10 +19,10 @@ impl_identifiable!(LedPump, {
|
||||||
});
|
});
|
||||||
|
|
||||||
impl LedPump {
|
impl LedPump {
|
||||||
pub fn new(id: u32, parent_organ_id: u32) -> Self {
|
pub fn new(id: u32) -> Self {
|
||||||
Self {
|
Self {
|
||||||
identity: ChildIdentity::new(id, parent_organ_id),
|
id,
|
||||||
last_beat: 0,
|
last_beat: 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -57,8 +57,9 @@ impl OrganFactory {
|
||||||
feedback_to_brain_tx
|
feedback_to_brain_tx
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
let last_parenchyma_id = organ_id;
|
let last_parenchyma_id = organ_id;
|
||||||
let led_pump = LedPump::new(OrganFactory::next_parenchyma_id(last_parenchyma_id), organ_id);
|
let led_pump = LedPump::new(OrganFactory::next_parenchyma_id(last_parenchyma_id));
|
||||||
heart.add_parenchyma(Box::new(led_pump));
|
heart.add_parenchyma(Box::new(led_pump));
|
||||||
heart.start();
|
heart.start();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
use crate::child_identity::ChildIdentity;
|
|
||||||
use crate::protocols::{OrganCommand, OrganCommandEnvelope, OrganResponse};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Parenchyma: The essential and distinctive functional tissue of an organ,
|
Parenchyma: The essential and distinctive functional tissue of an organ,
|
||||||
as distinguished from its connective tissue, blood vessels,
|
as distinguished from its connective tissue, blood vessels,
|
||||||
and nerves (the stroma)
|
and nerves (the stroma)
|
||||||
*/
|
*/
|
||||||
|
use crate::protocols::{OrganCommand, OrganCommandEnvelope, OrganResponse};
|
||||||
|
|
||||||
pub trait Parenchyma: Send {
|
pub trait Parenchyma: Send {
|
||||||
fn identity(&self) -> ChildIdentity;
|
fn id(&self) -> u32;
|
||||||
|
|
||||||
fn do_work (&mut self, command_envelope: OrganCommandEnvelope) -> OrganResponse;
|
fn do_work (&mut self, command_envelope: OrganCommandEnvelope) -> OrganResponse;
|
||||||
|
|
||||||
fn get_supported_commands(&self) -> Vec<OrganCommand>;
|
fn get_supported_commands(&self) -> Vec<OrganCommand>;
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue