Implement setting date-time
This commit is contained in:
parent
8c50aa4688
commit
11211be9b9
19
ds3231.hpp
19
ds3231.hpp
@ -113,7 +113,24 @@ class DS3231 {
|
||||
|
||||
writePartialRegister<TIME_REG_ADDR, TIME_START_OFFSET, TIME_END_OFFSET>(timeReg);
|
||||
}
|
||||
static void setDateTime(const DateTime &dateTime) {}
|
||||
static void setDateTime(const DateTime &dateTime)
|
||||
{
|
||||
detail::TimeReg timeReg;
|
||||
timeReg.setYear(dateTime.year);
|
||||
timeReg.setMonth(dateTime.month);
|
||||
timeReg.setDate(dateTime.day);
|
||||
if constexpr (SetDayOfWeek)
|
||||
timeReg.setDay(calcDayOfWeek(dateTime.year, dateTime.month, dateTime.day) + 1);
|
||||
|
||||
timeReg.setHours(dateTime.hour);
|
||||
timeReg.setMinutes(dateTime.minute);
|
||||
timeReg.setSeconds(dateTime.second);
|
||||
|
||||
constexpr auto START_OFFSET = offsetof(detail::TimeReg, seconds);
|
||||
constexpr auto END_OFFSET = offsetof(detail::TimeReg, year);
|
||||
|
||||
writePartialRegister<TIME_REG_ADDR, START_OFFSET, END_OFFSET>(timeReg);
|
||||
}
|
||||
|
||||
private:
|
||||
template <uint8_t Address, typename Register>
|
||||
|
Loading…
Reference in New Issue
Block a user