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.*
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;
 }