use display_interface::{DisplayError, WriteOnlyDataCommand};
use embedded_hal::delay::DelayNs;
use crate::{display::DisplayDefinition, rotation::DisplayRotation, Gc9a01};
use super::DisplayConfiguration;
#[derive(Debug, Clone)]
pub struct BasicMode;
impl BasicMode {
#[allow(clippy::missing_const_for_fn)]
pub(crate) fn new() -> Self {
Self {}
}
}
impl<I, D> Gc9a01<I, D, BasicMode>
where
I: WriteOnlyDataCommand,
D: DisplayDefinition,
{
pub fn clear(&mut self) -> Result<(), DisplayError> {
self.set_draw_area((0, 0), self.dimensions())?;
self.clear_fit()
}
}
impl<I, D, DELAY> DisplayConfiguration<DELAY> for Gc9a01<I, D, BasicMode>
where
I: WriteOnlyDataCommand,
D: DisplayDefinition,
DELAY: DelayNs,
{
type Error = DisplayError;
fn set_rotation(&mut self, rot: DisplayRotation) -> Result<(), DisplayError> {
self.set_display_rotation(rot)
}
fn init(&mut self, delay: &mut DELAY) -> Result<(), DisplayError> {
self.init_with_addr_mode(delay)
}
}