From 08125aa919a4dc4de79f91de9a7f3586e51a7739 Mon Sep 17 00:00:00 2001 From: xoviat Date: Sun, 23 Nov 2025 13:11:18 -0600 Subject: wpan: restructure ipcc and hil test wpan_mac --- tests/stm32/src/bin/wpan_ble.rs | 120 ++++++++++++++++++---------------------- tests/stm32/src/bin/wpan_mac.rs | 29 +++++----- 2 files changed, 66 insertions(+), 83 deletions(-) (limited to 'tests') diff --git a/tests/stm32/src/bin/wpan_ble.rs b/tests/stm32/src/bin/wpan_ble.rs index 0f396b848..b4c0cbf56 100644 --- a/tests/stm32/src/bin/wpan_ble.rs +++ b/tests/stm32/src/bin/wpan_ble.rs @@ -32,7 +32,7 @@ bind_interrupts!(struct Irqs{ const BLE_GAP_DEVICE_NAME_LENGTH: u8 = 7; #[embassy_executor::task] -async fn run_mm_queue(memory_manager: mm::MemoryManager) { +async fn run_mm_queue(mut memory_manager: mm::MemoryManager<'static>) { memory_manager.run_queue().await; } @@ -45,14 +45,13 @@ async fn main(spawner: Spawner) { info!("Hello World!"); let config = Config::default(); - let mut mbox = TlMbox::init(p.IPCC, Irqs, config); + let mbox = TlMbox::init(p.IPCC, Irqs, config).await; + let mut sys = mbox.sys_subsystem; + let mut ble = mbox.ble_subsystem; spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap()); - let sys_event = mbox.sys_subsystem.read().await; - info!("sys event: {}", sys_event.payload()); - - let fw_info = mbox.sys_subsystem.wireless_fw_info().unwrap(); + let fw_info = sys.wireless_fw_info().unwrap(); let version_major = fw_info.version_major(); let version_minor = fw_info.version_minor(); let subversion = fw_info.subversion(); @@ -65,121 +64,108 @@ async fn main(spawner: Spawner) { version_major, version_minor, subversion, sram2a_size, sram2b_size ); - let _ = mbox.sys_subsystem.shci_c2_ble_init(Default::default()).await; + let _ = sys.shci_c2_ble_init(Default::default()).await; info!("resetting BLE..."); - mbox.ble_subsystem.reset().await; - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.reset().await; + let response = ble.read().await.unwrap(); info!("{}", response); info!("config public address..."); - mbox.ble_subsystem - .write_config_data(&ConfigData::public_address(get_bd_addr()).build()) + ble.write_config_data(&ConfigData::public_address(get_bd_addr()).build()) .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("config random address..."); - mbox.ble_subsystem - .write_config_data(&ConfigData::random_address(get_random_addr()).build()) + ble.write_config_data(&ConfigData::random_address(get_random_addr()).build()) .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("config identity root..."); - mbox.ble_subsystem - .write_config_data(&ConfigData::identity_root(&get_irk()).build()) + ble.write_config_data(&ConfigData::identity_root(&get_irk()).build()) .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("config encryption root..."); - mbox.ble_subsystem - .write_config_data(&ConfigData::encryption_root(&get_erk()).build()) + ble.write_config_data(&ConfigData::encryption_root(&get_erk()).build()) .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("config tx power level..."); - mbox.ble_subsystem.set_tx_power_level(PowerLevel::ZerodBm).await; - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.set_tx_power_level(PowerLevel::ZerodBm).await; + let response = ble.read().await.unwrap(); info!("{}", response); info!("GATT init..."); - mbox.ble_subsystem.init_gatt().await; - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.init_gatt().await; + let response = ble.read().await.unwrap(); info!("{}", response); info!("GAP init..."); - mbox.ble_subsystem - .init_gap(Role::PERIPHERAL, false, BLE_GAP_DEVICE_NAME_LENGTH) - .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.init_gap(Role::PERIPHERAL, false, BLE_GAP_DEVICE_NAME_LENGTH).await; + let response = ble.read().await.unwrap(); info!("{}", response); // info!("set scan response..."); - // mbox.ble_subsystem.le_set_scan_response_data(&[]).await.unwrap(); - // let response = mbox.ble_subsystem.read().await.unwrap(); + // ble.le_set_scan_response_data(&[]).await.unwrap(); + // let response = ble.read().await.unwrap(); // info!("{}", response); info!("set discoverable..."); - mbox.ble_subsystem - .set_discoverable(&DiscoverableParameters { - advertising_type: AdvertisingType::NonConnectableUndirected, - advertising_interval: Some((Duration::from_millis(250), Duration::from_millis(250))), - address_type: OwnAddressType::Public, - filter_policy: AdvertisingFilterPolicy::AllowConnectionAndScan, - local_name: None, - advertising_data: &[], - conn_interval: (None, None), - }) - .await - .unwrap(); - - let response = mbox.ble_subsystem.read().await; + ble.set_discoverable(&DiscoverableParameters { + advertising_type: AdvertisingType::NonConnectableUndirected, + advertising_interval: Some((Duration::from_millis(250), Duration::from_millis(250))), + address_type: OwnAddressType::Public, + filter_policy: AdvertisingFilterPolicy::AllowConnectionAndScan, + local_name: None, + advertising_data: &[], + conn_interval: (None, None), + }) + .await + .unwrap(); + + let response = ble.read().await; info!("{}", response); // remove some advertisement to decrease the packet size info!("delete tx power ad type..."); - mbox.ble_subsystem - .delete_ad_type(AdvertisingDataType::TxPowerLevel) - .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.delete_ad_type(AdvertisingDataType::TxPowerLevel).await; + let response = ble.read().await.unwrap(); info!("{}", response); info!("delete conn interval ad type..."); - mbox.ble_subsystem - .delete_ad_type(AdvertisingDataType::PeripheralConnectionInterval) + ble.delete_ad_type(AdvertisingDataType::PeripheralConnectionInterval) .await; - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("update advertising data..."); - mbox.ble_subsystem - .update_advertising_data(&eddystone_advertising_data()) + ble.update_advertising_data(&eddystone_advertising_data()) .await .unwrap(); - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("update advertising data type..."); - mbox.ble_subsystem - .update_advertising_data(&[3, AdvertisingDataType::UuidCompleteList16 as u8, 0xaa, 0xfe]) + ble.update_advertising_data(&[3, AdvertisingDataType::UuidCompleteList16 as u8, 0xaa, 0xfe]) .await .unwrap(); - let response = mbox.ble_subsystem.read().await.unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("update advertising data flags..."); - mbox.ble_subsystem - .update_advertising_data(&[ - 2, - AdvertisingDataType::Flags as u8, - (0x02 | 0x04) as u8, // BLE general discoverable, without BR/EDR support - ]) - .await - .unwrap(); - let response = mbox.ble_subsystem.read().await.unwrap(); + ble.update_advertising_data(&[ + 2, + AdvertisingDataType::Flags as u8, + (0x02 | 0x04) as u8, // BLE general discoverable, without BR/EDR support + ]) + .await + .unwrap(); + let response = ble.read().await.unwrap(); info!("{}", response); info!("Test OK"); diff --git a/tests/stm32/src/bin/wpan_mac.rs b/tests/stm32/src/bin/wpan_mac.rs index f27146c44..42db39e7e 100644 --- a/tests/stm32/src/bin/wpan_mac.rs +++ b/tests/stm32/src/bin/wpan_mac.rs @@ -25,7 +25,7 @@ bind_interrupts!(struct Irqs{ }); #[embassy_executor::task] -async fn run_mm_queue(memory_manager: mm::MemoryManager) { +async fn run_mm_queue(mut memory_manager: mm::MemoryManager<'static>) { memory_manager.run_queue().await; } @@ -38,20 +38,17 @@ async fn main(spawner: Spawner) { info!("Hello World!"); let config = Config::default(); - let mbox = TlMbox::init(p.IPCC, Irqs, config); + let mbox = TlMbox::init(p.IPCC, Irqs, config).await; + let mut sys = mbox.sys_subsystem; + let (mut mac_rx, mut mac_tx) = mbox.mac_subsystem.split(); spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap()); - let sys_event = mbox.sys_subsystem.read().await; - info!("sys event: {}", sys_event.payload()); - - core::mem::drop(sys_event); - - let result = mbox.sys_subsystem.shci_c2_mac_802_15_4_init().await; + let result = sys.shci_c2_mac_802_15_4_init().await; info!("initialized mac: {}", result); info!("resetting"); - mbox.mac_subsystem + mac_tx .send_command(&ResetRequest { set_default_pib: true, ..Default::default() @@ -59,13 +56,13 @@ async fn main(spawner: Spawner) { .await .unwrap(); { - let evt = mbox.mac_subsystem.read().await.unwrap(); + let evt = mac_rx.read().await.unwrap(); info!("{:#x}", evt); } info!("setting extended address"); let extended_address: u64 = 0xACDE480000000002; - mbox.mac_subsystem + mac_tx .send_command(&SetRequest { pib_attribute_ptr: &extended_address as *const _ as *const u8, pib_attribute: PibId::ExtendedAddress, @@ -73,12 +70,12 @@ async fn main(spawner: Spawner) { .await .unwrap(); { - let evt = mbox.mac_subsystem.read().await.unwrap(); + let evt = mac_rx.read().await.unwrap(); info!("{:#x}", evt); } info!("getting extended address"); - mbox.mac_subsystem + mac_tx .send_command(&GetRequest { pib_attribute: PibId::ExtendedAddress, ..Default::default() @@ -87,7 +84,7 @@ async fn main(spawner: Spawner) { .unwrap(); { - let evt = mbox.mac_subsystem.read().await.unwrap(); + let evt = mac_rx.read().await.unwrap(); info!("{:#x}", evt); if let MacEvent::MlmeGetCnf(evt) = evt { @@ -113,8 +110,8 @@ async fn main(spawner: Spawner) { key_index: 152, }; info!("{}", a); - mbox.mac_subsystem.send_command(&a).await.unwrap(); - let short_addr = if let MacEvent::MlmeAssociateCnf(conf) = mbox.mac_subsystem.read().await.unwrap() { + mac_tx.send_command(&a).await.unwrap(); + let short_addr = if let MacEvent::MlmeAssociateCnf(conf) = mac_rx.read().await.unwrap() { conf.assoc_short_address } else { defmt::panic!() -- cgit