Hi Jiwen -

 

1.      The radio stack takes care of sending the wake up transmission
whenever you call AMSend.send.  So call
LowPowerListening.setRxSleepInterval(250), and then call AMSend.send() - no
delays needed.  I prefer to use Boot.booted() to setup the Rx sleep interval
on a packet, and that setting will stick with the packet throughout the
lifetime of the application unless you explicitly change it.

 

2.      The acknowledgment is an 802.15.4 acknowledgment frame, defined on
page 42 of the CC2420 datasheet.  Your BaseStation will technically receive
an acknowledgment, but because it is not a data frame, it will not pass the
ack onto the application layer to forward to your computer.  If you do some
special modifications to the receive branch of the radio stack, you will be
able to capture and report acknowledgment frames.

 

3.      Miklos: "Yes"

 

4.      The CC1000 radio and mica2 hardware comes in different flavors.  The
433 MHz version transmits farther, and is the default frequency setting for
the stack.  If you have 915 MHz versions of the mica2's, you did the right
thing by overriding the 433 MHz frequency setting with the 915 MHz setting. 

 

 

-David

 

 

  _____  

From: jiwen zhang [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, May 28, 2008 7:03 PM
To: David Moss
Cc: tinyos-help
Subject: Re: 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
<tinyos-help@millennium.berkeley.edu>

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
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to