aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-06-17 20:48:37 +0000
committerGitHub <[email protected]>2023-06-17 20:48:37 +0000
commitae83e6f5367197feb8361b9a28adbdedbe37e0c5 (patch)
tree79ad59816285ee938f6352e8abde15a62d06d9ba /tests
parentec36225f8ab35fab149971e587ef506aa1c9d1ca (diff)
parent443550b353c733aee7d122468a82df432014d8fe (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.rs72
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"]
7mod common; 7mod common;
8 8
9use core::mem;
10
9use common::*; 11use common::*;
10use embassy_executor::Spawner; 12use embassy_executor::Spawner;
13use embassy_futures::poll_once;
11use embassy_stm32::bind_interrupts; 14use embassy_stm32::bind_interrupts;
12use embassy_stm32::ipcc::Config; 15use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler};
13use embassy_stm32_wpan::rc::RadioCoprocessor; 16use embassy_stm32_wpan::{mm, TlMbox};
14use embassy_stm32_wpan::TlMbox;
15use embassy_time::{Duration, Timer}; 17use embassy_time::{Duration, Timer};
16 18
17bind_interrupts!(struct Irqs{ 19bind_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]
25async fn run_mm_queue(memory_manager: mm::MemoryManager) {
26 memory_manager.run_queue().await;
27}
28
22#[embassy_executor::main] 29#[embassy_executor::main]
23async fn main(_spawner: Spawner) { 30async 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}