Fix bool issue with clearAlarm and cleaning.
Removed redundancies from setAlarm function and move the code directly into the alarm function to remove redundant code usage.
This commit is contained in:
parent
aad59657c1
commit
3ecccb18ef
@ -269,7 +269,7 @@ void PCF8563::setAlarm(byte min, byte hour, byte day, byte weekday)
|
|||||||
min = decToBcd(min);
|
min = decToBcd(min);
|
||||||
min &= ~RTCC_ALARM;
|
min &= ~RTCC_ALARM;
|
||||||
} else {
|
} else {
|
||||||
min = 0x0; min |= RTCC_ALARM;
|
min = RTCC_ALARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hour <99) {
|
if (hour <99) {
|
||||||
@ -277,14 +277,14 @@ void PCF8563::setAlarm(byte min, byte hour, byte day, byte weekday)
|
|||||||
hour = decToBcd(hour);
|
hour = decToBcd(hour);
|
||||||
hour &= ~RTCC_ALARM;
|
hour &= ~RTCC_ALARM;
|
||||||
} else {
|
} else {
|
||||||
hour = 0x0; hour |= RTCC_ALARM;
|
hour = RTCC_ALARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (day <99) {
|
if (day <99) {
|
||||||
day = constrain(day, 1, 31);
|
day = constrain(day, 1, 31);
|
||||||
day = decToBcd(day); day &= ~RTCC_ALARM;
|
day = decToBcd(day); day &= ~RTCC_ALARM;
|
||||||
} else {
|
} else {
|
||||||
day = 0x0; day |= RTCC_ALARM;
|
day = RTCC_ALARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (weekday <99) {
|
if (weekday <99) {
|
||||||
@ -292,7 +292,7 @@ void PCF8563::setAlarm(byte min, byte hour, byte day, byte weekday)
|
|||||||
weekday = decToBcd(weekday);
|
weekday = decToBcd(weekday);
|
||||||
weekday &= ~RTCC_ALARM;
|
weekday &= ~RTCC_ALARM;
|
||||||
} else {
|
} else {
|
||||||
weekday = 0x0; weekday |= RTCC_ALARM;
|
weekday = RTCC_ALARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
_alarm_hour = hour;
|
_alarm_hour = hour;
|
||||||
@ -652,30 +652,28 @@ void PCF8563::setAlarm(ALARM_TYPES_t alarmType, byte minutes, byte hours, byte d
|
|||||||
void PCF8563::alarmInterrupt(byte alarmNumber, bool alarmEnabled) { if (alarmEnabled) enableAlarm(); else resetAlarm(); }
|
void PCF8563::alarmInterrupt(byte alarmNumber, bool alarmEnabled) { if (alarmEnabled) enableAlarm(); else resetAlarm(); }
|
||||||
bool PCF8563::alarm(byte alarmNumber)
|
bool PCF8563::alarm(byte alarmNumber)
|
||||||
{
|
{
|
||||||
tmElements_t tm;
|
|
||||||
time_t t;
|
|
||||||
|
|
||||||
if (alarmNumber == ALARM_2)
|
if (alarmNumber == ALARM_2)
|
||||||
{
|
{
|
||||||
clearAlarm();
|
clearAlarm();
|
||||||
getDateTime();
|
_alarm_hour = RTCC_ALARM;
|
||||||
tm.Year = _year;
|
_alarm_minute = (_minute > 58 ? 0 : _minute + 1);
|
||||||
tm.Month = _month;
|
_alarm_weekday = RTCC_ALARM;
|
||||||
tm.Day = _day;
|
_alarm_day = RTCC_ALARM;
|
||||||
tm.Wday = _weekday;
|
|
||||||
tm.Hour = _hour;
|
// First set alarm values, then enable
|
||||||
tm.Minute = _minute;
|
Wire.beginTransmission(Rtcc_Addr); // Issue I2C start signal
|
||||||
tm.Second = _sec;
|
Wire.write((byte)RTCC_ALRM_MIN_ADDR);
|
||||||
tm.Year += TIME_H_DIFF; // Add the extra 30 years on when using this function.
|
Wire.write((byte)_alarm_minute);
|
||||||
t = makeTime(tm) + (60 - _sec);
|
Wire.write((byte)_alarm_hour);
|
||||||
breakTime(t, tm);
|
Wire.write((byte)_alarm_day);
|
||||||
setAlarm(tm.Minute, tm.Hour, tm.Day, tm.Wday);
|
Wire.write((byte)_alarm_weekday);
|
||||||
|
Wire.endTransmission();
|
||||||
enableAlarm();
|
enableAlarm();
|
||||||
}
|
}
|
||||||
return (_status2 & RTCC_ALARM_AF);
|
return (_status2 & RTCC_ALARM_AF);
|
||||||
}
|
}
|
||||||
bool PCF8563::checkAlarm(byte alarmNumber) { return alarm(alarmNumber); }
|
bool PCF8563::checkAlarm(byte alarmNumber) { return alarm(alarmNumber); }
|
||||||
bool PCF8563::clearAlarm(byte alarmNumber) { clearAlarm(); }
|
bool PCF8563::clearAlarm(byte alarmNumber) { clearAlarm(); return true; }
|
||||||
void PCF8563::squareWave(SQWAVE_FREQS_t freq) { setSquareWave((byte)freq); }
|
void PCF8563::squareWave(SQWAVE_FREQS_t freq) { setSquareWave((byte)freq); }
|
||||||
bool PCF8563::oscStopped(bool clearOSF) { return false; } // Not sure this works.
|
bool PCF8563::oscStopped(bool clearOSF) { return false; } // Not sure this works.
|
||||||
int16_t PCF8563::temperature() { return 32767; } // 0x7FFF returns to prove it is the PCF8563 not the DS3232.
|
int16_t PCF8563::temperature() { return 32767; } // 0x7FFF returns to prove it is the PCF8563 not the DS3232.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user