From c3a4cde81559d6c0d2c6c6aa1767a23bd0cabb61 Mon Sep 17 00:00:00 2001 From: Edwin Svensson Date: Sun, 11 Apr 2021 16:57:28 +0200 Subject: [PATCH] skip closure/task --- src/epd1in54/mod.rs | 2 +- src/epd1in54b/mod.rs | 2 +- src/epd1in54c/mod.rs | 2 +- src/epd2in13_v2/mod.rs | 2 +- src/epd2in7b/mod.rs | 2 +- src/epd2in9/mod.rs | 2 +- src/epd2in9bc/mod.rs | 2 +- src/epd4in2/mod.rs | 4 ++-- src/epd5in65f/mod.rs | 4 ++-- src/epd7in5/mod.rs | 2 +- src/epd7in5_v2/mod.rs | 12 ++++-------- src/interface.rs | 20 +------------------- src/traits.rs | 3 +-- 13 files changed, 18 insertions(+), 41 deletions(-) diff --git a/src/epd1in54/mod.rs b/src/epd1in54/mod.rs index d82fe21..2666b5a 100644 --- a/src/epd1in54/mod.rs +++ b/src/epd1in54/mod.rs @@ -299,7 +299,7 @@ where DELAY: DelayMs, { fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } pub(crate) fn use_full_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd1in54b/mod.rs b/src/epd1in54b/mod.rs index c34efdc..57a390d 100644 --- a/src/epd1in54b/mod.rs +++ b/src/epd1in54b/mod.rs @@ -339,7 +339,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd1in54c/mod.rs b/src/epd1in54c/mod.rs index f226cfe..df7d728 100644 --- a/src/epd1in54c/mod.rs +++ b/src/epd1in54c/mod.rs @@ -275,7 +275,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd2in13_v2/mod.rs b/src/epd2in13_v2/mod.rs index fe661e5..0dd798f 100644 --- a/src/epd2in13_v2/mod.rs +++ b/src/epd2in13_v2/mod.rs @@ -564,7 +564,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } } diff --git a/src/epd2in7b/mod.rs b/src/epd2in7b/mod.rs index 4a19aab..89a04e2 100644 --- a/src/epd2in7b/mod.rs +++ b/src/epd2in7b/mod.rs @@ -363,7 +363,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } /// Refresh display for partial frame diff --git a/src/epd2in9/mod.rs b/src/epd2in9/mod.rs index 881f32b..9f2f9f1 100644 --- a/src/epd2in9/mod.rs +++ b/src/epd2in9/mod.rs @@ -298,7 +298,7 @@ where DELAY: DelayMs, { fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn use_full_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd2in9bc/mod.rs b/src/epd2in9bc/mod.rs index 2be3e57..663c8dc 100644 --- a/src/epd2in9bc/mod.rs +++ b/src/epd2in9bc/mod.rs @@ -365,7 +365,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd4in2/mod.rs b/src/epd4in2/mod.rs index 119edea..c87aa40 100644 --- a/src/epd4in2/mod.rs +++ b/src/epd4in2/mod.rs @@ -372,7 +372,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { @@ -442,7 +442,7 @@ where } } -impl QuickRefresh +impl QuickRefresh for EPD4in2 where SPI: Write, diff --git a/src/epd5in65f/mod.rs b/src/epd5in65f/mod.rs index aefb3c3..7731c3e 100644 --- a/src/epd5in65f/mod.rs +++ b/src/epd5in65f/mod.rs @@ -223,10 +223,10 @@ where } fn wait_busy_high(&mut self) { - let _ = self.interface.wait_until_idle(true, None); + let _ = self.interface.wait_until_idle(true); } fn wait_busy_low(&mut self) { - let _ = self.interface.wait_until_idle(false, None); + let _ = self.interface.wait_until_idle(false); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { let w = self.width(); diff --git a/src/epd7in5/mod.rs b/src/epd7in5/mod.rs index 4e2c6c4..ff8ada8 100644 --- a/src/epd7in5/mod.rs +++ b/src/epd7in5/mod.rs @@ -255,7 +255,7 @@ where } fn wait_until_idle(&mut self) { - let _ = self.interface.wait_until_idle(IS_BUSY_LOW, None); + let _ = self.interface.wait_until_idle(IS_BUSY_LOW); } fn send_resolution(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { diff --git a/src/epd7in5_v2/mod.rs b/src/epd7in5_v2/mod.rs index 8e81b90..13f1716 100644 --- a/src/epd7in5_v2/mod.rs +++ b/src/epd7in5_v2/mod.rs @@ -229,14 +229,10 @@ where } fn wait_until_idle(&mut self, spi: &mut SPI, delay: &mut DELAY) -> Result<(), SPI::Error> { - self.interface.wait_until_idle( - IS_BUSY_LOW, - Some((spi, delay, |i, s, d| { - i.cmd(s, Command::GET_STATUS)?; - d.delay_ms(20); - Ok(()) - })), - )?; + while self.interface.is_busy(IS_BUSY_LOW) { + self.interface.cmd(spi, Command::GET_STATUS)?; + delay.delay_ms(20); + } Ok(()) } diff --git a/src/interface.rs b/src/interface.rs index f8a7ee5..3ef967b 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -130,32 +130,14 @@ where /// /// Most likely there was a mistake with the 2in9 busy connection /// //TODO: use the #cfg feature to make this compile the right way for the certain types - pub(crate) fn wait_until_idle( - &mut self, - is_busy_low: bool, - mut task: Option<( - &mut SPI, - &mut DELAY, - fn(&mut Self, &mut SPI, &mut DELAY) -> Result<(), SPI::Error>, - )>, - ) -> Result<(), SPI::Error> { + pub(crate) fn wait_until_idle(&mut self, is_busy_low: bool) { // //tested: worked without the delay for all tested devices // //self.delay_ms(1); - - // Some displays need special treatment (Only 7.5"V2 known so far) - // In those cases, a "task" is provided and run here. If note, this - // just busy waits for the display. while self.is_busy(is_busy_low) { - match task { - // TODO: Ignore this error? - Some((ref mut spi, ref mut delay, tcb)) => tcb(self, spi, delay)?, - None => {} - } // //tested: REMOVAL of DELAY: it's only waiting for the signal anyway and should continue work asap // //old: shorten the time? it was 100 in the beginning // //self.delay_ms(5); } - Ok(()) } /// Checks if device is still busy diff --git a/src/traits.rs b/src/traits.rs index f5c1f34..5ad792a 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -280,14 +280,13 @@ where ///# Ok(()) ///# } ///``` -pub trait QuickRefresh +pub trait QuickRefresh where SPI: Write, CS: OutputPin, BUSY: InputPin, DC: OutputPin, RST: OutputPin, - DELAY: DelayMs, { /// Updates the old frame. fn update_old_frame(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error>;