diff --git a/src/epd4in2/mod.rs b/src/epd4in2/mod.rs index db4e244..0c0c44d 100644 --- a/src/epd4in2/mod.rs +++ b/src/epd4in2/mod.rs @@ -190,8 +190,8 @@ where //VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 self.interface.cmd_with_data(spi, Command::VCOM_AND_DATA_INTERVAL_SETTING, &[0x97])?; - //TODO: compare with using a loop instead of the full buffer - self.interface.cmd_with_data(spi, Command::DATA_START_TRANSMISSION_1, &[color_value; WIDTH as usize / 8 * HEIGHT as usize])?; + self.interface.cmd(spi, Command::DATA_START_TRANSMISSION_1)?; + self.interface.data_x_times(spi, color_value, WIDTH / 8 * HEIGHT)?; self.interface.cmd_with_data(spi, Command::DATA_START_TRANSMISSION_2, buffer) } @@ -230,7 +230,7 @@ where //TODO: handle dtm somehow let is_dtm1 = false; if is_dtm1 { - self.command(spi, Command::DATA_START_TRANSMISSION_1)? + self.command(spi, Command::DATA_START_TRANSMISSION_1)? //TODO: check if data_start transmission 1 also needs "old"/background data here } else { self.command(spi, Command::DATA_START_TRANSMISSION_2)? } @@ -252,25 +252,16 @@ where fn clear_frame(&mut self, spi: &mut SPI) -> Result<(), SPI::Error> { self.send_resolution(spi)?; - //let size = WIDTH as usize / 8 * HEIGHT as usize; let color_value = self.color.get_byte_value(); - //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte? - self.interface.cmd_with_data( - spi, - Command::DATA_START_TRANSMISSION_1, - &[color_value; WIDTH as usize / 8 * HEIGHT as usize] - )?; + self.interface.cmd(spi, Command::DATA_START_TRANSMISSION_1)?; + self.interface.data_x_times(spi, color_value, WIDTH / 8 * HEIGHT)?; //TODO: Removal of delay. TEST! //self.delay_ms(2); - //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte? - self.interface.cmd_with_data( - spi, - Command::DATA_START_TRANSMISSION_2, - &[color_value; WIDTH as usize / 8 * HEIGHT as usize] - ) + self.interface.cmd(spi, Command::DATA_START_TRANSMISSION_2)?; + self.interface.data_x_times(spi, color_value, WIDTH / 8 * HEIGHT) } fn set_background_color(&mut self, color: Color) {