diff options
| author | goueslati <[email protected]> | 2023-06-08 16:26:47 +0100 |
|---|---|---|
| committer | goueslati <[email protected]> | 2023-06-08 16:26:47 +0100 |
| commit | ce1d72c609ae1e04410e68458ec3d6c36c7dae27 (patch) | |
| tree | 04f72316223c5c1ceb0bde029cbee2f0174338c8 /examples | |
| parent | 87ad66f2b4a5bfd36dfc8d8aad5492e9e3f915e6 (diff) | |
wip
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32wb/src/bin/tl_mbox_tx_rx.rs | 55 |
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 | ||
| 5 | use defmt::*; | 5 | use defmt::*; |
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::tl_mbox::{Config, TlMbox}; | 7 | use embassy_stm32::tl_mbox::hci::RadioCoprocessor; |
| 8 | use embassy_stm32::tl_mbox::ipcc::Config; | ||
| 9 | use embassy_stm32::tl_mbox::TlMbox; | ||
| 8 | use embassy_stm32::{bind_interrupts, tl_mbox}; | 10 | use embassy_stm32::{bind_interrupts, tl_mbox}; |
| 9 | use {defmt_rtt as _, panic_probe as _}; | 11 | use {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(); |
