Browse Source

Removed data_x_times function

embedded-hal-1.0
Chris 7 years ago
parent
commit
6a24acf62b
  1. 7
      src/epd1in54/mod.rs
  2. 7
      src/epd2in9/mod.rs
  3. 20
      src/epd4in2/mod.rs
  4. 24
      src/traits/connection_interface.rs

7
src/epd1in54/mod.rs

@ -178,8 +178,11 @@ where
// clear the ram with the background color // clear the ram with the background color
let color = self.background_color.get_byte_value(); let color = self.background_color.get_byte_value();
self.interface.cmd(Command::WRITE_RAM)?; //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte?
self.interface.data_x_times(color, WIDTH / 8 * HEIGHT) self.interface.cmd_with_data(
Command::WRITE_RAM,
&[color; WIDTH as usize / 8 * HEIGHT as usize]
)
} }

7
src/epd2in9/mod.rs

@ -175,8 +175,11 @@ where
// clear the ram with the background color // clear the ram with the background color
let color = self.background_color.get_byte_value(); let color = self.background_color.get_byte_value();
self.interface.cmd(Command::WRITE_RAM)?; //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte?
self.interface.data_x_times(color, WIDTH / 8 * HEIGHT) self.interface.cmd_with_data(
Command::WRITE_RAM,
&[color; WIDTH as usize / 8 * HEIGHT as usize]
)
} }
/// Sets the backgroundcolor for various commands like [WaveshareInterface::clear_frame()](clear_frame()) /// Sets the backgroundcolor for various commands like [WaveshareInterface::clear_frame()](clear_frame())

20
src/epd4in2/mod.rs

@ -191,7 +191,9 @@ where
self.command(Command::DATA_START_TRANSMISSION_1)?; self.command(Command::DATA_START_TRANSMISSION_1)?;
self.interface.data_x_times(color_value, buffer.len() as u16)?; for _ in 0..buffer.len() {
self.send_data(&[color_value])?;
}
//TODO: Removal of delay. TEST! //TODO: Removal of delay. TEST!
//self.delay_ms(2); //self.delay_ms(2);
@ -254,17 +256,23 @@ where
fn clear_frame(&mut self) -> Result<(), ERR> { fn clear_frame(&mut self) -> Result<(), ERR> {
self.send_resolution()?; self.send_resolution()?;
let size = WIDTH / 8 * HEIGHT; //let size = WIDTH as usize / 8 * HEIGHT as usize;
let color_value = self.color.get_byte_value(); let color_value = self.color.get_byte_value();
self.command(Command::DATA_START_TRANSMISSION_1)?; //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte?
self.interface.data_x_times(color_value, size)?; self.interface.cmd_with_data(
Command::DATA_START_TRANSMISSION_1,
&[color_value; WIDTH as usize / 8 * HEIGHT as usize]
)?;
//TODO: Removal of delay. TEST! //TODO: Removal of delay. TEST!
//self.delay_ms(2); //self.delay_ms(2);
self.command(Command::DATA_START_TRANSMISSION_2)?; //TODO: this is using a big buffer atm, is it better to just loop over sending a single byte?
self.interface.data_x_times(color_value, size) self.interface.cmd_with_data(
Command::DATA_START_TRANSMISSION_2,
&[color_value; WIDTH as usize / 8 * HEIGHT as usize]
)
} }
/// Sets the backgroundcolor for various commands like [WaveshareInterface::clear_frame()](clear_frame()) /// Sets the backgroundcolor for various commands like [WaveshareInterface::clear_frame()](clear_frame())

24
src/traits/connection_interface.rs

@ -73,30 +73,6 @@ where
self.data(data) self.data(data)
} }
/// Basic function for sending the same byte of data (one u8) multiple times over spi
///
/// Enables direct interaction with the device with the help of [command()](ConnectionInterface::command())
///
/// //TODO: make public?
pub(crate) fn data_x_times(
&mut self,
val: u8,
repetitions: u16,
) -> Result<(), ERR> {
// high for data
self.dc.set_high();
// Transfer data (u8) over spi
self.with_cs(|epd| {
for _ in 0..repetitions {
epd.spi.write(&[val])?;
}
Ok(())
})
}
// spi write helper/abstraction function // spi write helper/abstraction function
fn with_cs<F>(&mut self, f: F) -> Result<(), ERR> fn with_cs<F>(&mut self, f: F) -> Result<(), ERR>
where where

Loading…
Cancel
Save