comparison LossyCom.c @ 3:5c0fb7c519d7

Check for trigger counter overflow
author Merten Sach <msach@mailbox.tu-berlin.de>
date Tue, 13 Mar 2012 15:21:36 +0100
parents b6dd31dbab8c
children 7ba5a3a6102d
comparison
equal deleted inserted replaced
2:9863abc75bad 3:9c4abe9486e0
106 { 106 {
107 if(senderEndpointID != localEndpoint->endpointID) 107 if(senderEndpointID != localEndpoint->endpointID)
108 { 108 {
109 msgCopy = localEndpoint->centralExchange->outboxArray[senderEndpointID]; 109 msgCopy = localEndpoint->centralExchange->outboxArray[senderEndpointID];
110 msgTrigger = 0xFFFF & (msgCopy >> TRIGGER_SHIFT); 110 msgTrigger = 0xFFFF & (msgCopy >> TRIGGER_SHIFT);
111 // check if the message is new (msg trigger > archived trigger) 111
112 // and already valid (msgTrigger <= currentTriggerCopy) 112
113 if(msgTrigger > localEndpoint->localTriggerCopy && 113 if(msgTrigger > localEndpoint->localTriggerCopy ||
114 msgTrigger <= currentTriggerCopy) 114 msgTrigger <= currentTriggerCopy)
115 { 115 {
116 //printf("receive search until %d \n", currentTriggerCopy); 116 // check if the message is new (msg trigger > archived trigger)
117 //let the message handler parse the message 117 // and already valid (msgTrigger <= currentTriggerCopy)
118 msgBody = 0xFFFFFFFF & msgCopy; 118 if((msgTrigger > localEndpoint->localTriggerCopy &&
119 receiverID = 0xFFFF & (msgCopy >> ENDPOINT_ID_SHIFT); 119 msgTrigger <= currentTriggerCopy) ||
120 //only receive broadcast and p2p for own receiverID 120 ((int64_t)currentTriggerCopy- // check for triggerCounterOverflow
121 if(receiverID == BROADCAST_ID || 121 (int64_t)localEndpoint->localTriggerCopy < -MAX_TRIGGER/2))
122 receiverID == localEndpoint->endpointID)
123 { 122 {
124 (*(localEndpoint->msgHandler))(senderEndpointID, 123 //let the message handler parse the message
125 msgBody, 124 msgBody = 0xFFFFFFFF & msgCopy;
126 localEndpoint->msgHandlerData); 125 receiverID = 0xFFFF & (msgCopy >> ENDPOINT_ID_SHIFT);
127 } 126 //only receive broadcast and p2p for own receiverID
127 if(receiverID == BROADCAST_ID ||
128 receiverID == localEndpoint->endpointID)
129 {
130 (*(localEndpoint->msgHandler))(senderEndpointID,
131 msgBody,
132 localEndpoint->msgHandlerData);
133 }
134 }
128 } 135 }
129 } 136 }
130 senderEndpointID++; 137 senderEndpointID++;
131 } 138 }
132 } 139 }