pub trait LcdBus {
type Error;
// Required methods
fn set_pin(&mut self, pin: PinId, value: bool) -> Result<(), Self::Error>;
fn write_command(&mut self, cmd: u8) -> Result<(), Self::Error>;
fn write_data(&mut self, data: &[u8]) -> Result<(), Self::Error>;
fn read_data(&mut self, len: usize) -> Result<Vec<u8>, Self::Error>;
}