diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-06-21 18:13:19 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2023-06-22 21:12:10 +0200 |
| commit | ec2c095a76a0f55a031093e98a5283cff0daa576 (patch) | |
| tree | ab4986ff6c3101c9a3d3860c728083b170eefa21 /embassy-net-esp-hosted/src/lib.rs | |
| parent | 6c123596b7d48ee66ea93e8b1515e91231e9bced (diff) | |
esp-hosted: print events.
Diffstat (limited to 'embassy-net-esp-hosted/src/lib.rs')
| -rw-r--r-- | embassy-net-esp-hosted/src/lib.rs | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/embassy-net-esp-hosted/src/lib.rs b/embassy-net-esp-hosted/src/lib.rs index 2cf05a7df..084009966 100644 --- a/embassy-net-esp-hosted/src/lib.rs +++ b/embassy-net-esp-hosted/src/lib.rs | |||
| @@ -8,6 +8,7 @@ use embedded_hal::digital::{InputPin, OutputPin}; | |||
| 8 | use embedded_hal_async::digital::Wait; | 8 | use embedded_hal_async::digital::Wait; |
| 9 | use embedded_hal_async::spi::SpiDevice; | 9 | use embedded_hal_async::spi::SpiDevice; |
| 10 | use ioctl::IoctlState; | 10 | use ioctl::IoctlState; |
| 11 | use proto::CtrlMsg; | ||
| 11 | 12 | ||
| 12 | use crate::ioctl::PendingIoctl; | 13 | use crate::ioctl::PendingIoctl; |
| 13 | 14 | ||
| @@ -194,8 +195,6 @@ where | |||
| 194 | tx_buf[0..12].copy_from_slice(&header.to_bytes()); | 195 | tx_buf[0..12].copy_from_slice(&header.to_bytes()); |
| 195 | header.checksum = checksum(&tx_buf[..26 + req_len]); | 196 | header.checksum = checksum(&tx_buf[..26 + req_len]); |
| 196 | tx_buf[0..12].copy_from_slice(&header.to_bytes()); | 197 | tx_buf[0..12].copy_from_slice(&header.to_bytes()); |
| 197 | |||
| 198 | debug!("====== SENDING IOCTL"); | ||
| 199 | } | 198 | } |
| 200 | Either3::Second(packet) => { | 199 | Either3::Second(packet) => { |
| 201 | tx_buf[12..][..packet.len()].copy_from_slice(packet); | 200 | tx_buf[12..][..packet.len()].copy_from_slice(packet); |
| @@ -270,25 +269,46 @@ where | |||
| 270 | }, | 269 | }, |
| 271 | // serial | 270 | // serial |
| 272 | 2 => { | 271 | 2 => { |
| 273 | debug!("serial rx: {:02x}", payload); | 272 | trace!("serial rx: {:02x}", payload); |
| 274 | if payload.len() < 14 { | 273 | if payload.len() < 14 { |
| 275 | warn!("serial rx: too short"); | 274 | warn!("serial rx: too short"); |
| 276 | return; | 275 | return; |
| 277 | } | 276 | } |
| 278 | if &payload[..12] != b"\x01\x08\x00ctrlResp\x02" { | 277 | |
| 279 | warn!("serial rx: bad tlv"); | 278 | let isEvent = match &payload[..12] { |
| 280 | return; | 279 | b"\x01\x08\x00ctrlResp\x02" => false, |
| 281 | } | 280 | b"\x01\x08\x00ctrlEvnt\x02" => true, |
| 281 | _ => { | ||
| 282 | warn!("serial rx: bad tlv"); | ||
| 283 | return; | ||
| 284 | } | ||
| 285 | }; | ||
| 286 | |||
| 282 | let len = u16::from_le_bytes(payload[12..14].try_into().unwrap()) as usize; | 287 | let len = u16::from_le_bytes(payload[12..14].try_into().unwrap()) as usize; |
| 283 | if payload.len() < 14 + len { | 288 | if payload.len() < 14 + len { |
| 284 | warn!("serial rx: too short 2"); | 289 | warn!("serial rx: too short 2"); |
| 285 | return; | 290 | return; |
| 286 | } | 291 | } |
| 287 | self.ioctl_state.ioctl_done(&payload[14..][..len]); | 292 | let data = &payload[14..][..len]; |
| 293 | |||
| 294 | if isEvent { | ||
| 295 | self.handle_event(data); | ||
| 296 | } else { | ||
| 297 | self.ioctl_state.ioctl_done(data); | ||
| 298 | } | ||
| 288 | } | 299 | } |
| 289 | _ => warn!("unknown iftype {}", if_type_and_num), | 300 | _ => warn!("unknown iftype {}", if_type_and_num), |
| 290 | } | 301 | } |
| 291 | } | 302 | } |
| 303 | |||
| 304 | fn handle_event(&self, data: &[u8]) { | ||
| 305 | let Ok(event) = noproto::read::<CtrlMsg>(data) else { | ||
| 306 | warn!("failed to parse event"); | ||
| 307 | return | ||
| 308 | }; | ||
| 309 | |||
| 310 | debug!("event: {:?}", &event); | ||
| 311 | } | ||
| 292 | } | 312 | } |
| 293 | 313 | ||
| 294 | fn checksum(buf: &[u8]) -> u16 { | 314 | fn checksum(buf: &[u8]) -> u16 { |
