aboutsummaryrefslogtreecommitdiff
path: root/tests/stm32/src
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-07-15 14:28:42 -0500
committerxoviat <[email protected]>2023-07-15 14:28:42 -0500
commitd11a94e2a7c030dac7a7c4d6967f614104111d5a (patch)
tree0db43017247fa2445bc1fc8431c36f073df6e3ef /tests/stm32/src
parentd6dd5ea5d3ab7309bd5b4bec28afaee68d20b4ae (diff)
wpan: add mac test
Diffstat (limited to 'tests/stm32/src')
-rw-r--r--tests/stm32/src/bin/rtc.rs2
-rw-r--r--tests/stm32/src/bin/wpan_ble.rs (renamed from tests/stm32/src/bin/tl_mbox.rs)2
-rw-r--r--tests/stm32/src/bin/wpan_mac.rs108
3 files changed, 111 insertions, 1 deletions
diff --git a/tests/stm32/src/bin/rtc.rs b/tests/stm32/src/bin/rtc.rs
index 582df5753..194b153d5 100644
--- a/tests/stm32/src/bin/rtc.rs
+++ b/tests/stm32/src/bin/rtc.rs
@@ -1,3 +1,5 @@
1// required-features: chrono
2
1#![no_std] 3#![no_std]
2#![no_main] 4#![no_main]
3#![feature(type_alias_impl_trait)] 5#![feature(type_alias_impl_trait)]
diff --git a/tests/stm32/src/bin/tl_mbox.rs b/tests/stm32/src/bin/wpan_ble.rs
index af3832709..3ad8aca4e 100644
--- a/tests/stm32/src/bin/tl_mbox.rs
+++ b/tests/stm32/src/bin/wpan_ble.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 version_major, version_minor, subversion, sram2a_size, sram2b_size 64 version_major, version_minor, subversion, sram2a_size, sram2b_size
65 ); 65 );
66 66
67 mbox.sys_subsystem.shci_c2_ble_init(Default::default()).await; 67 let _ = mbox.sys_subsystem.shci_c2_ble_init(Default::default()).await;
68 68
69 info!("resetting BLE..."); 69 info!("resetting BLE...");
70 mbox.ble_subsystem.reset().await; 70 mbox.ble_subsystem.reset().await;
diff --git a/tests/stm32/src/bin/wpan_mac.rs b/tests/stm32/src/bin/wpan_mac.rs
new file mode 100644
index 000000000..d97a4d404
--- /dev/null
+++ b/tests/stm32/src/bin/wpan_mac.rs
@@ -0,0 +1,108 @@
1// required-features: mac
2
3#![no_std]
4#![no_main]
5#![feature(type_alias_impl_trait)]
6#[path = "../common.rs"]
7mod common;
8
9use common::*;
10use embassy_executor::Spawner;
11use embassy_stm32::bind_interrupts;
12use embassy_stm32::ipcc::{Config, ReceiveInterruptHandler, TransmitInterruptHandler};
13use embassy_stm32_wpan::sub::mac::commands::{AssociateRequest, GetRequest, ResetRequest, SetRequest};
14use embassy_stm32_wpan::sub::mac::event::MacEvent;
15use embassy_stm32_wpan::sub::mac::typedefs::{
16 AddressMode, Capabilities, KeyIdMode, MacAddress, MacChannel, PanId, PibId, SecurityLevel,
17};
18use embassy_stm32_wpan::sub::mm;
19use embassy_stm32_wpan::TlMbox;
20use {defmt_rtt as _, panic_probe as _};
21
22bind_interrupts!(struct Irqs{
23 IPCC_C1_RX => ReceiveInterruptHandler;
24 IPCC_C1_TX => TransmitInterruptHandler;
25});
26
27#[embassy_executor::task]
28async fn run_mm_queue(memory_manager: mm::MemoryManager) {
29 memory_manager.run_queue().await;
30}
31
32#[embassy_executor::main]
33async fn main(spawner: Spawner) {
34 let p = embassy_stm32::init(config());
35 info!("Hello World!");
36
37 let config = Config::default();
38 let mbox = TlMbox::init(p.IPCC, Irqs, config);
39
40 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap();
41
42 let sys_event = mbox.sys_subsystem.read().await;
43 info!("sys event: {}", sys_event.payload());
44
45 core::mem::drop(sys_event);
46
47 let result = mbox.sys_subsystem.shci_c2_mac_802_15_4_init().await;
48 info!("initialized mac: {}", result);
49
50 info!("resetting");
51 mbox.mac_subsystem
52 .send_command(&ResetRequest { set_default_pib: true })
53 .await
54 .unwrap();
55 let evt = mbox.mac_subsystem.read().await;
56 info!("{:#x}", evt);
57
58 info!("setting extended address");
59 let extended_address: u64 = 0xACDE480000000002;
60 mbox.mac_subsystem
61 .send_command(&SetRequest {
62 pib_attribute_ptr: &extended_address as *const _ as *const u8,
63 pib_attribute: PibId::ExtendedAddress,
64 })
65 .await
66 .unwrap();
67 let evt = mbox.mac_subsystem.read().await;
68 info!("{:#x}", evt);
69
70 info!("getting extended address");
71 mbox.mac_subsystem
72 .send_command(&GetRequest {
73 pib_attribute: PibId::ExtendedAddress,
74 })
75 .await
76 .unwrap();
77 let evt = mbox.mac_subsystem.read().await;
78 info!("{:#x}", evt);
79
80 if let Ok(MacEvent::MlmeGetCnf(evt)) = evt {
81 if evt.pib_attribute_value_len == 8 {
82 let value = unsafe { core::ptr::read_unaligned(evt.pib_attribute_value_ptr as *const u64) };
83
84 info!("value {:#x}", value)
85 }
86 }
87
88 info!("assocation request");
89 let a = AssociateRequest {
90 channel_number: MacChannel::Channel16,
91 channel_page: 0,
92 coord_addr_mode: AddressMode::Short,
93 coord_address: MacAddress { short: [34, 17] },
94 capability_information: Capabilities::ALLOCATE_ADDRESS,
95 coord_pan_id: PanId([0x1A, 0xAA]),
96 security_level: SecurityLevel::Unsecure,
97 key_id_mode: KeyIdMode::Implicite,
98 key_source: [0; 8],
99 key_index: 152,
100 };
101 info!("{}", a);
102 mbox.mac_subsystem.send_command(&a).await.unwrap();
103 let evt = mbox.mac_subsystem.read().await;
104 info!("{:#x}", evt);
105
106 info!("Test OK");
107 cortex_m::asm::bkpt();
108}