lq: add get_linkcost_scaled function
authorFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 11 Apr 2016 10:19:40 +0000 (12:19 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 11 Apr 2016 10:38:30 +0000 (12:38 +0200)
For later use

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/lq_plugin.c
src/lq_plugin.h

index 5a175c0..b7cc1a1 100644 (file)
@@ -58,6 +58,7 @@
 #endif
 
 #include <assert.h>
+#include <math.h>
 
 struct avl_tree lq_handler_tree;
 struct lq_handler *active_lq_handler = NULL;
@@ -334,6 +335,17 @@ get_linkcost_text(olsr_linkcost cost, bool route, struct lqtextbuffer *buffer)
   return buffer->buf;
 }
 
+double
+get_linkcost_scaled(olsr_linkcost cost, bool route)
+{
+  olsr_linkcost limit = route ? ROUTE_COST_BROKEN : LINK_COST_BROKEN;
+  if (cost >= limit) {
+    return (double) limit;
+  }
+
+  return active_lq_handler->get_cost_scaled(cost);
+}
+
 /**
  * olsr_copy_hello_lq
  *
index dcd5d5b..5725281 100644 (file)
@@ -127,6 +127,7 @@ void olsr_memorize_foreign_hello_lq(struct link_entry *local, struct hello_neigh
 const char *get_link_entry_text(struct link_entry *entry, char separator, struct lqtextbuffer *buffer);
 const char *get_tc_edge_entry_text(struct tc_edge_entry *entry, char separator, struct lqtextbuffer *buffer);
 const char *get_linkcost_text(olsr_linkcost cost, bool route, struct lqtextbuffer *buffer);
+double get_linkcost_scaled(olsr_linkcost cost, bool route);
 
 void olsr_clear_hello_lq(struct link_entry */*link*/);
 void olsr_copy_hello_lq(struct lq_hello_neighbor *target, struct link_entry *source);