Skip to content

Commit

Permalink
change to TryFrom for State
Browse files Browse the repository at this point in the history
  • Loading branch information
tarfu committed Dec 24, 2023
1 parent 0e005f9 commit 4e9117b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 17 deletions.
16 changes: 8 additions & 8 deletions src/asynch/runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,9 @@ impl<'d, AT: AtatClient, C: CellularConfig, const URC_CAPACITY: usize>
let steps = desired_state as isize - start_state;
for step in 0..steps {
let next_state = start_state + step;
match OperationState::from(next_state) {
Some(OperationState::PowerDown) => {}
Some(OperationState::PowerUp) => match self.power_up().await {
match OperationState::try_from(next_state) {
Ok(OperationState::PowerDown) => {}
Ok(OperationState::PowerUp) => match self.power_up().await {
Ok(_) => {
self.ch.set_power_state(OperationState::PowerUp);
}
Expand All @@ -324,7 +324,7 @@ impl<'d, AT: AtatClient, C: CellularConfig, const URC_CAPACITY: usize>
break;
}
},
Some(OperationState::Alive) => match self.is_alive().await {
Ok(OperationState::Alive) => match self.is_alive().await {
Ok(_) => {
self.ch.set_power_state(OperationState::Alive);
}
Expand All @@ -333,7 +333,7 @@ impl<'d, AT: AtatClient, C: CellularConfig, const URC_CAPACITY: usize>
break;
}
},
Some(OperationState::Initialized) => match self.init_at().await {
Ok(OperationState::Initialized) => match self.init_at().await {
Ok(_) => {
self.ch.set_power_state(OperationState::Initialized);
}
Expand All @@ -342,13 +342,13 @@ impl<'d, AT: AtatClient, C: CellularConfig, const URC_CAPACITY: usize>
break;
}
},
Some(OperationState::Connected) => {
Ok(OperationState::Connected) => {
todo!()
}
Some(OperationState::DataEstablished) => {
Ok(OperationState::DataEstablished) => {
todo!()
}
None => {
Err(_) => {
error!("State transition next_state not valid: start_state={}, next_state={}, steps={} ", start_state, next_state, steps);
break;
}
Expand Down
19 changes: 10 additions & 9 deletions src/asynch/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,19 @@ pub enum OperationState {
DataEstablished,
}

impl OperationState {
pub fn from(state: isize) -> Option<Self> {
impl TryFrom<isize> for OperationState {
fn try_from(state: isize) -> Result<Self, ()> {
match state {
0 => Some(OperationState::PowerDown),
1 => Some(OperationState::PowerUp),
2 => Some(OperationState::Alive),
3 => Some(OperationState::Initialized),
4 => Some(OperationState::Connected),
5 => Some(OperationState::DataEstablished),
_ => None,
0 => Ok(OperationState::PowerDown),
1 => Ok(OperationState::PowerUp),
2 => Ok(OperationState::Alive),
3 => Ok(OperationState::Initialized),
4 => Ok(OperationState::Connected),
5 => Ok(OperationState::DataEstablished),
_ => Err(()),
}
}
type Error = ();
}

use crate::command::Urc;
Expand Down

0 comments on commit 4e9117b

Please sign in to comment.