PUD: add getNodeIdType function
[olsrd.git] / lib / pud / src / wireFormat.h
index 00fc02f..728e8b9 100644 (file)
@@ -1,12 +1,12 @@
 #ifndef _PUD_WIREFORMAT_H_
 #define _PUD_WIREFORMAT_H_
 
-/* Plugin includes */
-
-/* OLSR includes */
+/* OLSRD includes */
+#include "olsr_protocol.h"
 
 /* System includes */
 #include <stdint.h>
+#include <time.h>
 
 /*
  * Version
@@ -165,7 +165,7 @@ typedef enum _NodeIdType {
  */
 
 /** Sub-format GPS information, 120 bits = 15 bytes */
-typedef struct {
+typedef struct _GpsInfo {
                uint32_t time :PUD_TIME_BITS; /**< the number of seconds since midnight, ALWAYS present */
                uint32_t lat :PUD_LATITUDE_BITS; /**< latitude */
                uint32_t lon :PUD_LONGITUDE_BITS; /**< longitude */
@@ -176,13 +176,13 @@ typedef struct {
 }__attribute__((__packed__)) GpsInfo;
 
 /** Sub-format Node information, 8 + variable bits = 1 + variable bytes */
-typedef struct {
+typedef struct _NodeInfo {
                uint8_t nodeIdType; /**< the nodeIdType */
                unsigned char nodeId; /**< placeholder for variable length nodeId string */
 }__attribute__((__packed__)) NodeInfo;
 
 /** Complete format, 8+8+8+120+(8+variable) bits =  18+(1+variable) bytes*/
-typedef struct {
+typedef struct _PudOlsrWireFormat {
                uint8_t version; /**< the version of the sentence */
                uint8_t validityTime; /**< the validity time of the sentence */
                uint8_t smask; /**< mask signaling the contents of the sentence */
@@ -193,4 +193,34 @@ typedef struct {
 /** The size of the wire format, minus the size of the node information */
 #define PUD_OLSRWIREFORMATSIZE (sizeof(PudOlsrWireFormat) - sizeof(NodeInfo))
 
+/* ************************************************************************
+ * FUNCTIONS
+ * ************************************************************************ */
+
+unsigned char getValidityTimeForOlsr(unsigned long long validityTime);
+unsigned long getValidityTimeFromOlsr(unsigned char internal);
+
+unsigned long getTimeForOlsr(int hour, int min, int sec);
+void getTimeFromOlsr(uint32_t olsrTime, struct tm *nowStruct);
+
+unsigned long getLatitudeForOlsr(double infoLat);
+double getLatitudeFromOlsr(uint32_t olsrLat);
+
+unsigned long getLongitudeForOlsr(double infoLon);
+double getLongitudeFromOlsr(uint32_t olsrLon);
+
+long getAltitudeForOlsr(double infoElv);
+long getAltitudeFromOlsr(uint32_t olsrAlt);
+
+long getSpeedForOlsr(double infoSpeed);
+unsigned long getSpeedFromOlsr(uint32_t olsrSpeed);
+
+long getTrackForOlsr(double infoTrack);
+unsigned long getTrackFromOlsr(uint32_t olsrTrack);
+
+long getHdopForOlsr(double infoHdop);
+double getHdopFromOlsr(uint32_t olsrHdop);
+
+NodeIdType getNodeIdType(int ipVersion, union olsr_message * olsrMessage);
+
 #endif /* _PUD_WIREFORMAT_H_ */