aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-06-17 12:00:33 -0500
committerxoviat <[email protected]>2023-06-17 12:00:33 -0500
commit6b5d55eb29aa55795cfdf98593feba2f53b85b9c (patch)
tree8bf1c67f2464dcf17245fd97360915cbe6a79005 /tests
parentb0a2f0c4fec5358063e6323bf9f9ee001341c473 (diff)
stm32/wpan: convert to new ipcc
Diffstat (limited to 'tests')
-rw-r--r--tests/stm32/src/bin/tl_mbox.rs43
1 files changed, 28 insertions, 15 deletions
diff --git a/tests/stm32/src/bin/tl_mbox.rs b/tests/stm32/src/bin/tl_mbox.rs
index 5a2309263..bb38204b6 100644
--- a/tests/stm32/src/bin/tl_mbox.rs
+++ b/tests/stm32/src/bin/tl_mbox.rs
@@ -8,27 +8,41 @@ mod common;
8 8
9use common::*; 9use common::*;
10use embassy_executor::Spawner; 10use embassy_executor::Spawner;
11use embassy_futures::poll_once;
11use embassy_stm32::bind_interrupts; 12use embassy_stm32::bind_interrupts;
12use embassy_stm32::ipcc::Config; 13use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler};
13use embassy_stm32_wpan::ble::Ble; 14use embassy_stm32_wpan::ble::Ble;
14use embassy_stm32_wpan::rc::RadioCoprocessor;
15use embassy_stm32_wpan::sys::Sys; 15use embassy_stm32_wpan::sys::Sys;
16use embassy_stm32_wpan::TlMbox; 16use embassy_stm32_wpan::{mm, TlMbox};
17use embassy_time::{Duration, Timer}; 17use embassy_time::{Duration, Timer};
18 18
19bind_interrupts!(struct Irqs{ 19bind_interrupts!(struct Irqs{
20 IPCC_C1_RX => embassy_stm32_wpan::ReceiveInterruptHandler; 20 IPCC_C1_RX => ReceiveInterruptHandler;
21 IPCC_C1_TX => embassy_stm32_wpan::TransmitInterruptHandler; 21 IPCC_C1_TX => TransmitInterruptHandler;
22}); 22});
23 23
24#[embassy_executor::task]
25async fn run_mm_queue() {
26 mm::MemoryManager::run_queue().await;
27}
28
24#[embassy_executor::main] 29#[embassy_executor::main]
25async fn main(_spawner: Spawner) { 30async fn main(spawner: Spawner) {
26 let p = embassy_stm32::init(config()); 31 let p = embassy_stm32::init(config());
27 info!("Hello World!"); 32 info!("Hello World!");
28 33
34 spawner.spawn(run_mm_queue()).unwrap();
35
29 let config = Config::default(); 36 let config = Config::default();
30 let mbox = TlMbox::init(p.IPCC, Irqs, config); 37 let mbox = TlMbox::init(p.IPCC, Irqs, config);
31 38
39 let mut rx_buf = [0u8; 500];
40 let ready_event = Sys::read().await;
41 let _ = poll_once(Sys::read()); // clear rx not
42 ready_event.write(&mut rx_buf).unwrap();
43
44 info!("coprocessor ready {}", rx_buf);
45
32 loop { 46 loop {
33 let wireless_fw_info = mbox.wireless_fw_info(); 47 let wireless_fw_info = mbox.wireless_fw_info();
34 match wireless_fw_info { 48 match wireless_fw_info {
@@ -53,19 +67,18 @@ async fn main(_spawner: Spawner) {
53 Timer::after(Duration::from_millis(50)).await; 67 Timer::after(Duration::from_millis(50)).await;
54 } 68 }
55 69
56 let mut rc = RadioCoprocessor::new(mbox); 70 Sys::shci_c2_ble_init(Default::default()).await;
57
58 let response = rc.read().await;
59 info!("coprocessor ready {}", response);
60 71
61 Sys::shci_ble_init(Default::default()); 72 info!("starting ble...");
73 Ble::write(0x0c, &[]).await;
62 74
63 // rc.write(&[0x01, 0x03, 0x0c, 0x00, 0x00]); 75 info!("waiting for ble...");
64 Ble::send_cmd(0x0c, &[]); 76 let ble_event = Ble::read().await;
77 ble_event.write(&mut rx_buf).unwrap();
65 78
66 let response = rc.read().await; 79 info!("ble event: {}", rx_buf);
67 info!("ble reset rsp {}", response);
68 80
81 // Timer::after(Duration::from_secs(3)).await;
69 info!("Test OK"); 82 info!("Test OK");
70 cortex_m::asm::bkpt(); 83 cortex_m::asm::bkpt();
71} 84}