]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/net/lqi/LqiForwardingEngineP.nc
Call is needed.
[tinyos-2.x.git] / tos / lib / net / lqi / LqiForwardingEngineP.nc
index c1481d9eb7ba8f8184bcd705d200794c0c569eb0..c52e80b412467859b2155afc82445ace9d04cc04 100644 (file)
@@ -248,6 +248,10 @@ implementation {
       if (call SubSend.send(call AMPacket.destination(msg),
                            msg,
                            call SubPacket.payloadLength(msg)) == SUCCESS) {
+       call CollectionDebug.logEventMsg(NET_C_DBG_1, 
+                                        call CollectionPacket.getSequenceNumber(msg), 
+                                        call CollectionPacket.getOrigin(msg), 
+                                        call AMPacket.destination(msg));
        dbg("LQI", "%s: Send to %hu success.\n", __FUNCTION__, call AMPacket.destination(msg));
       }
       fwdbusy = TRUE;
@@ -260,14 +264,16 @@ implementation {
     len -= sizeof(lqi_header_t);
 
     call CollectionDebug.logEventMsg(NET_C_FE_RCV_MSG, 
-                                    call CollectionPacket.getTestNetworkSeq(msg), 
+                                    call CollectionPacket.getSequenceNumber(msg), 
                                     call CollectionPacket.getOrigin(msg), 
                                     call AMPacket.destination(msg));
-
     if (call RootControl.isRoot()) {
       dbg("LQI,LQIDeliver", "LQI Root is receiving packet from node %hu @%s\n", getHeader(msg)->originaddr, sim_time_string());
       return signal Receive.receive[id](msg, payload, len);
     }
+    else if (call AMPacket.destination(msg) != call AMPacket.address()) {
+      return msg;
+    }
     else if (signal Intercept.forward[id](msg, payload, len)) {
       dbg("LQI,LQIDeliver", "LQI fwd is forwarding packet from node %hu @%s\n", getHeader(msg)->originaddr, sim_time_string());
       return mForward(msg);
@@ -279,7 +285,7 @@ implementation {
   
   message_t* nextMsg() {
     int i;
-    int inc = call Random.rand16();
+    uint16_t inc = call Random.rand16() & 0xfff;
     for (i = 0; i < FWD_QUEUE_SIZE; i++) {
       int pindex = (i + inc) % FWD_QUEUE_SIZE;
       if (FwdBufBusy[pindex]) {
@@ -302,14 +308,14 @@ implementation {
                            call SubPacket.payloadLength(msg)) == SUCCESS) {
        dbg("LQI", "Packet not acked, retransmit @%s:\n\t%s\n", sim_time_string(), fields(msg));
         call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_WAITACK, 
-                                        call CollectionPacket.getTestNetworkSeq(msg), 
+                                        call CollectionPacket.getSequenceNumber(msg), 
                                         call CollectionPacket.getOrigin(msg), 
                                          call AMPacket.destination(msg));
        fail_count ++;
        return;
       } else {
        call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL, 
-                                        call CollectionPacket.getTestNetworkSeq(msg), 
+                                        call CollectionPacket.getSequenceNumber(msg), 
                                         call CollectionPacket.getOrigin(msg), 
                                          call AMPacket.destination(msg));
        dbg("LQI", "Packet not acked, retransmit fail @%s:\n\t%s\n", sim_time_string(), fields(msg));
@@ -319,7 +325,7 @@ implementation {
     }
     else if (fail_count >= 5) {
       call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL_ACK_FWD, 
-                                      call CollectionPacket.getTestNetworkSeq(msg), 
+                                      call CollectionPacket.getSequenceNumber(msg), 
                                       call CollectionPacket.getOrigin(msg), 
                                       call AMPacket.destination(msg));
       dbg("LQI", "Packet failed:\t%s\n", fields(msg));
@@ -327,7 +333,7 @@ implementation {
     else if (call PacketAcknowledgements.wasAcked(msg)) {
       dbg("LQI", "Packet acked:\t%s\n", fields(msg));
       call CollectionDebug.logEventMsg(NET_C_FE_FWD_MSG, 
-                                      call CollectionPacket.getTestNetworkSeq(msg), 
+                                      call CollectionPacket.getSequenceNumber(msg), 
                                       call CollectionPacket.getOrigin(msg), 
                                       call AMPacket.destination(msg));
     }
@@ -359,14 +365,14 @@ implementation {
                            call SubPacket.payloadLength(msg)) == SUCCESS) {
        dbg("LQI", "Packet not acked, retransmit (%hhu) @%s:\n\t%s\n", fail_count, sim_time_string(), fields(msg));
        call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_WAITACK, 
-                                        call CollectionPacket.getTestNetworkSeq(msg), 
+                                        call CollectionPacket.getSequenceNumber(msg), 
                                         call CollectionPacket.getOrigin(msg), 
                                          call AMPacket.destination(msg));
        fail_count ++;
        return;
       } else {
        call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL, 
-                                        call CollectionPacket.getTestNetworkSeq(msg), 
+                                        call CollectionPacket.getSequenceNumber(msg), 
                                         call CollectionPacket.getOrigin(msg), 
                                          call AMPacket.destination(msg));
        dbg("LQI", "Packet not acked, retransmit fail @%s:\n\t%s\n", sim_time_string(), fields(msg));
@@ -376,7 +382,7 @@ implementation {
     }
     else if (fail_count >= 5) {
       call CollectionDebug.logEventMsg(NET_C_FE_SENDDONE_FAIL_ACK_SEND, 
-                                      call CollectionPacket.getTestNetworkSeq(msg), 
+                                      call CollectionPacket.getSequenceNumber(msg), 
                                       call CollectionPacket.getOrigin(msg), 
                                       call AMPacket.destination(msg));
       dbg("LQI", "Packet failed:\t%s\n", fields(msg));
@@ -384,7 +390,7 @@ implementation {
     else if (call PacketAcknowledgements.wasAcked(msg)) {
       dbg("LQI", "Packet acked:\t%s\n", fields(msg));
       call CollectionDebug.logEventMsg(NET_C_FE_SENT_MSG, 
-                                      call CollectionPacket.getTestNetworkSeq(msg), 
+                                      call CollectionPacket.getSequenceNumber(msg), 
                                       call CollectionPacket.getOrigin(msg), 
                                       call AMPacket.destination(msg));
     }
@@ -504,11 +510,6 @@ implementation {
     hdr->originseqno = seqno;
   }
 
-  command uint16_t CollectionPacket.getTestNetworkSeq(message_t* msg) {
-    TestNetworkMsg *tn;
-    tn = (TestNetworkMsg *)call Packet.getPayload(msg, NULL);
-    return tn->seqno;
-  }
 
   
  default event void Send.sendDone(message_t* pMsg, error_t success) {}