Compare commits

..

No commits in common. "09f75f97eb707ccd1adac494dfd5b5235314a08f" and "d5ad70666ef6077b8fe8aae613c5cd71695a4f92" have entirely different histories.

6 changed files with 16 additions and 39 deletions

View file

@ -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
}
}
}

View file

@ -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)*

View file

@ -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};

View file

@ -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
} }
} }
} }

View file

@ -56,9 +56,10 @@ impl OrganFactory {
brain_command_to_organ_rx, brain_command_to_organ_rx,
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();
}); });

View file

@ -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>;
} }