Hi
You were right. The problem was that I had macRxOnWhenIdle set to TRUE since 
the beginning of the app. The main reason is that I needed all nodes ON during 
a short time interval to conduct a network formation procedure. After that 
interval and once the network is formed, macRxOnWhenIdle should be set to FALSE 
because MLME_RX_ENABLE enables the receiver during the predefined ON period so 
you wouldn't have problems receiving information from other devices.
Thanks Jan for your help
David



> Date: Thu, 22 Nov 2012 15:04:59 +0000
> Subject: Re: [Tinyos-help] Sleeping in TKN154
> From: ha...@tkn.tu-berlin.de
> To: drod...@outlook.com
> CC: tinyos-help@millennium.berkeley.edu
> 
> Hi David,
> 
> I just did a small test and for me it worked, maybe you are
> accidentally setting the macRxOnWhenIdle attribute to TRUE? You find
> my test code below, e.g. copy into
> apps/tests/tkn154/nonbeacon-enabled/TestActiveScan/coordinator/TestActiveScanCoordC
> (and to verify set an LED in void offSpiReserved() and reset the same
> LED in ReliableWait.waitRxDone(), in
> tos/chips/cc2420_tkn154/CC2420TKN154P.nc).
> 
> Jan
> 
> 
> 
>   event void Boot.booted() {
>     call MLME_RESET.request(TRUE);
>   }
> 
>   event void MLME_RESET.confirm(ieee154_status_t status) {
>     if (status != IEEE154_SUCCESS)
>       return;
>     call MLME_SET.macShortAddress(COORDINATOR_ADDRESS);
>     call MLME_SET.macAssociationPermit(FALSE);
>     //call MLME_SET.macRxOnWhenIdle(TRUE);
>     call MLME_START.request(
>                           PAN_ID,           // PANId
>                           RADIO_CHANNEL,    // LogicalChannel
>                           0,                // ChannelPage,
>                           0,                // StartTime,
>                           15,               // BeaconOrder
>                           15,               // SuperframeOrder
>                           TRUE,             // PANCoordinator
>                           FALSE,            // BatteryLifeExtension
>                           FALSE,            // CoordRealignment
>                           NULL,             // no realignment security
>                           NULL              // no beacon security
>                         );
>   }
> 
>   event void MLME_START.confirm(ieee154_status_t status)
>   {
>     call Led1Timer.startPeriodic(62500U); // fire timer every 1 sec
>   }
> 
>   event void MLME_RX_ENABLE.confirm( ieee154_status_t status)
>   {
>     if (status == IEEE154_SUCCESS)
>       call Leds.led0Toggle();
>   }
> 
>   event void Led1Timer.fired() {
>     call MLME_RX_ENABLE.request(FALSE, 0, 31250); // enable RX for 0.5 sec
>   }
> 
> 
> 
> On Wed, Nov 21, 2012 at 12:16 PM, David Rodenas <drod...@outlook.com> wrote:
> > Hi Jan
> >
> > I asked about switching off periodically the radio transceiver in order to
> > plan a duty cycle. Then, you told me I should use the MLME_RX_ENABLE
> > interface provided by the Ieee802154NonBeaconEnabledC component. Well, I've
> > done that, I mean, I've set a timer which represents a wakeup interval that
> > when it expires, it should activate the radio transceiver during a time
> > interval equal to RxOnDuration. My problem is that I'm not really sure if
> > this really works. The reason is that a mote acting as a receiver node
> > receives data when it should be sleeping! Here a brief explanation of my
> > test with pseudocode:
> >
> > start() // the app starts
> > {
> >    initialize Rx_enable component (call Init.init(););
> >    start periodic wakeup interval wiTimer;
> >    call MLM_RX_ENABLE(RxOnDuration);
> > }
> >
> > MLME_RX_Enable.confirm() {} // It confirms that the radio is enabled
> >
> > wiTimer.fired () // the witimer expires
> > {
> >    /*
> >     * Here I should call again MHME_RX_ENABLE with RxOnDuration.
> >     * call MLME_RX_ENABLE(RxOnDuration);
> >     * However, to this test, I do not make the call. As a result, the
> >     * radio should be disabled and the node cannot receive anything
> >     */
> >     return;
> > }
> >
> > recv() // receive data (MCPS_DATA.indication())
> > {
> >    // Here I have another node that periodically broadcasts a message.
> >    // When this message is received, it activates one of the receiver
> > node'leds.
> > }
> >
> > What am I considering that it's wrong? Does MHME_RX_ENABLE really work and
> > after RxOnDuration, the radio goes to sleep mode?
> >
> > Thanks,
> >
> > David
> >
> >
> >
> >> Date: Wed, 14 Nov 2012 12:45:25 +0100
> >> Subject: Re: [Tinyos-help] Sleeping in TKN154
> >> From: ha...@tkn.tu-berlin.de
> >> To: drod...@outlook.com
> >> CC: tinyos-help@millennium.berkeley.edu
> >>
> >> Hi David,
> >>
> >> there are two places where you can implement such duty-cycling: (a) on
> >> top of the MAC: your component would wire to MLME_RX_ENABLE interface
> >> provided by Ieee802154NonBeaconEnabledC and you would have a periodic
> >> timer that fires at the desired ON-Time. In the event-handler you
> >> would call MLME_RX_ENABLE with a "RxOnDuration" parameter matching
> >> your ON-time interval. If timers are not accurate enough for you
> >> (because they fire in task context), you (b) could use Alarms instead.
> >> Then you would have to modify the MAC. You could extend RxEnableP with
> >> your own async duty-cycle configuration interface and also modify its
> >> interface towards DispatchUnslottedCsmaP (which you would also have to
> >> extend / make async). Unless you need such accurate timing, you'd
> >> probably go for option (a) -> you can make some tests to find out
> >> when the radio actually changed state (to see if it satisfies your
> >> timing requirements): just set the "tkn154debug" flag and you will get
> >> statistics via printf (see apps/tests/tkn154/README.txt for details).
> >>
> >> Jan
> >>
> >> On Wed, Nov 14, 2012 at 11:32 AM, David Rodenas <drod...@outlook.com>
> >> wrote:
> >> > Hi all
> >> >
> >> > I am interseted in programming a duty-cycling scheme by making use of
> >> > the
> >> > TKN154 libraries. In particular, I want to induce the motes to periods
> >> > of
> >> > activity (ON) and inactivity (OFF) over the IEEE 802.15.4 non-beacon
> >> > mode.
> >> > As example:
> >> >
> >> >
> >> > ||+------------+---------------------+------------+---------------------+------------+-------------------
> >> > ||+ ON | OFF | ON | OFF
> >> > | ON | OFF ...
> >> >
> >> > ||+------------+---------------------+------------+---------------------+------------+-------------------
> >> > ||+ IEEE 802.15.4 NON-BEACON MODE
> >> > ...
> >> >
> >> > ||+---------------------------------------------------------------------------------------------------------
> >> >
> >> > My problem is not how to sinchronize nodes for transmission and
> >> > reception;
> >> > it's knowing which components or libraries can I use to control de
> >> > CC2420,
> >> > and switch the radio ON/OFF periodocally. I've been trying to figure out
> >> > how
> >> > to do it through the LowPowerListening component (but I cannot use it
> >> > because my protocol does not requires the transmission of preambles), or
> >> > taking shots in the dark with the TKN files at /tos/lib/mac/tkn154, but
> >> > I am
> >> > completely lost.
> >> >
> >> > Please, any help possible would be appreciated.
> >> >
> >> > Thanks
> >> >
> >> > David
> >> >
> >> > _______________________________________________
> >> > 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
                                          
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to