Struct ParallelInterface

Source
pub struct ParallelInterface<BUS, DC, WR> { /* private fields */ }
Expand description

Parallel communication interface

This interface implements a “8080” style write-only display interface using any OutputBus implementation as well as one OutputPin for the data/command selection and one OutputPin for the write-enable flag.

All pins in the data bus are supposed to be high-active. High for the D/C pin meaning “data” and the write-enable being pulled low before the setting of the bits and supposed to be sampled at a low to high edge.

Implementations§

Source§

impl<BUS, DC, WR> ParallelInterface<BUS, DC, WR>
where BUS: OutputBus, BUS::Word: From<u8> + Eq + BitXor<Output = BUS::Word>, DC: OutputPin, WR: OutputPin,

Source

pub fn new(bus: BUS, dc: DC, wr: WR) -> Self

Create new parallel GPIO interface for communication with a display driver

Source

pub fn release(self) -> (BUS, DC, WR)

Consume the display interface and return the bus and GPIO pins used by it

Trait Implementations§

Source§

impl<BUS, DC, WR> Interface for ParallelInterface<BUS, DC, WR>
where BUS: OutputBus, BUS::Word: From<u8> + Eq + BitXor<Output = BUS::Word>, DC: OutputPin, WR: OutputPin,

Source§

const KIND: InterfaceKind = BUS::KIND

Kind
Source§

type Word = <BUS as OutputBus>::Word

The native width of the interface Read more
Source§

type Error = ParallelError<<BUS as OutputBus>::Error, <DC as ErrorType>::Error, <WR as ErrorType>::Error>

Error type
Source§

async fn send_command( &mut self, command: u8, args: &[u8], ) -> Result<(), Self::Error>

Send a command with optional parameters
Source§

async fn send_data_slice( &mut self, data: &[Self::Word], ) -> Result<(), Self::Error>

Send a raw slice of data, typically pre-formatted pixel data. WriteMemoryStart (or equivalent) must be sent before calling this function. The data is assumed to be in the correct format for the display and interface. If Self::Word is u8, data is &u8. If Self::Word is u16, data is &u16.

Auto Trait Implementations§

§

impl<BUS, DC, WR> Freeze for ParallelInterface<BUS, DC, WR>
where BUS: Freeze, DC: Freeze, WR: Freeze,

§

impl<BUS, DC, WR> RefUnwindSafe for ParallelInterface<BUS, DC, WR>

§

impl<BUS, DC, WR> Send for ParallelInterface<BUS, DC, WR>
where BUS: Send, DC: Send, WR: Send,

§

impl<BUS, DC, WR> Sync for ParallelInterface<BUS, DC, WR>
where BUS: Sync, DC: Sync, WR: Sync,

§

impl<BUS, DC, WR> Unpin for ParallelInterface<BUS, DC, WR>
where BUS: Unpin, DC: Unpin, WR: Unpin,

§

impl<BUS, DC, WR> UnwindSafe for ParallelInterface<BUS, DC, WR>
where BUS: UnwindSafe, DC: UnwindSafe, WR: UnwindSafe,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InterfaceExt for T
where T: Interface,

Source§

fn write_command( &mut self, command: impl DcsCommand, ) -> impl Future<Output = Result<(), Self::Error>>

Sends a DCS command to the display interface.
Source§

fn write_raw( &mut self, instruction: u8, param_bytes: &[u8], ) -> impl Future<Output = Result<(), Self::Error>>

Sends a raw command with the given instruction to the display interface. Read more
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.