use core::convert::Infallible;
use regiface::{register, FromByteArray, ReadableRegister, ToByteArray, WritableRegister};
#[register(0x0902u16)]
#[derive(Debug, Clone, Copy, ReadableRegister, WritableRegister, Default)]
pub struct RtcControl {
pub enabled: bool,
}
#[register(0x0911u16)]
#[derive(Debug, Clone, Copy, ReadableRegister, WritableRegister)]
pub struct XtaTrim {
pub value: u8,
}
impl Default for XtaTrim {
fn default() -> Self {
Self { value: 0x05 }
}
}
#[register(0x0912u16)]
#[derive(Debug, Clone, Copy, ReadableRegister, WritableRegister)]
pub struct XtbTrim {
pub value: u8,
}
impl Default for XtbTrim {
fn default() -> Self {
Self { value: 0x05 }
}
}
#[register(0x0944u16)]
#[derive(Debug, Clone, Copy, ReadableRegister, WritableRegister, Default)]
pub struct EventMask {
pub mask: u8,
}
impl FromByteArray for RtcControl {
type Error = Infallible;
type Array = [u8; 1];
fn from_bytes(bytes: Self::Array) -> Result<Self, Self::Error> {
Ok(Self {
enabled: bytes[0] & 0x01 != 0,
})
}
}
impl ToByteArray for RtcControl {
type Error = Infallible;
type Array = [u8; 1];
fn to_bytes(self) -> Result<Self::Array, Self::Error> {
Ok([self.enabled as u8])
}
}
impl FromByteArray for XtaTrim {
type Error = Infallible;
type Array = [u8; 1];
fn from_bytes(bytes: Self::Array) -> Result<Self, Self::Error> {
Ok(Self {
value: bytes[0] & 0x2F,
})
}
}
impl ToByteArray for XtaTrim {
type Error = Infallible;
type Array = [u8; 1];
fn to_bytes(self) -> Result<Self::Array, Self::Error> {
Ok([self.value & 0x2F])
}
}
impl FromByteArray for XtbTrim {
type Error = Infallible;
type Array = [u8; 1];
fn from_bytes(bytes: Self::Array) -> Result<Self, Self::Error> {
Ok(Self {
value: bytes[0] & 0x2F,
})
}
}
impl ToByteArray for XtbTrim {
type Error = Infallible;
type Array = [u8; 1];
fn to_bytes(self) -> Result<Self::Array, Self::Error> {
Ok([self.value & 0x2F])
}
}
impl FromByteArray for EventMask {
type Error = Infallible;
type Array = [u8; 1];
fn from_bytes(bytes: Self::Array) -> Result<Self, Self::Error> {
Ok(Self { mask: bytes[0] })
}
}
impl ToByteArray for EventMask {
type Error = Infallible;
type Array = [u8; 1];
fn to_bytes(self) -> Result<Self::Array, Self::Error> {
Ok([self.mask])
}
}