]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/tda5250/mac/DuplicateP.nc
remove conflicting entry
[tinyos-2.x.git] / tos / chips / tda5250 / mac / DuplicateP.nc
index e5df65084f862a9eb3c7333bcae6e4616b334a07..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();
@@ -124,6 +128,7 @@ implementation {
 
     /** helper interfaces */
     event void Timer.fired() {
+        call Timer.startOneShot(AGE_INTERVALL);
         post ageMsgsTask();
     }
 
@@ -134,7 +139,7 @@ implementation {
                 knownTable[i].age = MAX_AGE;
             }
         }
-        call Timer.startPeriodic(AGE_INTERVALL);
+        call Timer.startOneShot(AGE_INTERVALL);
         return SUCCESS;
     }
 }