PUD: Introduce an extra 'flags' byte in the wire format
authorFerry Huberts <f.huberts@mindef.nl>
Fri, 21 Oct 2011 14:25:57 +0000 (16:25 +0200)
committerFerry Huberts <f.huberts@mindef.nl>
Fri, 21 Oct 2011 15:30:22 +0000 (17:30 +0200)
And use it for the nodeId flag

Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/wireformat/include/OlsrdPudWireFormat/wireFormat.h
lib/pud/wireformat/src/wireFormat.c

index 89ba219..c5497e0 100644 (file)
  */
 
 /** The version of the wire format */
-#define PUD_WIRE_FORMAT_VERSION                0
+#define PUD_WIRE_FORMAT_VERSION                1
 
 /*
  * Flags
- * We use the smask of nmeaINFO and the flags below on top of that
  */
 
 /** Flags that the GPS information contains the nodeId */
@@ -225,6 +224,7 @@ typedef struct _PudOlsrPositionUpdate {
        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 */
+       uint8_t flags; /**< mask signaling extra contents of the sentence */
        GpsInfo gpsInfo; /**< the GPS information (MANDATORY) */
        NodeInfo nodeInfo; /**< placeholder for node information (OPTIONAL) */
 }__attribute__((__packed__)) PudOlsrPositionUpdate;
@@ -524,6 +524,32 @@ static inline void setPositionUpdateSmask(
        olsrGpsMessage->smask = smask;
 }
 
+/**
+ Get the flags of the position update message
+
+ @param olsrGpsMessage
+ A pointer to the position update message
+ @return
+ The flags of the position update message
+ */
+static inline uint8_t getPositionUpdateFlags(
+               PudOlsrPositionUpdate * olsrGpsMessage) {
+       return olsrGpsMessage->flags;
+}
+
+/**
+ Set the flags of the position update message
+
+ @param olsrGpsMessage
+ A pointer to the position update message
+ @param flags
+ The flags of the position update message
+ */
+static inline void setPositionUpdateFlags(
+               PudOlsrPositionUpdate * olsrGpsMessage, uint8_t flags) {
+       olsrGpsMessage->flags = flags;
+}
+
 /*
  * GpsInfo
  */
@@ -833,7 +859,7 @@ unsigned long long val, unsigned long long min, unsigned long long max,
  */
 static inline NodeIdType getPositionUpdateNodeIdType(int ipVersion,
                PudOlsrPositionUpdate * olsrGpsMessage) {
-       if (getPositionUpdateSmask(olsrGpsMessage) & PUD_FLAGS_ID) {
+       if (getPositionUpdateFlags(olsrGpsMessage) & PUD_FLAGS_ID) {
                return olsrGpsMessage->nodeInfo.nodeIdType;
        }
 
index 654cf1d..3c618f4 100644 (file)
@@ -417,8 +417,8 @@ size_t setPositionUpdateNodeInfo(int ipVersion,
                return 0;
        }
 
-       setPositionUpdateSmask(olsrGpsMessage,
-                       getPositionUpdateSmask(olsrGpsMessage) | PUD_FLAGS_ID);
+       setPositionUpdateFlags(olsrGpsMessage,
+                       getPositionUpdateFlags(olsrGpsMessage) | PUD_FLAGS_ID);
        return ((sizeof(NodeInfo)
                        - (sizeof(olsrGpsMessage->nodeInfo.nodeId) /* nodeId placeholder */))
                        + length);