aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorgoueslati <[email protected]>2023-06-08 16:26:47 +0100
committergoueslati <[email protected]>2023-06-08 16:26:47 +0100
commitce1d72c609ae1e04410e68458ec3d6c36c7dae27 (patch)
tree04f72316223c5c1ceb0bde029cbee2f0174338c8 /examples
parent87ad66f2b4a5bfd36dfc8d8aad5492e9e3f915e6 (diff)
wip
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32wb/src/bin/tl_mbox_tx_rx.rs55
1 files changed, 9 insertions, 46 deletions
diff --git a/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs b/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs
index 1724d946f..0525d3f37 100644
--- a/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs
+++ b/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs
@@ -4,7 +4,9 @@
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::tl_mbox::{Config, TlMbox}; 7use embassy_stm32::tl_mbox::hci::RadioCoprocessor;
8use embassy_stm32::tl_mbox::ipcc::Config;
9use embassy_stm32::tl_mbox::TlMbox;
8use embassy_stm32::{bind_interrupts, tl_mbox}; 10use embassy_stm32::{bind_interrupts, tl_mbox};
9use {defmt_rtt as _, panic_probe as _}; 11use {defmt_rtt as _, panic_probe as _};
10 12
@@ -45,53 +47,14 @@ async fn main(_spawner: Spawner) {
45 let config = Config::default(); 47 let config = Config::default();
46 let mbox = TlMbox::new(p.IPCC, Irqs, config); 48 let mbox = TlMbox::new(p.IPCC, Irqs, config);
47 49
48 info!("waiting for coprocessor to boot"); 50 let mut rc = RadioCoprocessor::new(mbox, Default::default());
49 let event_box = mbox.read().await; 51 rc.write(&[0x01, 0x03, 0x0c, 0x00, 0x00]).unwrap();
50 52
51 let mut payload = [0u8; 6]; 53 let response = rc.read().await;
52 event_box.copy_into_slice(&mut payload).unwrap(); 54 info!("coprocessor ready {}", response);
53 55
54 let event_packet = event_box.evt(); 56 let response = rc.read().await;
55 let kind = event_packet.evt_serial.kind; 57 info!("coprocessor ready {}", response);
56
57 // means recieved SYS event, which indicates in this case that the coprocessor is ready
58 if kind == 0x12 {
59 let code = event_packet.evt_serial.evt.evt_code;
60 let payload_len = event_packet.evt_serial.evt.payload_len;
61
62 info!(
63 "==> kind: {:#04x}, code: {:#04x}, payload_length: {}, payload: {:#04x}",
64 kind,
65 code,
66 payload_len,
67 payload[3..]
68 );
69 }
70
71 // initialize ble stack, does not return a response
72 mbox.shci_ble_init(Default::default());
73
74 info!("resetting BLE");
75 mbox.send_ble_cmd(&[0x01, 0x03, 0x0c, 0x00, 0x00]);
76
77 let event_box = mbox.read().await;
78
79 let mut payload = [0u8; 7];
80 event_box.copy_into_slice(&mut payload).unwrap();
81
82 let event_packet = event_box.evt();
83 let kind = event_packet.evt_serial.kind;
84
85 let code = event_packet.evt_serial.evt.evt_code;
86 let payload_len = event_packet.evt_serial.evt.payload_len;
87
88 info!(
89 "==> kind: {:#04x}, code: {:#04x}, payload_length: {}, payload: {:#04x}",
90 kind,
91 code,
92 payload_len,
93 payload[3..]
94 );
95 58
96 info!("Test OK"); 59 info!("Test OK");
97 cortex_m::asm::bkpt(); 60 cortex_m::asm::bkpt();