diff options
| author | xoviat <[email protected]> | 2023-06-12 20:26:38 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-06-12 20:26:38 -0500 |
| commit | 7f63fbbf4a7acf258198010930a6b45435fc0e57 (patch) | |
| tree | 8b11dd462938caf0fafd08386da8e901eaee757e /examples | |
| parent | c822fd46e558fc694bbec3358f31076e89d99164 (diff) | |
| parent | bf32dc5d3acee1f73fe445976bde474ffa6d04e0 (diff) | |
Merge branch 'old_tl_mbox' of github.com:OueslatiGhaith/embassy into old-tl-mbox
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32wb/Cargo.toml | 1 | ||||
| -rw-r--r-- | examples/stm32wb/src/bin/tl_mbox.rs | 11 | ||||
| -rw-r--r-- | examples/stm32wb/src/bin/tl_mbox_tx_rx.rs | 63 |
3 files changed, 20 insertions, 55 deletions
diff --git a/examples/stm32wb/Cargo.toml b/examples/stm32wb/Cargo.toml index 14897b171..83a443754 100644 --- a/examples/stm32wb/Cargo.toml +++ b/examples/stm32wb/Cargo.toml | |||
| @@ -9,6 +9,7 @@ embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["de | |||
| 9 | embassy-executor = { version = "0.2.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } | 9 | embassy-executor = { version = "0.2.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "defmt", "integrated-timers"] } |
| 10 | embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | 10 | embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } |
| 11 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wb55rg", "time-driver-any", "memory-x", "exti"] } | 11 | embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "defmt", "stm32wb55rg", "time-driver-any", "memory-x", "exti"] } |
| 12 | embassy-stm32-wpan = { version = "0.1.0", path = "../../embassy-stm32-wpan", features = ["defmt", "stm32wb55rg"] } | ||
| 12 | 13 | ||
| 13 | defmt = "0.3" | 14 | defmt = "0.3" |
| 14 | defmt-rtt = "0.4" | 15 | defmt-rtt = "0.4" |
diff --git a/examples/stm32wb/src/bin/tl_mbox.rs b/examples/stm32wb/src/bin/tl_mbox.rs index 8f4e70af0..ae36a7e79 100644 --- a/examples/stm32wb/src/bin/tl_mbox.rs +++ b/examples/stm32wb/src/bin/tl_mbox.rs | |||
| @@ -4,14 +4,15 @@ | |||
| 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::bind_interrupts; |
| 8 | use embassy_stm32::{bind_interrupts, tl_mbox}; | 8 | use embassy_stm32::ipcc::Config; |
| 9 | use embassy_stm32_wpan::TlMbox; | ||
| 9 | use embassy_time::{Duration, Timer}; | 10 | use embassy_time::{Duration, Timer}; |
| 10 | use {defmt_rtt as _, panic_probe as _}; | 11 | use {defmt_rtt as _, panic_probe as _}; |
| 11 | 12 | ||
| 12 | bind_interrupts!(struct Irqs{ | 13 | bind_interrupts!(struct Irqs{ |
| 13 | IPCC_C1_RX => tl_mbox::ReceiveInterruptHandler; | 14 | IPCC_C1_RX => embassy_stm32_wpan::ReceiveInterruptHandler; |
| 14 | IPCC_C1_TX => tl_mbox::TransmitInterruptHandler; | 15 | IPCC_C1_TX => embassy_stm32_wpan::TransmitInterruptHandler; |
| 15 | }); | 16 | }); |
| 16 | 17 | ||
| 17 | #[embassy_executor::main] | 18 | #[embassy_executor::main] |
| @@ -44,7 +45,7 @@ async fn main(_spawner: Spawner) { | |||
| 44 | info!("Hello World!"); | 45 | info!("Hello World!"); |
| 45 | 46 | ||
| 46 | let config = Config::default(); | 47 | let config = Config::default(); |
| 47 | let mbox = TlMbox::new(p.IPCC, Irqs, config); | 48 | let mbox = TlMbox::init(p.IPCC, Irqs, config); |
| 48 | 49 | ||
| 49 | loop { | 50 | loop { |
| 50 | let wireless_fw_info = mbox.wireless_fw_info(); | 51 | let wireless_fw_info = mbox.wireless_fw_info(); |
diff --git a/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs b/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs index 1724d946f..3132ab3e4 100644 --- a/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs +++ b/examples/stm32wb/src/bin/tl_mbox_tx_rx.rs | |||
| @@ -4,13 +4,15 @@ | |||
| 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::bind_interrupts; |
| 8 | use embassy_stm32::{bind_interrupts, tl_mbox}; | 8 | use embassy_stm32::ipcc::Config; |
| 9 | use embassy_stm32_wpan::rc::RadioCoprocessor; | ||
| 10 | use embassy_stm32_wpan::TlMbox; | ||
| 9 | use {defmt_rtt as _, panic_probe as _}; | 11 | use {defmt_rtt as _, panic_probe as _}; |
| 10 | 12 | ||
| 11 | bind_interrupts!(struct Irqs{ | 13 | bind_interrupts!(struct Irqs{ |
| 12 | IPCC_C1_RX => tl_mbox::ReceiveInterruptHandler; | 14 | IPCC_C1_RX => embassy_stm32_wpan::ReceiveInterruptHandler; |
| 13 | IPCC_C1_TX => tl_mbox::TransmitInterruptHandler; | 15 | IPCC_C1_TX => embassy_stm32_wpan::TransmitInterruptHandler; |
| 14 | }); | 16 | }); |
| 15 | 17 | ||
| 16 | #[embassy_executor::main] | 18 | #[embassy_executor::main] |
| @@ -43,55 +45,16 @@ async fn main(_spawner: Spawner) { | |||
| 43 | info!("Hello World!"); | 45 | info!("Hello World!"); |
| 44 | 46 | ||
| 45 | let config = Config::default(); | 47 | let config = Config::default(); |
| 46 | let mbox = TlMbox::new(p.IPCC, Irqs, config); | 48 | let mbox = TlMbox::init(p.IPCC, Irqs, config); |
| 47 | 49 | ||
| 48 | info!("waiting for coprocessor to boot"); | 50 | let mut rc = RadioCoprocessor::new(mbox); |
| 49 | let event_box = mbox.read().await; | ||
| 50 | 51 | ||
| 51 | let mut payload = [0u8; 6]; | 52 | let response = rc.read().await; |
| 52 | event_box.copy_into_slice(&mut payload).unwrap(); | 53 | info!("coprocessor ready {}", response); |
| 53 | 54 | ||
| 54 | let event_packet = event_box.evt(); | 55 | rc.write(&[0x01, 0x03, 0x0c, 0x00, 0x00]); |
| 55 | let kind = event_packet.evt_serial.kind; | 56 | let response = rc.read().await; |
| 56 | 57 | info!("ble reset rsp {}", response); | |
| 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(); |
