PUD: push olsrMessagePayload determination down into getNodeInfoFromOlsr
authorFerry Huberts <f.huberts@mindef.nl>
Wed, 3 Aug 2011 14:18:23 +0000 (16:18 +0200)
committerFerry Huberts <f.huberts@mindef.nl>
Thu, 18 Aug 2011 13:04:19 +0000 (15:04 +0200)
Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/src/gpsConversion.c
lib/pud/src/nodeIdConversion.c
lib/pud/src/nodeIdConversion.h

index 72feb03..df0a8b0 100644 (file)
@@ -176,8 +176,8 @@ unsigned int gpsFromOlsr(union olsr_message *olsrMessage,
                hdopString[0] = '\0';
        }
 
                hdopString[0] = '\0';
        }
 
-       getNodeInfoFromOlsr(olsrMessage, olsrGpsMessage, &nodeIdString[0],
-                       PUD_TX_NODEID_BUFFERSIZE, &nodeId, &nodeIdTypeString[0]);
+       getNodeInfoFromOlsr(olsrMessage, &nodeIdString[0], PUD_TX_NODEID_BUFFERSIZE,
+                       &nodeId, &nodeIdTypeString[0]);
 
        transmitStringLength = nmea_printf((char *) txGpsBuffer, txGpsBufferSize
                        - 1, "$P%s," /* prefix (always) */
 
        transmitStringLength = nmea_printf((char *) txGpsBuffer, txGpsBufferSize
                        - 1, "$P%s," /* prefix (always) */
index bf70624..81a998c 100644 (file)
@@ -145,8 +145,6 @@ static char *getNodeIdNumberFromOlsr(PudOlsrWireFormat * olsrGpsMessage,
  @param olsrMessage
  A pointer to the OLSR message. Used to be able to retrieve the IP address of
  the sender.
  @param olsrMessage
  A pointer to the OLSR message. Used to be able to retrieve the IP address of
  the sender.
- @param olsrGpsMessage
- A pointer to the GPS message in the OLSR message
  @param nodeIdBuffer
  A pointer to the buffer in which the nodeId string representation can be
  written. Not written to when nodeIdBuffer or nodeId is NULL or when
  @param nodeIdBuffer
  A pointer to the buffer in which the nodeId string representation can be
  written. Not written to when nodeIdBuffer or nodeId is NULL or when
@@ -163,12 +161,20 @@ static char *getNodeIdNumberFromOlsr(PudOlsrWireFormat * olsrGpsMessage,
  written (the buffer needs to be at least PUD_TX_NODEIDTYPE_DIGITS + 1 bytes).
  When NULL then the nodeIdType string is not written.
  */
  written (the buffer needs to be at least PUD_TX_NODEIDTYPE_DIGITS + 1 bytes).
  When NULL then the nodeIdType string is not written.
  */
-void getNodeInfoFromOlsr(const union olsr_message *olsrMessage,
-               PudOlsrWireFormat *olsrGpsMessage, char *nodeIdBuffer,
+void getNodeInfoFromOlsr(union olsr_message *olsrMessage, char *nodeIdBuffer,
                unsigned int nodeIdBufferSize, const char **nodeId,
                char *nodeIdTypeString) {
        int chars;
 
                unsigned int nodeIdBufferSize, const char **nodeId,
                char *nodeIdTypeString) {
        int chars;
 
+       PudOlsrWireFormat *olsrGpsMessage;
+
+       /* determine the originator of the message */
+       if (olsr_cnf->ip_version == AF_INET) {
+               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v4.message;
+       } else {
+               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v6.message;
+       }
+
        if (olsrGpsMessage->smask & PUD_FLAGS_ID) {
                if (likely(nodeIdBuffer && (nodeIdBufferSize != 0) && nodeId)) {
                        switch (olsrGpsMessage->nodeInfo.nodeIdType) {
        if (olsrGpsMessage->smask & PUD_FLAGS_ID) {
                if (likely(nodeIdBuffer && (nodeIdBufferSize != 0) && nodeId)) {
                        switch (olsrGpsMessage->nodeInfo.nodeIdType) {
index 6afe2c0..77aea9b 100644 (file)
@@ -14,8 +14,8 @@
 size_t setupNodeInfoForOlsr(PudOlsrWireFormat * olsrGpsMessage,
                unsigned int olsrMessageSize);
 
 size_t setupNodeInfoForOlsr(PudOlsrWireFormat * olsrGpsMessage,
                unsigned int olsrMessageSize);
 
-void getNodeInfoFromOlsr(const union olsr_message *olsrMessage,
-               PudOlsrWireFormat *olsrGpsMessage, char *nodeIdBuffer,
+void getNodeInfoFromOlsr(union olsr_message *olsrMessage,
+               char *nodeIdBuffer,
                unsigned int nodeIdBufferSize, const char **nodeId,
                char *nodeIdTypeString);
 
                unsigned int nodeIdBufferSize, const char **nodeId,
                char *nodeIdTypeString);