diff options
| author | Raul Alimbekov <[email protected]> | 2025-12-16 09:05:22 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-16 09:05:22 +0300 |
| commit | c9a04b4b732b7a3b696eb8223664c1a7942b1875 (patch) | |
| tree | 6dbe5c02e66eed8d8762f13f95afd24f8db2b38c /examples/stm32wb/src/bin/mac_rfd.rs | |
| parent | cde24a3ef1117653ba5ed4184102b33f745782fb (diff) | |
| parent | 5ae6e060ec1c90561719aabdc29d5b6e7b8b0a82 (diff) | |
Merge branch 'main' into main
Diffstat (limited to 'examples/stm32wb/src/bin/mac_rfd.rs')
| -rw-r--r-- | examples/stm32wb/src/bin/mac_rfd.rs | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/examples/stm32wb/src/bin/mac_rfd.rs b/examples/stm32wb/src/bin/mac_rfd.rs index d872104a8..dae3c5200 100644 --- a/examples/stm32wb/src/bin/mac_rfd.rs +++ b/examples/stm32wb/src/bin/mac_rfd.rs | |||
| @@ -6,13 +6,13 @@ use embassy_executor::Spawner; | |||
| 6 | use embassy_stm32::bind_interrupts; | 6 | use embassy_stm32::bind_interrupts; |
| 7 | use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler}; | 7 | use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler}; |
| 8 | use embassy_stm32::rcc::WPAN_DEFAULT; | 8 | use embassy_stm32::rcc::WPAN_DEFAULT; |
| 9 | use embassy_stm32_wpan::TlMbox; | ||
| 9 | use embassy_stm32_wpan::mac::commands::{AssociateRequest, DataRequest, GetRequest, ResetRequest, SetRequest}; | 10 | use embassy_stm32_wpan::mac::commands::{AssociateRequest, DataRequest, GetRequest, ResetRequest, SetRequest}; |
| 10 | use embassy_stm32_wpan::mac::event::MacEvent; | 11 | use embassy_stm32_wpan::mac::event::MacEvent; |
| 11 | use embassy_stm32_wpan::mac::typedefs::{ | 12 | use embassy_stm32_wpan::mac::typedefs::{ |
| 12 | AddressMode, Capabilities, KeyIdMode, MacAddress, MacChannel, PanId, PibId, SecurityLevel, | 13 | AddressMode, Capabilities, KeyIdMode, MacAddress, MacChannel, PanId, PibId, SecurityLevel, |
| 13 | }; | 14 | }; |
| 14 | use embassy_stm32_wpan::sub::mm; | 15 | use embassy_stm32_wpan::sub::mm; |
| 15 | use embassy_stm32_wpan::TlMbox; | ||
| 16 | use {defmt_rtt as _, panic_probe as _}; | 16 | use {defmt_rtt as _, panic_probe as _}; |
| 17 | 17 | ||
| 18 | bind_interrupts!(struct Irqs{ | 18 | bind_interrupts!(struct Irqs{ |
| @@ -21,7 +21,7 @@ bind_interrupts!(struct Irqs{ | |||
| 21 | }); | 21 | }); |
| 22 | 22 | ||
| 23 | #[embassy_executor::task] | 23 | #[embassy_executor::task] |
| 24 | async fn run_mm_queue(memory_manager: mm::MemoryManager) { | 24 | async fn run_mm_queue(mut memory_manager: mm::MemoryManager<'static>) { |
| 25 | memory_manager.run_queue().await; | 25 | memory_manager.run_queue().await; |
| 26 | } | 26 | } |
| 27 | 27 | ||
| @@ -56,41 +56,39 @@ async fn main(spawner: Spawner) { | |||
| 56 | info!("Hello World!"); | 56 | info!("Hello World!"); |
| 57 | 57 | ||
| 58 | let config = Config::default(); | 58 | let config = Config::default(); |
| 59 | let mbox = TlMbox::init(p.IPCC, Irqs, config); | 59 | let mbox = TlMbox::init(p.IPCC, Irqs, config).await; |
| 60 | let mut sys = mbox.sys_subsystem; | ||
| 60 | 61 | ||
| 61 | spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap()); | 62 | spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap()); |
| 62 | 63 | ||
| 63 | let sys_event = mbox.sys_subsystem.read().await; | 64 | let result = sys.shci_c2_mac_802_15_4_init().await; |
| 64 | info!("sys event: {}", sys_event.payload()); | ||
| 65 | |||
| 66 | core::mem::drop(sys_event); | ||
| 67 | |||
| 68 | let result = mbox.sys_subsystem.shci_c2_mac_802_15_4_init().await; | ||
| 69 | info!("initialized mac: {}", result); | 65 | info!("initialized mac: {}", result); |
| 70 | 66 | ||
| 67 | let (mut mac_rx, mut mac_tx) = mbox.mac_subsystem.split(); | ||
| 68 | |||
| 71 | info!("resetting"); | 69 | info!("resetting"); |
| 72 | mbox.mac_subsystem | 70 | mac_tx |
| 73 | .send_command(&ResetRequest { | 71 | .send_command(&ResetRequest { |
| 74 | set_default_pib: true, | 72 | set_default_pib: true, |
| 75 | ..Default::default() | 73 | ..Default::default() |
| 76 | }) | 74 | }) |
| 77 | .await | 75 | .await |
| 78 | .unwrap(); | 76 | .unwrap(); |
| 79 | defmt::info!("{:#x}", mbox.mac_subsystem.read().await.unwrap()); | 77 | defmt::info!("{:#x}", mac_rx.read().await.unwrap()); |
| 80 | 78 | ||
| 81 | info!("setting extended address"); | 79 | info!("setting extended address"); |
| 82 | let extended_address: u64 = 0xACDE480000000002; | 80 | let extended_address: u64 = 0xACDE480000000002; |
| 83 | mbox.mac_subsystem | 81 | mac_tx |
| 84 | .send_command(&SetRequest { | 82 | .send_command(&SetRequest { |
| 85 | pib_attribute_ptr: &extended_address as *const _ as *const u8, | 83 | pib_attribute_ptr: &extended_address as *const _ as *const u8, |
| 86 | pib_attribute: PibId::ExtendedAddress, | 84 | pib_attribute: PibId::ExtendedAddress, |
| 87 | }) | 85 | }) |
| 88 | .await | 86 | .await |
| 89 | .unwrap(); | 87 | .unwrap(); |
| 90 | defmt::info!("{:#x}", mbox.mac_subsystem.read().await.unwrap()); | 88 | defmt::info!("{:#x}", mac_rx.read().await.unwrap()); |
| 91 | 89 | ||
| 92 | info!("getting extended address"); | 90 | info!("getting extended address"); |
| 93 | mbox.mac_subsystem | 91 | mac_tx |
| 94 | .send_command(&GetRequest { | 92 | .send_command(&GetRequest { |
| 95 | pib_attribute: PibId::ExtendedAddress, | 93 | pib_attribute: PibId::ExtendedAddress, |
| 96 | ..Default::default() | 94 | ..Default::default() |
| @@ -99,7 +97,7 @@ async fn main(spawner: Spawner) { | |||
| 99 | .unwrap(); | 97 | .unwrap(); |
| 100 | 98 | ||
| 101 | { | 99 | { |
| 102 | let evt = mbox.mac_subsystem.read().await.unwrap(); | 100 | let evt = mac_rx.read().await.unwrap(); |
| 103 | info!("{:#x}", evt); | 101 | info!("{:#x}", evt); |
| 104 | 102 | ||
| 105 | if let MacEvent::MlmeGetCnf(evt) = evt { | 103 | if let MacEvent::MlmeGetCnf(evt) = evt { |
| @@ -125,9 +123,9 @@ async fn main(spawner: Spawner) { | |||
| 125 | key_index: 152, | 123 | key_index: 152, |
| 126 | }; | 124 | }; |
| 127 | info!("{}", a); | 125 | info!("{}", a); |
| 128 | mbox.mac_subsystem.send_command(&a).await.unwrap(); | 126 | mac_tx.send_command(&a).await.unwrap(); |
| 129 | let short_addr = { | 127 | let short_addr = { |
| 130 | let evt = mbox.mac_subsystem.read().await.unwrap(); | 128 | let evt = mac_rx.read().await.unwrap(); |
| 131 | info!("{:#x}", evt); | 129 | info!("{:#x}", evt); |
| 132 | 130 | ||
| 133 | if let MacEvent::MlmeAssociateCnf(conf) = evt { | 131 | if let MacEvent::MlmeAssociateCnf(conf) = evt { |
| @@ -138,7 +136,7 @@ async fn main(spawner: Spawner) { | |||
| 138 | }; | 136 | }; |
| 139 | 137 | ||
| 140 | info!("setting short address"); | 138 | info!("setting short address"); |
| 141 | mbox.mac_subsystem | 139 | mac_tx |
| 142 | .send_command(&SetRequest { | 140 | .send_command(&SetRequest { |
| 143 | pib_attribute_ptr: &short_addr as *const _ as *const u8, | 141 | pib_attribute_ptr: &short_addr as *const _ as *const u8, |
| 144 | pib_attribute: PibId::ShortAddress, | 142 | pib_attribute: PibId::ShortAddress, |
| @@ -146,13 +144,13 @@ async fn main(spawner: Spawner) { | |||
| 146 | .await | 144 | .await |
| 147 | .unwrap(); | 145 | .unwrap(); |
| 148 | { | 146 | { |
| 149 | let evt = mbox.mac_subsystem.read().await.unwrap(); | 147 | let evt = mac_rx.read().await.unwrap(); |
| 150 | info!("{:#x}", evt); | 148 | info!("{:#x}", evt); |
| 151 | } | 149 | } |
| 152 | 150 | ||
| 153 | info!("sending data"); | 151 | info!("sending data"); |
| 154 | let data = b"Hello from embassy!"; | 152 | let data = b"Hello from embassy!"; |
| 155 | mbox.mac_subsystem | 153 | mac_tx |
| 156 | .send_command( | 154 | .send_command( |
| 157 | DataRequest { | 155 | DataRequest { |
| 158 | src_addr_mode: AddressMode::Short, | 156 | src_addr_mode: AddressMode::Short, |
| @@ -170,12 +168,12 @@ async fn main(spawner: Spawner) { | |||
| 170 | .await | 168 | .await |
| 171 | .unwrap(); | 169 | .unwrap(); |
| 172 | { | 170 | { |
| 173 | let evt = mbox.mac_subsystem.read().await.unwrap(); | 171 | let evt = mac_rx.read().await.unwrap(); |
| 174 | info!("{:#x}", evt); | 172 | info!("{:#x}", evt); |
| 175 | } | 173 | } |
| 176 | 174 | ||
| 177 | loop { | 175 | loop { |
| 178 | match mbox.mac_subsystem.read().await { | 176 | match mac_rx.read().await { |
| 179 | Ok(evt) => info!("{:#x}", evt), | 177 | Ok(evt) => info!("{:#x}", evt), |
| 180 | _ => continue, | 178 | _ => continue, |
| 181 | }; | 179 | }; |
