diff --git a/examples/onoff_light/src/main.rs b/examples/onoff_light/src/main.rs index 6b076868..e66928a1 100644 --- a/examples/onoff_light/src/main.rs +++ b/examples/onoff_light/src/main.rs @@ -150,11 +150,14 @@ fn run() -> Result<(), Error> { let mut transport = pin!(matter.run( &socket, &socket, - Some(CommissioningData { - // TODO: Hard-coded for now - verifier: VerifierData::new_with_pw(123456, *matter.borrow()), - discriminator: 250, - }), + Some(( + CommissioningData { + // TODO: Hard-coded for now + verifier: VerifierData::new_with_pw(123456, *matter.borrow()), + discriminator: 250, + }, + Default::default(), + )), )); // NOTE: diff --git a/rs-matter/src/core.rs b/rs-matter/src/core.rs index 4153cd9b..e10dd5a4 100644 --- a/rs-matter/src/core.rs +++ b/rs-matter/src/core.rs @@ -41,6 +41,7 @@ use crate::{ pub const MATTER_PORT: u16 = 5540; /// Device Commissioning Data +#[derive(Debug, Clone)] pub struct CommissioningData { /// The data like password or verifier that is required to authenticate pub verifier: VerifierData, @@ -149,16 +150,12 @@ impl<'a> Matter<'a> { fn start_comissioning( &self, dev_comm: CommissioningData, + discovery_capabilities: DiscoveryCapabilities, buf: &mut [u8], ) -> Result { if !self.pase_mgr.borrow().is_pase_session_enabled() && self.fabric_mgr.borrow().is_empty() { - print_pairing_code_and_qr( - self.dev_det, - &dev_comm, - DiscoveryCapabilities::default(), - buf, - )?; + print_pairing_code_and_qr(self.dev_det, &dev_comm, discovery_capabilities, buf)?; self.pase_mgr.borrow_mut().enable_pase_session( dev_comm.verifier, @@ -182,17 +179,17 @@ impl<'a> Matter<'a> { &self, send: S, recv: R, - dev_comm: Option, + dev_comm: Option<(CommissioningData, DiscoveryCapabilities)>, ) -> Result<(), Error> where S: NetworkSend, R: NetworkReceive, { - if let Some(dev_comm) = dev_comm { + if let Some((dev_comm, discovery_caps)) = dev_comm { let buf_access = PacketBufferExternalAccess(&self.transport_mgr.rx); let mut buf = buf_access.get().await.ok_or(ErrorCode::NoSpace)?; - self.start_comissioning(dev_comm, &mut buf)?; + self.start_comissioning(dev_comm, discovery_caps, &mut buf)?; } self.transport_mgr.run(send, recv).await diff --git a/rs-matter/src/pairing/mod.rs b/rs-matter/src/pairing/mod.rs index ec51e20e..f367b75d 100644 --- a/rs-matter/src/pairing/mod.rs +++ b/rs-matter/src/pairing/mod.rs @@ -34,6 +34,7 @@ use self::{ qr::{compute_qr_code_text, print_qr_code}, }; +#[derive(Copy, Clone, Debug, Eq, PartialEq)] pub struct DiscoveryCapabilities { on_ip_network: bool, ble: bool, @@ -41,8 +42,8 @@ pub struct DiscoveryCapabilities { } impl DiscoveryCapabilities { - pub fn new(on_ip_network: bool, ble: bool, soft_access_point: bool) -> Self { - DiscoveryCapabilities { + pub const fn new(on_ip_network: bool, ble: bool, soft_access_point: bool) -> Self { + Self { on_ip_network, ble, soft_access_point, diff --git a/rs-matter/src/secure_channel/spake2p.rs b/rs-matter/src/secure_channel/spake2p.rs index 4c61880f..05219e4d 100644 --- a/rs-matter/src/secure_channel/spake2p.rs +++ b/rs-matter/src/secure_channel/spake2p.rs @@ -86,6 +86,7 @@ impl Default for Spake2P { } } +#[derive(Debug, Clone)] pub struct VerifierData { pub data: VerifierOption, // For the VerifierOption::Verifier, the following fields only serve @@ -94,6 +95,7 @@ pub struct VerifierData { pub count: u32, } +#[derive(Debug, Clone)] pub enum VerifierOption { /// With Password Password(u32), diff --git a/rs-matter/tests/common/im_engine.rs b/rs-matter/tests/common/im_engine.rs index 3eb08e5e..6b83af13 100644 --- a/rs-matter/tests/common/im_engine.rs +++ b/rs-matter/tests/common/im_engine.rs @@ -259,7 +259,7 @@ impl<'a> ImEngine<'a> { } fn init_matter(matter: &Matter, local_nodeid: u64, remote_nodeid: u64, cat_ids: &NocCatIds) { - matter.transport_mgr.reset(); + matter.transport_mgr.reset().unwrap(); let mut session = ReservedSession::reserve_now(matter).unwrap();