diff options
| author | Mattias Grönlund <[email protected]> | 2022-12-31 16:25:37 +0100 |
|---|---|---|
| committer | Mattias Grönlund <[email protected]> | 2022-12-31 16:25:37 +0100 |
| commit | 871700f05dbd30aac71d6a3b5446e7743a18b90b (patch) | |
| tree | 65cf8d0514fae4e46a2a34fa022e606c83da70aa /src | |
| parent | 1b6799d93f0bbd6154c124d51aa47aeed0acf15d (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.rs | 7 | ||||
| -rw-r--r-- | src/lib.rs | 2 |
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 | } |
