# HG changeset patch # User Merten Sach # Date 1331648496 -3600 # Node ID 5c0fb7c519d74074a96e4edffb1765c48190497e # Parent b6dd31dbab8ce315c2755214dd3c3a07161b9a99 Check for trigger counter overflow diff -r b6dd31dbab8c -r 5c0fb7c519d7 LossyCom.c --- a/LossyCom.c Mon Mar 12 18:35:10 2012 +0100 +++ b/LossyCom.c Tue Mar 13 15:21:36 2012 +0100 @@ -108,23 +108,30 @@ { msgCopy = localEndpoint->centralExchange->outboxArray[senderEndpointID]; msgTrigger = 0xFFFF & (msgCopy >> TRIGGER_SHIFT); - // check if the message is new (msg trigger > archived trigger) - // and already valid (msgTrigger <= currentTriggerCopy) - if(msgTrigger > localEndpoint->localTriggerCopy && - msgTrigger <= currentTriggerCopy) + + + if(msgTrigger > localEndpoint->localTriggerCopy || + msgTrigger <= currentTriggerCopy) { - //printf("receive search until %d \n", currentTriggerCopy); - //let the message handler parse the message - msgBody = 0xFFFFFFFF & msgCopy; - receiverID = 0xFFFF & (msgCopy >> ENDPOINT_ID_SHIFT); - //only receive broadcast and p2p for own receiverID - if(receiverID == BROADCAST_ID || - receiverID == localEndpoint->endpointID) + // check if the message is new (msg trigger > archived trigger) + // and already valid (msgTrigger <= currentTriggerCopy) + if((msgTrigger > localEndpoint->localTriggerCopy && + msgTrigger <= currentTriggerCopy) || + ((int64_t)currentTriggerCopy- // check for triggerCounterOverflow + (int64_t)localEndpoint->localTriggerCopy < -MAX_TRIGGER/2)) { - (*(localEndpoint->msgHandler))(senderEndpointID, - msgBody, - localEndpoint->msgHandlerData); - } + //let the message handler parse the message + msgBody = 0xFFFFFFFF & msgCopy; + receiverID = 0xFFFF & (msgCopy >> ENDPOINT_ID_SHIFT); + //only receive broadcast and p2p for own receiverID + if(receiverID == BROADCAST_ID || + receiverID == localEndpoint->endpointID) + { + (*(localEndpoint->msgHandler))(senderEndpointID, + msgBody, + localEndpoint->msgHandlerData); + } + } } } senderEndpointID++; diff -r b6dd31dbab8c -r 5c0fb7c519d7 LossyCom.h --- a/LossyCom.h Mon Mar 12 18:35:10 2012 +0100 +++ b/LossyCom.h Tue Mar 13 15:21:36 2012 +0100 @@ -26,6 +26,7 @@ ***********************************/ //never use this number as a endpoint! #define BROADCAST_ID 65535 +#define MAX_TRIGGER 65535 /*********************************** * Type Definitions