use crate::types::*;
use crate::error::AS56Error;
pub trait AS5600Interface {
type Error;
fn read_raw_angle(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn read_angle(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn get_magnet_status(&mut self) -> Result<MagnetStatus, AS56Error<Self::Error>>;
fn get_status_raw(&mut self) -> Result<u8, AS56Error<Self::Error>>;
fn get_magnitude(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn get_agc(&mut self) -> Result<u8, AS56Error<Self::Error>>;
fn get_burn_count(&mut self) -> Result<u8, AS56Error<Self::Error>>;
fn get_config(&mut self) -> Result<Configuration, AS56Error<Self::Error>>;
fn set_config(&mut self, config: Configuration) -> Result<(), AS56Error<Self::Error>>;
fn get_zero_position(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn set_zero_position(&mut self, angle: u16) -> Result<(), AS56Error<Self::Error>>;
fn get_max_position(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn set_max_position(&mut self, angle: u16) -> Result<(), AS56Error<Self::Error>>;
fn get_max_angle(&mut self) -> Result<u16, AS56Error<Self::Error>>;
fn set_max_angle(&mut self, angle: u16) -> Result<(), AS56Error<Self::Error>>;
}