diff --git a/epd-waveshare/src/epd3in7/mod.rs b/epd-waveshare/src/epd3in7/mod.rs index 39adba2..e847214 100644 --- a/epd-waveshare/src/epd3in7/mod.rs +++ b/epd-waveshare/src/epd3in7/mod.rs @@ -218,6 +218,36 @@ where Ok(()) } + /** + void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) + { + UWORD i, Width; + Width = (Xend-Xstart)%8 == 0 ? (Xend-Xstart)/8 : (Xend-Xstart)/8+1; + UWORD IMAGE_COUNTER = Width * (Yend-Ystart); + + EPD_3IN7_SendCommand(0x44); + EPD_3IN7_SendData(Xstart & 0xff); + EPD_3IN7_SendData((Xstart>>8) & 0x03); + EPD_3IN7_SendData(Xend & 0xff); + EPD_3IN7_SendData((Xend>>8) & 0x03); + EPD_3IN7_SendCommand(0x45); + EPD_3IN7_SendData(Ystart & 0xff); + EPD_3IN7_SendData((Ystart>>8) & 0x03); + EPD_3IN7_SendData(Yend & 0xff); + EPD_3IN7_SendData((Yend>>8) & 0x03); + + EPD_3IN7_SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) + { + EPD_3IN7_SendData(Image[i]); + } + + EPD_3IN7_Load_LUT(2); + EPD_3IN7_SendCommand(0x20); + EPD_3IN7_ReadBusy_HIGH(); + } + */ + #[allow(unused)] fn update_partial_frame( &mut self, @@ -229,6 +259,20 @@ where width: u32, height: u32, ) -> Result<(), SPI::Error> { + self.interface + .cmd(spi, Command::SetRamXAddressStartEndPosition); + + self.interface.data(spi, &[x as u8 & 0xff]); + self.interface.data(spi, &[(x >> 8) as u8 & 0x03]); + self.interface.data(spi, &[(width - x) as u8 & 0xff]); + self.interface.data(spi, &[((width - x) as u8 >> 8) & 0x03]); + + self.interface + .cmd(spi, Command::SetRamYAddressStartEndPosition); + self.interface.data(spi, y as u8 & 0xff); + self.interface.data(spi, (y as u8 >> 8) & 0x03); + self.interface.data(spi, (height - y) as u8 & 0xff); + self.interface.data(spi, ((height - y) as u8 >> 8) & 0x03); todo!() } @@ -236,7 +280,7 @@ where //self.interface // .cmd_with_data(spi, Command::WRITE_LUT_REGISTER, &LUT_1GRAY_GC)?; self.interface.cmd(spi, Command::DisplayUpdateSequence)?; - self.interface.wait_until_idle(delay, IS_BUSY_LOW); + let _ = self.interface.wait_until_idle(delay, IS_BUSY_LOW); Ok(()) }