Jiwen,

 

This is regarding the LPL support of the rf230, it may not apply to the
cc2420:

 

1.       When you send a packet, you need to set the rx sleep interval
on a per packet basis, the value of which should be the local sleep
interval of the recipient. You need to call setRxSleepInterval before
calling AMSend.send(). You do not need to send any wake-up packets, the
radio stack will take care of that.

2.       ACKs are handled below the AM layer, so you can't see them with
Snoop.  You can use the PacketAcknowledgements interface to check if a
packet was acked. (Note that broadcasts are never acknowledged.)

3.       Yes.

 

Janos

 

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of jiwen
zhang
Sent: Wednesday, May 28, 2008 9:03 PM
To: David Moss
Cc: tinyos-help
Subject: Re: [Tinyos-help] About LowPowerListening

 

Hello David : 

   about the command setRxSleepInterval() , i want to ask some questions
again .

   1. In my test , the sender and receiver have the same duty cycle
(sleep interval ?) , for example 250ms , how long should i send the
wake-up packet before i send my data ? that is to say that what should i
set the  parameter of setRxSleepInterval before i use the command
AMSend.send() to send my useful datas ? 

    in my test , i set it equal to sleep interval , i find there is no
lost packet .  

   2. If the receiver receives the packet , it will give the sender an
acknowledgement , what is the format of the acknowledgement ? where is
the format defined ? if i use the Basestation to snoop the
acknowledgement , can i receive it ?
  3. Does rf230 support LowPowerListeing ? 

 

another question : 

    David , i download the cvs tree of tinyos-2.x six days ago , i
install the RadioCountToLeds to the mica2 motes , i find they can't
communicate with each other . i have chaged the frequency in
CC1000Const.h , just chaged

#ifndef CC1K_DEF_PRESET
#define CC1K_DEF_PRESET (CC1K_433_002_MHZ)  To

#ifndef CC1K_DEF_PRESET
#define CC1K_DEF_PRESET (CC1K_915_998_MHZ)

(My mica2 motes use 900MHZ)

 

in the primary tinyos tree (not the version of cvs) , i just chage this
, the mica2 motes can communicate with each other , but in the cvs
version , they can't . Do you know why , David ? have you tried ?

 

thank you very much !!

2008/5/27 David Moss <[EMAIL PROTECTED]>:

        Hi Jiwen -

         

        I've been out for a few days, sorry for the delay in the
response.

         

        You're correct about the operation of setLocalSleepInterval. The
amount of time the radio wakes up is ideally as short as possible, and
is dependent upon the type of low power communication strategy
implemented.  The default CC2420 low power communication implementation,
in an attempt to work on everyone's setup, is set to 11 ms receive check
intervals.  I've had this working reliably in more of a point-to-point
scheme (no surrounding network) at 5 ms.  Essentially, because the
wakeup transmission is a packet train, the amount of time a receiver
radio must perform an energy-based receive check is the duration of the
gap in modulation between packets.  On different strategies, like a
BMAC-based strategy where a long continuously modulated signal is
emitted from the transmitter, the receive check can be near
instantaneous.

         

        The setRxSleepInterval() command is used to setup the packet,
before transmission, to tell the radio stack how long to transmit that
packet for to wake up its intended destination.  So if you are about to
transmit a packet to a node that has a local duty cycle of 250 ms, you
have to tell the packet that the receiver's sleep interval is 250 ms.
The radio stack will wake up the duty cycling receiver for that duration
of time while attempting to deliver the packet.

         

        The cc1000_lpl directory is no longer valid, and should never be
used.  The default cc1000 directory contains a fully functional low
power communication implementation, BMAC.

         

        -David

         

         

         

         

         

         

        
________________________________


        From: jiwen zhang [mailto:[EMAIL PROTECTED] 
        Sent: Monday, May 26, 2008 6:33 AM
        To: David Moss; tinyos-help
        Subject: Fwd: About LowPowerListening

         

         

        ---------- Forwarded message ----------
        From: jiwen zhang <[EMAIL PROTECTED]>
        Date: 2008/5/25
        Subject: About LowPowerListening
        To: David Moss <[EMAIL PROTECTED]>, tinyos-help
<[email protected]>

        Hello David :

           Maybe i have asked the question to you , but i still have
some puzzles .

           1. about the command setLocalSleepInterval(uint16_t
sleepIntervalMs) .

            in my opinion , it is used the set that how long the mote
sleep . for example , we set sleepIntervalMs to 250 , which mean the
mote will sleep 250ms and wake up automatically , then check whether
there is carrier . if yes , it will keep awake for a long time to
receive the data packet , if no , it will go to sleep . 

           i want to know , how long does the mote take to check whether
there is carrier wave ? if there is carrier, how long does the mote keep
awake in order to receive the data packet ?(maybe there is no data
packet sended to it , so i thick there could be a "time upper limit"
that the mote keep awake ) 

           2. about the command setRxSleepInterval(message_t *msg,
uint16_t sleepIntervalMs)

           i don't know what the function of this command is , can you
explain to me ,David ?

           In Lesson 16: Writing Low Power Sensing Applications , there
is some introduction to LowPowerListening . it demonstrates the usage
pattern :

         

        event void Boot.booted() {
          call LPL.setLocalSleepInterval(LPL_INTERVAL);
          call AMControl.start();
        }
        
        event void AMControl.startDone(error_t e) {
          if(e != SUCCESS)
            call AMControl.start();
        }
          
        ...
        
        void sendMsg() {
          call LPL.setRxSleepInterval(&msg, LPL_INTERVAL);
          if(call Send.send(dest_addr, &msg, sizeof(my_msg_t)) !=
SUCCESS)
            post retrySendTask();
        }
        

        before we call Send.send , we will call
LPL.setRxSleepInterval(&msg, LPL_INTERVAL) . what is the reason ? 

         

         

        another question :

         

        in the directory /opt/tos/chip , there is a folder named
cc1000_lpl , when i use the interface of LowPowerListening , i find that
the file app.c includes some files in the directory
/opt/tos/chip/cc10000 and does not include any file in the cc1000_lpl .
are they different implements of the driver of cc1000 ? which one is
better ? if cc1000_lpl is better , what should i do if i want to use the
driver cc1000_lpl? (because the default is linked to cc1000)

        
        -- 
        zhang jiwen 

        
        
        
        -- 
        zhang jiwen 




-- 
zhang jiwen 

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

Reply via email to