Skip to main content

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 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Command

Source§

impl Debug for Command

Source§

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

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

impl Eq for Command

Source§

impl PartialEq for Command

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
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.