This code holds the complete demo set for the sx1280: PingPong, PER and Ranging Outdoor demo application. >>>>> This code MUST run on the mbed library release 127 or everything will be painfully slow.
Dependencies: mbed SX1280Lib DmTftLibrary
* This code MUST run on the mbed library release 127 or everything will be painfully slow.*
Diff: Demo/DemoApplication.cpp
- Revision:
- 13:94a3f92fd49c
- Parent:
- 9:0efc2c99078f
- Child:
- 14:ebd89dacc807
--- a/Demo/DemoApplication.cpp Tue May 30 09:28:52 2017 +0000 +++ b/Demo/DemoApplication.cpp Tue May 30 12:02:47 2017 +0000 @@ -1845,7 +1845,7 @@ uint8_t CheckDistance( void ) { - double mean = 0.0; + double displayRange = 0.0; double rssi = Eeprom.EepromData.DemoSettings.RssiValue; uint16_t j = 0; @@ -1881,8 +1881,16 @@ median = RawRngResults[RngResultIndex/2]; } - mean = t0 + t1 * rssi + t2 * pow(rssi,2) + t3 * pow(rssi, 3) +t4 * median + t5 * pow(median,2) + t6 * pow(median, 3) + t7 * pow(median, 4) ; - + if( median < 50 ) + { + // Apply the short range correction and RSSI short range improvement below 50 m + displayRange = t0 + t1 * rssi + t2 * pow(rssi,2) + t3 * pow(rssi, 3) +t4 * median + t5 * pow(median,2) + t6 * pow(median, 3) + t7 * pow(median, 4) ; + } + else + { + displayRange = median; + } + if( j < DEMO_RNG_CHANNELS_COUNT_MIN ) { Eeprom.EepromData.DemoSettings.RngStatus = RNG_PER_ERROR; @@ -1892,7 +1900,7 @@ Eeprom.EepromData.DemoSettings.RngStatus = RNG_VALID; } - if( mean < 0 ) + if( displayRange < 0 ) { Eeprom.EepromData.DemoSettings.RngDistance = 0.0; } @@ -1901,20 +1909,20 @@ switch( Eeprom.EepromData.DemoSettings.RngUnit ) { case DEMO_RNG_UNIT_SEL_M: - Eeprom.EepromData.DemoSettings.RngDistance = mean; + Eeprom.EepromData.DemoSettings.RngDistance = displayRange; break; case DEMO_RNG_UNIT_SEL_YD: - Eeprom.EepromData.DemoSettings.RngDistance = mean * DEMO_RNG_UNIT_CONV_YD; + Eeprom.EepromData.DemoSettings.RngDistance = displayRange * DEMO_RNG_UNIT_CONV_YD; break; case DEMO_RNG_UNIT_SEL_MI: - Eeprom.EepromData.DemoSettings.RngDistance = mean * DEMO_RNG_UNIT_CONV_MI; + Eeprom.EepromData.DemoSettings.RngDistance = displayRange * DEMO_RNG_UNIT_CONV_MI; break; } } } - printf( ", Rssi: %d, Zn: %3d, Zmoy: %5.1f, FEI: %d\r\n", Eeprom.EepromData.DemoSettings.RssiValue, j, mean, ( int32_t )Eeprom.EepromData.DemoSettings.RngFei ); + printf( ", Rssi: %d, Zn: %3d, Zmoy: %5.1f, FEI: %d\r\n", Eeprom.EepromData.DemoSettings.RssiValue, j, displayRange, ( int32_t )Eeprom.EepromData.DemoSettings.RngFei ); return j; }