Dear Urs, This is very strange. Can you program a second IRIS mote with the apps/tests/rf230/RF230Sniffer program to record all communications and dump that to a PC? Just upload it, connect it to a PC and on the PC run the java net.tinyos.util.DiagMsg command? You can specify the communication port in the usual format with -comm <source>. This will dump all traffic to the console together with microsecond precision timestamps.
Would be nice to compare the message traces of the 4 setups. Best, Miklos On Wed, Apr 22, 2009 at 3:18 PM, Urs Hunkeler <[email protected]> wrote: > Hi, > > I have written a very simple test app to verify the proper operation of > the acknowledgment mechanism in TinyOS (see below). The program running > on a mote with an ID > 0 sends every second a packet to the mote 0 and > toggles LED 0. If it receives an Ack, it also toggles LED 1. It appears > that: > > TelosB -> TelosB: ack received > TelosB -> Iris : ack received > Iris -> Iris : ack received > > But: > Iris -> TelosB: NO ack > > Is there an incompatibility between the two chips? Any other known > issues? Ideas on how to solve this problem? > > Cheers, > Urs > > ------------------------------------- > #include "test.h" > > module TestC { > uses interface Leds; > uses interface Boot; > uses interface SplitControl as RadioControl; > uses interface AMSend as Send; > uses interface Timer<TMilli> as Timer; > uses interface PacketAcknowledgements as Ack; > } > implementation { > message_t rpacket; > > event void Boot.booted() { > call RadioControl.start(); > } > > event void Timer.fired() { > error_t error; > TestMsg* msg; > > call Leds.led0Toggle(); > > msg = (TestMsg*)call Send.getPayload(&rpacket, sizeof(TestMsg)); > if(msg == NULL) { > call Leds.led2On(); > return; > } > > msg->data = TOS_NODE_ID; > > error = call Ack.requestAck(&rpacket); > if(error != SUCCESS) { > call Leds.led2On(); > return; > } > > error = call Send.send(0, &rpacket, sizeof(TestMsg)); > if(error != SUCCESS) { > call Leds.led2On(); > } > } > > event void RadioControl.startDone(error_t error) { > if(error == SUCCESS) { > if(TOS_NODE_ID > 0) { > call Timer.startPeriodic(1024); > } > } else { > call Leds.led2On(); > } > } > > event void Send.sendDone(message_t* msg, error_t error) { > if(error != SUCCESS) { > call Leds.led2On(); > } > if(call Ack.wasAcked(msg)) { > call Leds.led1Toggle(); > } > } > > event void RadioControl.stopDone(error_t error) { > if(error != SUCCESS) { > call Leds.led2On(); > } > } > } > ------------------------------------- > > _______________________________________________ > Tinyos-help mailing list > [email protected] > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
