From 247a78acb7c7455afedb196b54162d1b04da5af1 Mon Sep 17 00:00:00 2001 From: Kaleb Elwert Date: Fri, 13 Aug 2021 01:14:07 +0100 Subject: [PATCH] Write data over SPI 1 byte at a time Fixes #82 --- src/interface.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/interface.rs b/src/interface.rs index ef011d3..76993f0 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -57,11 +57,15 @@ where /// /// Enables direct interaction with the device with the help of [command()](Epd4in2::command()) pub(crate) fn data(&mut self, spi: &mut SPI, data: &[u8]) -> Result<(), SPI::Error> { - // high for data - let _ = self.dc.set_high(); + for val in data.iter().copied() { + // high for data + let _ = self.dc.set_high(); - // Transfer data (u8-array) over spi - self.write(spi, data) + // Transfer data one u8 at a time over spi + self.write(spi, &[val])?; + } + + Ok(()) } /// Basic function for sending [Commands](Command) and the data belonging to it. @@ -86,11 +90,9 @@ where val: u8, repetitions: u32, ) -> Result<(), SPI::Error> { - // high for data - let _ = self.dc.set_high(); // Transfer data (u8) over spi for _ in 0..repetitions { - self.write(spi, &[val])?; + self.data(spi, &[val])?; } Ok(()) }