From e3afaa47613429e2cf3a65361cd2c20e01a5c2c8 Mon Sep 17 00:00:00 2001 From: andreaskoepke Date: Wed, 5 Mar 2008 11:19:50 +0000 Subject: [PATCH] include target address in fingerprint --- tos/chips/tda5250/mac/Duplicate.h | 1 + tos/chips/tda5250/mac/Duplicate.nc | 4 ++-- tos/chips/tda5250/mac/DuplicateP.nc | 8 ++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tos/chips/tda5250/mac/Duplicate.h b/tos/chips/tda5250/mac/Duplicate.h index 00c853d6..ec2e9d98 100644 --- a/tos/chips/tda5250/mac/Duplicate.h +++ b/tos/chips/tda5250/mac/Duplicate.h @@ -36,6 +36,7 @@ typedef struct known_t { am_addr_t src; + am_addr_t dest; uint8_t seqno; uint8_t age; } known_t; diff --git a/tos/chips/tda5250/mac/Duplicate.nc b/tos/chips/tda5250/mac/Duplicate.nc index 2b3a19c1..0802d2ef 100644 --- a/tos/chips/tda5250/mac/Duplicate.nc +++ b/tos/chips/tda5250/mac/Duplicate.nc @@ -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); } diff --git a/tos/chips/tda5250/mac/DuplicateP.nc b/tos/chips/tda5250/mac/DuplicateP.nc index f1e8598e..7027d257 100644 --- a/tos/chips/tda5250/mac/DuplicateP.nc +++ b/tos/chips/tda5250/mac/DuplicateP.nc @@ -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(); -- 2.39.2