Command

Enum Command 

Source
pub enum Command {
Show 21 variants DriverOutputControl = 1, BoosterSoftStartControl = 12, DeepSleepMode = 16, DataEntryModeSetting = 17, SwReset = 18, TemperatureSensorControl = 26, MasterActivation = 32, DisplayUpdateControl1 = 33, DisplayUpdateControl2 = 34, WriteRam = 36, WriteOldRam = 38, WriteVcom = 44, WriteLut = 50, SetDummyLinePeriod = 58, SetGateLineWidth = 59, BorderWaveformControl = 60, SetRamXStartEnd = 68, SetRamYStartEnd = 69, SetRamX = 78, SetRamY = 79, Noop = 255,
}
Expand description

Low-level commands for the Epd2In9. You probably want to use the other methods exposed on the Epd2In9 for most operations, but can send commands directly with Epd2In9::send for low-level control or experimentation.

Variants§

§

DriverOutputControl = 1

Used to initialise the display.

§

BoosterSoftStartControl = 12

Used to configure the on chip voltage booster and regulator.

§

DeepSleepMode = 16

Used to enter deep sleep mode. Requires a hardware reset and reinitialisation to wake up.

§

DataEntryModeSetting = 17

Changes the auto-increment behaviour of the address counter.

§

SwReset = 18

Resets all commands and parameters to default values (except deep sleep mode).

§

TemperatureSensorControl = 26

Writes to the temperature register.

§

MasterActivation = 32

Activates the display update sequence. This must be set beforehand using Command::DisplayUpdateControl2. This operation must not be interrupted.

§

DisplayUpdateControl1 = 33

Used for a RAM “bypass” mode when using RefreshMode::Partial. This is poorly explained in the docs, but essentially we have three options:

  1. 0x00 (default): just update the pixels that have changed between the two internal frame buffers. This normally does what you expect. You can hack it a bit to do interesting things by writing to both the old and new frame buffers.
  2. 0x80: just update the white (BinaryColor::On) pixels in the current frame buffer. It doesn’t matter what is in the old frame buffer.
  3. 0x90: just update the black (BinaryColor::Off) pixels in the current frame buffer. It doesn’t matter what is in the old frame buffer.

Options 2 and 3 are what the datasheet calls “bypass” mode.

§

DisplayUpdateControl2 = 34

Configures the display update sequence for use with Command::MasterActivation.

§

WriteRam = 36

Writes data to the current frame buffer, auto-incrementing the address counter.

§

WriteOldRam = 38

Writes data to the old frame buffer, auto-incrementing the address counter.

§

WriteVcom = 44

Writes to the VCOM register.

§

WriteLut = 50

Writes the LUT register (30 bytes, exclude the VSH/VSL and dummy bits).

§

SetDummyLinePeriod = 58

? Part of magic config.

§

SetGateLineWidth = 59

? Part of magic config.

§

BorderWaveformControl = 60

Register to configure the behaviour of the border.

§

SetRamXStartEnd = 68

Sets the start and end positions of the X axis for the auto-incrementing address counter. Start and end are inclusive.

Note that the x position can only be written on a whole byte basis (8 bits at once). The start and end positions are therefore sent right shifted 3 bits to indicate the byte number being written. For example, to write the first 32 x positions, you would send 0 (0 >> 3 = 0), and 3 (31 >> 3 = 3). If you tried to write just the first 25 x positions, you would end up sending the same values and actually writing all 32.

§

SetRamYStartEnd = 69

Sets the start and end positions of the Y axis for the auto-incrementing address counter. Start and end are inclusive.

§

SetRamX = 78

Sets the current x coordinate of the address counter. Note that the x position can only be configured as a multiple of 8.

§

SetRamY = 79

Sets the current y coordinate of the address counter.

§

Noop = 255

Does nothing, but can be used to terminate other commands such as Command::WriteRam

Trait Implementations§

Source§

impl Clone for Command

Source§

fn clone(&self) -> Command

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Command

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Command

Source§

fn eq(&self, other: &Command) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Command

Source§

impl Eq for Command

Source§

impl StructuralPartialEq for Command

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.