aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMattias Grönlund <[email protected]>2022-12-31 16:25:37 +0100
committerMattias Grönlund <[email protected]>2022-12-31 16:25:37 +0100
commit871700f05dbd30aac71d6a3b5446e7743a18b90b (patch)
tree65cf8d0514fae4e46a2a34fa022e606c83da70aa /src
parent1b6799d93f0bbd6154c124d51aa47aeed0acf15d (diff)
Fixed length for wlan_read.
The length provided in command word for FUNC_WLAN READ, should describe the actual bytes requested, not the size of the buffer which is sized in u32.
Diffstat (limited to 'src')
-rw-r--r--src/bus.rs7
-rw-r--r--src/lib.rs2
2 files changed, 5 insertions, 4 deletions
diff --git a/src/bus.rs b/src/bus.rs
index f220cffcd..f64c0abba 100644
--- a/src/bus.rs
+++ b/src/bus.rs
@@ -48,11 +48,12 @@ where
48 assert_eq!(val, TEST_PATTERN); 48 assert_eq!(val, TEST_PATTERN);
49 } 49 }
50 50
51 pub async fn wlan_read(&mut self, buf: &mut [u32]) { 51 pub async fn wlan_read(&mut self, buf: &mut [u32], len_in_u8: u32) {
52 let cmd = cmd_word(READ, INC_ADDR, FUNC_WLAN, 0, buf.len() as u32 * 4); 52 let cmd = cmd_word(READ, INC_ADDR, FUNC_WLAN, 0, len_in_u8);
53 let len_in_u32 = (len_in_u8 as usize + 3) / 4;
53 transaction!(&mut self.spi, |bus| async { 54 transaction!(&mut self.spi, |bus| async {
54 bus.write(&[cmd]).await?; 55 bus.write(&[cmd]).await?;
55 bus.read(buf).await?; 56 bus.read(&mut buf[..len_in_u32]).await?;
56 Ok(()) 57 Ok(())
57 }) 58 })
58 .await 59 .await
diff --git a/src/lib.rs b/src/lib.rs
index fa73b32e0..a606d6be3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -687,7 +687,7 @@ where
687 if status & STATUS_F2_PKT_AVAILABLE != 0 { 687 if status & STATUS_F2_PKT_AVAILABLE != 0 {
688 let len = (status & STATUS_F2_PKT_LEN_MASK) >> STATUS_F2_PKT_LEN_SHIFT; 688 let len = (status & STATUS_F2_PKT_LEN_MASK) >> STATUS_F2_PKT_LEN_SHIFT;
689 689
690 self.bus.wlan_read(&mut buf[..(len as usize + 3) / 4]).await; 690 self.bus.wlan_read(&mut buf, len).await;
691 trace!("rx {:02x}", &slice8_mut(&mut buf)[..(len as usize).min(48)]); 691 trace!("rx {:02x}", &slice8_mut(&mut buf)[..(len as usize).min(48)]);
692 self.rx(&slice8_mut(&mut buf)[..len as usize]); 692 self.rx(&slice8_mut(&mut buf)[..len as usize]);
693 } 693 }