- optimize event to parse opcode only once

- optimze channels
- return mut ref for smoltcp rx
This commit is contained in:
xoviat
2023-07-19 17:49:08 -05:00
parent ca1d4179a7
commit 28254842db
12 changed files with 178 additions and 133 deletions

View File

@ -74,8 +74,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting extended address");
@ -88,8 +88,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting short address");
@ -102,8 +102,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting association permit");
@ -116,8 +116,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting TX power");
@ -130,8 +130,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("starting FFD device");
@ -148,8 +148,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting RX on when idle");
@ -162,17 +162,17 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
loop {
let evt = mbox.mac_subsystem.read().await;
if let Ok(evt) = evt.mac_event() {
if let Ok(evt) = evt {
defmt::info!("parsed mac event");
defmt::info!("{:#x}", evt);
defmt::info!("{:#x}", *evt);
match evt {
match *evt {
MacEvent::MlmeAssociateInd(association) => mbox
.mac_subsystem
.send_command(&AssociateResponse {

View File

@ -80,8 +80,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting extended address");
@ -94,8 +94,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting short address");
@ -108,8 +108,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting association permit");
@ -122,8 +122,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting TX power");
@ -136,8 +136,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("starting FFD device");
@ -154,8 +154,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting RX on when idle");
@ -168,8 +168,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
let tx_queue = [

View File

@ -76,8 +76,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("setting extended address");
@ -90,8 +90,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
defmt::info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
defmt::info!("{:#x}", *evt);
}
info!("getting extended address");
@ -104,10 +104,10 @@ async fn main(spawner: Spawner) {
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
info!("{:#x}", *evt);
if let Ok(MacEvent::MlmeGetCnf(evt)) = evt.mac_event() {
if let MacEvent::MlmeGetCnf(evt) = *evt {
if evt.pib_attribute_value_len == 8 {
let value = unsafe { core::ptr::read_unaligned(evt.pib_attribute_value_ptr as *const u64) };
@ -132,10 +132,10 @@ async fn main(spawner: Spawner) {
info!("{}", a);
mbox.mac_subsystem.send_command(&a).await.unwrap();
let short_addr = {
let evt = mbox.mac_subsystem.read().await;
info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
info!("{:#x}", *evt);
if let Ok(MacEvent::MlmeAssociateCnf(conf)) = evt.mac_event() {
if let MacEvent::MlmeAssociateCnf(conf) = *evt {
conf.assoc_short_address
} else {
defmt::panic!()
@ -151,8 +151,8 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
info!("{:#x}", *evt);
}
info!("sending data");
@ -175,12 +175,14 @@ async fn main(spawner: Spawner) {
.await
.unwrap();
{
let evt = mbox.mac_subsystem.read().await;
info!("{:#x}", evt.mac_event());
let evt = mbox.mac_subsystem.read().await.unwrap();
info!("{:#x}", *evt);
}
loop {
let evt = mbox.mac_subsystem.read().await;
info!("{:#x}", evt.mac_event());
match mbox.mac_subsystem.read().await {
Ok(evt) => info!("{:#x}", *evt),
_ => continue,
};
}
}