#![deny(unsafe_code, missing_docs)]
#![no_std]
pub use chrono::{DateTime, Datelike, NaiveDate, NaiveDateTime, NaiveTime, Timelike};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum Hours {
AM(u8),
PM(u8),
H24(u8),
}
pub trait DateTimeAccess {
type Error;
fn datetime(&mut self) -> Result<NaiveDateTime, Self::Error>;
fn set_datetime(&mut self, datetime: &NaiveDateTime) -> Result<(), Self::Error>;
}
pub trait Rtcc: DateTimeAccess {
fn seconds(&mut self) -> Result<u8, Self::Error>;
fn minutes(&mut self) -> Result<u8, Self::Error>;
fn hours(&mut self) -> Result<Hours, Self::Error>;
fn time(&mut self) -> Result<NaiveTime, Self::Error>;
fn weekday(&mut self) -> Result<u8, Self::Error>;
fn day(&mut self) -> Result<u8, Self::Error>;
fn month(&mut self) -> Result<u8, Self::Error>;
fn year(&mut self) -> Result<u16, Self::Error>;
fn date(&mut self) -> Result<NaiveDate, Self::Error>;
fn set_seconds(&mut self, seconds: u8) -> Result<(), Self::Error>;
fn set_minutes(&mut self, minutes: u8) -> Result<(), Self::Error>;
fn set_hours(&mut self, hours: Hours) -> Result<(), Self::Error>;
fn set_time(&mut self, time: &NaiveTime) -> Result<(), Self::Error>;
fn set_weekday(&mut self, weekday: u8) -> Result<(), Self::Error>;
fn set_day(&mut self, day: u8) -> Result<(), Self::Error>;
fn set_month(&mut self, month: u8) -> Result<(), Self::Error>;
fn set_year(&mut self, year: u16) -> Result<(), Self::Error>;
fn set_date(&mut self, date: &NaiveDate) -> Result<(), Self::Error>;
}