]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/net/4bitle/LinkEstimatorP.nc
get rid of +5 for rounding, change arg name in functions in CtpInfo to match the...
[tinyos-2.x.git] / tos / lib / net / 4bitle / LinkEstimatorP.nc
index c82c24fac6a518cef530587d4c5f5a31f7ecc51d..d1cb1af8c22fd2b6207d1400f4fe4864b53aae71 100644 (file)
@@ -67,7 +67,7 @@ implementation {
     INVALID_NEIGHBOR_ADDR = 0xff,
     // if we don't know the link quality, we need to return a value so
     // large that it will not be used to form paths
-    VERY_LARGE_ETX_VALUE = 0xff,
+    VERY_LARGE_ETX_VALUE = 0xffff,
     // decay the link estimate using this alpha
     // we use a denominator of 10, so this corresponds to 0.2
     ALPHA = 9,
@@ -273,7 +273,7 @@ implementation {
   // called when new beacon estimate is done
   // also called when new DEETX estimate is done
   void updateETX(neighbor_table_entry_t *ne, uint16_t newEst) {
-    ne->etx = (ALPHA * ne->etx + (10 - ALPHA) * newEst + 5)/10;
+    ne->etx = (ALPHA * ne->etx + (10 - ALPHA) * newEst)/10;
   }
 
 
@@ -287,7 +287,7 @@ implementation {
       // transmissions
       estETX = ne->data_total * 10;
     } else {
-      estETX = (10 * ne->data_total + 5) / ne->data_success;
+      estETX = (10 * ne->data_total) / ne->data_success;
       ne->data_success = 0;
       ne->data_total = 0;
     }
@@ -295,9 +295,9 @@ implementation {
   }
 
 
-  // ETX (Extra Expected number of Transmission)
+  // ETX (Expected number of Transmission)
   // computeETX returns ETX*10
-  uint8_t computeETX(uint8_t q1) {
+  uint16_t computeETX(uint8_t q1) {
     uint16_t q;
     if (q1 > 0) {
       q =  2500 / q1;
@@ -332,11 +332,11 @@ implementation {
            totalPkt = minPkt;
          }
          if (totalPkt == 0) {
-           ne->inquality = (ALPHA * ne->inquality + 5) / 10;
+           ne->inquality = (ALPHA * ne->inquality) / 10;
          } else {
-           newEst = (250UL * ne->rcvcnt + 5) / totalPkt;
-           dbg("LI,LITest", "  %hu: %hhu -> %hhu", ne->ll_addr, ne->inquality, (ALPHA * ne->inquality + (10-ALPHA) * newEst + 5)/10);
-           ne->inquality = (ALPHA * ne->inquality + (10-ALPHA) * newEst + 5)/10;
+           newEst = (250UL * ne->rcvcnt) / totalPkt;
+           dbg("LI,LITest", "  %hu: %hhu -> %hhu", ne->ll_addr, ne->inquality, (ALPHA * ne->inquality + (10-ALPHA) * newEst)/10);
+           ne->inquality = (ALPHA * ne->inquality + (10-ALPHA) * newEst)/10;
          }
          ne->rcvcnt = 0;
          ne->failcnt = 0;