lq plugins: add get_cost_scaled function
authorFerry Huberts <ferry.huberts@pelagic.nl>
Sat, 9 Apr 2016 12:24:45 +0000 (14:24 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 11 Apr 2016 10:38:29 +0000 (12:38 +0200)
For later use

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

index 3a7ddb9..caa563c 100644 (file)
@@ -85,6 +85,7 @@ struct lq_handler {
   const char *(*print_hello_lq) (void *ptr, char separator, struct lqtextbuffer * buffer);
   const char *(*print_tc_lq) (void *ptr, char separator, struct lqtextbuffer * buffer);
   const char *(*print_cost) (olsr_linkcost cost, struct lqtextbuffer * buffer);
+  double (*get_cost_scaled) (olsr_linkcost cost);
 
   size_t hello_lq_size;
   size_t tc_lq_size;
index 7fddfbb..cde7970 100644 (file)
@@ -73,6 +73,7 @@ static void default_lq_clear_ff_hello(void *target);
 
 static const char *default_lq_print_ff(void *ptr, char separator, struct lqtextbuffer *buffer);
 static const char *default_lq_print_cost_ff(olsr_linkcost cost, struct lqtextbuffer *buffer);
+static double default_lq_get_cost_scaled(olsr_linkcost cost);
 
 /* etx lq plugin (freifunk fpm version) settings */
 struct lq_handler lq_etx_ff_handler = {
@@ -96,6 +97,7 @@ struct lq_handler lq_etx_ff_handler = {
   &default_lq_print_ff,
   &default_lq_print_ff,
   &default_lq_print_cost_ff,
+  &default_lq_get_cost_scaled,
 
   sizeof(struct default_lq_ff_hello),
   sizeof(struct default_lq_ff),
@@ -412,6 +414,12 @@ default_lq_print_ff(void *ptr, char separator, struct lqtextbuffer *buffer)
   return buffer->buf;
 }
 
+static double
+default_lq_get_cost_scaled(olsr_linkcost cost)
+{
+  return fpmtod(cost);
+}
+
 static const char *
 default_lq_print_cost_ff(olsr_linkcost cost, struct lqtextbuffer *buffer)
 {
index d2cdb25..d32c05f 100644 (file)
@@ -75,6 +75,7 @@ static void default_lq_clear_ffeth_hello(void *target);
 
 static const char *default_lq_print_ffeth(void *ptr, char separator, struct lqtextbuffer *buffer);
 static const char *default_lq_print_cost_ffeth(olsr_linkcost cost, struct lqtextbuffer *buffer);
+static double default_lq_get_cost_scaled(olsr_linkcost cost);
 
 /* etx lq plugin (freifunk fpm version) settings */
 struct lq_handler lq_etx_ffeth_handler = {
@@ -98,6 +99,7 @@ struct lq_handler lq_etx_ffeth_handler = {
   &default_lq_print_ffeth,
   &default_lq_print_ffeth,
   &default_lq_print_cost_ffeth,
+  &default_lq_get_cost_scaled,
 
   sizeof(struct default_lq_ffeth_hello),
   sizeof(struct default_lq_ffeth),
@@ -462,6 +464,12 @@ default_lq_print_ffeth(void *ptr, char separator, struct lqtextbuffer *buffer)
   return buffer->buf;
 }
 
+static double
+default_lq_get_cost_scaled(olsr_linkcost cost)
+{
+  return fpmtod(cost);
+}
+
 static const char *
 default_lq_print_cost_ffeth(olsr_linkcost cost, struct lqtextbuffer *buffer)
 {
index 4d383a1..fa3f478 100644 (file)
@@ -59,6 +59,7 @@ static void default_lq_copy_link2tc_float(void *target, void *source);
 static void default_lq_clear_float(void *target);
 static const char *default_lq_print_float(void *ptr, char separator, struct lqtextbuffer *buffer);
 static const char *default_lq_print_cost_float(olsr_linkcost cost, struct lqtextbuffer *buffer);
+static double default_lq_get_cost_scaled(olsr_linkcost cost);
 
 
 /* Default lq plugin settings */
@@ -83,6 +84,7 @@ struct lq_handler lq_etx_float_handler = {
   &default_lq_print_float,
   &default_lq_print_float,
   &default_lq_print_cost_float,
+  &default_lq_get_cost_scaled,
 
   sizeof(struct default_lq_float),
   sizeof(struct default_lq_float),
@@ -223,10 +225,16 @@ default_lq_print_float(void *ptr, char separator, struct lqtextbuffer *buffer)
   return buffer->buf;
 }
 
+static double
+default_lq_get_cost_scaled(olsr_linkcost cost)
+{
+  return ((double) cost) / LQ_PLUGIN_LC_MULTIPLIER;
+}
+
 static const char *
 default_lq_print_cost_float(olsr_linkcost cost, struct lqtextbuffer *buffer)
 {
-  snprintf(buffer->buf, sizeof(struct lqtextbuffer), "%2.3f", (double)(((float)cost) / (float)LQ_PLUGIN_LC_MULTIPLIER));
+  snprintf(buffer->buf, sizeof(struct lqtextbuffer), "%2.3f", default_lq_get_cost_scaled(cost));
   buffer->buf[sizeof(buffer->buf) - 1] = '\0';
   return buffer->buf;
 }
index bb969ea..29aacfc 100644 (file)
@@ -60,6 +60,7 @@ static void default_lq_copy_link2tc_fpm(void *target, void *source);
 static void default_lq_clear_fpm(void *target);
 static const char *default_lq_print_fpm(void *ptr, char separator, struct lqtextbuffer *buffer);
 static const char *default_lq_print_cost_fpm(olsr_linkcost cost, struct lqtextbuffer *buffer);
+static double default_lq_get_cost_scaled(olsr_linkcost cost);
 
 
 /* etx lq plugin (fpm version) settings */
@@ -84,6 +85,7 @@ struct lq_handler lq_etx_fpm_handler = {
   &default_lq_print_fpm,
   &default_lq_print_fpm,
   &default_lq_print_cost_fpm,
+  &default_lq_get_cost_scaled,
 
   sizeof(struct default_lq_fpm),
   sizeof(struct default_lq_fpm),
@@ -235,10 +237,16 @@ default_lq_print_fpm(void *ptr, char separator, struct lqtextbuffer *buffer)
   return buffer->buf;
 }
 
+static double
+default_lq_get_cost_scaled(olsr_linkcost cost)
+{
+  return ((double) cost) / LQ_FPM_LINKCOST_MULTIPLIER;
+}
+
 static const char *
 default_lq_print_cost_fpm(olsr_linkcost cost, struct lqtextbuffer *buffer)
 {
-  snprintf(buffer->buf, sizeof(buffer->buf), "%.3f", (double)(cost) / (double)LQ_FPM_LINKCOST_MULTIPLIER);
+  snprintf(buffer->buf, sizeof(buffer->buf), "%.3f", default_lq_get_cost_scaled(cost));
   buffer->buf[sizeof(buffer->buf) - 1] = '\0';
   return buffer->buf;
 }