Skip to content

Commit b1bbcb7

Browse files
committed
2 parents 60f55c7 + 0cf91f6 commit b1bbcb7

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

DallasTemperature.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ bool DallasTemperature::isConnected(const uint8_t* deviceAddress) {
152152
bool DallasTemperature::isConnected(const uint8_t* deviceAddress,
153153
uint8_t* scratchPad) {
154154
bool b = readScratchPad(deviceAddress, scratchPad);
155-
return b && (_wire->crc8(scratchPad, 8) == scratchPad[SCRATCHPAD_CRC]);
155+
return b && !isAllZeros(scratchPad) && (_wire->crc8(scratchPad, 8) == scratchPad[SCRATCHPAD_CRC]);
156156
}
157157

158158
bool DallasTemperature::readScratchPad(const uint8_t* deviceAddress,
@@ -614,6 +614,17 @@ float DallasTemperature::rawToFahrenheit(int16_t raw) {
614614

615615
}
616616

617+
// Returns true if all bytes of scratchPad are '\0'
618+
bool DallasTemperature::isAllZeros(const uint8_t * const scratchPad, const size_t length) {
619+
for (size_t i = 0; i < length; i++) {
620+
if (scratchPad[i] != 0) {
621+
return false;
622+
}
623+
}
624+
625+
return true;
626+
}
627+
617628
#if REQUIRESALARMS
618629

619630
/*

DallasTemperature.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ class DallasTemperature {
239239

240240
void blockTillConversionComplete(uint8_t);
241241

242+
// Returns true if all bytes of scratchPad are '\0'
243+
bool isAllZeros(const uint8_t* const scratchPad, const size_t length = 9);
244+
242245
#if REQUIRESALARMS
243246

244247
// required for alarmSearch

0 commit comments

Comments
 (0)