rc_proto: allow to disable computation of best power level
[protos/xbee-avr.git] / rc_proto.c
index 8ea3767..4c09ac3 100644 (file)
@@ -149,7 +149,7 @@ static void rc_proto_rx_power_probe(int power_level)
                (void *)(intptr_t)power_level);
 }
 
-/* called every second */
+/* called every second to decide which power should be used */
 static void compute_best_power(void)
 {
        int8_t best_power_level = -1;
@@ -183,8 +183,13 @@ static void compute_best_power(void)
        power_level_global = best_power_level;
 }
 
-static uint8_t get_best_power(void)
+/* return the best power level, or -1 if best power level computation is
+ * disabled. */
+static int8_t get_best_power(void)
 {
+       if ((rc_proto_flags & RC_PROTO_FLAGS_COMPUTE_BEST_POW) == 0)
+               return -1;
+
        /* special values */
        if (power_level_global == -1) {
                power_level_global = -4;
@@ -728,10 +733,12 @@ static void rc_proto_cb(struct callout_mgr *cm, struct callout *tim, void *arg)
        }
 
        /* send stats to peer every second */
-       diff = t - prev_compute_pow;
-       if (diff >= 1000) {
-               compute_best_power();
-               prev_compute_pow = t;
+       if (rc_proto_flags & RC_PROTO_FLAGS_COMPUTE_BEST_POW) {
+               diff = t - prev_compute_pow;
+               if (diff >= 1000) {
+                       compute_best_power();
+                       prev_compute_pow = t;
+               }
        }
 
        /* send stats to peer every second */