From f09403d09245c3092dcbcfe13cd45c2cd6a862bd Mon Sep 17 00:00:00 2001 From: Vadim Kaushan Date: Tue, 28 Jan 2020 19:45:23 +0300 Subject: [PATCH] Add Interface trait --- src/lib.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 03d35ed..a86bce1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,6 +13,24 @@ use hal::spi::{Mode, Phase, Polarity}; use core::fmt::Debug; use core::iter::IntoIterator; +/// Trait representing the interface to the hardware. +/// +/// Intended to abstract the various buses (SPI, MPU 8/9/16-bit) from the Controller code. +pub trait Interface { + type Error; + + /// Sends a command with a sequence of 8-bit arguments + /// + /// Mostly used for sending configuration commands + fn write(&mut self, command: u8, data: &[u8]) -> Result<(), Self::Error>; + + /// Sends a command with a sequence of 16-bit data words + /// + /// Mostly used for sending MemoryWrite command and other commands + /// with 16-bit arguments + fn write_iter(&mut self, command: u8, data: impl IntoIterator) -> Result<(), Self::Error>; +} + /// SPI mode pub const MODE: Mode = Mode { polarity: Polarity::IdleLow,