What is this LPL_INTERVAL? If i want to broadcast a message right after a data sense, then, do i need to use this TIMER_PEROD_MILLI?
in another words, i am broadcasting some information once the data is sensed, but not periodically. Thanks for any help! lasanthi 2009/4/2 Razvan Musaloiu-E. <[email protected]> > Hi! > > On Thu, 2 Apr 2009, João Paulo Amaro da Costa Luz Carneiro wrote: > > Hi all, >> >> Made a very simple program to test LPL but am not sending/receiving >> any messages or sometimes only 1 (depending on the LPL_INTERVAL >> value). Can someone tell me what am I doing wrong? >> > > Sending a packet on broadcast will take LPL_INTERVAL ms. So the > TIMER_PERIOD_MILLI should be longer than LPL_INTERVAL. :-) > > -- > Razvan ME > > > Thanks in advance >> Here's the code: >> >> Test.h >> #ifndef TEST_H >> #define TEST_H >> >> enum { >> AM_TEST = 6, >> TIMER_PERIOD_MILLI = 250, >> LPL_INTERVAL = 2000 >> }; >> >> typedef nx_struct TestMsg { >> nx_uint16_t nodeid; >> } TestMsg; >> >> #endif >> >> >> TestAppC.nc >> #include <Timer.h> >> #include "Test.h" >> >> configuration TestAppC { >> } >> implementation { >> components MainC; >> components TestC as App; >> components new TimerMilliC() as Timer0; >> components ActiveMessageC; >> components new AMSenderC(AM_TEST); >> components new AMReceiverC(AM_TEST); >> components CC2420ActiveMessageC as LPLProvider; >> >> App.Boot -> MainC; >> App.Timer0 -> Timer0; >> App.Packet -> AMSenderC; >> App.AMPacket -> AMSenderC; >> App.AMControl -> ActiveMessageC; >> App.AMSend -> AMSenderC; >> App.Receive -> AMReceiverC; >> App.LPL -> LPLProvider; >> } >> >> >> TestC.nc >> #include <Timer.h> >> #include "Test.h" >> >> module TestC { >> uses interface Boot; >> uses interface Timer<TMilli> as Timer0; >> uses interface Packet; >> uses interface AMPacket; >> uses interface AMSend; >> uses interface Receive; >> uses interface SplitControl as AMControl; >> uses interface LowPowerListening as LPL; >> } >> implementation { >> void sendMessage(); >> task void sendMessageTask(); >> message_t pkt; >> bool busy = FALSE; >> >> event void Boot.booted() { >> call LPL.setLocalSleepInterval(LPL_INTERVAL); >> call AMControl.start(); >> } >> >> event void AMControl.startDone(error_t err) { >> if (err == SUCCESS) { >> call Timer0.startPeriodic(TIMER_PERIOD_MILLI); >> } >> else { >> call AMControl.start(); >> } >> } >> >> event void AMControl.stopDone(error_t err) { >> } >> >> event void Timer0.fired() { >> // if (!busy) { >> TestMsg* tpkt = >> (TestMsg*)(call Packet.getPayload(&pkt, sizeof(TestMsg))); >> if (tpkt == NULL) { >> return; >> } >> tpkt->nodeid = TOS_NODE_ID; >> >> sendMessage(); >> //} >> } >> >> void sendMessage() { >> call LPL.setRxSleepInterval(&pkt, LPL_INTERVAL); >> if (call AMSend.send(AM_BROADCAST_ADDR, >> &pkt, sizeof(TestMsg)) == SUCCESS) { >> busy = TRUE; >> } >> else post sendMessageTask(); >> } >> >> task void sendMessageTask() { sendMessage(); } >> >> event void AMSend.sendDone(message_t* msg, error_t err) { >> if (&pkt == msg) { >> if (err != SUCCESS) >> post sendMessageTask(); >> else >> busy = FALSE; >> } >> } >> >> event message_t* Receive.receive(message_t* msg, void* payload, uint8_t >> len){ >> if (len == sizeof(TestMsg)) { >> TestMsg* tpkt = (TestMsg*)payload; >> } >> return msg; >> } >> } >> >> >> Makefile >> COMPONENT=TestAppC >> >> CFLAGS+=-DLOW_POWER_LISTENING >> >> include $(MAKERULES) >> > > _______________________________________________ > Tinyos-help mailing list > [email protected] > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > -- lasanthi nilmini
_______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
