Skip to content

Commit 8ba1b5f

Browse files
Removed all magic numbers from file
Added shift values to remove magic numbers
1 parent 48ac444 commit 8ba1b5f

File tree

2 files changed

+76
-43
lines changed

2 files changed

+76
-43
lines changed

src/sfeQwiicXM125.cpp

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ int32_t QwDevXM125::distanceBegin()
5252
{
5353
uint32_t errorStatus = 0;
5454

55-
// Distance Sensor Setup
55+
// *** Distance Sensor Setup ***
5656
// Reset sensor configuration to reapply configuration registers
5757
setDistanceCommand(SFE_XM125_DISTANCE_RESET_MODULE);
5858

@@ -174,9 +174,9 @@ int32_t QwDevXM125::getDistanceDetectorVersion(uint32_t &major, uint32_t &minor,
174174
regVal = __builtin_bswap32(regVal);
175175

176176
// Mask unused bits from register
177-
major = (regVal & SFE_XM125_PRESENCE_MAJOR_VERSION_MASK) >> 16;
178-
minor = (regVal & SFE_XM125_PRESENCE_MINOR_VERSION_MASK) >> 8;
179-
patch = regVal & SFE_XM125_PRESENCE_PATCH_VERSION_MASK;
177+
major = (regVal & SFE_XM125_DISTANCE_MAJOR_VERSION_MASK) >> SFE_XM125_DISTANCE_MAJOR_VERSION_MASK_SHIFT;
178+
minor = (regVal & SFE_XM125_DISTANCE_MINOR_VERSION_MASK) >> SFE_XM125_DISTANCE_MINOR_VERSION_MASK_SHIFT;
179+
patch = regVal & SFE_XM125_DISTANCE_PATCH_VERSION_MASK;
180180

181181
return retVal;
182182
}
@@ -201,62 +201,62 @@ int32_t QwDevXM125::getDistanceDetectorErrorStatus(uint32_t &status)
201201
return -1;
202202
}
203203

204-
if(((regVal & SFE_XM125_DISTANCE_RSS_REGISTER_ERROR_MASK) >> 15) != 0)
204+
if(((regVal & SFE_XM125_DISTANCE_RSS_REGISTER_ERROR_MASK) >> SFE_XM125_DISTANCE_RSS_REGISTER_ERROR_MASK_SHIFT) != 0)
205205
{
206206
status = 1;
207207
return 0;
208208
}
209-
else if(((regVal & SFE_XM125_DISTANCE_CONFIG_CREATE_ERROR_MASK) >> 16) != 0)
209+
else if(((regVal & SFE_XM125_DISTANCE_CONFIG_CREATE_ERROR_MASK) >> SFE_XM125_DISTANCE_CONFIG_CREATE_ERROR_MASK_SHIFT) != 0)
210210
{
211211
status = 2;
212212
return 0;
213213
}
214-
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_CREATE_ERROR_MASK) >> 17) != 0)
214+
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_CREATE_ERROR_MASK) >> SFE_XM125_DISTANCE_SENSOR_CREATE_ERROR_MASK_SHIFT) != 0)
215215
{
216216
status = 3;
217217
return 0;
218218
}
219-
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_CREATE_ERROR_MASK) >> 18) != 0)
219+
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_CREATE_ERROR_MASK) >> SFE_XM125_DISTANCE_DETECTOR_CREATE_ERROR_MASK_SHIFT) != 0)
220220
{
221221
status = 5;
222222
return 0;
223223
}
224-
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_BUFFER_ERROR_MASK) >> 19) != 0)
224+
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_BUFFER_ERROR_MASK) >> SFE_XM125_DISTANCE_DETECTOR_BUFFER_ERROR_MASK_SHIFT) != 0)
225225
{
226226
status = 6;
227227
return 0;
228228
}
229-
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_BUFFER_ERROR_MASK) >> 20) != 0)
229+
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_BUFFER_ERROR_MASK) >> SFE_XM125_DISTANCE_SENSOR_BUFFER_ERROR_MASK_SHIFT) != 0)
230230
{
231231
status = 7;
232232
return 0;
233233
}
234-
else if(((regVal & SFE_XM125_DISTANCE_CALIBRATION_BUFFER_ERROR_MASK) >> 21) != 0)
234+
else if(((regVal & SFE_XM125_DISTANCE_CALIBRATION_BUFFER_ERROR_MASK) >> SFE_XM125_DISTANCE_CALIBRATION_BUFFER_ERROR_MASK_SHIFT) != 0)
235235
{
236236
status = 8;
237237
return 0;
238238
}
239-
else if(((regVal & SFE_XM125_DISTANCE_CONFIG_APPLY_ERROR_MASK) >> 22) != 0)
239+
else if(((regVal & SFE_XM125_DISTANCE_CONFIG_APPLY_ERROR_MASK) >> SFE_XM125_DISTANCE_CONFIG_APPLY_ERROR_MASK_SHIFT) != 0)
240240
{
241241
status = 9;
242242
return 0;
243243
}
244-
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_CALIBRATE_ERROR_MASK) >> 23) != 0)
244+
else if(((regVal & SFE_XM125_DISTANCE_SENSOR_CALIBRATE_ERROR_MASK) >> SFE_XM125_DISTANCE_SENSOR_CALIBRATE_ERROR_MASK_SHIFT) != 0)
245245
{
246246
status = 10;
247247
return 0;
248248
}
249-
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_CALIBRATE_ERROR_MASK) >> 24) != 0)
249+
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_CALIBRATE_ERROR_MASK) >> SFE_XM125_DISTANCE_DETECTOR_CALIBRATE_ERROR_MASK_SHIFT) != 0)
250250
{
251251
status = 11;
252252
return 0;
253253
}
254-
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_ERROR_MASK) >> 27) != 0)
254+
else if(((regVal & SFE_XM125_DISTANCE_DETECTOR_ERROR_MASK) >> SFE_XM125_DISTANCE_DETECTOR_ERROR_MASK_SHIFT) != 0)
255255
{
256256
status = 12;
257257
return 0;
258258
}
259-
else if(((regVal & SFE_XM125_DISTANCE_BUSY_MASK) >> 30) != 0)
259+
else if(((regVal & SFE_XM125_DISTANCE_BUSY_MASK) >> SFE_XM125_DISTANCE_BUSY_MASK_SHIFT) != 0)
260260
{
261261
status = 13;
262262
return 0;
@@ -305,7 +305,7 @@ int32_t QwDevXM125::getDistanceNearStartEdge(uint32_t &edge)
305305
regVal = __builtin_bswap32(regVal);
306306

307307
// Mask unused bits from register
308-
edge = (regVal & SFE_XM125_DISTANCE_NEAR_START_EDGE_MASK) >> 8;
308+
edge = (regVal & SFE_XM125_DISTANCE_NEAR_START_EDGE_MASK) >> SFE_XM125_DISTANCE_NEAR_START_EDGE_MASK_SHIFT;
309309

310310
return retVal;
311311
}
@@ -320,7 +320,7 @@ int32_t QwDevXM125::getDistanceCalibrationNeeded(uint32_t &calibrate)
320320
regVal = __builtin_bswap32(regVal);
321321

322322
// Mask unused bits from register
323-
calibrate = (regVal & 0x00000200) >> 9;
323+
calibrate = (regVal & SFE_XM125_DISTANCE_CALIBRATION_NEEDED_MASK) >> SFE_XM125_DISTANCE_CALIBRATION_NEEDED_MASK_SHIFT;
324324

325325
return retVal;
326326
}
@@ -335,7 +335,7 @@ int32_t QwDevXM125::getDistanceMeasureDistanceError(uint32_t &error)
335335
regVal = __builtin_bswap32(regVal);
336336

337337
// Mask unused bits from register
338-
error = (regVal & SFE_XM125_DISTANCE_MEASURE_DISTANCE_ERROR_MASK) >> 10;
338+
error = (regVal & SFE_XM125_DISTANCE_MEASURE_DISTANCE_ERROR_MASK) >> SFE_XM125_DISTANCE_MEASURE_DISTANCE_ERROR_MASK_SHIFT;
339339

340340
return retVal;
341341
}
@@ -350,7 +350,7 @@ int32_t QwDevXM125::getDistanceTemperature(uint32_t &temperature)
350350
regVal = __builtin_bswap32(regVal);
351351

352352
// Mask unused bits from register
353-
temperature = (regVal & SFE_XM125_DISTANCE_TEMPERATURE_MASK) >> 16;
353+
temperature = (regVal & SFE_XM125_DISTANCE_TEMPERATURE_MASK) >> SFE_XM125_DISTANCE_TEMPERATURE_MASK_SHIFT;
354354

355355
return retVal;
356356
}
@@ -751,12 +751,13 @@ int32_t QwDevXM125::distanceBusyWait()
751751
regVal = __builtin_bswap32(regVal);
752752

753753
// Poll Detector Status until Busy bit is cleared
754-
while(((regVal & SFE_XM125_DISTANCE_DETECTOR_STATUS_MASK) >> 30) != 0)
754+
while(((regVal & SFE_XM125_DISTANCE_DETECTOR_STATUS_MASK) >> SFE_XM125_DISTANCE_DETECTOR_STATUS_MASK_SHIFT) != 0)
755755
{
756756
retVal = _theBus->readRegister16Region(SFE_XM125_DISTANCE_DETECTOR_STATUS, (uint8_t*)&regVal, 4);
757757
regVal = __builtin_bswap32(regVal);
758758
}
759759

760+
// Return error code if non-zero
760761
if(retVal != 0)
761762
{
762763
return retVal;
@@ -768,7 +769,7 @@ int32_t QwDevXM125::distanceBusyWait()
768769

769770
int32_t QwDevXM125::presenceDetectorStart()
770771
{
771-
// Presence Sensor Setup
772+
// *** Presence Sensor Setup ***
772773
uint32_t errorStatus = 0;
773774

774775
// Reset sensor configuration to reapply configuration registers
@@ -886,9 +887,9 @@ int32_t QwDevXM125::getPresenceDetectorVersion(uint32_t &major, uint32_t &minor,
886887
retVal = _theBus->readRegister16Region(SFE_XM125_PRESENCE_VERSION, (uint8_t*)&regVal, 4);
887888

888889
// Mask unused bits from register
889-
major = (regVal & 0xffff0000) >> 16;
890-
minor = (regVal & 0x0000ff00) >> 8;
891-
patch = regVal & 0x000000ff;
890+
major = (regVal & SFE_XM125_PRESENCE_MAJOR_VERSION_MASK) >> SFE_XM125_PRESENCE_MAJOR_VERSION_MASK_SHIFT;
891+
minor = (regVal & SFE_XM125_PRESENCE_MINOR_VERSION_MASK) >> SFE_XM125_PRESENCE_MINOR_VERSION_MASK_SHIFT;
892+
patch = regVal & SFE_XM125_PRESENCE_PATCH_VERSION_MASK;
892893

893894
return retVal;
894895
}
@@ -920,58 +921,54 @@ int32_t QwDevXM125::getPresenceDetectorErrorStatus(uint32_t &status)
920921
return -1;
921922
}
922923

923-
if(((regVal & SFE_XM125_PRESENCE_RSS_REGISTER_ERROR_MASK) >> 15) != 0)
924+
if(((regVal & SFE_XM125_PRESENCE_RSS_REGISTER_ERROR_MASK) >> SFE_XM125_PRESENCE_RSS_REGISTER_ERROR_MASK_SHIFT) != 0)
924925
{
925926
status = 1;
926927
return 0;
927928
}
928-
else if(((regVal & SFE_XM125_PRESENCE_CONFIG_CREATE_ERROR_MASK) >> 16) != 0)
929+
else if(((regVal & SFE_XM125_PRESENCE_CONFIG_CREATE_ERROR_MASK) >> SFE_XM125_PRESENCE_CONFIG_CREATE_ERROR_MASK_SHIFT) != 0)
929930
{
930931
status = 2;
931932
return 0;
932933
}
933-
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_CREATE_ERROR_MASK) >> 17) != 0)
934+
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_CREATE_ERROR_MASK) >> SFE_XM125_PRESENCE_SENSOR_CREATE_ERROR_MASK_SHIFT) != 0)
934935
{
935936
status = 3;
936937
return 0;
937938
}
938-
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_CALIBRATE_ERROR_MASK) >> 18) != 0)
939+
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_CALIBRATE_ERROR_MASK) >> SFE_XM125_PRESENCE_SENSOR_CALIBRATE_ERROR_MASK_SHIFT) != 0)
939940
{
940941
status = 4;
941942
return 0;
942943
}
943-
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_CREATE_ERROR_MASK) >> 19) != 0)
944+
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_CREATE_ERROR_MASK) >> SFE_XM125_PRESENCE_DETECTOR_CREATE_ERROR_MASK_SHIFT) != 0)
944945
{
945946
status = 5;
946947
return 0;
947948
}
948-
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_BUFFER_ERROR_MASK) >> 20) != 0)
949+
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_BUFFER_ERROR_MASK) >> SFE_XM125_PRESENCE_DETECTOR_BUFFER_ERROR_MASK_SHIFT) != 0)
949950
{
950951
status = 6;
951952
return 0;
952953
}
953-
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_BUFFER_ERROR_MASK) >> 21) != 0)
954+
else if(((regVal & SFE_XM125_PRESENCE_SENSOR_BUFFER_ERROR_MASK) >> SFE_XM125_PRESENCE_SENSOR_BUFFER_ERROR_MASK_SHIFT) != 0)
954955
{
955956
status = 7;
956957
return 0;
957958
}
958-
else if(((regVal & SFE_XM125_PRESENCE_CONFIG_APPLY_ERROR_MASK) >> 22) != 0)
959+
else if(((regVal & SFE_XM125_PRESENCE_CONFIG_APPLY_ERROR_MASK) >> SFE_XM125_PRESENCE_CONFIG_APPLY_ERROR_MASK_SHIFT) != 0)
959960
{
960961
status = 8;
961962
return 0;
962963
}
963-
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_REG_ERROR_MASK) >> 27) != 0)
964+
else if(((regVal & SFE_XM125_PRESENCE_DETECTOR_REG_ERROR_MASK) >> SFE_XM125_PRESENCE_DETECTOR_REG_ERROR_MASK_SHIFT) != 0)
964965
{
965966
status = 9;
966967
return 0;
967968
}
968-
// else if(((regVal & SFE_XM125_PRESENCE_BUSY_MASK) >> 30) != 0)
969-
// {
970-
// status = 10;
971-
// return 0;
972-
// }
973969

974-
return 0; // return 0 with no errors
970+
// return 0 with no errors
971+
return 0;
975972
}
976973

977974

@@ -1015,7 +1012,7 @@ int32_t QwDevXM125::getPresenceDetectorRegError(uint32_t &error)
10151012
regVal = __builtin_bswap32(regVal);
10161013

10171014
// Mask unused bits from register
1018-
error = (regVal & SFE_XM125_PRESENCE_DETECTOR_ERROR_MASK) >> 14;
1015+
error = (regVal & SFE_XM125_PRESENCE_DETECTOR_ERROR_MASK) >> SFE_XM125_PRESENCE_DETECTOR_ERROR_MASK_SHIFT;
10191016

10201017
return retVal;
10211018
}
@@ -1028,7 +1025,7 @@ int32_t QwDevXM125::getPresenceTemperature(uint32_t &temp)
10281025
int32_t retVal = _theBus->readRegister16Region(SFE_XM125_PRESENCE_DISTANCE, (uint8_t*)&regVal, 4);
10291026

10301027
// Mask unused bits from register
1031-
temp = (regVal & SFE_XM125_PRESENCE_TEMPERATURE_MASK) >> 16;
1028+
temp = (regVal & SFE_XM125_PRESENCE_TEMPERATURE_MASK) >> SFE_XM125_PRESENCE_TEMPERATURE_MASK_SHIFT;
10321029

10331030
return retVal;
10341031
}
@@ -1367,7 +1364,7 @@ int32_t QwDevXM125::getPresenceBusy(uint32_t &busy)
13671364

13681365
busy = __builtin_bswap32(busy);
13691366
// Mask unused bits from register
1370-
busy = (regVal & SFE_XM125_PRESENCE_BUSY_MASK) >> 30;
1367+
busy = (regVal & SFE_XM125_PRESENCE_BUSY_MASK) >> SFE_XM125_PRESENCE_BUSY_MASK_SHIFT;
13711368

13721369
return retVal;
13731370
}

src/sfeXM125Regs.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,27 @@ const uint32_t SFE_XM125_DISTANCE_SENSOR_CALIBRATE_ERROR_MASK = 0x01000000;
7474
const uint32_t SFE_XM125_DISTANCE_DETECTOR_CALIBRATE_ERROR_MASK = 0x02000000;
7575
const uint32_t SFE_XM125_DISTANCE_DETECTOR_ERROR_MASK = 0x10000000;
7676
const uint32_t SFE_XM125_DISTANCE_BUSY_MASK = 0x80000000;
77+
const uint32_t SFE_XM125_DISTANCE_CALIBRATION_NEEDED_MASK = 0x00000200;
78+
79+
const uint32_t SFE_XM125_DISTANCE_MAJOR_VERSION_MASK_SHIFT = 16;
80+
const uint32_t SFE_XM125_DISTANCE_MINOR_VERSION_MASK_SHIFT = 8;
81+
const uint32_t SFE_XM125_DISTANCE_RSS_REGISTER_ERROR_MASK_SHIFT = 15;
82+
const uint32_t SFE_XM125_DISTANCE_CONFIG_CREATE_ERROR_MASK_SHIFT = 16;
83+
const uint32_t SFE_XM125_DISTANCE_SENSOR_CREATE_ERROR_MASK_SHIFT = 17;
84+
const uint32_t SFE_XM125_DISTANCE_DETECTOR_CREATE_ERROR_MASK_SHIFT = 18;
85+
const uint32_t SFE_XM125_DISTANCE_DETECTOR_BUFFER_ERROR_MASK_SHIFT = 19;
86+
const uint32_t SFE_XM125_DISTANCE_SENSOR_BUFFER_ERROR_MASK_SHIFT = 20;
87+
const uint32_t SFE_XM125_DISTANCE_CALIBRATION_BUFFER_ERROR_MASK_SHIFT = 21;
88+
const uint32_t SFE_XM125_DISTANCE_CONFIG_APPLY_ERROR_MASK_SHIFT = 22;
89+
const uint32_t SFE_XM125_DISTANCE_SENSOR_CALIBRATE_ERROR_MASK_SHIFT = 23;
90+
const uint32_t SFE_XM125_DISTANCE_DETECTOR_CALIBRATE_ERROR_MASK_SHIFT = 24;
91+
const uint32_t SFE_XM125_DISTANCE_DETECTOR_ERROR_MASK_SHIFT = 27;
92+
const uint32_t SFE_XM125_DISTANCE_BUSY_MASK_SHIFT = 30;
93+
const uint32_t SFE_XM125_DISTANCE_NEAR_START_EDGE_MASK_SHIFT = 8;
94+
const uint32_t SFE_XM125_DISTANCE_CALIBRATION_NEEDED_MASK_SHIFT = 9;
95+
const uint32_t SFE_XM125_DISTANCE_MEASURE_DISTANCE_ERROR_MASK_SHIFT = 10;
96+
const uint32_t SFE_XM125_DISTANCE_TEMPERATURE_MASK_SHIFT = 16;
97+
const uint32_t SFE_XM125_DISTANCE_DETECTOR_STATUS_MASK_SHIFT = 30;
7798

7899
const uint32_t SFE_XM125_DISTANCE_DETECTOR_STATUS_MASK = 0b10010000111111110000000011111111;
79100

@@ -294,6 +315,21 @@ const uint32_t SFE_XM125_PRESENCE_CONFIG_APPLY_ERROR_MASK = 0x00800000;
294315
const uint32_t SFE_XM125_PRESENCE_DETECTOR_REG_ERROR_MASK = 0x10000000;
295316
const uint32_t SFE_XM125_PRESENCE_BUSY_MASK = 0x80000000;
296317

318+
const uint32_t SFE_XM125_PRESENCE_MAJOR_VERSION_MASK_SHIFT = 16;
319+
const uint32_t SFE_XM125_PRESENCE_MINOR_VERSION_MASK_SHIFT = 8;
320+
const uint32_t SFE_XM125_PRESENCE_RSS_REGISTER_ERROR_MASK_SHIFT = 15;
321+
const uint32_t SFE_XM125_PRESENCE_CONFIG_CREATE_ERROR_MASK_SHIFT = 16;
322+
const uint32_t SFE_XM125_PRESENCE_SENSOR_CREATE_ERROR_MASK_SHIFT = 17;
323+
const uint32_t SFE_XM125_PRESENCE_SENSOR_CALIBRATE_ERROR_MASK_SHIFT = 18;
324+
const uint32_t SFE_XM125_PRESENCE_DETECTOR_CREATE_ERROR_MASK_SHIFT = 19;
325+
const uint32_t SFE_XM125_PRESENCE_DETECTOR_BUFFER_ERROR_MASK_SHIFT = 20;
326+
const uint32_t SFE_XM125_PRESENCE_SENSOR_BUFFER_ERROR_MASK_SHIFT = 21;
327+
const uint32_t SFE_XM125_PRESENCE_CONFIG_APPLY_ERROR_MASK_SHIFT = 22;
328+
const uint32_t SFE_XM125_PRESENCE_DETECTOR_REG_ERROR_MASK_SHIFT = 27;
329+
const uint32_t SFE_XM125_PRESENCE_DETECTOR_ERROR_MASK_SHIFT = 14;
330+
const uint32_t SFE_XM125_PRESENCE_TEMPERATURE_MASK_SHIFT = 16;
331+
const uint32_t SFE_XM125_PRESENCE_BUSY_MASK_SHIFT = 30;
332+
297333
const uint16_t SFE_XM125_PRESENCE_VERSION = 0x00;
298334
typedef struct
299335
{

0 commit comments

Comments
 (0)