Unless you have some randomisation before you transmit packets, sounds like your packets are interfering with each other. SendDone can be signaled even if packet's lost in propagation (I think..).
> -----Original Message----- > From: tinyos-help-boun...@millennium.berkeley.edu > [mailto:tinyos-help-boun...@millennium.berkeley.edu]on Behalf Of Simon > Eberz > Sent: 28 October 2010 18:42 > To: tinyos-help@millennium.berkeley.edu > Subject: [Tinyos-help] Broadcast packet not received by all motes > > > Hi, > > I'm implementing a simple message exchange between two motes > (to measure > the RSSI, but this is not of interest) and > send the messages as broadcasts. > I'm using the TinyOS Basestation application with the Listen-Tool to > check which messages have been sent. > Here's the problem: I have two motes (call them A and B) with nearly > identical code flashed to them. > A sends a message (broadcast), and after that each mote will > send a new > broadcast after receiving a packet. > All messages sent by A are also received, and thus displayed, by the > BaseStation-mote, and the LEDs indicate that > all messages are also received by B [otherwise only one > message would be > sent anyway]. > But, when B sends a message, it seems to be received by A [as > A responds > with yet another packet], but is not displayed > by the BaseStation-App. I tried to verify this by flashing a > third mote > with custom code, same issue. > If I just call the SendProbe-method [see below] on mote B it > works fine > and switching motes doesn't help either. > LEDs suggest that the SendDone-Event is triggered on both motes. > Ultimately, it seems that the broadcasts are only received by > the mote > from which the last message was received (?). > Is there any property of broadcasts that I am not aware of? > Here is the (relevant) code I use: > > void SendProbe(){ > probe = (ProbeMsg*)(call Packet.getPayload(&pkt,NULL)); > probe->source = 1; > probe->counter = counter; > call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(ProbeMsg)); > } > > event message_t * Receive.receive(message_t *msg, void *payload, > uint8_t len){ > if(len==sizeof(ProbeMsg)){ > probe = (ProbeMsg*)payload; > call Timer.startOneShot(DELAY_BETWEEN_PROBES); > } > return msg; > } > > event void Timer.fired(){ > SendProbe(); > } > > > Thanks for your help > _______________________________________________ > Tinyos-help mailing list > Tinyos-help@millennium.berkeley.edu > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/t inyos-help Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 _______________________________________________ Tinyos-help mailing list Tinyos-help@millennium.berkeley.edu https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help