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

Reply via email to