diff options
| author | xoviat <[email protected]> | 2023-06-17 20:48:37 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-06-17 20:48:37 +0000 |
| commit | ae83e6f5367197feb8361b9a28adbdedbe37e0c5 (patch) | |
| tree | 79ad59816285ee938f6352e8abde15a62d06d9ba /tests | |
| parent | ec36225f8ab35fab149971e587ef506aa1c9d1ca (diff) | |
| parent | 443550b353c733aee7d122468a82df432014d8fe (diff) | |
Merge pull request #1566 from xoviat/tl-mbox-2
tl-mbox: switch to new ipcc mechanism
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/stm32/src/bin/tl_mbox.rs | 72 |
1 files changed, 41 insertions, 31 deletions
diff --git a/tests/stm32/src/bin/tl_mbox.rs b/tests/stm32/src/bin/tl_mbox.rs index 4669cbc62..f6641ae31 100644 --- a/tests/stm32/src/bin/tl_mbox.rs +++ b/tests/stm32/src/bin/tl_mbox.rs | |||
| @@ -6,60 +6,70 @@ | |||
| 6 | #[path = "../common.rs"] | 6 | #[path = "../common.rs"] |
| 7 | mod common; | 7 | mod common; |
| 8 | 8 | ||
| 9 | use core::mem; | ||
| 10 | |||
| 9 | use common::*; | 11 | use common::*; |
| 10 | use embassy_executor::Spawner; | 12 | use embassy_executor::Spawner; |
| 13 | use embassy_futures::poll_once; | ||
| 11 | use embassy_stm32::bind_interrupts; | 14 | use embassy_stm32::bind_interrupts; |
| 12 | use embassy_stm32::ipcc::Config; | 15 | use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler}; |
| 13 | use embassy_stm32_wpan::rc::RadioCoprocessor; | 16 | use embassy_stm32_wpan::{mm, TlMbox}; |
| 14 | use embassy_stm32_wpan::TlMbox; | ||
| 15 | use embassy_time::{Duration, Timer}; | 17 | use embassy_time::{Duration, Timer}; |
| 16 | 18 | ||
| 17 | bind_interrupts!(struct Irqs{ | 19 | bind_interrupts!(struct Irqs{ |
| 18 | IPCC_C1_RX => embassy_stm32_wpan::ReceiveInterruptHandler; | 20 | IPCC_C1_RX => ReceiveInterruptHandler; |
| 19 | IPCC_C1_TX => embassy_stm32_wpan::TransmitInterruptHandler; | 21 | IPCC_C1_TX => TransmitInterruptHandler; |
| 20 | }); | 22 | }); |
| 21 | 23 | ||
| 24 | #[embassy_executor::task] | ||
| 25 | async fn run_mm_queue(memory_manager: mm::MemoryManager) { | ||
| 26 | memory_manager.run_queue().await; | ||
| 27 | } | ||
| 28 | |||
| 22 | #[embassy_executor::main] | 29 | #[embassy_executor::main] |
| 23 | async fn main(_spawner: Spawner) { | 30 | async fn main(spawner: Spawner) { |
| 24 | let p = embassy_stm32::init(config()); | 31 | let p = embassy_stm32::init(config()); |
| 25 | info!("Hello World!"); | 32 | info!("Hello World!"); |
| 26 | 33 | ||
| 27 | let config = Config::default(); | 34 | let config = Config::default(); |
| 28 | let mbox = TlMbox::init(p.IPCC, Irqs, config); | 35 | let mbox = TlMbox::init(p.IPCC, Irqs, config); |
| 29 | 36 | ||
| 30 | loop { | 37 | spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); |
| 31 | let wireless_fw_info = mbox.wireless_fw_info(); | 38 | |
| 32 | match wireless_fw_info { | 39 | let ready_event = mbox.sys_subsystem.read().await; |
| 33 | None => {} | 40 | let _ = poll_once(mbox.sys_subsystem.read()); // clear rx not |
| 34 | Some(fw_info) => { | 41 | |
| 35 | let version_major = fw_info.version_major(); | 42 | info!("coprocessor ready {}", ready_event.payload()); |
| 36 | let version_minor = fw_info.version_minor(); | 43 | |
| 37 | let subversion = fw_info.subversion(); | 44 | // test memory manager |
| 45 | mem::drop(ready_event); | ||
| 46 | |||
| 47 | let fw_info = mbox.sys_subsystem.wireless_fw_info().unwrap(); | ||
| 48 | let version_major = fw_info.version_major(); | ||
| 49 | let version_minor = fw_info.version_minor(); | ||
| 50 | let subversion = fw_info.subversion(); | ||
| 38 | 51 | ||
| 39 | let sram2a_size = fw_info.sram2a_size(); | 52 | let sram2a_size = fw_info.sram2a_size(); |
| 40 | let sram2b_size = fw_info.sram2b_size(); | 53 | let sram2b_size = fw_info.sram2b_size(); |
| 41 | 54 | ||
| 42 | info!( | 55 | info!( |
| 43 | "version {}.{}.{} - SRAM2a {} - SRAM2b {}", | 56 | "version {}.{}.{} - SRAM2a {} - SRAM2b {}", |
| 44 | version_major, version_minor, subversion, sram2a_size, sram2b_size | 57 | version_major, version_minor, subversion, sram2a_size, sram2b_size |
| 45 | ); | 58 | ); |
| 46 | 59 | ||
| 47 | break; | 60 | Timer::after(Duration::from_millis(50)).await; |
| 48 | } | ||
| 49 | } | ||
| 50 | 61 | ||
| 51 | Timer::after(Duration::from_millis(50)).await; | 62 | mbox.sys_subsystem.shci_c2_ble_init(Default::default()).await; |
| 52 | } | ||
| 53 | 63 | ||
| 54 | let mut rc = RadioCoprocessor::new(mbox); | 64 | info!("starting ble..."); |
| 65 | mbox.ble_subsystem.write(0x0c, &[]).await; | ||
| 55 | 66 | ||
| 56 | let response = rc.read().await; | 67 | info!("waiting for ble..."); |
| 57 | info!("coprocessor ready {}", response); | 68 | let ble_event = mbox.ble_subsystem.read().await; |
| 58 | 69 | ||
| 59 | rc.write(&[0x01, 0x03, 0x0c, 0x00, 0x00]); | 70 | info!("ble event: {}", ble_event.payload()); |
| 60 | let response = rc.read().await; | ||
| 61 | info!("ble reset rsp {}", response); | ||
| 62 | 71 | ||
| 72 | Timer::after(Duration::from_millis(150)).await; | ||
| 63 | info!("Test OK"); | 73 | info!("Test OK"); |
| 64 | cortex_m::asm::bkpt(); | 74 | cortex_m::asm::bkpt(); |
| 65 | } | 75 | } |
