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