Fix implementation to follow tm_year correctly.

This commit is contained in:
H. Utku Maden 2021-07-31 20:08:31 +03:00
parent 0d1a8e4252
commit a7ebcab6a4

View File

@ -250,7 +250,7 @@ DS3231_API int ds3231_getTime(ds3231_t driver, struct tm *time)
time->tm_wday = rtime[3]; time->tm_wday = rtime[3];
time->tm_mday = BCD_TO_DEC(rtime[4]); time->tm_mday = BCD_TO_DEC(rtime[4]);
time->tm_mon = BCD_TO_DEC((rtime[5] & 0x1F)) - 1; time->tm_mon = BCD_TO_DEC((rtime[5] & 0x1F)) - 1;
time->tm_year = 2000 + BCD_TO_DEC(rtime[6]) + ((rtime[5] & (1 << 7)) ? 100 : 0); time->tm_year = 100 + BCD_TO_DEC(rtime[6]) + ((rtime[5] & (1 << 7)) ? 100 : 0);
ds3231_fill_yday(time); ds3231_fill_yday(time);
return 0; return 0;
@ -272,7 +272,7 @@ DS3231_API int ds3231_setTime(ds3231_t driver, const struct tm *time)
rtime[2] = DEC_TO_BCD(time->tm_hour); rtime[2] = DEC_TO_BCD(time->tm_hour);
rtime[3] = time->tm_wday; rtime[3] = time->tm_wday;
rtime[4] = DEC_TO_BCD(time->tm_mday); rtime[4] = DEC_TO_BCD(time->tm_mday);
rtime[5] = DEC_TO_BCD(time->tm_mon + 1) + ((time->tm_year >= 2100) ? (1 << 7) : 0); rtime[5] = DEC_TO_BCD(time->tm_mon + 1) + ((time->tm_year >= 200) ? (1 << 7) : 0);
rtime[6] = DEC_TO_BCD(time->tm_year % 100); rtime[6] = DEC_TO_BCD(time->tm_year % 100);
if (ds3231_io_write(driver->port, DS3231_REGISTER_SECONDS, rtime, sizeof rtime)) if (ds3231_io_write(driver->port, DS3231_REGISTER_SECONDS, rtime, sizeof rtime))
{ {