mini_oled/interface/
spi.rs

1use embedded_hal::spi::SpiBus;
2
3use crate::{command::CommandBuffer, error::MiniOledError};
4
5use super::CommunicationInterface;
6
7/// SPI communication interface.
8///
9/// This struct implements the `CommunicationInterface` trait for SPI.
10///
11/// # Example
12///
13/// ```rust,ignore
14/// use mini_oled::interface::spi::SpiInterface;
15///
16/// // Verify that your SPI driver implements embedded_hal::spi::SpiBus
17/// // let spi_driver = ...;
18/// let interface = SpiInterface::new(spi_driver);
19/// ```
20pub struct SpiInterface<SB: SpiBus> {
21    _spi_bus: SB,
22}
23
24impl<SB: SpiBus> SpiInterface<SB> {
25    /// Creates a new SPI interface.
26    ///
27    /// # Arguments
28    ///
29    /// * `_spi_bus` - The SPI bus.
30    #[allow(unused)]
31    pub fn new(_spi_bus: SB) -> Self {
32        Self { _spi_bus }
33    }
34}
35
36impl<SB: SpiBus> CommunicationInterface for SpiInterface<SB> {
37    fn init(&mut self) -> Result<(), MiniOledError> {
38        Ok(())
39    }
40
41    fn write_data(&mut self, _buf: &[u8]) -> Result<(), MiniOledError> {
42        todo!()
43    }
44
45    fn write_command<const N: usize>(
46        &mut self,
47        _buf: &CommandBuffer<N>,
48    ) -> Result<(), MiniOledError> {
49        todo!()
50    }
51}