This commit is contained in:
Dario Nieuwenhuis 2022-07-11 22:44:42 +02:00
parent 30b7800f9a
commit 3ffdbd2ca3
3 changed files with 33 additions and 12 deletions

View file

@ -6,6 +6,7 @@ use core::slice;
use defmt::{assert, assert_eq, panic, *};
use embassy::executor::Spawner;
use embassy::time::{Duration, Timer};
use embassy::util::Forever;
use embassy_rp::gpio::{Flex, Level, Output, Pin};
use embassy_rp::peripherals::{PIN_23, PIN_24, PIN_25, PIN_29};

View file

@ -243,7 +243,7 @@ impl<'a> Control<'a> {
info!("Configuring misc stuff...");
self.set_iovar_u32("bus:txglom", 0).await;
self.set_iovar_u32("apsta", 1).await;
//self.set_iovar_u32("apsta", 1).await;
self.set_iovar("cur_etheraddr", &[02, 03, 04, 05, 06, 07]).await;
let country = countries::WORLD_WIDE_XX;
@ -257,8 +257,12 @@ impl<'a> Control<'a> {
// set country takes some time, next ioctls fail if we don't wait.
Timer::after(Duration::from_millis(100)).await;
// self.set_iovar_u32("ampdu_ba_wsize", 8).await;
// self.set_iovar_u32("ampdu_mpdu", 4).await;
self.ioctl_set_u32(64, 0, 0).await; // WLC_SET_ANTDIV
self.set_iovar_u32("bus:txglom", 0).await;
//self.set_iovar_u32("apsta", 1).await;
self.set_iovar_u32("ampdu_ba_wsize", 8).await;
self.set_iovar_u32("ampdu_mpdu", 4).await;
//self.set_iovar_u32("ampdu_rx_factor", 0).await; // this crashes
Timer::after(Duration::from_millis(100)).await;
@ -275,6 +279,12 @@ impl<'a> Control<'a> {
Timer::after(Duration::from_millis(100)).await;
self.ioctl_set_u32(86, 0, 0).await; // no power save
self.ioctl_set_u32(110, 0, 1).await; // SET_GMODE = auto
self.ioctl_set_u32(142, 0, 0).await; // SET_BAND = any
Timer::after(Duration::from_millis(100)).await;
info!("INIT DONE");
}
@ -494,11 +504,11 @@ impl<'a, PWR: Pin, CS: Pin, CLK: Pin, DIO: Pin> Runner<'a, PWR, CS, CLK, DIO> {
let mut val = self.read8(FUNC_BACKPLANE, REG_BACKPLANE_SLEEP_CSR);
val |= 0x01; // SBSDIO_SLPCSR_KEEP_SDIO_ON
self.write8(FUNC_BACKPLANE, REG_BACKPLANE_SLEEP_CSR, val);
*/
// clear pulls
self.write8(FUNC_BACKPLANE, REG_BACKPLANE_PULL_UP, 0);
let _ = self.read8(FUNC_BACKPLANE, REG_BACKPLANE_PULL_UP);
*/
info!("init done ");
}
@ -595,14 +605,12 @@ impl<'a, PWR: Pin, CS: Pin, CLK: Pin, DIO: Pin> Runner<'a, PWR, CS, CLK, DIO> {
let packet = &payload[packet_start..];
//info!("rx {:02x}", &packet[..(packet.len() as usize).min(36)]);
let evt = EventHeader::from_bytes(&packet[24..][..EventHeader::SIZE].try_into().unwrap());
let evt_num = evt.event_type.to_be() as u8;
let evt_data_len = evt.datalen.to_be() as u8;
let evt_data = &packet[24 + EventHeader::SIZE..][..evt_data_len as usize];
let mut evt = EventHeader::from_bytes(&packet[24..][..EventHeader::SIZE].try_into().unwrap());
evt.byteswap();
let evt_data = &packet[24 + EventHeader::SIZE..][..evt.datalen as usize];
info!(
"=== EVENT {} ({}) {} {:02x}",
events::Event::from(evt_num),
evt_num,
"=== EVENT {}: {} {:02x}",
events::Event::from(evt.event_type as u8),
evt,
evt_data
);

View file

@ -92,6 +92,18 @@ pub struct EventHeader {
}
impl_bytes!(EventHeader);
impl EventHeader {
pub fn byteswap(&mut self) {
self.version = self.version.to_be();
self.flags = self.flags.to_be();
self.event_type = self.event_type.to_be();
self.status = self.status.to_be();
self.reason = self.reason.to_be();
self.auth_type = self.auth_type.to_be();
self.datalen = self.datalen.to_be();
}
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct DownloadHeader {