diff options
| author | xoviat <[email protected]> | 2023-06-19 15:52:33 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-06-19 15:52:33 -0500 |
| commit | aaad9068156305e5f6f41ee4013e025083bd0668 (patch) | |
| tree | 67a08c8a512e8791433891a3b6deec813fc4c578 /tests/stm32/src | |
| parent | 35083b262b364387713f4273649b62180123182c (diff) | |
| parent | 3c70f799a28f5f28d84fa8ee8b4b232f5e9aad82 (diff) | |
Merge branch 'main' of https://github.com/embassy-rs/embassy into can
Diffstat (limited to 'tests/stm32/src')
| -rw-r--r-- | tests/stm32/src/bin/rtc.rs | 6 | ||||
| -rw-r--r-- | tests/stm32/src/bin/tl_mbox.rs | 71 |
2 files changed, 48 insertions, 29 deletions
diff --git a/tests/stm32/src/bin/rtc.rs b/tests/stm32/src/bin/rtc.rs index 32d35c42c..582df5753 100644 --- a/tests/stm32/src/bin/rtc.rs +++ b/tests/stm32/src/bin/rtc.rs | |||
| @@ -24,10 +24,8 @@ async fn main(_spawner: Spawner) { | |||
| 24 | 24 | ||
| 25 | info!("Starting LSI"); | 25 | info!("Starting LSI"); |
| 26 | 26 | ||
| 27 | unsafe { | 27 | pac::RCC.csr().modify(|w| w.set_lsion(true)); |
| 28 | pac::RCC.csr().modify(|w| w.set_lsion(true)); | 28 | while !pac::RCC.csr().read().lsirdy() {} |
| 29 | while !pac::RCC.csr().read().lsirdy() {} | ||
| 30 | } | ||
| 31 | 29 | ||
| 32 | info!("Started LSI"); | 30 | info!("Started LSI"); |
| 33 | 31 | ||
diff --git a/tests/stm32/src/bin/tl_mbox.rs b/tests/stm32/src/bin/tl_mbox.rs index fab9f0e1b..f6641ae31 100644 --- a/tests/stm32/src/bin/tl_mbox.rs +++ b/tests/stm32/src/bin/tl_mbox.rs | |||
| @@ -6,49 +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; |
| 11 | use embassy_stm32::tl_mbox::{Config, TlMbox}; | 13 | use embassy_futures::poll_once; |
| 12 | use embassy_stm32::{bind_interrupts, tl_mbox}; | 14 | use embassy_stm32::bind_interrupts; |
| 15 | use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler}; | ||
| 16 | use embassy_stm32_wpan::{mm, TlMbox}; | ||
| 13 | use embassy_time::{Duration, Timer}; | 17 | use embassy_time::{Duration, Timer}; |
| 14 | 18 | ||
| 15 | bind_interrupts!(struct Irqs{ | 19 | bind_interrupts!(struct Irqs{ |
| 16 | IPCC_C1_RX => tl_mbox::ReceiveInterruptHandler; | 20 | IPCC_C1_RX => ReceiveInterruptHandler; |
| 17 | IPCC_C1_TX => tl_mbox::TransmitInterruptHandler; | 21 | IPCC_C1_TX => TransmitInterruptHandler; |
| 18 | }); | 22 | }); |
| 19 | 23 | ||
| 24 | #[embassy_executor::task] | ||
| 25 | async fn run_mm_queue(memory_manager: mm::MemoryManager) { | ||
| 26 | memory_manager.run_queue().await; | ||
| 27 | } | ||
| 28 | |||
| 20 | #[embassy_executor::main] | 29 | #[embassy_executor::main] |
| 21 | async fn main(_spawner: Spawner) { | 30 | async fn main(spawner: Spawner) { |
| 22 | let p = embassy_stm32::init(config()); | 31 | let p = embassy_stm32::init(config()); |
| 23 | info!("Hello World!"); | 32 | info!("Hello World!"); |
| 24 | 33 | ||
| 25 | let config = Config::default(); | 34 | let config = Config::default(); |
| 26 | let mbox = TlMbox::new(p.IPCC, Irqs, config); | 35 | let mbox = TlMbox::init(p.IPCC, Irqs, config); |
| 36 | |||
| 37 | spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); | ||
| 38 | |||
| 39 | let ready_event = mbox.sys_subsystem.read().await; | ||
| 40 | let _ = poll_once(mbox.sys_subsystem.read()); // clear rx not | ||
| 41 | |||
| 42 | info!("coprocessor ready {}", ready_event.payload()); | ||
| 43 | |||
| 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(); | ||
| 51 | |||
| 52 | let sram2a_size = fw_info.sram2a_size(); | ||
| 53 | let sram2b_size = fw_info.sram2b_size(); | ||
| 54 | |||
| 55 | info!( | ||
| 56 | "version {}.{}.{} - SRAM2a {} - SRAM2b {}", | ||
| 57 | version_major, version_minor, subversion, sram2a_size, sram2b_size | ||
| 58 | ); | ||
| 27 | 59 | ||
| 28 | loop { | 60 | Timer::after(Duration::from_millis(50)).await; |
| 29 | let wireless_fw_info = mbox.wireless_fw_info(); | ||
| 30 | match wireless_fw_info { | ||
| 31 | None => {} | ||
| 32 | Some(fw_info) => { | ||
| 33 | let version_major = fw_info.version_major(); | ||
| 34 | let version_minor = fw_info.version_minor(); | ||
| 35 | let subversion = fw_info.subversion(); | ||
| 36 | 61 | ||
| 37 | let sram2a_size = fw_info.sram2a_size(); | 62 | mbox.sys_subsystem.shci_c2_ble_init(Default::default()).await; |
| 38 | let sram2b_size = fw_info.sram2b_size(); | ||
| 39 | 63 | ||
| 40 | info!( | 64 | info!("starting ble..."); |
| 41 | "version {}.{}.{} - SRAM2a {} - SRAM2b {}", | 65 | mbox.ble_subsystem.write(0x0c, &[]).await; |
| 42 | version_major, version_minor, subversion, sram2a_size, sram2b_size | ||
| 43 | ); | ||
| 44 | 66 | ||
| 45 | break; | 67 | info!("waiting for ble..."); |
| 46 | } | 68 | let ble_event = mbox.ble_subsystem.read().await; |
| 47 | } | ||
| 48 | 69 | ||
| 49 | Timer::after(Duration::from_millis(50)).await; | 70 | info!("ble event: {}", ble_event.payload()); |
| 50 | } | ||
| 51 | 71 | ||
| 72 | Timer::after(Duration::from_millis(150)).await; | ||
| 52 | info!("Test OK"); | 73 | info!("Test OK"); |
| 53 | cortex_m::asm::bkpt(); | 74 | cortex_m::asm::bkpt(); |
| 54 | } | 75 | } |
