]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
include target address in fingerprint
authorandreaskoepke <andreaskoepke>
Wed, 5 Mar 2008 11:19:50 +0000 (11:19 +0000)
committerandreaskoepke <andreaskoepke>
Wed, 5 Mar 2008 11:19:50 +0000 (11:19 +0000)
tos/chips/tda5250/mac/Duplicate.h
tos/chips/tda5250/mac/Duplicate.nc
tos/chips/tda5250/mac/DuplicateP.nc

index 00c853d6e4223ec081b7d81e2855fd01e0cf3d77..ec2e9d98913fe66c2e4a4ec43a979083225e0b80 100644 (file)
@@ -36,6 +36,7 @@
 
 typedef struct known_t {
     am_addr_t src;
+    am_addr_t dest;
     uint8_t seqno;
     uint8_t age;
 } known_t;
index 2b3a19c11555a5fa3e49f36875580dc91ad99ebf..0802d2ef412dd270364066bb525b449eacef6a75 100644 (file)
@@ -35,9 +35,9 @@
 
 interface Duplicate {
     /** check whether this message is a new message, does not store anything */
-    async command bool isNew(am_addr_t src, uint8_t seqno);
+    async command bool isNew(am_addr_t src, am_addr_t dest, uint8_t seqno);
 
     /** remember the fingerprint of this message, stores/updates the information */
-    async command void remember(am_addr_t src, uint8_t seqno);
+    async command void remember(am_addr_t src, am_addr_t dest, uint8_t seqno);
 }
 
index f1e8598ee991e5b3d5e127c28d9407ef2e6fdc0f..7027d257462ff5947b10a7f0bc10c65e02c5aa8f 100644 (file)
@@ -56,10 +56,12 @@ implementation {
     task void dump() {
         sdDebug(3000 + last);
         sdDebug(dupOldest.src);
+        sdDebug(dupOldest.dest);
         sdDebug(dupOldest.seqno);
         sdDebug(dupOldest.age);
         sdDebug(4000);
         sdDebug(knownTable[last].src);
+        sdDebug(knownTable[last].dest);
         sdDebug(knownTable[last].seqno);
         sdDebug(knownTable[last].age);
         sdDebug(5000);
@@ -92,12 +94,13 @@ implementation {
     }
 
     /*** duplicate interface */
-    async command bool Duplicate.isNew(am_addr_t src, uint8_t seqno) {
+    async command bool Duplicate.isNew(am_addr_t src, am_addr_t dest, uint8_t seqno) {
         bool rVal = TRUE;
         unsigned i;
         for(i=0; i < TABLE_ENTRIES; i++) {
             if((knownTable[i].age < MAX_AGE) &&
                (src == knownTable[i].src) &&
+               (dest == knownTable[i].dest) &&
                (seqno == knownTable[i].seqno)) {
                 knownTable[i].age = 0;
                 rVal = FALSE;
@@ -109,7 +112,7 @@ implementation {
         return rVal;
     }
     
-    async command void Duplicate.remember(am_addr_t src, uint8_t seqno) {
+    async command void Duplicate.remember(am_addr_t src, am_addr_t dest, uint8_t seqno) {
         unsigned oldest = findOldest();
 #ifdef DUPLICATE_DEBUG
         dupOldest = knownTable[oldest];
@@ -117,6 +120,7 @@ implementation {
         post dump();
 #endif
         knownTable[oldest].src = src;
+        knownTable[oldest].dest = dest;
         knownTable[oldest].seqno = seqno;
         knownTable[oldest].age = 0;
         post ageMsgsTask();