event void Timer.fired() {
uint32_t nextInt;
- call Leds.led0Toggle();
dbg("TestNetworkC", "TestNetworkC: Timer fired.\n");
nextInt = call Random.rand32() % SEND_INTERVAL;
nextInt += SEND_INTERVAL >> 1;
event void Send.sendDone(message_t* m, error_t err) {
if (err != SUCCESS) {
- // call Leds.led0On();
+ call Leds.led0On();
}
sendBusy = FALSE;
dbg("TestNetworkC", "Send completed.\n");
call Timer.startPeriodic(*newVal);
}
+
+ uint8_t prevSeq = 0;
+ uint8_t firstMsg = 0;
+
event message_t*
Receive.receive(message_t* msg, void* payload, uint8_t len) {
dbg("TestNetworkC", "Received packet at %s from node %hhu.\n", sim_time_string(), call CollectionPacket.getOrigin(msg));
- call Leds.led1Toggle();
- if (!call Pool.size() <= (TEST_NETWORK_QUEUE_SIZE < 4)? 1:3) {
- // call CtpCongestion.setClientCongested(TRUE);
+ call Leds.led1Toggle();
+
+ if (call CollectionPacket.getOrigin(msg) == 1) {
+ if (firstMsg == 1) {
+ if (call CollectionPacket.getSequenceNumber(msg) - prevSeq > 1) {
+ call Leds.led2On();
+ }
+ } else {
+ firstMsg = 1;
+ }
+ prevSeq = call CollectionPacket.getSequenceNumber(msg);
}
+
if (!call Pool.empty() && call Queue.size() < call Queue.maxSize()) {
message_t* tmp = call Pool.get();
call Queue.enqueue(msg);