[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/net/tymo ForwardingEngineM.nc, 1.1, 1.2
Romain Thouvenin
strabest at users.sourceforge.net
Thu Jul 10 13:15:58 PDT 2008
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/net/tymo
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv966
Modified Files:
ForwardingEngineM.nc
Log Message:
Fixed bug in sendDone signaling
Index: ForwardingEngineM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/net/tymo/ForwardingEngineM.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ForwardingEngineM.nc 18 Feb 2008 20:24:55 -0000 1.1
--- ForwardingEngineM.nc 10 Jul 2008 20:15:56 -0000 1.2
***************
*** 44,48 ****
uint8_t typebuf;
uint8_t lenWaiting;
! uint8_t amWaiting;
am_addr_t bufAddr;
am_addr_t * addrWaiting;
--- 44,48 ----
uint8_t typebuf;
uint8_t lenWaiting;
! uint8_t amWaiting = 0;
am_addr_t bufAddr;
am_addr_t * addrWaiting;
***************
*** 61,64 ****
--- 61,65 ----
call PPacket.setPayloadLength(msg, len);
acks = DYMO_LINK_FEEDBACK && (call Acks.requestAck(msg) == SUCCESS);
+ typebuf = am;
return call SubSend.send(call AMPacket.destination(msg), msg, call SubPacket.payloadLength(msg));
***************
*** 91,99 ****
case FW_SEND:
atomic {
! if(lockAvail)
return msg;
lockAvail = TRUE;
}
if ( signal Intercept.forward[typebuf](msg, call PPacket.getPayload(msg, call PPacket.payloadLength(msg)), call PPacket.payloadLength(msg)) ) {
call SubSend.send(call AMPacket.destination(msg), msg, len);
}
--- 92,103 ----
case FW_SEND:
atomic {
! if (lockAvail) {
! dbg("fwe", "FE: Discarding a received message because no avail buffer.\n");
return msg;
+ }
lockAvail = TRUE;
}
if ( signal Intercept.forward[typebuf](msg, call PPacket.getPayload(msg, call PPacket.payloadLength(msg)), call PPacket.payloadLength(msg)) ) {
+ acks = DYMO_LINK_FEEDBACK && (call Acks.requestAck(msg) == SUCCESS);
call SubSend.send(call AMPacket.destination(msg), msg, len);
}
***************
*** 101,104 ****
--- 105,109 ----
case FW_RECEIVE:
+ dbg("fwe", "FE: Received a message, signaling to upper layer.\n");
payload = call PPacket.getPayload(msg, call PPacket.payloadLength(msg));
return signal Receive.receive[typebuf](msg, payload, call PPacket.payloadLength(msg));
***************
*** 106,111 ****
case FW_WAIT:
atomic {
! if(lockAvail || lockWaiting)
return msg;
lockAvail = lockWaiting = TRUE;
}
--- 111,118 ----
case FW_WAIT:
atomic {
! if(lockAvail || lockWaiting) {
! dbg("fwe", "FE: Discarding a received message because no avail or wait buffer.\n");
return msg;
+ }
lockAvail = lockWaiting = TRUE;
}
***************
*** 118,121 ****
--- 125,129 ----
default:
+ dbg("fwe", "FE: Discarding a received message because I don't know what to do.\n");
return msg;
}
***************
*** 123,128 ****
event void SubSend.sendDone(message_t * msg, error_t e){
! dbg("fwe", "FE: Sending done.\n");
! if( (e == SUCCESS) && acks ){
if( !(call Acks.wasAcked(msg)) ){
e = FAIL;
--- 131,136 ----
event void SubSend.sendDone(message_t * msg, error_t e){
! dbg("fwe", "FE: Sending done...\n");
! if ((e == SUCCESS) && acks) {
if( !(call Acks.wasAcked(msg)) ){
e = FAIL;
***************
*** 132,146 ****
}
} else if (e != SUCCESS) {
! dbg("fwe", "FE: But failed!\n");
signal MHControl.sendFailed(msg, 1);
}
!
! if(lockAvail){
avail = msg;
atomic {
lockAvail = FALSE;
}
} else {
! signal AMSend.sendDone[amWaiting](msg, e);
atomic {
lockWaiting = FALSE;
--- 140,161 ----
}
} else if (e != SUCCESS) {
! dbg("fwe", "FE: ...but failed!\n");
signal MHControl.sendFailed(msg, 1);
}
!
! if (lockAvail) {
avail = msg;
atomic {
lockAvail = FALSE;
}
+ dbg("fwe", "FE: No need to signal sendDone.\n");
} else {
! dbg("fwe", "FE: Signaling sendDone.\n");
! if (amWaiting) {
! signal AMSend.sendDone[amWaiting](msg, e);
! amWaiting = 0;
! } else {
! signal AMSend.sendDone[typebuf](msg, e);
! }
atomic {
lockWaiting = FALSE;
More information about the Tinyos-2-commits
mailing list