diff --git a/src/epd1in54/mod.rs b/src/epd1in54/mod.rs index 2aaac76..00d00b5 100644 --- a/src/epd1in54/mod.rs +++ b/src/epd1in54/mod.rs @@ -108,11 +108,11 @@ where RST: OutputPin, Delay: DelayUs + DelayMs, { - fn get_width(&self) -> u16 { + fn width(&self) -> u16 { WIDTH } - fn get_height(&self) -> u16 { + fn height(&self) -> u16 { HEIGHT } diff --git a/src/epd2in9/mod.rs b/src/epd2in9/mod.rs index 80014c9..080f795 100644 --- a/src/epd2in9/mod.rs +++ b/src/epd2in9/mod.rs @@ -113,11 +113,11 @@ where RST: OutputPin, Delay: DelayUs + DelayMs, { - fn get_width(&self) -> u16 { + fn width(&self) -> u16 { WIDTH } - fn get_height(&self) -> u16 { + fn height(&self) -> u16 { HEIGHT } @@ -187,23 +187,6 @@ where self.interface.command(Command::NOP) } - fn update_and_display_frame(&mut self, buffer: &[u8]) -> Result<(), ERR> { - self.update_frame(buffer)?; - self.display_frame() - } - - fn update_and_display_partial_frame( - &mut self, - buffer: &[u8], - x: u16, - y: u16, - width: u16, - height: u16, - ) -> Result<(), ERR> { - self.update_partial_frame(buffer, x, y, width, height)?; - self.display_frame() - } - fn clear_frame(&mut self) -> Result<(), ERR> { self.use_full_frame()?; diff --git a/src/epd4in2/mod.rs b/src/epd4in2/mod.rs index 76d463e..1b5ad9e 100644 --- a/src/epd4in2/mod.rs +++ b/src/epd4in2/mod.rs @@ -291,11 +291,11 @@ where &self.color } - fn get_width(&self) -> u16 { + fn width(&self) -> u16 { WIDTH } - fn get_height(&self) -> u16 { + fn height(&self) -> u16 { HEIGHT } diff --git a/src/interface/mod.rs b/src/interface/mod.rs index 7fa6b8f..dc8bbb6 100644 --- a/src/interface/mod.rs +++ b/src/interface/mod.rs @@ -9,12 +9,14 @@ use color::Color; /// Interface for the physical connection between display and the controlling device pub(crate) mod connection_interface; + /// All commands need to have this trait which gives the address of the command /// which needs to be send via SPI with activated CommandsPin (Data/Command Pin in CommandMode) pub(crate) trait Command { fn address(self) -> u8; } + //TODO: add LUT trait with set_fast_lut and set_manual_lut and set_normal_lut or sth like that? // for partial updates trait LUTSupport { @@ -23,6 +25,7 @@ trait LUTSupport { fn set_lut_manual(&mut self, data: &[u8]) -> Result<(), ERR>; } + pub(crate) trait InternalWiAdditions where SPI: Write, @@ -64,27 +67,7 @@ where spi: SPI, cs: CS, busy: BUSY, dc: DC, rst: RST, delay: Delay, ) -> Result where - Self: Sized; - - // TODO: add this abstraction function - /// Loads a full image on the EPD and displays it - fn update_and_display_frame(&mut self, buffer: &[u8]) -> Result<(), ERR> { - self.update_frame(buffer)?; - self.display_frame() - } - - /// Loads a partial image on the EPD and displays it - fn update_and_display_partial_frame( - &mut self, - buffer: &[u8], - x: u16, - y: u16, - width: u16, - height: u16, - ) -> Result<(), ERR> { - self.update_partial_frame(buffer, x, y, width, height)?; - self.display_frame() - } + Self: Sized; /// Let the device enter deep-sleep mode to save power. /// @@ -104,19 +87,17 @@ where fn background_color(&self) -> &Color; /// Get the width of the display - fn get_width(&self) -> u16; + fn width(&self) -> u16; /// Get the height of the display - fn get_height(&self) -> u16; + fn height(&self) -> u16; /// Abstraction of setting the delay for simpler calls /// /// maximum delay ~65 seconds (u16:max in ms) fn delay_ms(&mut self, delay: u16); - // void DisplayFrame(const unsigned char* frame_buffer); - /// Transmit a full frame to the SRAM of the DPD - /// + /// Transmit a full frame to the SRAM of the EPD fn update_frame(&mut self, buffer: &[u8]) -> Result<(), ERR>; /// Transmits partial data to the SRAM of the EPD