diff --git a/pico/app/src/main.rs b/pico/app/src/main.rs index d82247e..20f6a24 100644 --- a/pico/app/src/main.rs +++ b/pico/app/src/main.rs @@ -289,6 +289,9 @@ async fn urc_handler_task( v.index, v.mem ); } + urc::Urc::EnterPinReadResponse(v) => { + info!("URC EnterPinReadResponse code={}", v.code); + } }, pubsub::WaitResult::Lagged(b) => { info!("Urc Lagged messages: {}", b); diff --git a/pico/pico-lib/src/network.rs b/pico/pico-lib/src/network.rs index 4e9ebee..73899fc 100644 --- a/pico/pico-lib/src/network.rs +++ b/pico/pico-lib/src/network.rs @@ -85,12 +85,20 @@ pub struct AtOperatorSelectionRead; #[derive(Debug, Format, Clone, AtatResp, PartialEq)] pub struct OperatorSelectionReadResponse { #[at_arg(position = 0)] - pub mode: u8, // 0 Automatic, 1 Manual + pub mode: OperatorMode, #[at_arg(position = 1)] pub format: Option, + #[at_arg(position = 2)] pub oper: Option>, } +#[derive(Debug, Format, Clone, PartialEq, AtatEnum, Default)] +pub enum OperatorMode { + #[default] + Automatic = 0, + Manual = 1, +} + #[cfg(test)] extern crate std; @@ -295,7 +303,7 @@ mod tests { let cmd = AtOperatorSelectionRead; assert_eq!( OperatorSelectionReadResponse { - mode: 0, + mode: OperatorMode::Automatic, format: Some(0), oper: Some(String::try_from("PANNON GSM").unwrap()) }, diff --git a/pico/pico-lib/src/urc.rs b/pico/pico-lib/src/urc.rs index fbb325a..3dc46f9 100644 --- a/pico/pico-lib/src/urc.rs +++ b/pico/pico-lib/src/urc.rs @@ -3,6 +3,7 @@ use atat::atat_derive::AtatUrc; use atat::heapless_bytes::Bytes; use crate::call::ClipUrc; +use crate::network::EnterPinReadResponse; use crate::sms::NewMessageIndicationUrc; // 18.1 CME ERROR @@ -21,6 +22,8 @@ pub struct DeactResponse { // All URCs must be defined (https://github.com/FactbirdHQ/atat/issues/149#issuecomment-1538193692) #[derive(Clone, AtatUrc)] pub enum Urc { + #[at_urc("+CPIN")] + EnterPinReadResponse(EnterPinReadResponse), #[at_urc("RING")] Ring, #[at_urc("NORMAL POWER DOWN")]