Simplify init() a bit more

pull/120/head
Andre LaFleur 2021-12-18 11:00:45 -07:00
parent bac7b4eb51
commit b7800f0b21
2 changed files with 18 additions and 16 deletions

View File

@ -3,26 +3,26 @@
WatchyRTC::WatchyRTC()
: rtc_ds(false) {}
void WatchyRTC::init(){
bool WatchyRTC::_canConnectTo(int addr) {
byte error;
Wire.beginTransmission(RTC_DS_ADDR);
error = Wire.endTransmission();
if (error == 0) {
Wire.beginTransmission(addr);
error = Wire.endTransmission(addr);
return error == 0;
}
void WatchyRTC::init(){
if (_canConnectTo(RTC_DS_ADDR)) {
rtcType = DS3232_RTC_TYPE;
_rtc = DS3232();
return;
}
Wire.beginTransmission(RTC_PCF_ADDR);
error = Wire.endTransmission();
if (error == 0) {
if (_canConnectTo(RTC_PCF_ADDR)) {
rtcType = PCF8563_RTC_TYPE;
_rtc = PCF8563();
return;
}
rtcType = NO_RTC_TYPE;
_rtc = AbstractRTC();
}
void WatchyRTC::config(String datetime){
@ -105,7 +105,6 @@ void WatchyRTC::_DSConfig(String datetime){
void WatchyRTC::_PCFConfig(String datetime){
if(datetime != ""){
tmElements_t tm;
int Year = _getValue(datetime, ':', 0).toInt();
int Month = _getValue(datetime, ':', 1).toInt();
int Day = _getValue(datetime, ':', 2).toInt();

View File

@ -24,11 +24,11 @@
class AbstractRTC {
public:
virtual void config(String datetime);
virtual void clearAlarm();
virtual void read(tmElements_t &tm);
virtual void set(tmElements_t tm);
virtual uint8_t temperature();
virtual void config(String datetime) {}
virtual void clearAlarm() {}
virtual void read(tmElements_t &tm) {}
virtual void set(tmElements_t tm) {}
virtual uint8_t temperature() { return NO_TEMPERATURE_ERR; }
};
class WatchyRTC {
@ -45,8 +45,11 @@ class WatchyRTC {
void set(tmElements_t tm);
uint8_t temperature();
private:
void _DSConfig(String datetime);
void _PCFConfig(String datetime);
int _getDayOfWeek(int d, int m, int y);
String _getValue(String data, char separator, int index);
bool _canConnectTo(int addr);
AbstractRTC _rtc;
};