mirror of
https://github.com/Djeeberjr/fw-anwesenheit.git
synced 2026-04-30 10:39:09 +00:00
removed unused code
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use chrono::{TimeZone, Utc};
|
use chrono::{TimeZone, Utc};
|
||||||
use ds3231::{
|
use ds3231::{
|
||||||
Config, DS3231, DS3231Error, InterruptControl, Oscillator, SquareWaveFrequency,
|
Config, DS3231, InterruptControl, Oscillator, SquareWaveFrequency,
|
||||||
TimeRepresentation,
|
TimeRepresentation,
|
||||||
};
|
};
|
||||||
use esp_hal::{
|
use esp_hal::{
|
||||||
@@ -15,10 +15,6 @@ include!(concat!(env!("OUT_DIR"), "/build_time.rs"));
|
|||||||
|
|
||||||
const RTC_ADDRESS: u8 = 0x68;
|
const RTC_ADDRESS: u8 = 0x68;
|
||||||
|
|
||||||
const SECS_PER_DAY: u64 = 86_400;
|
|
||||||
const UNIX_OFFSET_DAYS: u64 = 719_163; // Days from 0000-03-01 to 1970-01-01
|
|
||||||
const UTC_PLUS_ONE: u64 = 3600;
|
|
||||||
|
|
||||||
pub struct RTCClock {
|
pub struct RTCClock {
|
||||||
dev: DS3231<I2c<'static, Async>>,
|
dev: DS3231<I2c<'static, Async>>,
|
||||||
}
|
}
|
||||||
@@ -35,8 +31,7 @@ impl RTCClock {
|
|||||||
pub async fn get_time(&mut self) -> u64 {
|
pub async fn get_time(&mut self) -> u64 {
|
||||||
match self.dev.datetime().await {
|
match self.dev.datetime().await {
|
||||||
Ok(datetime) => {
|
Ok(datetime) => {
|
||||||
let utc_time = datetime.and_utc().timestamp() as u64;
|
datetime.and_utc().timestamp() as u64
|
||||||
utc_time
|
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
FEEDBACK_STATE.signal(feedback::FeedbackState::Error);
|
FEEDBACK_STATE.signal(feedback::FeedbackState::Error);
|
||||||
@@ -47,33 +42,6 @@ impl RTCClock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn unix_to_ymd_string(timestamp: u64) -> (u16, u8, u8) {
|
|
||||||
// Apply UTC+1 offset
|
|
||||||
let ts = timestamp + UTC_PLUS_ONE;
|
|
||||||
|
|
||||||
// Convert to total days since UNIX epoch
|
|
||||||
let days_since_epoch = ts / SECS_PER_DAY;
|
|
||||||
|
|
||||||
// Convert to proleptic Gregorian date
|
|
||||||
civil_from_days(days_since_epoch as i64 + UNIX_OFFSET_DAYS as i64)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function returns (year, month, day).
|
|
||||||
// Based on the algorithm by Howard Hinnant.
|
|
||||||
fn civil_from_days(z: i64) -> (u16, u8, u8) {
|
|
||||||
let mut z = z;
|
|
||||||
z -= 60; // shift epoch for algorithm
|
|
||||||
let era = (z >= 0).then_some(z).unwrap_or(z - 146096) / 146097;
|
|
||||||
let doe = z - era * 146097; // [0, 146096]
|
|
||||||
let yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365; // [0, 399]
|
|
||||||
let y = yoe + era * 400;
|
|
||||||
let doy = doe - (365 * yoe + yoe / 4 - yoe / 100); // [0, 365]
|
|
||||||
let mp = (5 * doy + 2) / 153; // [0, 11]
|
|
||||||
let d = doy - (153 * mp + 2) / 5 + 1; // [1, 31]
|
|
||||||
let m = mp + (if mp < 10 { 3 } else { -9 }); // [1, 12]
|
|
||||||
((y + (m <= 2) as i64) as u16, m as u8, d as u8)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn rtc_config(i2c: I2c<'static, Async>) -> DS3231<I2c<'static, Async>> {
|
pub async fn rtc_config(i2c: I2c<'static, Async>) -> DS3231<I2c<'static, Async>> {
|
||||||
let mut rtc: DS3231<I2c<'static, Async>> = DS3231::new(i2c, RTC_ADDRESS);
|
let mut rtc: DS3231<I2c<'static, Async>> = DS3231::new(i2c, RTC_ADDRESS);
|
||||||
let naive_dt = Utc
|
let naive_dt = Utc
|
||||||
@@ -119,10 +87,3 @@ pub async fn rtc_config(i2c: I2c<'static, Async>) -> DS3231<I2c<'static, Async>>
|
|||||||
|
|
||||||
rtc
|
rtc
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn read_rtc_time<'a>(
|
|
||||||
rtc: &'a mut DS3231<I2c<'static, Async>>,
|
|
||||||
) -> Result<u64, DS3231Error<esp_hal::i2c::master::Error>> {
|
|
||||||
let timestamp_result = rtc.datetime().await?;
|
|
||||||
Ok(timestamp_result.and_utc().timestamp() as u64)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user