diff --git a/CHANGELOG.md b/CHANGELOG.md index fca9c83..459d601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] - + + +## [v0.3.2] - 2019-06-17 + +### Fixed + - Added some more missing wait_until_idle calls ## [v0.3.1] - 2019-04-06 @@ -61,6 +66,7 @@ Initial release with Changelog - Renamed to `epd-waveshare` -[Unreleased]: https://github.com/Caemor/eink-waveshare-rs/compare/v0.3.1...HEAD +[Unreleased]: https://github.com/Caemor/eink-waveshare-rs/compare/v0.3.2...HEAD +[v0.3.2]: https://github.com/Caemor/eink-waveshare-rs/compare/v0.3.1...v0.3.2 [v0.3.1]: https://github.com/Caemor/eink-waveshare-rs/compare/v0.3.0...v0.3.1 [v0.3.0]: https://github.com/Caemor/eink-waveshare-rs/compare/v0.2.0...v0.3.0 diff --git a/Cargo.toml b/Cargo.toml index c63c587..2dde4d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ license = "ISC" name = "epd-waveshare" readme = "README.md" repository = "https://github.com/Caemor/epd-waveshare.git" -version = "0.3.1" +version = "0.3.2" edition = "2018" [badges] diff --git a/src/epd1in54/mod.rs b/src/epd1in54/mod.rs index 20df11e..e666a45 100644 --- a/src/epd1in54/mod.rs +++ b/src/epd1in54/mod.rs @@ -125,7 +125,10 @@ where self.interface .cmd_with_data(spi, Command::DATA_ENTRY_MODE_SETTING, &[0x03])?; - self.set_lut(spi, None) + self.set_lut(spi, None)?; + + self.wait_until_idle(); + Ok(()) } } @@ -188,7 +191,10 @@ where fn update_frame(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error> { self.use_full_frame(spi)?; self.interface - .cmd_with_data(spi, Command::WRITE_RAM, buffer) + .cmd_with_data(spi, Command::WRITE_RAM, buffer)?; + + self.wait_until_idle(); + Ok(()) } //TODO: update description: last 3 bits will be ignored for width and x_pos @@ -205,7 +211,10 @@ where self.set_ram_counter(spi, x, y)?; self.interface - .cmd_with_data(spi, Command::WRITE_RAM, buffer) + .cmd_with_data(spi, Command::WRITE_RAM, buffer)?; + + self.wait_until_idle(); + Ok(()) } fn display_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { @@ -230,7 +239,11 @@ where let color = self.background_color.get_byte_value(); self.interface.cmd(spi, Command::WRITE_RAM)?; - self.interface.data_x_times(spi, color, WIDTH / 8 * HEIGHT) + self.interface + .data_x_times(spi, color, WIDTH / 8 * HEIGHT)?; + + self.wait_until_idle(); + Ok(()) } fn set_background_color(&mut self, background_color: Color) { @@ -309,7 +322,10 @@ where end_y as u8, (end_y >> 8) as u8, ], - ) + )?; + + self.wait_until_idle(); + Ok(()) } pub(crate) fn set_ram_counter( @@ -336,8 +352,12 @@ where fn set_lut_helper(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error> { assert!(buffer.len() == 30); + self.interface - .cmd_with_data(spi, Command::WRITE_LUT_REGISTER, buffer) + .cmd_with_data(spi, Command::WRITE_LUT_REGISTER, buffer)?; + + self.wait_until_idle(); + Ok(()) } } diff --git a/src/epd2in9/mod.rs b/src/epd2in9/mod.rs index e8ac3b9..a10a152 100644 --- a/src/epd2in9/mod.rs +++ b/src/epd2in9/mod.rs @@ -180,14 +180,20 @@ where spi: &mut SPI, delay: &mut DELAY, ) -> Result<(), SPI::Error> { - self.init(spi, delay) + self.init(spi, delay)?; + + self.wait_until_idle(); + Ok(()) } fn update_frame(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error> { self.use_full_frame(spi)?; self.interface - .cmd_with_data(spi, Command::WRITE_RAM, buffer) + .cmd_with_data(spi, Command::WRITE_RAM, buffer)?; + + self.wait_until_idle(); + Ok(()) } //TODO: update description: last 3 bits will be ignored for width and x_pos @@ -204,7 +210,10 @@ where self.set_ram_counter(spi, x, y)?; self.interface - .cmd_with_data(spi, Command::WRITE_RAM, buffer) + .cmd_with_data(spi, Command::WRITE_RAM, buffer)?; + + self.wait_until_idle(); + Ok(()) } fn display_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { @@ -229,7 +238,11 @@ where let color = self.background_color.get_byte_value(); self.interface.cmd(spi, Command::WRITE_RAM)?; - self.interface.data_x_times(spi, color, WIDTH / 8 * HEIGHT) + self.interface + .data_x_times(spi, color, WIDTH / 8 * HEIGHT)?; + + self.wait_until_idle(); + Ok(()) } fn set_background_color(&mut self, background_color: Color) { @@ -332,7 +345,9 @@ where fn set_lut_helper(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error> { assert!(buffer.len() == 30); self.interface - .cmd_with_data(spi, Command::WRITE_LUT_REGISTER, buffer) + .cmd_with_data(spi, Command::WRITE_LUT_REGISTER, buffer)?; + self.wait_until_idle(); + Ok(()) } } diff --git a/src/epd4in2/mod.rs b/src/epd4in2/mod.rs index 21e9ba7..49398a3 100644 --- a/src/epd4in2/mod.rs +++ b/src/epd4in2/mod.rs @@ -128,6 +128,7 @@ where self.set_lut(spi, None)?; + self.wait_until_idle(); Ok(()) } } @@ -200,7 +201,10 @@ where self.command(spi, Command::POWER_OFF)?; self.wait_until_idle(); self.interface - .cmd_with_data(spi, Command::DEEP_SLEEP, &[0xA5]) + .cmd_with_data(spi, Command::DEEP_SLEEP, &[0xA5])?; + + self.wait_until_idle(); + Ok(()) } fn update_frame(&mut self, spi: &mut SPI, buffer: &[u8]) -> Result<(), SPI::Error> { @@ -221,7 +225,10 @@ where .data_x_times(spi, color_value, WIDTH / 8 * HEIGHT)?; self.interface - .cmd_with_data(spi, Command::DATA_START_TRANSMISSION_2, buffer) + .cmd_with_data(spi, Command::DATA_START_TRANSMISSION_2, buffer)?; + + self.wait_until_idle(); + Ok(()) } fn update_partial_frame( @@ -265,7 +272,10 @@ where self.send_data(spi, buffer)?; - self.command(spi, Command::PARTIAL_OUT) + self.command(spi, Command::PARTIAL_OUT)?; + + self.wait_until_idle(); + Ok(()) } fn display_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { @@ -288,7 +298,10 @@ where self.interface .cmd(spi, Command::DATA_START_TRANSMISSION_2)?; self.interface - .data_x_times(spi, color_value, WIDTH / 8 * HEIGHT) + .data_x_times(spi, color_value, WIDTH / 8 * HEIGHT)?; + + self.wait_until_idle(); + Ok(()) } fn set_background_color(&mut self, color: Color) { @@ -397,7 +410,10 @@ where self.cmd_with_data(spi, Command::LUT_WHITE_TO_BLACK, lut_wb)?; // LUT BLACK to BLACK - self.cmd_with_data(spi, Command::LUT_BLACK_TO_BLACK, lut_bb) + self.cmd_with_data(spi, Command::LUT_BLACK_TO_BLACK, lut_bb)?; + + self.wait_until_idle(); + Ok(()) } }