Most likely this is a bug in your program. How do you know if the second node is receiving the message correctly? How do you know if the second node is sending a message? If you post the files for all of your nodes maybe we can take a look.
- om_p On Feb 4, 2008 1:46 AM, Adriano Pasquali <[EMAIL PROTECTED]> wrote: > Hi everybody, > I have find a possible bug with recieve interface in tinyOS 2.x > I have 3 sensor nodes, the first one periodically (10 s) sends a frame with > AMType=01. The second one receives the frame with AMType=01 and sends a > frame with AMType=02, it has the following configuration and program: > > > > > /***************************** > ***********************************************************************/ > > > configuration ApplicazSensor1C { } > implementation > { > components ApplicazSensor1P, MainC, ActiveMessageC, LedsC, > new TimerMilliC(), > new AMSenderC(AM_SENSOR1), new AMReceiverC(AM_RX_OBD); > ApplicazSensor1P.Boot -> MainC; > ApplicazSensor1P.RadioControl -> ActiveMessageC; > ApplicazSensor1P.AMSend -> AMSenderC; > ApplicazSensor1P.Receive -> AMReceiverC; > ApplicazSensor1P.Timer -> TimerMilliC; > > ApplicazSensor1P.Leds -> LedsC; > > > } > > /******************************************************************************************************/ > > > /*************SENSOR1.h********************************************/ > > #ifndef SENSOR1_H > #define SENSOR1_H > > enum { > > AM_RX_OBD=0X01, //recive with AM_type 01 > AM_SENSOR1 = 0x02 //send with AM_type 02 > }; > > > > > > > > > > > > /*************************************************************************************/ > > > > > /***********************PROGRAM**************************************************/ > > #include "Timer.h" > #include "SENSOR1.h" > > module ApplicazSensor1P > { > uses { > interface Boot; > interface SplitControl as RadioControl; > interface AMSend; > interface Receive; > interface Timer<TMilli>; > > interface Leds; > } > } > implementation > { > message_t sendbuf; > > > > void report_problem() { call Leds.led0Toggle(); } > void report_sent() { call Leds.led1Toggle(); } > void report_received() { call Leds.led2Toggle(); } > > event void Boot.booted() { > > if (call RadioControl.start() != SUCCESS) > report_problem(); > } > > > > event void RadioControl.startDone(error_t error) { > > } > > event void RadioControl.stopDone(error_t error) { > } > > > > > > event message_t* Receive.receive(message_t* msg, void* payload, uint8_t > len) { //recieve frame AM_type 01 > > report_received(); > > > call Timer.startOneshot(2000); //start timer for sending frame AM_type > 02 > > return msg; > } > > > event void Timer.fired() {//INIT EVENTO > > > sendbuf.data[0]=0xff; > call AMSend.send(AM_BROADCAST_ADDR, &sendbuf, 1); //send frame AM_type > 02 > > > > } //FINE > > event void AMSend.sendDone(message_t* msg, error_t error) { > if (error == SUCCESS){ // SE E' STATO SPEDITO CON SUCCESSO > > call Leds.led0Toggle(); > > } > > else{report_problem();} > > > > } > > > } > > /********************************************************************************************/ > > > > > > > The third node is a sniffer with the program BaseStation furnished by > TinyOS2X. > > The base station always sends to the UART the received frame with AMType=01 > and rarely the frame with AMType=02, even if the second node always sends > the frame with AMType=02 when it receives the one with AMType=01. > This has been verified with sniffer Integration 802.15.4/Zigbee Dongle. > Can anyone help me to solve this bad behavior? > Thank you, > Adriano > _______________________________________________ > Tinyos-help mailing list > Tinyos-help@millennium.berkeley.edu > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > _______________________________________________ Tinyos-help mailing list Tinyos-help@millennium.berkeley.edu https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help