hd44780_controller/command/
write_char.rs

1use 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}