interface SplitControl as RadioControl;
interface ActiveMessageAddress;
+ interface LowPowerListening;
+
+ interface Leds;
}
}
#ifndef SEND_PERIOD
-#define SEND_PERIOD 10
+#define SEND_PERIOD 20
+#endif
+
+#ifndef SLEEP_INTERVAL
+#define SLEEP_INTERVAL 50
#endif
implementation
post radioPowerUp();
else
{
+#ifdef LOW_POWER_LISTENING
+ call LowPowerListening.setLocalWakeupInterval(SLEEP_INTERVAL);
+#endif
call SendTimer.startPeriodic(SEND_PERIOD);
call ReportTimer.startPeriodic(1000);
}
}
uint32_t sendCount;
- uint32_t sendError;
uint32_t sendDoneSuccess;
uint32_t sendDoneError;
uint32_t ackedCount;
event void ReportTimer.fired()
{
+ call Leds.led0Toggle();
+
if( call DiagMsg.record() )
{
call DiagMsg.uint16(sendCount);
- call DiagMsg.uint16(sendError);
call DiagMsg.uint16(sendDoneSuccess);
call DiagMsg.uint16(sendDoneError);
call DiagMsg.uint16(ackedCount);
{
uint16_t addr;
+ call Leds.led1Toggle();
+
call Packet.clear(&txMsg);
call PacketAcknowledgements.requestAck(&txMsg);
+#ifdef LOW_POWER_LISTENING
+ call LowPowerListening.setRemoteWakeupInterval(&txMsg, SLEEP_INTERVAL);
+#endif
addr = call ActiveMessageAddress.amAddress();
if( addr == 2 )
if( call AMSend.send(addr, &txMsg, sizeof(ping_t)) == SUCCESS )
++sendCount;
- else
- ++sendError;
}
event void AMSend.sendDone(message_t* msg, error_t error)