10 #include "../common/util.h" 11 #include "HardwareDateTime.h" 12 #include "HardwareTemperature.h" 17 using common::bcdToDec;
18 using common::decToBcd;
22 void DS3231::readDateTime(HardwareDateTime* dateTime)
const {
23 Wire.beginTransmission(kAddress);
25 Wire.endTransmission();
28 Wire.requestFrom(kAddress, (uint8_t) 7);
29 dateTime->second = bcdToDec(Wire.read() & 0x7F);
30 dateTime->minute = bcdToDec(Wire.read());
31 dateTime->hour = bcdToDec(Wire.read() & 0x3F);
33 dateTime->day = bcdToDec(Wire.read());
34 dateTime->month = bcdToDec(Wire.read());
35 dateTime->year = bcdToDec(Wire.read());
38 void DS3231::readTemperature(HardwareTemperature* temperature)
const {
39 Wire.beginTransmission(kAddress);
41 Wire.endTransmission();
43 Wire.requestFrom(kAddress, (uint8_t) 2);
44 temperature->msb = Wire.read();
45 temperature->lsb = Wire.read();
48 void DS3231::setDateTime(
const HardwareDateTime& dateTime)
const {
49 Wire.beginTransmission(kAddress);
51 Wire.write(decToBcd(dateTime.second));
52 Wire.write(decToBcd(dateTime.minute));
53 Wire.write(decToBcd(dateTime.hour));
54 Wire.write(decToBcd(dateTime.dayOfWeek));
55 Wire.write(decToBcd(dateTime.day));
56 Wire.write(decToBcd(dateTime.month));
57 Wire.write(decToBcd(dateTime.year));
58 Wire.endTransmission();