Skip to content

Commit 4a95723

Browse files
committed
cleanup the getDisatnceValue method logic - to match vendors example. Reduce the *has distance* check to one i2c bus xaction, not two
1 parent 461a7ea commit 4a95723

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/sfTk/sfDevXM125Presence.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ sfTkError_t sfDevXM125Presence::getPresenceDistanceValuemm(uint32_t &presenceVal
9090
{
9191
// Check error bits
9292
uint32_t errorStatus = 0;
93-
uint32_t presenceDetected = 0;
94-
uint32_t presenceDetectedSticky = 0;
93+
uint32_t presenceStatus = 0;
9594

9695
sfTkError_t retVal = getPresenceDetectorErrorStatus(errorStatus);
9796
if (retVal != ksfTkErrOk || errorStatus != 0)
@@ -112,14 +111,16 @@ sfTkError_t sfDevXM125Presence::getPresenceDistanceValuemm(uint32_t &presenceVal
112111
if (retVal != ksfTkErrOk || errorStatus != 0)
113112
return 4;
114113

115-
// Read detector result register and determine detection status
116-
if (getPresenceDetectorPresenceDetected(presenceDetected) != ksfTkErrOk)
114+
// Read from 16-Bit Register to get the presence detection status
115+
if (_theBus->readRegister(SFE_XM125_PRESENCE_RESULT, presenceStatus) != ksfTkErrOk)
117116
return 5;
118117

119-
if (getPresenceDetectorPresenceStickyDetected(presenceDetectedSticky) != ksfTkErrOk)
120-
return 6;
118+
// Presence detected NOW or since last check (sticky)
119+
bool bPresenceDetected = ((presenceStatus & SFE_XM125_PRESENCE_DETECTED_MASK) != 0) ||
120+
((presenceStatus & SFE_XM125_PRESENCE_DETECTED_STICKY_MASK) != 0);
121121

122-
if (presenceDetected == 1 || presenceDetectedSticky == 1)
122+
// If presence or a sticky presence is detected, get the distance and return
123+
if (bPresenceDetected)
123124
return getPresenceDistance(presenceVal);
124125

125126
return ksfTkErrOk;

0 commit comments

Comments
 (0)