Removed me_to_double use. Replaced with macro
authorAndreas Tonnesen <andreto@olsr.org>
Wed, 25 May 2005 13:43:30 +0000 (13:43 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Wed, 25 May 2005 13:43:30 +0000 (13:43 +0000)
lib/nameservice/src/nameservice.c
lib/nameservice/src/olsrd_plugin.c
lib/nameservice/src/olsrd_plugin.h
lib/powerinfo/src/olsrd_plugin.c
lib/powerinfo/src/olsrd_plugin.h
lib/powerinfo/src/olsrd_power.c

index 1b0114d..302ca3b 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: nameservice.c,v 1.12 2005/04/28 12:46:32 br1 Exp $ */
+/* $Id: nameservice.c,v 1.13 2005/05/25 13:43:30 kattemat Exp $ */
 
 /*
  * Dynamic linked library for UniK OLSRd
@@ -43,6 +43,7 @@
 #include "olsrd_copy.h"
 
 #include "routing_table.h"
+#include "mantissa.h"
 
 /* send buffer: huge */
 static char buffer[10240];
@@ -398,12 +399,12 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
                
        /* Fetch the message based on IP version */
        if(ipversion == AF_INET) {
-               vtime = me_to_double(m->v4.olsr_vtime);
+               vtime = ME_TO_DOUBLE(m->v4.olsr_vtime);
                size = ntohs(m->v4.olsr_msgsize);
                namemessage = (struct namemsg*)&m->v4.message;
        }
        else {
-               vtime = me_to_double(m->v6.olsr_vtime);
+               vtime = ME_TO_DOUBLE(m->v6.olsr_vtime);
                size = ntohs(m->v6.olsr_msgsize);
                namemessage = (struct namemsg*)&m->v4.message;
        }
index da6e52d..171a834 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.c,v 1.9 2005/04/20 17:57:00 br1 Exp $ */
+/* $Id: olsrd_plugin.c,v 1.10 2005/05/25 13:43:30 kattemat Exp $ */
 
 /*
  * Dynamic linked library for UniK OLSRd
@@ -259,15 +259,6 @@ fetch_olsrd_data()
     retval = 0;
   }
 
-  /* Mantissa/exponent to double conversion */
-  if(!olsr_plugin_io(GETF__ME_TO_DOUBLE, 
-                    &me_to_double, 
-                    sizeof(me_to_double)))
-  {
-    me_to_double = NULL;
-    retval = 0;
-  }
-
   /* Interface list */
   if(!olsr_plugin_io(GETD__IFNET, &ifs, sizeof(ifs)))
   {
index 61f59fa..8fe39eb 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.h,v 1.7 2005/04/20 17:57:00 br1 Exp $ */
+/* $Id: olsrd_plugin.h,v 1.8 2005/05/25 13:43:30 kattemat Exp $ */
 
 /*
  * Dynamic linked library for UniK OLSRd
@@ -158,11 +158,9 @@ void (*add_olsr_socket)(int, void(*)(int));
 /* get the link status to a neighbor */
 int (*check_neighbor_link)(union olsr_ip_addr *);
 
-/* Mantissa/exponen conversions */
+/* Mantissa/exponent conversions */
 olsr_u8_t (*double_to_me)(double);
 
-double (*me_to_double)(olsr_u8_t);
-
 /* olsrd printf wrapper */
 int (*olsr_printf)(int, char *, ...);
 
index 5ade7c6..f416ac1 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.c,v 1.5 2005/04/10 11:52:05 kattemat Exp $ */
+/* $Id: olsrd_plugin.c,v 1.6 2005/05/25 13:41:47 kattemat Exp $ */
 
 
 /*
@@ -225,18 +225,6 @@ fetch_olsrd_data()
     retval = 0;
   }
 
-
-
-  /* Mantissa/exponent to double conversion */
-  if(!olsr_plugin_io(GETF__ME_TO_DOUBLE, 
-                    &me_to_double, 
-                    sizeof(me_to_double)))
-  {
-    me_to_double = NULL;
-    retval = 0;
-  }
-
-
   /* Interface list */
   if(!olsr_plugin_io(GETD__IFNET, &ifs, sizeof(ifs)))
   {
index 6cf8749..b6ac292 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_plugin.h,v 1.9 2005/04/10 11:52:05 kattemat Exp $ */
+/* $Id: olsrd_plugin.h,v 1.10 2005/05/25 13:41:47 kattemat Exp $ */
 
 /*
  * Dynamic linked library example for UniK OLSRd
 #define PARSER_TYPE MESSAGE_TYPE
 
 
+/*
+ * Scaling factor
+ */
+
+#define VTIME_SCALE_FACTOR    0.0625
+
+/**
+ * Macro for converting a mantissa/exponent 8bit value back
+ * to double as described in RFC3626:
+ *
+ * value = C*(1+a/16)*2^b [in seconds]
+ *
+ *  where a is the integer represented by the four highest bits of the
+ *  field and b the integer represented by the four lowest bits of the
+ *  field.
+ *
+ * me is the 8 bit mantissa/exponent value
+ *
+ */
+#define ME_TO_DOUBLE(me) \
+  (double)(VTIME_SCALE_FACTOR*(1+(double)(me>>4)/16)*(double)(1<<(me&0x0F)))
+
 
 /****************************************************************************
  *           Various datastructures and definitions from olsrd              *
@@ -240,11 +262,9 @@ void (*add_olsr_socket)(int, void(*)(int));
 /* get the link status to a neighbor */
 int (*check_neighbor_link)(union olsr_ip_addr *);
 
-/* Mantissa/exponen conversions */
+/* Mantissa/exponent conversions */
 olsr_u8_t (*double_to_me)(double);
 
-double (*me_to_double)(olsr_u8_t);
-
 /* olsrd printf wrapper */
 int (*olsr_printf)(int, char *, ...);
 
index 1a2e688..6093734 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-/* $Id: olsrd_power.c,v 1.8 2005/04/07 18:22:20 kattemat Exp $ */
+/* $Id: olsrd_power.c,v 1.9 2005/05/25 13:41:47 kattemat Exp $ */
 
 /*
  * Dynamic linked library example for UniK OLSRd
@@ -398,12 +398,12 @@ olsr_parser(union olsr_message *m, struct interface *in_if, union olsr_ip_addr *
   if(ipversion == AF_INET)
     {
       message = &m->v4.msg;
-      vtime = me_to_double(m->v4.olsr_vtime);
+      vtime = ME_TO_DOUBLE(m->v4.olsr_vtime);
     }
   else
     {
       message = &m->v6.msg;
-      vtime = me_to_double(m->v6.olsr_vtime);
+      vtime = ME_TO_DOUBLE(m->v6.olsr_vtime);
     }
 
   /* Check if message originated from this node */