Paul,
Really thanks for your responses.I changed the boot times to 1000,each node
is booted at 1000.
And Node 1 is a sender and every 2000MilliSec sends a packet to
"AM_BROADCAST_ADDR" (I also changed it to the numbers ,like 2 or 0).But
still does'nt worked.In the first time AMSend.send returns a SUCCESS But the
AMSend.sendDone event is not signaled to change the busy flag for later
sends.I also chanaged the busy flag to false but next time AMSend.send
doesn't return SUCCESS .
Paul, should i active the ACK manually ? Or It's Automatically?
*for i in range(0, 3):
m = t.getNode(i);
m.bootAtTime(1000);*
This is the Timer.fired event :
*ent void Timer.fired()
{
counter++;
dbg("Base","Timer fired at %s .\n",sim_time_string());
if(!busy)
{
RbsMsg *data = call Packet.getPayload(&pkt,sizeof(RbsMsg));
data->count = counter;
dbg("Base","data in the packet is : %hhu.\n",data->count);
flag = call AMSend.send(2,&pkt,sizeof(RbsMsg));
if( flag == SUCCESS)
{
dbg("Base","Packet sent %hhu.\n",data->count);
busy = TRUE;
counter++;
}
else
dbg("Base","was not SUCCESSFULL %S.\n",sim_time_string());
}
else
dbg("Control", "the busy flag is true.\n",sim_time_string());
*
************
And this is my message struct :
*enum {
TIMER_DELAY = 2000,
AM_Rbs = 6
};
typedef nx_struct RbsMsg
{
nx_uint8_t count;
} RbsMsg;
#endif
*
On Sat, Nov 14, 2009 at 9:51 PM, Paul Johnson <[email protected]> wrote:
> Mojtaba,
>
> Which node is 1 sending to and when??? I see that the node boot times are
> pretty far spaced apart. It could be that if you're sending from 1 to 2,
> node 2 is not booted up when node 1 sends, thus, it will never receive an
> ACK and sendDone will never be called.
>
> -Paul
>
>
> mojtaba raznahan wrote:
>
> Hi Paul,
>
> Thank you very much for answer.
> I checked out this problem,but still doen't work!!
> This is my simulation code and node 1 is the sender node :(Is it correct
> ?)
>
> #! /usr/bin/python
>
> import TOSSIM
> import sys
> import random
>
> from TOSSIM import *
>
> t = TOSSIM.Tossim([])
> r = t.radio();
>
> for i in range(0, 3):
> m = t.getNode(i);
> m.bootAtTime(5000003 * i + 1);
>
> r.add(1,0,-50.0);
> r.add(0,1,-50.0);
> r.add(1,2,-50.0);
> r.add(2,1,-50.0);
> r.add(2,0,-50.0);
> r.add(0,2,-50.0);
>
>
>
> t.addChannel("Boot",sys.stdout);
> t.addChannel("Base",sys.stdout);
> t.addChannel("Receive",sys.stdout);
> t.addChannel("Control",sys.stdout);
>
> for i in range(0, 1000):
> t.runNextEvent();
>
> sincerley,
> Mojtaba
>
>
> On Sat, Nov 14, 2009 at 8:11 PM, Paul Johnson <[email protected]> wrote:
>
>> Mojtaba,
>>
>> Make sure when you are setting up your links in the simulation you set up
>> BOTH directions of the link. For example if you're trying to send something
>> from node 1 to node 2, you need to define the gain for link 1->2 and from
>> 2->1. Otherwise, 1 will be able to send to 2, but 2 will never respond with
>> an ACK.
>>
>> -Paul
>>
>> mojtaba raznahan wrote:
>>
>>
>> Really need your helps...
>>
>> Can't anybody help me ??
>>
>> Does it related to simulation section ??
>>
>>
>>
>>
>>
>> On Tue, Nov 10, 2009 at 10:09 PM, mojtaba raznahan <
>> [email protected]> wrote:
>>
>>> I'm still bickering with this issue...some help plz
>>>
>>>
>>> On Tue, Nov 10, 2009 at 7:44 PM, mojtaba raznahan <
>>> [email protected]> wrote:
>>>
>>>> How can i make sure that the message ACK is active or not ? I have not
>>>> worked with ACK yet
>>>>
>>>>
>>>> On Tue, Nov 10, 2009 at 7:26 PM, Ricardo . <[email protected]>wrote:
>>>>
>>>>> I read one of the threads that the cause of the issue might be the ACK
>>>>> messages. ACK will arrive at the event will never be signaled. If the
>>>>> message ACK is active and no ACK is received sendDone is not signaled.
>>>>>
>>>>>
>>>>> On Tue, Nov 10, 2009 at 3:37 PM, mojtaba raznahan <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Ricardo,
>>>>>>
>>>>>> Thanks for reply. I wrote a dbg statement in first of sendDone event
>>>>>> but ...the sendDone event is not signaled at all!
>>>>>>
>>>>>>
>>>>>> event void AMSend.sendDone(message_t* bufPtr, error_t error)
>>>>>> {
>>>>>> * dbg("Base","sendDone %s .\n",sim_time_string());*
>>>>>>
>>>>>> if (&pkt == bufPtr) {
>>>>>> busy = FALSE;
>>>>>> }
>>>>>>
>>>>>> }
>>>>>>
>>>>>> There isn'nt any statement to print while simulating!!!!
>>>>>>
>>>>>> Really confused! What's your idea ??
>>>>>> Does it related to Radio configuration of simulation code ?(python
>>>>>> code ?)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Nov 10, 2009 at 6:43 PM, Ricardo .
>>>>>> <[email protected]>wrote:
>>>>>>
>>>>>>> Try print the value of error_t error in sendDone event
>>>>>>>
>>>>>>> On Mon, Nov 9, 2009 at 3:53 PM, mojtaba raznahan <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Im writing a simple application to test send and receive of motes
>>>>>>>> .AMSend.send command works but AMSend.sendDone event isn't signaled
>>>>>>>> after
>>>>>>>> sending so the busy flag does'nt change to false. and in the next time
>>>>>>>> the
>>>>>>>> AMSend.send command does not return SUCCESS .
>>>>>>>> this is my code :
>>>>>>>>
>>>>>>>> event void Boot.booted() {
>>>>>>>> dbg("Boot","Booted at time %s .\n",sim_time_string());
>>>>>>>> call AMControl.start();
>>>>>>>> }
>>>>>>>>
>>>>>>>> event void AMControl.startDone(error_t err)
>>>>>>>> {
>>>>>>>> dbg("Control","AMControl started %s .\n",sim_time_string());
>>>>>>>> if(err == SUCCESS) {
>>>>>>>> if(TOS_NODE_ID == 1 ) {
>>>>>>>> dbg("Base","This is the base station...ready for sending packets
>>>>>>>> %s.\n",sim_time_string());
>>>>>>>> call Timer.startPeriodic(TIMER_DELAY);
>>>>>>>> }
>>>>>>>> }
>>>>>>>> else
>>>>>>>> call AMControl.start();
>>>>>>>> }
>>>>>>>>
>>>>>>>> event void AMControl.stopDone(error_t err)
>>>>>>>> {
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> event void Timer.fired()
>>>>>>>> {
>>>>>>>>
>>>>>>>> if(!busy)
>>>>>>>> {
>>>>>>>>
>>>>>>>>
>>>>>>>> RbsMsg* data = (RbsMsg*) ( call
>>>>>>>> Packet.getPayload(&pkt,sizeof(RbsMsg)));
>>>>>>>> data->count = counter;
>>>>>>>> if( call
>>>>>>>> AMSend.send(AM_BROADCAST_ADDR,&pkt,sizeof(RbsMsg)) == SUCCESS)
>>>>>>>> {
>>>>>>>> dbg("Base","Packet sent %s.\n",sim_time_string());
>>>>>>>> busy= TRUE;
>>>>>>>> counter++;
>>>>>>>> }
>>>>>>>> else
>>>>>>>> dbg("Base","was not SUCCESSFULL %s .\n",sim_time_string());
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> --------------------
>>>>>>>> event void AMSend.sendDone(message_t* bufPtr, error_t error)
>>>>>>>> {
>>>>>>>>
>>>>>>>> if (&pkt == bufPtr) {
>>>>>>>> busy = FALSE;
>>>>>>>> dbg("Base","send Done %s .\n",sim_time_string());
>>>>>>>> }
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> and this is my simulation code with python :
>>>>>>>>
>>>>>>>> #! /usr/bin/python
>>>>>>>>
>>>>>>>> import sys
>>>>>>>> import random
>>>>>>>> from TOSSIM import *
>>>>>>>> t = Tossim([])
>>>>>>>> r = t.radio();
>>>>>>>>
>>>>>>>> for i in range (0, 3):
>>>>>>>> m = t.getNode(i);
>>>>>>>> m.bootAtTime(1000 * i+ 1);
>>>>>>>>
>>>>>>>> r.add(1, 0, -54.0);
>>>>>>>> r.add(1, 2, -54.0);
>>>>>>>> r.add(0, 2, -20.0);
>>>>>>>> r.add(2, 0, -20.0);
>>>>>>>>
>>>>>>>>
>>>>>>>> t.addChannel("Boot",sys.stdout);
>>>>>>>> t.addChannel("Base",sys.stdout);
>>>>>>>> t.addChannel("Receive",sys.stdout);
>>>>>>>> t.addChannel("Control",sys.stdout);
>>>>>>>>
>>>>>>>> for i in range(0, 20000):
>>>>>>>> t.runNextEvent();
>>>>>>>>
>>>>>>>>
>>>>>>>> Would you help me please? i really need your helps.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> --
>>>>>>>> Mojtaba Raznahan
>>>>>>>> BS of Computer engineering
>>>>>>>> TMU university
>>>>>>>> www.raznahan.com
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Tinyos-help mailing list
>>>>>>>> [email protected]
>>>>>>>>
>>>>>>>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mojtaba Raznahan
>>>>>> BS of Computer engineering
>>>>>> TMU university
>>>>>> www.raznahan.com
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Tinyos-help mailing list
>>>>> [email protected]
>>>>>
>>>>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Mojtaba Raznahan
>>>> BS of Computer engineering
>>>> TMU university
>>>> www.raznahan.com
>>>>
>>>
>>>
>>>
>>> --
>>> Mojtaba Raznahan
>>> BS of Computer engineering
>>> TMU university
>>> www.raznahan.com
>>>
>>
>>
>>
>> --
>> Mojtaba Raznahan
>> BS of Computer engineering
>> TMU university
>> www.raznahan.com
>>
>> ------------------------------
>>
>> _______________________________________________
>> Tinyos-help mailing
>> [email protected]https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>
>>
>>
>
>
> --
> Mojtaba Raznahan
> BS of Computer engineering
> TMU university
> www.raznahan.com
>
>
>
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help