aboutsummaryrefslogtreecommitdiff
path: root/src/runner.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/runner.rs')
-rw-r--r--src/runner.rs29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/runner.rs b/src/runner.rs
index 5d840bc59..9945af3fc 100644
--- a/src/runner.rs
+++ b/src/runner.rs
@@ -11,6 +11,7 @@ use crate::bus::Bus;
11pub use crate::bus::SpiBusCyw43; 11pub use crate::bus::SpiBusCyw43;
12use crate::consts::*; 12use crate::consts::*;
13use crate::events::{EventQueue, EventStatus}; 13use crate::events::{EventQueue, EventStatus};
14use crate::fmt::Bytes;
14use crate::nvram::NVRAM; 15use crate::nvram::NVRAM;
15use crate::structs::*; 16use crate::structs::*;
16use crate::{events, Core, IoctlState, IoctlType, CHIP, MTU}; 17use crate::{events, Core, IoctlState, IoctlType, CHIP, MTU};
@@ -23,6 +24,7 @@ struct LogState {
23 buf_count: usize, 24 buf_count: usize,
24} 25}
25 26
27#[cfg(feature = "firmware-logs")]
26impl Default for LogState { 28impl Default for LogState {
27 fn default() -> Self { 29 fn default() -> Self {
28 Self { 30 Self {
@@ -175,7 +177,6 @@ where
175 let mut shared = [0; SharedMemData::SIZE]; 177 let mut shared = [0; SharedMemData::SIZE];
176 self.bus.bp_read(shared_addr, &mut shared).await; 178 self.bus.bp_read(shared_addr, &mut shared).await;
177 let shared = SharedMemData::from_bytes(&shared); 179 let shared = SharedMemData::from_bytes(&shared);
178 info!("shared: {:08x}", shared);
179 180
180 self.log.addr = shared.console_addr + 8; 181 self.log.addr = shared.console_addr + 8;
181 } 182 }
@@ -238,7 +239,7 @@ where
238 warn!("TX stalled"); 239 warn!("TX stalled");
239 } else { 240 } else {
240 if let Some(packet) = self.ch.try_tx_buf() { 241 if let Some(packet) = self.ch.try_tx_buf() {
241 trace!("tx pkt {:02x}", &packet[..packet.len().min(48)]); 242 trace!("tx pkt {:02x}", Bytes(&packet[..packet.len().min(48)]));
242 243
243 let mut buf = [0; 512]; 244 let mut buf = [0; 512];
244 let buf8 = slice8_mut(&mut buf); 245 let buf8 = slice8_mut(&mut buf);
@@ -275,7 +276,7 @@ where
275 276
276 let total_len = (total_len + 3) & !3; // round up to 4byte 277 let total_len = (total_len + 3) & !3; // round up to 4byte
277 278
278 trace!(" {:02x}", &buf8[..total_len.min(48)]); 279 trace!(" {:02x}", Bytes(&buf8[..total_len.min(48)]));
279 280
280 self.bus.wlan_write(&buf[..(total_len / 4)]).await; 281 self.bus.wlan_write(&buf[..(total_len / 4)]).await;
281 self.ch.tx_done(); 282 self.ch.tx_done();
@@ -295,7 +296,7 @@ where
295 if status & STATUS_F2_PKT_AVAILABLE != 0 { 296 if status & STATUS_F2_PKT_AVAILABLE != 0 {
296 let len = (status & STATUS_F2_PKT_LEN_MASK) >> STATUS_F2_PKT_LEN_SHIFT; 297 let len = (status & STATUS_F2_PKT_LEN_MASK) >> STATUS_F2_PKT_LEN_SHIFT;
297 self.bus.wlan_read(&mut buf, len).await; 298 self.bus.wlan_read(&mut buf, len).await;
298 trace!("rx {:02x}", &slice8_mut(&mut buf)[..(len as usize).min(48)]); 299 trace!("rx {:02x}", Bytes(&slice8_mut(&mut buf)[..(len as usize).min(48)]));
299 self.rx(&slice8_mut(&mut buf)[..len as usize]); 300 self.rx(&slice8_mut(&mut buf)[..len as usize]);
300 } 301 }
301 } 302 }
@@ -343,11 +344,11 @@ where
343 if cdc_header.id == self.ioctl_id { 344 if cdc_header.id == self.ioctl_id {
344 if cdc_header.status != 0 { 345 if cdc_header.status != 0 {
345 // TODO: propagate error instead 346 // TODO: propagate error instead
346 panic!("IOCTL error {=i32}", cdc_header.status as i32); 347 panic!("IOCTL error {}", cdc_header.status as i32);
347 } 348 }
348 349
349 let resp_len = cdc_header.len as usize; 350 let resp_len = cdc_header.len as usize;
350 info!("IOCTL Response: {:02x}", &payload[CdcHeader::SIZE..][..resp_len]); 351 info!("IOCTL Response: {:02x}", Bytes(&payload[CdcHeader::SIZE..][..resp_len]));
351 352
352 (unsafe { &mut *buf }[..resp_len]).copy_from_slice(&payload[CdcHeader::SIZE..][..resp_len]); 353 (unsafe { &mut *buf }[..resp_len]).copy_from_slice(&payload[CdcHeader::SIZE..][..resp_len]);
353 self.ioctl_state.set(IoctlState::Done { resp_len }); 354 self.ioctl_state.set(IoctlState::Done { resp_len });
@@ -365,7 +366,7 @@ where
365 return; 366 return;
366 } 367 }
367 let bcd_packet = &payload[packet_start..]; 368 let bcd_packet = &payload[packet_start..];
368 trace!(" {:02x}", &bcd_packet[..(bcd_packet.len() as usize).min(36)]); 369 trace!(" {:02x}", Bytes(&bcd_packet[..(bcd_packet.len() as usize).min(36)]));
369 370
370 let mut event_packet = EventPacket::from_bytes(&bcd_packet[..EventPacket::SIZE].try_into().unwrap()); 371 let mut event_packet = EventPacket::from_bytes(&bcd_packet[..EventPacket::SIZE].try_into().unwrap());
371 event_packet.byteswap(); 372 event_packet.byteswap();
@@ -382,7 +383,8 @@ where
382 if event_packet.hdr.oui != BROADCOM_OUI { 383 if event_packet.hdr.oui != BROADCOM_OUI {
383 warn!( 384 warn!(
384 "unexpected ethernet OUI {:02x}, expected Broadcom OUI {:02x}", 385 "unexpected ethernet OUI {:02x}, expected Broadcom OUI {:02x}",
385 event_packet.hdr.oui, BROADCOM_OUI 386 Bytes(&event_packet.hdr.oui),
387 Bytes(BROADCOM_OUI)
386 ); 388 );
387 return; 389 return;
388 } 390 }
@@ -405,7 +407,12 @@ where
405 407
406 let evt_type = events::Event::from(event_packet.msg.event_type as u8); 408 let evt_type = events::Event::from(event_packet.msg.event_type as u8);
407 let evt_data = &bcd_packet[EventMessage::SIZE..][..event_packet.msg.datalen as usize]; 409 let evt_data = &bcd_packet[EventMessage::SIZE..][..event_packet.msg.datalen as usize];
408 debug!("=== EVENT {}: {} {:02x}", evt_type, event_packet.msg, evt_data); 410 debug!(
411 "=== EVENT {:?}: {:?} {:02x}",
412 evt_type,
413 event_packet.msg,
414 Bytes(evt_data)
415 );
409 416
410 if evt_type == events::Event::AUTH || evt_type == events::Event::JOIN { 417 if evt_type == events::Event::AUTH || evt_type == events::Event::JOIN {
411 self.events.publish_immediate(EventStatus { 418 self.events.publish_immediate(EventStatus {
@@ -424,7 +431,7 @@ where
424 return; 431 return;
425 } 432 }
426 let packet = &payload[packet_start..]; 433 let packet = &payload[packet_start..];
427 trace!("rx pkt {:02x}", &packet[..(packet.len() as usize).min(48)]); 434 trace!("rx pkt {:02x}", Bytes(&packet[..(packet.len() as usize).min(48)]));
428 435
429 match self.ch.try_rx_buf() { 436 match self.ch.try_rx_buf() {
430 Some(buf) => { 437 Some(buf) => {
@@ -490,7 +497,7 @@ where
490 497
491 let total_len = (total_len + 3) & !3; // round up to 4byte 498 let total_len = (total_len + 3) & !3; // round up to 4byte
492 499
493 trace!(" {:02x}", &buf8[..total_len.min(48)]); 500 trace!(" {:02x}", Bytes(&buf8[..total_len.min(48)]));
494 501
495 self.bus.wlan_write(&buf[..total_len / 4]).await; 502 self.bus.wlan_write(&buf[..total_len / 4]).await;
496 } 503 }