2
On Nov 14, 2006, at 12:58 PM, ricardo tiago wrote:

Hi
i've made a program that sends 3 messages to his neighbors, but if i send the messages in a consecutive way , only the last message is received. If i send the first message then wait a x'time , send the second message and wait again the x'time, etc, the 3 messages are received by the 3 nodes.

Sending 3 consecutive messages...
for ( NeighsPos = 0; NeighsPos < size ; NeighsPos ++) {
dbg("DominantSet","Sending Packet Neighbor Table to Neighbor %d \n",Neighs[NeighsPos]);
    call AMSend.send(Neighs[NeighsPos],&pkt,sizeof(DominantSetMsg));
}

i get in TOSSIM ...
DEBUG (2): Sending Packet Neighbor Table to Neighbor 0
DEBUG (2): Sending Packet Neighbor Table to Neighbor 1
DEBUG (2): Sending Packet Neighbor Table to Neighbor 3

Only the last Neighbor 3 receives the message. I think i know what is the problem. Its probably because i'm not waiting for SendDone before calling again AMSend.send. But isn't there a queue associated with the command send? or am i wrong?

There is a queue: it's depth one. You cannot call send twice in a row. You must wait for sendDone. You can safely call send() in the sendDone() event. If you want a deeper queue you need to instantiate a QueueC and probably a PoolC so you have more than one buffer.

Please read TEP 116: Packet Protocols.

Phil

_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to