5 #include "../common/util.h" 6 #include "HardwareDateTime.h" 7 #include "HardwareTemperature.h" 12 using common::bcdToDec;
13 using common::decToBcd;
17 void DS3231::readDateTime(HardwareDateTime* dateTime)
const {
18 Wire.beginTransmission(kAddress);
20 Wire.endTransmission();
23 Wire.requestFrom(kAddress, (uint8_t) 7);
24 dateTime->second = bcdToDec(Wire.read() & 0x7F);
25 dateTime->minute = bcdToDec(Wire.read());
26 dateTime->hour = bcdToDec(Wire.read() & 0x3F);
28 dateTime->day = bcdToDec(Wire.read());
29 dateTime->month = bcdToDec(Wire.read());
30 dateTime->year = bcdToDec(Wire.read());
33 void DS3231::readTemperature(HardwareTemperature* temperature)
const {
34 Wire.beginTransmission(kAddress);
36 Wire.endTransmission();
38 Wire.requestFrom(kAddress, (uint8_t) 2);
39 temperature->msb = Wire.read();
40 temperature->lsb = Wire.read();
43 void DS3231::setDateTime(
const HardwareDateTime& dateTime)
const {
44 Wire.beginTransmission(kAddress);
46 Wire.write(decToBcd(dateTime.second));
47 Wire.write(decToBcd(dateTime.minute));
48 Wire.write(decToBcd(dateTime.hour));
49 Wire.write(decToBcd(dateTime.dayOfWeek));
50 Wire.write(decToBcd(dateTime.day));
51 Wire.write(decToBcd(dateTime.month));
52 Wire.write(decToBcd(dateTime.year));
53 Wire.endTransmission();