It seems like the ScanP component was calling Radio.off() at a time,
when it didn't own the radio token (anymore). Looking at the code,
this is likely because the ScanTimer is not stopped after the
realignment frame was received. I committed a fix to SVN, please
retry.

Thanks,
Jan


On Fri, Nov 26, 2010 at 3:47 PM, Pablo Marcos
<pablo.marcos.ol...@gmail.com> wrote:
> HI all again,
> I have been adding functionality to my application, and apart of other
> things, I have tried to resynchronize the devices with the MLME_ORPHAN. I
> noticed that after sending with the coordinator the realignment, the device
> wasn't re-synchronizing at all, and was still lost. So, apart from my own
> printf's, I compiled in TKN154_DEBUG mode, and I got this (take note that my
> own printf's appear always before the TKN154_DEBUG ones):
> Coordinator:
> BeaconSynchronizeP:409:Token transferred, will Tx beacon in 322
> BeaconTransmitP:502:Beacon Tx scheduled for 162567148
> BeaconTransmitP:518:Beacon Tx (bsn: 61) success at 162567146
> DispatchSlottedCsmaP:217:Got token, remaining CAP time: 30222
> DispatchSlottedCsmaP:542:CapEndAlarm.fired()
> DispatchSlottedCsmaP:168:updateState() transitions: 7711
> DispatchSlottedCsmaP:382:Handing over to CFP.
> BeaconSynchronizeP:409:Token transferred, will Tx beacon in 322
> Device 847425747 Orphaned. It is on my assocList, so I send a response
> Orphan Response succesfully sent to 0
> BeaconTransmitP:502:Beacon Tx scheduled for 162597866
> BeaconTransmitP:518:Beacon Tx (bsn: 62) success at 162597866
> DispatchSlottedCsmaP:217:Got token, remaining CAP time: 30222
> DispatchSlottedCsmaP:542:CapEndAlarm.fired()
> DispatchSlottedCsmaP:168:updateState() transitions: 776677711
> Device:
> BeaconSynchronizeP:210:Got token (transferred).
> BeaconSynchronizeP:236:Token.transferred(), expecting beacon in 364 symbols.
> BeaconSynchronizeP:312:Rx enabled, expecting beacon within next 278 symbols.
> BeaconSynchronizeP:421:Got beacon - bsn: 61, offset to last: 30718
> BeaconSynchronizeP:447:Handing over to CAP.
> DispatchSlottedCsmaP:217:Got token, remaining CAP time: 30116
> Device 0 SYNC LOST for 1 time with aMaxLostBeacons 1 because of E0. Telling
> coordinator that I am Orphan
> Orphan Request succesfully
> DispatchSlottedCsmaP:542:CapEndAlarm.fired()
> DispatchSlottedCsmaP:168:updateState() transitions: 81
> DispatchSlottedCsmaP:382:Handing over to CFP.
> BeaconSynchronizeP:210:Got token (transferred).
> BeaconSynchronizeP:236:Token.transferred(), expecting beacon in 364 symbols.
> BeaconSynchronizeP:312:Rx enabled, expecting beacon within next 278 symbols.
> BeaconSynchronizeP:385:Missed a beacon (total missed: 1).
> BeaconSynchronizeP:395:MLME_SYNC_LOSS!
> ScanP:176:MLME_SCAN.request -> result: 0
> BeaconSynchronizeP:228:Stop tracking.
> ScanP:255:Scanning channel 20...
> ScanP:363:Received coordinator realignment frame.
> ScanP:302:MLME_SCAN.confirm()
> Assert failed: File: /home/pablo/tinyos-2.1.1/tos/lib/mac/tkn154/RadioC,
> line: 198, function: RadioControlImplP__MacRadioOff__off.
> Assert failed: File: /home/pablo/tinyos-2.1.1/tos/lib/mac/tkn154/RadioC,
> line: 198, function: RadioControlImplP__MacRadioOff__off.
> ...
> I thought that although the coordinator was sending the re-alignment command
> successfully, the device wasn't getting it, but after seeing this, it seems
> that after getting it, it gets some error. It seems the MLME_SCAN.confirm()
> is not completed, and so, the device is not re-aligning with the
> coordinator.
> I have checked the error lines un RadioControlImp as well:
>    async command error_t MacRadioOff.off[uint8_t client]()
>   {
>     if (client == call ArbiterInfo.userId())
>       return call PhyRadioOff.off();
>     else {
>       ASSERT(0);
>       return EBUSY;
>     }
>   }
> but I have no idea why is getting an error in the ASSERT.
> Does anyone have an idea of why this is happening?
> Thanks in advance.
> Regards,
>   Pablo
>
> 2010/11/23 Pablo Marcos <pablo.marcos.ol...@gmail.com>
>>
>> Thanks a lot Jan.
>> The problem is that each time I try to use the default printf in the
>> coordinator, my application loses sync. So right now, the only way I know
>> about getting results is using another node as sniffer (using
>> TestPromiscuous), which seems to work fine and cannot lose sync cause it is
>> not associated and is just listening packets. The problem is that for
>> instante, if you want to know how much packets the coordinator has rx, you
>> cannot guarantee that using another node, obviously.
>> For what Aitor said, it seems the dbg_serial is a lot better than the
>> default one (my nodes doesn't lose sync with TKN154_DEBUG and all their
>> dbg_serial, but do with the default printf), so I was wondering if it would
>> be any way to make the dbg_serial work without having all the TKN154
>> dbg_serial's by default, just the ones that I write "by hand" in my own app.
>> Regards,
>>   Pablo
>> 2010/11/23 Jan Hauer <ha...@tkn.tu-berlin.de>
>>>
>>> On Mon, Nov 22, 2010 at 6:50 PM, Pablo Marcos
>>> <pablo.marcos.ol...@gmail.com> wrote:
>>> > Hi,
>>> > About the TKN154_DEBUG mode, I couldn't get the coordinator compiled
>>> > correctly because of the lack of memory in some tests. I someone faces
>>> > the
>>> > same problem, should try the -Os option to optimize the code and add as
>>> > well
>>> > these few lines to disable in the coordinator some functionalities:
>>> > CFLAGS += -I$(shell pwd)/.. \
>>> > -DIEEE154_SCAN_DISABLED \
>>> > -DIEEE154_BEACON_SYNC_DISABLED \
>>> > -DIEEE154_PROMISCUOUS_MODE_DISABLED \
>>> > This way, there is no error compiling in debug mode. Anyway, does
>>> > anyone
>>> > know how to print using the dbg_serial the TKN has implemented without
>>> > having the default printfs the TKN is showing?
>>>
>>> When TKN154_DEBUG is defined you can also use printf("...") to output
>>> your debug info over serial, but keep in mind that you should be in
>>> sync context (in async command/event handlers you can use
>>> tkn154_dbg_serial(), see tos/lib/mac/tkn154/TKN154_MAC.h line 289). If
>>> you only want your own debug messages, then don't define TKN154_DEBUG,
>>> instead use printf library as described in the tutorial
>>> (http://docs.tinyos.net/index.php/The_TinyOS_printf_Library). To
>>> disable / remove all your debug printf-statements later you can do
>>> something like this:
>>>
>>> #define printf(...)
>>>
>>> > And what about how to know
>>> > how much energy the CC2420 is consuming? It has to be some way to
>>> > measure
>>> > how much time the radio is in each mode, and using the datasheet, know
>>> > how
>>> > much energ is consuming.
>>> > Thanks in advance.
>>> > Regards,
>>> >   Pablo
>>> > 2010/11/19 Aitor Hernandez <aito...@kth.se>
>>> >>
>>> >> Hi,
>>> >> I've tried your app, and it is working with 6 motes + coordinator
>>> >> during
>>> >> ~15min. I don't understand which could be the problem in your case.
>>> >> You
>>> >> could try to change the mote that plays the coordinator role. If your
>>> >> motes
>>> >> are old, it could be a problem.
>>> >> A temporaly solution, coudl be start the MLME_SCAN (startApp();) again
>>> >> after the MLME_SYNC_LOSS but it is not a good idea, because then you
>>> >> won't
>>> >> see this kind of problems.
>>> >> I want to remark what you said about the printf and debug. The printf
>>> >> introduces a lot of delay, around 9x{backoff period}, but if is
>>> >> possible to
>>> >> use TKN154_4, the dbg_serial takes around one backoff period (20
>>> >> symbols).
>>> >> Hence, it is really important to disable them if they are not
>>> >> completely
>>> >> necessary. These values are approximations :P
>>> >> Best regards,
>>> >> Aitor
>>> >>
>>> >> On 18 November 2010 22:48, Pablo Marcos Oltra
>>> >> <pablo.marcos.ol...@gmail.com> wrote:
>>> >>>
>>> >>> Hi,
>>> >>> Thank you very much for your response Aitor. I had two motes running
>>> >>> for
>>> >>> 3 days with BO=14 and I had no problems of sync using the TestSync
>>> >>> application. Not even one beacon was missed. This was the first test
>>> >>> I ran
>>> >>> to check if I was about to have clock drift problems in later
>>> >>> experiments.
>>> >>> I'm currently using channels 19 and 20 because in my building there
>>> >>> are just
>>> >>> a few spare channels to use (20  are mainly being used right now).
>>> >>> Besides,
>>> >>> I always set up BO and SO < 7, using usually 5, but not even that way
>>> >>> works
>>> >>> properly.
>>> >>> Anyway, I don't really know if it has something to do with using
>>> >>> timers,
>>> >>> but I have noticed that the losing of the sync is kind of
>>> >>> periodically. I
>>> >>> have noticed today as well that both devices lose sync even if they
>>> >>> don't
>>> >>> even start at the same time (I was hoping a different periodicity for
>>> >>> each
>>> >>> one), but they both were losing the same beacons. Hence, I'm thinking
>>> >>> right
>>> >>> now about the possibility that it has something to do with the
>>> >>> coordinator,
>>> >>> cause the other two devices are not even tx packets, just trying to
>>> >>> me sync
>>> >>> with the coordinator.
>>> >>> I sent another mail a few days ago to the tinyos-help list cause I
>>> >>> thought that maybe the problems were cause because I was using printf
>>> >>> to
>>> >>> debug the application, but without using it is losing sync as well,
>>> >>> so...
>>> >>> now I'm the one that is lost :S.
>>> >>> Could you please check if the application attached is working for
>>> >>> you? It
>>> >>> is just the original TestData but with a Timer that once is fired
>>> >>> sends the
>>> >>> packets. When I try that, the device loses sync after a while.
>>> >>> Thank you very much in advance.
>>> >>> Regards,
>>> >>>   Pablo
>>> >>> 2010/11/18 Aitor Hernandez <aito...@kth.se>
>>> >>>>
>>> >>>> Hi,
>>> >>>> We have been using this implementation for several wireless process
>>> >>>> and
>>> >>>> we made a performance evaluation of it. We haven't found any problem
>>> >>>> with
>>> >>>> the timers (used to start a transmission, or something else). The
>>> >>>> idea that
>>> >>>> comes up is that maybe there are some interferences on the same
>>> >>>> channel that
>>> >>>> you are using or you have a high beacon order.
>>> >>>> As we have seen, if we receive packets on the period where we are
>>> >>>> waiting the beacon, we could miss them. Moreover I've just realized
>>> >>>> that by
>>> >>>> using a high beacon order (> 10) some motes could have problems to
>>> >>>> synchronize with the beacon. I guess that I could be due to the
>>> >>>> clock drift,
>>> >>>> but Jan can clarify this point.
>>> >>>> What I recommend you, is to use a BO=6 and a SO =5,6 with this
>>> >>>> values
>>> >>>> you shouldn't have any problems.... Furthermore, try to change the
>>> >>>> channel
>>> >>>> and see if the problem persists. Channels between 22 and 26 don't
>>> >>>> have any
>>> >>>> overlapping with WiFi channels.
>>> >>>> At the moment, there is nothing else in my mind. I hope it will work
>>> >>>> for
>>> >>>> you.
>>> >>>> Good luck!
>>> >>>>
>>> >>>> On 18 November 2010 16:27, Pablo Marcos Oltra
>>> >>>> <pablo.marcos.ol...@gmail.com> wrote:
>>> >>>>>
>>> >>>>> I found the error and the UserButton is now working in my test
>>> >>>>> application. So, I wait for 3 nodes to have synchronization and
>>> >>>>> then I push
>>> >>>>> all of their buttons and they start tx data. However, after a
>>> >>>>> while, they
>>> >>>>> lose sync, as always, and I don't know why.
>>> >>>>> Aitor, have you ever used timers that once they're fired they send
>>> >>>>> the
>>> >>>>> data (for example, to send data every minute or so)? Cause I'm
>>> >>>>> having
>>> >>>>> trouble with that (even with just one device), and don't if that
>>> >>>>> could be
>>> >>>>> something related with the problem you told us a few mails ago.
>>> >>>>> Regards,
>>> >>>>>   Pablo
>>> >>>>> 2010/11/18 Aitor Hernandez <aito...@kth.se>
>>> >>>>>>
>>> >>>>>> In my case, I just program all the motes at the same time by using
>>> >>>>>> "&"
>>> >>>>>> function on the shell, something like:
>>> >>>>>> $ make tmote
>>> >>>>>> $ make tmote reinstall,1 bsl,/dev/ttyUSB1 & make tmote
>>> >>>>>> reinstall,2 bsl,/dev/ttyUSB2
>>> >>>>>> By the way, I've been using the UserButton for some time, and I've
>>> >>>>>> never noticed the behaviour you explain, with or without
>>> >>>>>> TKN154_DEBUG
>>> >>>>>> enabled.
>>> >>>>>> Best,
>>> >>>>>> Aitor
>>> >>>>>>
>>> >>>>>> On 18 November 2010 13:28, Pablo Marcos Oltra
>>> >>>>>> <pablo.marcos.ol...@gmail.com> wrote:
>>> >>>>>>>
>>> >>>>>>> May I add other option to the Aitor ones?
>>> >>>>>>> I thought about letting the motes synchronize first, and then
>>> >>>>>>> start
>>> >>>>>>> sending packets once they're all synchronized. How could you do
>>> >>>>>>> this? I have
>>> >>>>>>> tried doing that with the telosb user button, hence once you
>>> >>>>>>> pressed it you
>>> >>>>>>> change a flag that starts sending packets. The problem is that I
>>> >>>>>>> have just
>>> >>>>>>> been able to do that with the TKN154_DEBUG enabled, otherwise,
>>> >>>>>>> the event
>>> >>>>>>> void Notify.notify( button_state_t state ) is not working.
>>> >>>>>>> You can see an example of how to use the telosb user button in
>>> >>>>>>> $TOSROOT/apps/tests/telosb.
>>> >>>>>>> Regards,
>>> >>>>>>>   Pablo
>>> >>>>>>> 2010/11/18 Jan Hauer <ha...@tkn.tu-berlin.de>
>>> >>>>>>>>
>>> >>>>>>>> yes - I can reproduce the problem and also believe that it is
>>> >>>>>>>> due to
>>> >>>>>>>> wrong (beacon) timestamps. will look into it and try to fix it
>>> >>>>>>>> asap.
>>> >>>>>>>>
>>> >>>>>>>> thanks,
>>> >>>>>>>> jan
>>> >>>>>>>>
>>> >>>>>>>> On Thu, Nov 18, 2010 at 10:02 AM, Aitor Hernandez
>>> >>>>>>>> <aito...@kth.se>
>>> >>>>>>>> wrote:
>>> >>>>>>>> > Hi guys,
>>> >>>>>>>> > I've seen this problem with TKN15.4. It is possible to
>>> >>>>>>>> > synchronize
>>> >>>>>>>> > N nodes
>>> >>>>>>>> > with TKN15.4 the problem is that they need to start the app at
>>> >>>>>>>> > the
>>> >>>>>>>> > same
>>> >>>>>>>> > time. From my experience I've realized that the problem comes
>>> >>>>>>>> > from
>>> >>>>>>>> > the
>>> >>>>>>>> > cc2420_tkn154 (maybe it happens with the default cc2420
>>> >>>>>>>> > implementation as
>>> >>>>>>>> > well).
>>> >>>>>>>> > If we have a network with N nodes running and transmitting
>>> >>>>>>>> > data
>>> >>>>>>>> > between
>>> >>>>>>>> > them, when we try to add another node we could have this
>>> >>>>>>>> > problem.
>>> >>>>>>>> > As far as
>>> >>>>>>>> > we have the radio enabled for reception for a long period
>>> >>>>>>>> > (Scan
>>> >>>>>>>> > period), the
>>> >>>>>>>> > cc2420 receives the beacons but data packets as well. Once it
>>> >>>>>>>> > detects that
>>> >>>>>>>> > the received packet is a beacon, it sets the timestamp, but
>>> >>>>>>>> > sometimes the
>>> >>>>>>>> > timestamp is wrong, due to the data packets, and then we lost
>>> >>>>>>>> > the
>>> >>>>>>>> > next
>>> >>>>>>>> > beacons.
>>> >>>>>>>> > Possible solutions:
>>> >>>>>>>> >
>>> >>>>>>>> > Check the CC2420ReceiveP.nc and the m_timestamp_queue. I guess
>>> >>>>>>>> > that the
>>> >>>>>>>> > problem should be there. I did some modifications on
>>> >>>>>>>> > the CC2420ReceiveP.nc to solve this problem, but I haven't
>>> >>>>>>>> > test it
>>> >>>>>>>> > properly.
>>> >>>>>>>> > If we lost the synchronization, scan again
>>> >>>>>>>> > with MLME_SCAN.request(). It is a
>>> >>>>>>>> > "fake" solution, because the problem is still there, but for
>>> >>>>>>>> > some
>>> >>>>>>>> > app it
>>> >>>>>>>> > will work.
>>> >>>>>>>> > Start the nodes at the same time. It is not possible in a real
>>> >>>>>>>> > deployment.
>>> >>>>>>>> >
>>> >>>>>>>> >
>>> >>>>>>>> > --
>>> >>>>>>>> > Aitor Hernandez
>>> >>>>>>>> > KTH | Automatic Control
>>> >>>>>>>> > Research engineer
>>> >>>>>>>> > Stockholm
>>> >>>>>>>> > Phone:  +46 (0)704 26 87 99
>>> >>>>>>>> >
>>> >>>>>>>> > _______________________________________________
>>> >>>>>>>> > 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
>>> >>>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> --
>>> >>>>>> Aitor Hernandez
>>> >>>>>> KTH | Automatic Control
>>> >>>>>> Research engineer
>>> >>>>>> Stockholm
>>> >>>>>> Phone:  +46 (0)704 26 87 99
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> --
>>> >>>> Aitor Hernandez
>>> >>>> KTH | Automatic Control
>>> >>>> Research engineer
>>> >>>> Stockholm
>>> >>>> Phone:  +46 (0)704 26 87 99
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Aitor Hernandez
>>> >> KTH | Automatic Control
>>> >> Research engineer
>>> >> Stockholm
>>> >> Phone:  +46 (0)704 26 87 99
>>> >
>>> >
>>
>
>

_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to