-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrtc-manager.cpp
More file actions
68 lines (55 loc) · 1.78 KB
/
rtc-manager.cpp
File metadata and controls
68 lines (55 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Platform libraries.
#include <Arduino.h> // To add IntelliSense for platform constants.
#include <Wire.h> // I2C library required by the RTC module.
// Third-party libraries.
#include "RTClib.h" // RTC library by Adafruit
#include "rtc-manager.h"
RTCManager::RTCManager() : _initialized(false) {}
void RTCManager::init(int pinSDA, int pinSCL) {
Wire.begin(pinSDA, pinSCL);
if (!_rtc.begin()) {
Serial.println(F("RTCManager::init: Couldn't find RTC"));
while (1);
}
_initialized = true;
Serial.println(F("RTCManager::init: DONE."));
}
DateTime RTCManager::getCurrentTime() {
if (!_initialized) {
Serial.println(F("RTCManager::getCurrentTime: RTC not initialized, returning default time!"));
return DateTime("2000-01-01T00:00:00");
}
return _rtc.now();
}
void RTCManager::setCurrentTime(const DateTime &newDateTime) {
if (!_initialized) {
Serial.println(F("RTCManager::setCurrentTime: RTC not initialized, cannot set time!"));
return;
}
_rtc.adjust(newDateTime);
}
float RTCManager::getTemperature() {
if (!_initialized) {
Serial.println(F("RTCManager::getTemperature: RTC not initialized, returning 0.0!"));
return 0.0f;
}
return _rtc.getTemperature();
}
bool RTCManager::isAdjustmentNeeded() {
if (!_initialized) {
Serial.println(F("RTCManager::isAdjustmentNeeded: RTC not initialized, returning false!"));
return false;
}
return _rtc.lostPower();
}
void RTCManager::printDateTime(const DateTime &dt) {
char formattedDateTime[32];
snprintf(formattedDateTime, sizeof(formattedDateTime), "RTC: %04d.%02d.%02d. %02d:%02d:%02d",
dt.year(),
dt.month(),
dt.day(),
dt.hour(),
dt.minute(),
dt.second());
Serial.println(formattedDateTime);
}