hd44780_controller/command/
write_char.rs1use crate::device::*;
2
3use super::*;
4
5#[derive(Clone, Debug, Eq, PartialEq)]
6pub struct WriteChar(pub u8);
7
8impl SyncCommand for WriteChar {
9 type Ret = ();
10
11 type Err = super::Error;
12
13 fn execute<D: SyncDevice + ?Sized>(&self, dev: &mut D) -> Result<Self::Ret, Self::Err> {
14 dev.write_byte(RegisterSelectMode::Data, self.0)
15 .map_err(|_| super::Error::DeviceError)?;
16 dev.delay_us(50);
17
18 Ok(())
19 }
20}
21
22#[cfg(feature = "async")]
23#[cfg_attr(docsrs, doc(cfg(feature = "async")))]
24impl AsyncCommand for WriteChar {
25 type Ret = ();
26
27 type Err = super::Error;
28
29 async fn execute_async<D: AsyncDevice + ?Sized>(
30 &self,
31 dev: &mut D,
32 ) -> Result<Self::Ret, Self::Err> {
33 dev.write_byte_async(RegisterSelectMode::Data, self.0)
34 .await
35 .map_err(|_| super::Error::DeviceError)?;
36 dev.delay_us_async(50).await;
37
38 Ok(())
39 }
40}