X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Frf230%2FLowPowerListeningLayerP.nc;h=ef4bac568622da67001c384b7a0f47ca8256962b;hb=adf1de6c009d13b7b52e68535c63b28f59c97400;hp=d4b2ff79836ddf0dc91df659e6793c8082a20474;hpb=79547f031dd94d655523029033804b6c94716e77;p=tinyos-2.x.git diff --git a/tos/chips/rf230/LowPowerListeningLayerP.nc b/tos/chips/rf230/LowPowerListeningLayerP.nc index d4b2ff79..ef4bac56 100644 --- a/tos/chips/rf230/LowPowerListeningLayerP.nc +++ b/tos/chips/rf230/LowPowerListeningLayerP.nc @@ -253,7 +253,7 @@ implementation event void Timer.fired() { - ASSERT( state == LISTEN || state == SLEEP || state == SEND_SUBSEND|| state == SEND_SUBSEND_DONE ); + ASSERT( state == LISTEN || state == SLEEP || state == SEND_SUBSEND || state == SEND_SUBSEND_DONE ); if( state == LISTEN ) state = SLEEP_SUBSTOP; @@ -290,7 +290,7 @@ implementation state = SEND_SUBSTART; else if( state == LISTEN_SUBSTART_DONE ) state = SEND_SUBSTART_DONE; - else if( state == LISTEN_TIMER || state == SLEEP_SUBSTOP|| state == LISTEN ) + else if( state == LISTEN_TIMER || state == SLEEP_SUBSTOP || state == LISTEN ) state = SEND_TIMER; else return EBUSY; @@ -307,12 +307,19 @@ implementation if( state == SEND_SUBSEND ) { call Timer.stop(); - state = LISTEN_TIMER; + state = SEND_DONE; + txError = ECANCEL; post transition(); - // TODO: ask if sendDone should be called after a succesfull cancel return SUCCESS; } + else if( state == SEND_SUBSEND_DONE ) + { + // we stop sending the message even if SubSend.cancel was not succesfull + state = SEND_SUBSEND_DONE_LAST; + + return call SubSend.cancel(txMsg); + } else return FAIL; } @@ -417,23 +424,20 @@ implementation command uint16_t LowPowerListening.getRxSleepInterval(message_t *msg) { if( ! call PacketSleepInterval.isSet(msg) ) - return 0; + return sleepInterval; return call PacketSleepInterval.get(msg); } command void LowPowerListening.setRxDutyCycle(message_t *msg, uint16_t dutyCycle) { - call PacketSleepInterval.set(msg, + call LowPowerListening.setRxSleepInterval(msg, call LowPowerListening.dutyCycleToSleepInterval(dutyCycle)); } command uint16_t LowPowerListening.getRxDutyCycle(message_t *msg) { - if( ! call PacketSleepInterval.isSet(msg) ) - return 10000; - return call LowPowerListening.sleepIntervalToDutyCycle( - call PacketSleepInterval.get(msg)); + call LowPowerListening.getRxSleepInterval(msg)); } }