@@ -39,16 +39,20 @@ extern "C" {
39
39
#define TEMP_11_BIT 0x5F // 11 bit
40
40
#define TEMP_12_BIT 0x7F // 12 bit
41
41
42
- DallasTemperature::DallasTemperature () {
43
- }
44
- DallasTemperature::DallasTemperature (OneWire* _oneWire)
42
+ #define NO_ALARM_HANDLER ((AlarmHandler *)0 )
45
43
44
+ DallasTemperature::DallasTemperature ()
45
+ {
46
46
#if REQUIRESALARMS
47
- :
48
- _AlarmHandler (&defaultAlarmHandler)
47
+ setAlarmHandler (NO_ALARM_HANDLER);
49
48
#endif
49
+ }
50
+ DallasTemperature::DallasTemperature (OneWire* _oneWire)
50
51
{
51
52
setOneWire (_oneWire);
53
+ #if REQUIRESALARMS
54
+ setAlarmHandler (NO_ALARM_HANDLER);
55
+ #endif
52
56
}
53
57
54
58
bool DallasTemperature::validFamily (const uint8_t * deviceAddress) {
@@ -822,21 +826,24 @@ bool DallasTemperature::hasAlarm(void) {
822
826
DeviceAddress deviceAddress;
823
827
resetAlarmSearch ();
824
828
return alarmSearch (deviceAddress);
825
-
826
829
}
827
830
828
831
// runs the alarm handler for all devices returned by alarmSearch()
832
+ // unless there no _AlarmHandler exist.
829
833
void DallasTemperature::processAlarms (void ) {
830
834
835
+ if (!hasAlarmHandler ())
836
+ {
837
+ return ;
838
+ }
839
+
831
840
resetAlarmSearch ();
832
841
DeviceAddress alarmAddr;
833
842
834
843
while (alarmSearch (alarmAddr)) {
835
-
836
844
if (validAddress (alarmAddr)) {
837
845
_AlarmHandler (alarmAddr);
838
846
}
839
-
840
847
}
841
848
}
842
849
@@ -845,8 +852,10 @@ void DallasTemperature::setAlarmHandler(const AlarmHandler *handler) {
845
852
_AlarmHandler = handler;
846
853
}
847
854
848
- // The default alarm handler
849
- void DallasTemperature::defaultAlarmHandler (const uint8_t * deviceAddress) {
855
+ // checks if AlarmHandler has been set.
856
+ bool DallasTemperature::hasAlarmHandler ()
857
+ {
858
+ return _AlarmHandler != NO_ALARM_HANDLER;
850
859
}
851
860
852
861
#endif
0 commit comments