65 lines
1.8 KiB
Rust
65 lines
1.8 KiB
Rust
//% CHIPS: esp32c6 esp32h2
|
|
//% FEATURES: esp-ieee802154 esp-hal/unstable
|
|
|
|
#![no_std]
|
|
#![no_main]
|
|
|
|
use esp_backtrace as _;
|
|
use esp_hal::{delay::Delay, entry};
|
|
use esp_ieee802154::{Config, Frame, Ieee802154};
|
|
use esp_println::println;
|
|
use ieee802154::mac::{
|
|
Address,
|
|
FrameContent,
|
|
FrameType,
|
|
FrameVersion,
|
|
Header,
|
|
PanId,
|
|
ShortAddress,
|
|
};
|
|
|
|
#[entry]
|
|
fn main() -> ! {
|
|
let peripherals = esp_hal::init(esp_hal::Config::default());
|
|
|
|
let delay = Delay::new();
|
|
|
|
let mut ieee802154 = Ieee802154::new(peripherals.IEEE802154, peripherals.RADIO_CLK);
|
|
|
|
ieee802154.set_config(Config {
|
|
channel: 15,
|
|
promiscuous: false,
|
|
pan_id: Some(0x4242),
|
|
short_addr: Some(0x2323),
|
|
..Default::default()
|
|
});
|
|
|
|
let mut seq_number = 0u8;
|
|
loop {
|
|
ieee802154
|
|
.transmit(&Frame {
|
|
header: Header {
|
|
frame_type: FrameType::Data,
|
|
frame_pending: false,
|
|
ack_request: false,
|
|
pan_id_compress: false,
|
|
seq_no_suppress: false,
|
|
ie_present: false,
|
|
version: FrameVersion::Ieee802154_2003,
|
|
seq: seq_number,
|
|
destination: Some(Address::Short(PanId(0xffff), ShortAddress(0xffff))),
|
|
source: None,
|
|
auxiliary_security_header: None,
|
|
},
|
|
content: FrameContent::Data,
|
|
payload: heapless::Vec::from_slice(b"Hello World").unwrap(),
|
|
footer: [0u8; 2],
|
|
})
|
|
.ok();
|
|
|
|
println!("Send frame with sequence number {seq_number}");
|
|
delay.delay_millis(1000u32);
|
|
seq_number = seq_number.wrapping_add(1);
|
|
}
|
|
}
|