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