what do you mean? packet is already global. here is the code:
module NodeC @safe()
{
uses interface Timer<TMilli> as Timer0;
uses interface Leds;
uses interface Boot;
uses interface Random;
uses interface ParameterInit<uint16_t> as SeedInit;
uses interface Receive;
uses interface AMSend;
uses interface SplitControl as AMControl;
uses interface Packet;
}
implementation
{
message_t packet;
uint16_t value;
uint16_t mybfr[50];
uint8_t idx;
bool locked;
event void Boot.booted()
{
call SeedInit.init( 2 );
idx = 0; locked = FALSE;
call Leds.led0Off(); call Leds.led1Off(); call Leds.led2Off();
value = (call Random.rand16()) % 8;
call Timer0.startOneShot( (call Random.rand32()) % 2048 + 100 );
/* if( (value & 1) == 1 ) {
call Leds.led0On();
}
if( (value & 2) == 1 )
call Leds.led1On();
else
call Leds.led1Off();
if( (value & 4) == 1 )
call Leds.led2On();
else
call Leds.led2Off();*/
}
event void AMControl.startDone(error_t err) {
if (err == SUCCESS) {
}
else {
call AMControl.start();
}
}
event void AMControl.stopDone(error_t err) {
// do nothing
}
event void Timer0.fired()
{
//dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string());
my_msg_t* rcm = (my_msg_t*)call Packet.getPayload(&packet,
sizeof(my_msg_t));
if (rcm == NULL) {
return;
}
// call Leds.led0Toggle();
rcm->color = value;
if (call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(my_msg_t)) ==
FAIL) {
dbg("RadioCountToLedsC", "RadioCountToLedsC: packet sent.\n",
counter);
call Leds.led0Toggle();
locked = TRUE;
}
call Timer0.startOneShot( (call Random.rand32()) % 2048 + 100 );
}
event message_t* Receive.receive(message_t* bufPtr, void* payload, uint8_t
len) {
//dbg("RadioCountToLedsC", "Received packet of length %hhu.\n", len);
/*if (len != sizeof(radio_count_msg_t)) {return bufPtr;}
else {
radio_count_msg_t* rcm = (radio_count_msg_t*)payload;
if (rcm->counter & 0x1) {
call Leds.led0On();
}
else {
call Leds.led0Off();
}
if (rcm->counter & 0x2) {
call Leds.led1On();
}
else {
call Leds.led1Off();
}
if (rcm->counter & 0x4) {
call Leds.led2On();
}
else {
call Leds.led2Off();
}*/
call Leds.led1Toggle();
return bufPtr;
}
event void AMSend.sendDone(message_t* bufPtr, error_t error) {
if (&packet == bufPtr) {
locked = FALSE;
}
}
}
the send function always fails at the moment..
On Thu, Apr 29, 2010 at 2:49 PM, chikh omar <[email protected]> wrote:
> use message_t pkt as a global variable and it will work...
>
>
> ***********************************************
> Omar Cheikhrouhou
> **Engineer & Researcher @SENS Lab (Software Engineering and Network
> Security)
> Higher Institute of Technological Studies - Address : Mahdia's road Km 2.5
> Sfax. BP 88 A - 3099 El Bustan Sfax Telephone : (+216)74 237425 Poste : 437
> ** **Fax: : (+216)74 431 386*
>
> *Ph.D @ CES Lab (Computer and Embedded System)-University of Sfax,
> National School of Engineers BP W, Sfax, 3038, Tunisia , Fax:(+216)74665369
> ** *
>
> *Coordinator C2i @ ISET Sfax (Certified C2i since 2008)*
>
>
> ------------------------------
> *De :* avinash chaurasia <[email protected]>
> *À :* Roberto Pagliari <[email protected]>
> *Cc :* [email protected]
> *Envoyé le :* Jeu 29 avril 2010, 21 h 27 min 27 s
> *Objet :* Re: [Tinyos-help] send packet
>
> call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(my_msg_t)) returns
> different type of error messages are you sure it returns FAIL? or something
> else like EOFF?
> Thanks
> Avinash Kumar Chaurasia
> Department of Computer Science
> IIT Kanpur, India
>
>
> On Fri, Apr 30, 2010 at 12:43 AM, Roberto Pagliari <
> [email protected]> wrote:
>
>> Hi All,
>> I'm having trouble with sending packets, I just moved from tinyos 1 to
>> tinyos 2. In the following code a node should blinkwhen a packet is
>> received. The problem is that no packets are sent. AMSend.send, apparently,
>> always returns FAIL. Does anybody know if I am missing something?
>>
>> Thanks
>>
>>
>>
>> event void Timer0.fired()
>> {
>> //dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string());
>> my_msg_t* rcm = (my_msg_t*)call Packet.getPayload(&packet,
>> sizeof(my_msg_t));
>> if (rcm == NULL) {
>> return;
>> }
>> // call Leds.led0Toggle();
>> rcm->color = value;
>> if (call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(my_msg_t)) ==
>> SUCCESS) {
>> dbg("RadioCountToLedsC", "RadioCountToLedsC: packet sent.\n",
>> counter);
>> call Leds.led0Toggle();
>> locked = TRUE;
>> }
>> call Timer0.startOneShot( (call Random.rand32()) % 2048 + 100 );
>> }
>>
>> event message_t* Receive.receive(message_t* bufPtr, void* payload,
>> uint8_t len) {
>> call Leds.led1Toggle();
>> return bufPtr;
>> }
>>
>> _______________________________________________
>> Tinyos-help mailing list
>> [email protected]
>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>
>
>
>
--
Roberto Pagliari
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help