Skip to content

Commit

Permalink
fix: protocol syntax error
Browse files Browse the repository at this point in the history
  • Loading branch information
Bloeckchengrafik committed Mar 13, 2024
1 parent 2da4c9b commit 7ceb49a
Show file tree
Hide file tree
Showing 17 changed files with 95 additions and 53 deletions.
14 changes: 13 additions & 1 deletion crates/ftswarm/examples/hello_world.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use log::info;
use ftswarm::{aliases, FtSwarm};
use ftswarm::swarm_object::{NormallyOpen, SwarmObject, Switch};


aliases! {
Expand All @@ -25,5 +26,16 @@ async fn main() -> Result<(), String> {
swarm.halt();
info!("Uptime: {:?}", swarm.uptime().await?);

Ok(())
let switch = Switch::create(&swarm, Aliases::SWITCH, NormallyOpen::Open).await;

let mut switch_state = false;
loop {
{
let switch = switch.lock().unwrap();
if switch_state != switch.value {
switch_state = switch.value;
info!("Switch state: {}", switch_state);
}
}
}
}
18 changes: 17 additions & 1 deletion crates/ftswarm/src/swarm_object.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,20 @@ pub trait SwarmObject<Params>: NewSwarmObject<Params> + Updateable + Clone + Syn
}

#[derive(Clone)]
pub struct Hysteresis(pub i32);
pub struct Hysteresis(pub i32);


#[derive(Clone)]
pub enum NormallyOpen {
Open,
Closed,
}

impl Into<Argument> for NormallyOpen {
fn into(self) -> Argument {
match self {
NormallyOpen::Open => Argument::Int(0),
NormallyOpen::Closed => Argument::Int(1),
}
}
}
4 changes: 2 additions & 2 deletions crates/ftswarm/src/swarm_object/analog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{Hysteresis, NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{Hysteresis, NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Analog {
Expand Down Expand Up @@ -35,7 +35,7 @@ impl NewSwarmObject<Hysteresis> for Analog {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Analog)]
vec![Argument::SensorType(SensorType::Analog), NormallyOpen::Open.into()]
).await.unwrap();

self.run_command(
Expand Down
4 changes: 2 additions & 2 deletions crates/ftswarm/src/swarm_object/colorsensor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{Hysteresis, NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{Hysteresis, NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct ColorSensor {
Expand Down Expand Up @@ -35,7 +35,7 @@ impl NewSwarmObject<Hysteresis> for ColorSensor {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::ColorSensor)]
vec![Argument::SensorType(SensorType::ColorSensor), NormallyOpen::Open.into()]
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/counter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,27 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Counter {
pub name: String,
pub value: i32,
normally_open: NormallyOpen,
swarm: FtSwarm
}

impl_int_updateable!(Counter);
impl_swarm_object!(Counter, ());
impl_swarm_object!(Counter, NormallyOpen);

impl NewSwarmObject<()> for Counter {
impl NewSwarmObject<NormallyOpen> for Counter {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(Counter {
name: name.to_string(),
value: 0,
normally_open,
swarm
})
}
Expand All @@ -34,7 +36,7 @@ impl NewSwarmObject<()> for Counter {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Counter)]
vec![Argument::SensorType(SensorType::Counter), self.normally_open.clone().into()]
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/digital.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,27 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Digital {
pub name: String,
pub value: bool,
normally_open: NormallyOpen,
swarm: FtSwarm,
}

impl_bool_updateable!(Digital);
impl_swarm_object!(Digital, ());
impl_swarm_object!(Digital, NormallyOpen);

impl NewSwarmObject<()> for Digital {
impl NewSwarmObject<NormallyOpen> for Digital {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(Digital {
name: name.to_string(),
value: false,
normally_open,
swarm,
})
}
Expand All @@ -32,7 +34,7 @@ impl NewSwarmObject<()> for Digital {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Digital)],
vec![Argument::SensorType(SensorType::Digital), self.normally_open.clone().into()],
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/frequencymeter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,27 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct FrequencyMeter {
pub name: String,
pub value: i32,
normally_open: NormallyOpen,
swarm: FtSwarm
}

impl_int_updateable!(FrequencyMeter);
impl_swarm_object!(FrequencyMeter, ());
impl_swarm_object!(FrequencyMeter, NormallyOpen);

impl NewSwarmObject<()> for FrequencyMeter {
impl NewSwarmObject<NormallyOpen> for FrequencyMeter {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(FrequencyMeter {
name: name.to_string(),
value: 0,
normally_open,
swarm
})
}
Expand All @@ -34,7 +36,7 @@ impl NewSwarmObject<()> for FrequencyMeter {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::FrequencyMeter)]
vec![Argument::SensorType(SensorType::FrequencyMeter), self.normally_open.clone().into()]
).await.unwrap();

self.run_command(
Expand Down
4 changes: 2 additions & 2 deletions crates/ftswarm/src/swarm_object/ldr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{Hysteresis, NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{Hysteresis, NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Ldr {
Expand Down Expand Up @@ -35,7 +35,7 @@ impl NewSwarmObject<Hysteresis> for Ldr {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Ldr)]
vec![Argument::SensorType(SensorType::Ldr), NormallyOpen::Open.into()]
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/lightbarrier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,27 @@ use ftswarm_proto::command::enums::{SensorType, ToggleType};
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct LightBarrier {
pub name: String,
pub value: bool,
normally_open: NormallyOpen,
swarm: FtSwarm,
}

impl_bool_updateable!(LightBarrier);
impl_swarm_object!(LightBarrier, ());
impl_swarm_object!(LightBarrier, NormallyOpen);

impl NewSwarmObject<()> for LightBarrier {
impl NewSwarmObject<NormallyOpen> for LightBarrier {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(LightBarrier {
name: name.to_string(),
value: false,
normally_open,
swarm,
})
}
Expand All @@ -33,7 +35,7 @@ impl NewSwarmObject<()> for LightBarrier {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::LightBarrier)],
vec![Argument::SensorType(SensorType::LightBarrier), self.normally_open.clone().into()],
).await.unwrap();

self.run_command(
Expand Down
4 changes: 2 additions & 2 deletions crates/ftswarm/src/swarm_object/ntc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{Hysteresis, NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{Hysteresis, NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Ntc {
Expand Down Expand Up @@ -34,7 +34,7 @@ impl NewSwarmObject<Hysteresis> for Ntc {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Thermometer)]
vec![Argument::SensorType(SensorType::Thermometer), NormallyOpen::Open.into()]
).await.unwrap();

self.run_command(
Expand Down
4 changes: 2 additions & 2 deletions crates/ftswarm/src/swarm_object/ohmmeter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{Hysteresis, NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{Hysteresis, NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct Ohmmeter {
Expand Down Expand Up @@ -35,7 +35,7 @@ impl NewSwarmObject<Hysteresis> for Ohmmeter {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::Ohmmeter)]
vec![Argument::SensorType(SensorType::Ohmmeter), NormallyOpen::Open.into()]
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/reedswitch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,27 @@ use ftswarm_proto::command::enums::{SensorType, ToggleType};
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct ReedSwitch {
pub name: String,
pub value: bool,
normally_open: NormallyOpen,
swarm: FtSwarm,
}

impl_bool_updateable!(ReedSwitch);
impl_swarm_object!(ReedSwitch, ());
impl_swarm_object!(ReedSwitch, NormallyOpen);

impl NewSwarmObject<()> for ReedSwitch {
impl NewSwarmObject<NormallyOpen> for ReedSwitch {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(ReedSwitch {
name: name.to_string(),
value: false,
normally_open,
swarm,
})
}
Expand All @@ -33,7 +35,7 @@ impl NewSwarmObject<()> for ReedSwitch {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::ReedSwitch)],
vec![Argument::SensorType(SensorType::ReedSwitch), self.normally_open.clone().into()],
).await.unwrap();

self.run_command(
Expand Down
12 changes: 7 additions & 5 deletions crates/ftswarm/src/swarm_object/rotaryencoder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,27 @@ use ftswarm_proto::command::enums::SensorType;
use ftswarm_proto::command::rpc::RpcFunction;
use ftswarm_proto::message_parser::rpc::RPCReturnParam;
use crate::FtSwarm;
use crate::swarm_object::{NewSwarmObject, SwarmObject, Updateable};
use crate::swarm_object::{NewSwarmObject, NormallyOpen, SwarmObject, Updateable};

#[derive(Clone)]
pub struct RotaryEncoder {
pub name: String,
pub value: i32,
normally_open: NormallyOpen,
swarm: FtSwarm
}

impl_int_updateable!(RotaryEncoder);
impl_swarm_object!(RotaryEncoder, ());
impl_swarm_object!(RotaryEncoder, NormallyOpen);

impl NewSwarmObject<()> for RotaryEncoder {
impl NewSwarmObject<NormallyOpen> for RotaryEncoder {
default_new_swarm_object_impls!();

fn new(name: &str, swarm: FtSwarm, _: ()) -> Box<Self> {
fn new(name: &str, swarm: FtSwarm, normally_open: NormallyOpen) -> Box<Self> {
Box::new(RotaryEncoder {
name: name.to_string(),
value: 0,
normally_open,
swarm
})
}
Expand All @@ -34,7 +36,7 @@ impl NewSwarmObject<()> for RotaryEncoder {
async move {
self.run_command(
RpcFunction::SetSensorType,
vec![Argument::SensorType(SensorType::RotaryEncoder)]
vec![Argument::SensorType(SensorType::RotaryEncoder), self.normally_open.clone().into()]
).await.unwrap();

self.run_command(
Expand Down
Loading

0 comments on commit 7ceb49a

Please sign in to comment.