From 1eb9b25c7ee2cd14e184bc50c4375f90ab0ea193 Mon Sep 17 00:00:00 2001 From: Felix Lelchuk Date: Fri, 23 Jun 2023 13:45:51 +0200 Subject: [PATCH] Fix cursor: wrapping_add for ptr, immutable sock --- src/cursor.rs | 12 ++++++------ src/raw_device.rs | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cursor.rs b/src/cursor.rs index 6bba7de..0d1c84d 100644 --- a/src/cursor.rs +++ b/src/cursor.rs @@ -6,7 +6,7 @@ pub(crate) struct RxCursor<'a, SpiBus> where SpiBus: Bus, { - sock: &'a mut Socket, + sock: &'a Socket, bus: &'a mut SpiBus, ptr: u16, size: u16, @@ -16,7 +16,7 @@ impl<'a, SpiBus> RxCursor<'a, SpiBus> where SpiBus: Bus, { - pub fn new(sock: &'a mut Socket, bus: &'a mut SpiBus) -> Result { + pub fn new(sock: &'a Socket, bus: &'a mut SpiBus) -> Result { let size = sock.get_receive_size(bus)?; let ptr = sock.get_rx_read_pointer(bus)?; Ok(Self { @@ -57,7 +57,7 @@ where /// Skip up to count bytes. The actual number of bytes skipped is bounded by available(). pub fn skip(&mut self, count: u16) -> u16 { let bounded_count = self.available().min(count); - self.ptr += bounded_count; + self.ptr = self.ptr.wrapping_add(bounded_count); self.size -= bounded_count; bounded_count } @@ -75,7 +75,7 @@ pub(crate) struct TxCursor<'a, SpiBus> where SpiBus: Bus, { - sock: &'a mut Socket, + sock: &'a Socket, bus: &'a mut SpiBus, ptr: u16, size: u16, @@ -85,7 +85,7 @@ impl<'a, SpiBus> TxCursor<'a, SpiBus> where SpiBus: Bus, { - pub fn new(sock: &'a mut Socket, bus: &'a mut SpiBus) -> Result { + pub fn new(sock: &'a Socket, bus: &'a mut SpiBus) -> Result { let size = sock.get_tx_free_size(bus)?; let ptr = sock.get_tx_write_pointer(bus)?; Ok(Self { @@ -111,7 +111,7 @@ where let count = buf.len() as u16; self.bus .write_frame(self.sock.tx_buffer(), self.ptr, &buf[..count as _])?; - self.ptr += count; + self.ptr = self.ptr.wrapping_add(count); self.size -= count; Ok(count) } diff --git a/src/raw_device.rs b/src/raw_device.rs index a8f74fa..25b09a9 100644 --- a/src/raw_device.rs +++ b/src/raw_device.rs @@ -47,7 +47,7 @@ impl RawDevice { /// # Returns /// The number of bytes read into the provided frame buffer. pub fn read_frame(&mut self, frame: &mut [u8]) -> Result { - let mut rx_cursor = crate::cursor::RxCursor::new(&mut self.raw_socket, &mut self.bus)?; + let mut rx_cursor = crate::cursor::RxCursor::new(&self.raw_socket, &mut self.bus)?; // Check if there is anything to receive. if rx_cursor.available() == 0 { @@ -84,7 +84,7 @@ impl RawDevice { self.raw_socket .reset_interrupt(&mut self.bus, register::socketn::Interrupt::SendOk)?; - let mut tx_cursor = crate::cursor::TxCursor::new(&mut self.raw_socket, &mut self.bus)?; + let mut tx_cursor = crate::cursor::TxCursor::new(&self.raw_socket, &mut self.bus)?; let count = tx_cursor.write(frame)?; tx_cursor.commit()?;