Skip to content

Commit dde1786

Browse files
committed
added start and end range to begin method; added generic distance and strenght methods
1 parent d54fde2 commit dde1786

File tree

2 files changed

+111
-7
lines changed

2 files changed

+111
-7
lines changed

src/sfTk/sfDevXM125Distance.cpp

Lines changed: 89 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ sfTkError_t sfDevXM125Distance::begin(sfTkII2C *theBus)
4141
return ksfTkErrOk;
4242
}
4343
//------------------------------------------------------------------
44-
int32_t sfDevXM125Distance::distanceBegin()
44+
int32_t sfDevXM125Distance::distanceBegin(uint32_t startRange, uint32_t endRange)
4545
{
4646
uint32_t errorStatus = 0;
4747

@@ -64,20 +64,20 @@ int32_t sfDevXM125Distance::distanceBegin()
6464
}
6565

6666
// Set Start register
67-
if (setDistanceStart(sfe_xm125_distance_start_default) != 0)
67+
if (setDistanceStart(startRange) != 0)
6868
{
6969
return 3;
7070
}
7171
sftk_delay_ms(100); // give time for command to set
7272

7373
// Set End register
74-
if (setDistanceEnd(sfe_xm125_distance_end_default) != 0)
74+
if (setDistanceEnd(endRange) != 0)
7575
{
7676
return 4;
7777
}
7878
sftk_delay_ms(100); // give time for command to set
7979

80-
// Apply configuration
80+
// Apply configuration and calibrate.
8181
if (setDistanceCommand(SFE_XM125_DISTANCE_APPLY_CONFIGURATION) != 0)
8282
{
8383
// Check for errors
@@ -363,6 +363,49 @@ sfTkError_t sfDevXM125Distance::getDistanceTemperature(int16_t &temperature)
363363
return retVal;
364364
}
365365

366+
//--------------------------------------------------------------------------------
367+
// Generic distance peak distance method
368+
sfTkError_t sfDevXM125Distance::getDistancePeakDistance(uint8_t num, uint32_t &peak)
369+
{
370+
371+
switch (num)
372+
{
373+
case 0:
374+
return getDistancePeak0Distance(peak);
375+
break;
376+
377+
case 1:
378+
return getDistancePeak1Distance(peak);
379+
break;
380+
case 2:
381+
return getDistancePeak2Distance(peak);
382+
break;
383+
case 3:
384+
return getDistancePeak3Distance(peak);
385+
break;
386+
case 4:
387+
return getDistancePeak4Distance(peak);
388+
break;
389+
case 5:
390+
return getDistancePeak5Distance(peak);
391+
break;
392+
case 6:
393+
return getDistancePeak6Distance(peak);
394+
break;
395+
case 7:
396+
return getDistancePeak7Distance(peak);
397+
break;
398+
case 8:
399+
return getDistancePeak8Distance(peak);
400+
break;
401+
case 9:
402+
return getDistancePeak9Distance(peak);
403+
break;
404+
default:
405+
return ksfTkErrFail;
406+
break;
407+
}
408+
}
366409
//--------------------------------------------------------------------------------
367410
sfTkError_t sfDevXM125Distance::getDistancePeak0Distance(uint32_t &peak)
368411
{
@@ -462,7 +505,49 @@ sfTkError_t sfDevXM125Distance::getDistancePeak9Distance(uint32_t &peak)
462505
peak = sftk_byte_swap(peak);
463506
return retVal;
464507
}
508+
//--------------------------------------------------------------------------------
509+
// Generic distance peak strength method
510+
sfTkError_t sfDevXM125Distance::getDistancePeakStrength(uint8_t num, int32_t &peak)
511+
{
465512

513+
switch (num)
514+
{
515+
case 0:
516+
return getDistancePeak0Strength(peak);
517+
break;
518+
519+
case 1:
520+
return getDistancePeak1Strength(peak);
521+
break;
522+
case 2:
523+
return getDistancePeak2Strength(peak);
524+
break;
525+
case 3:
526+
return getDistancePeak3Strength(peak);
527+
break;
528+
case 4:
529+
return getDistancePeak4Strength(peak);
530+
break;
531+
case 5:
532+
return getDistancePeak5Strength(peak);
533+
break;
534+
case 6:
535+
return getDistancePeak6Strength(peak);
536+
break;
537+
case 7:
538+
return getDistancePeak7Strength(peak);
539+
break;
540+
case 8:
541+
return getDistancePeak8Strength(peak);
542+
break;
543+
case 9:
544+
return getDistancePeak9Strength(peak);
545+
break;
546+
default:
547+
return ksfTkErrFail;
548+
break;
549+
}
550+
}
466551
//--------------------------------------------------------------------------------
467552
sfTkError_t sfDevXM125Distance::getDistancePeak0Strength(int32_t &peak)
468553
{

src/sfTk/sfDevXM125Distance.h

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,11 @@ const uint16_t SFE_XM125_DISTANCE_PEAK7_STRENGTH = 0x22;
163163
const uint16_t SFE_XM125_DISTANCE_PEAK8_STRENGTH = 0x23;
164164
const uint16_t SFE_XM125_DISTANCE_PEAK9_STRENGTH = 0x24;
165165

166-
// Default Value: 250
166+
// Default Value: 250mm
167167
const uint16_t SFE_XM125_DISTANCE_START = 0x40;
168168
const uint16_t sfe_xm125_distance_start_default = 250;
169169

170-
// Default Value: 3000
170+
// Default Value: 3000mm
171171
const uint16_t SFE_XM125_DISTANCE_END = 0x41;
172172
const uint16_t sfe_xm125_distance_end_default = 3000;
173173

@@ -283,7 +283,8 @@ class sfDevXM125Distance : public sfDevXM125Core
283283
/// @brief This function sets all the beginning values for a basic I2C
284284
/// example to be run on the device for presence sensing.
285285
/// @return ksfTkErrOk on success, or error code (value < -1)
286-
sfTkError_t distanceBegin();
286+
sfTkError_t distanceBegin(uint32_t start = sfe_xm125_distance_start_default,
287+
uint32_t end = sfe_xm125_distance_end_default);
287288

288289
/// @brief This function does all the required checks and busy waits to
289290
/// make sure the device is ready for distance readings.
@@ -344,6 +345,15 @@ class sfDevXM125Distance : public sfDevXM125Core
344345
/// @return ksfTkErrOk on success, or error code (value < -1)
345346
sfTkError_t getDistanceTemperature(int16_t &temperature);
346347

348+
//--------------------------------------------------------------------------------
349+
// Generic distance peak distance method
350+
/// @brief This function returns the distance to peak num
351+
/// Note: This value is a factor 1000 larger than the RSS value
352+
/// @param num Peak number to get distance (0-9)
353+
/// @param peak Distance to peak num
354+
/// @return ksfTkErrOk on success, or error code (value < -1)
355+
sfTkError_t getDistancePeakDistance(uint8_t num, uint32_t &peak);
356+
347357
/// @brief This function returns the distance to peak 0
348358
/// Note: This value is a factor 1000 larger than the RSS value
349359
/// @return ksfTkErrOk on success, or error code (value < -1)
@@ -394,6 +404,15 @@ class sfDevXM125Distance : public sfDevXM125Core
394404
/// @return ksfTkErrOk on success, or error code (value < -1)
395405
sfTkError_t getDistancePeak9Distance(uint32_t &peak);
396406

407+
//--------------------------------------------------------------------------------
408+
// Generic distance peak strength method
409+
/// @brief This function returns the strength to peak num
410+
/// Note: This value is a factor 1000 larger than the RSS value
411+
/// @param num Peak number to get strength (0-9)
412+
/// @param peak strength to peak num
413+
/// @return ksfTkErrOk on success, or error code (value < -1)
414+
sfTkError_t getDistancePeakStrength(uint8_t num, int32_t &peak);
415+
397416
/// @brief This function returns the strength of peak 0
398417
/// Note: This value is a factor 1000 larger than the RSS value
399418
/// @return ksfTkErrOk on success, or error code (value < -1)

0 commit comments

Comments
 (0)