interface LowPowerListeningConfig
{
/**
- * Returns TRUE if an acknowledgement is requested for this message.
+ * Returns TRUE if an acknowledgement should be requested
+ * for the message automatically by the LPL code (this should
+ * normally happen for all non-broadcast messages).
*/
- async command bool getAckRequired(message_t* msg);
+ command bool needsAutoAckRequest(message_t* msg);
+
+ /**
+ * Returns TRUE if an acknowledgement has been requested for
+ * this message via the PacketAcknowledgements interface.
+ */
+ command bool ackRequested(message_t* msg);
}
else
return EBUSY;
+ if( call Config.needsAutoAckRequest(msg) )
+ call PacketAcknowledgements.requestAck(msg);
+
txMsg = msg;
txError = FAIL;
if( error != SUCCESS
|| call LowPowerListening.getRemoteWakeupInterval(msg) == 0
|| state == SEND_SUBSEND_DONE_LAST
- || (call Config.getAckRequired(msg) && call PacketAcknowledgements.wasAcked(msg)) )
+ || (call Config.ackRequested(msg) && call PacketAcknowledgements.wasAcked(msg)) )
{
call Timer.stop();
state = SEND_DONE;
#ifdef LOW_POWER_LISTENING
- async command bool LowPowerListeningConfig.getAckRequired(message_t* msg)
+ command bool LowPowerListeningConfig.needsAutoAckRequest(message_t* msg)
+ {
+ return call Ieee154PacketLayer.getDestAddr(msg) != TOS_BCAST_ADDR;
+ }
+
+ command bool LowPowerListeningConfig.ackRequested(message_t* msg)
{
return call Ieee154PacketLayer.getAckRequired(msg);
}
#ifdef LOW_POWER_LISTENING
- async command bool LowPowerListeningConfig.getAckRequired(message_t* msg)
+ command bool LowPowerListeningConfig.needsAutoAckRequest(message_t* msg)
+ {
+ return call Ieee154PacketLayer.getDestAddr(msg) != TOS_BCAST_ADDR;
+ }
+
+ command bool LowPowerListeningConfig.ackRequested(message_t* msg)
{
return call Ieee154PacketLayer.getAckRequired(msg);
}