I think I can guess what may be happening. Both TOS_NODE_ID and
ActiveMessageAddressC.addr are set at install time by running
tos-set-symbols on the binary. If you change the separator nesC uses in
its generated code (-fnesc-separator=...), then the generated name of
the AM address changes as well. Somewhere along the line, the default
separator was changed from $ to __. If you're using an MSP430 based
platform, look in support/make/msp/msp.rules and search for a line like
this:

 

AMADDR = ActiveMessageAddressC__addr

 

Hope this helps,

Michiel

 

From: [email protected]
[mailto:[email protected]] On Behalf Of
Ricardo .
Sent: zaterdag 12 december 2009 17:08
To: tinyos-help
Subject: Re: [Tinyos-help] AMSend malfunction

 

I checked, and do not return the same value. The method
AMPacket.address() always returns the value 1, even when the TOS_NODE_ID
is not 1.

On Fri, Dec 11, 2009 at 5:20 PM, Miklos Maroti
<[email protected]> wrote:

Hi Ricardo,

Then can you verify that AMPacket.address() also returns the same
value as TOS_NODE_ID with the same method?

Miklos


On Fri, Dec 11, 2009 at 6:11 PM, Ricardo . <[email protected]>
wrote:
> Yes I did. I print the TOS_NODE_ID and the value is correct... :S
>
> On Fri, Dec 11, 2009 at 4:30 PM, Miklos Maroti
<[email protected]>
> wrote:
>>
>> Hi Ricardo,
>>
>> How did you install your program on the mote? You should
>>
>> make iris install.1234
>>
>> Where 1234 is the desired node id for the mote that is installed.
>>
>> Miklos
>>
>> On Fri, Dec 11, 2009 at 3:35 PM, Ricardo . <[email protected]>
>> wrote:
>> >
>> > Hello everyone,
>> >
>> > When sending a message, I want to know who sent it. I know that for
this
>> > I
>> > have to use the interface AMPacket.source (packet). The problem is
that
>> > I
>> > get always the same value as if it received all messages from the
same
>> > node,
>> > which is not true.
>> >
>> > So I see how this field is set, and find that is filled in
>> > ActiveMessageLayerC the method:
>> >
>> > command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t*
msg,
>> > uint8_t len)
>> > {
>> > error_t error;
>> >
>> > error = call Config.checkPacket(msg);
>> > if( error != SUCCESS )
>> > return error;
>> >
>> > call AMPacket.setSource(msg, call AMPacket.address());
>> > call AMPacket.setGroup(msg, call AMPacket.localGroup());
>> > call AMPacket.setType(msg, id);
>> > call AMPacket.setDestination(msg, addr);
>> >
>> > return call SubSend.send(msg, len);
>> > }
>> >
>> >
>> > So it is filled in line AMPacket.setSource call (msg, call
>> > AMPacket.address
>> > ()). I was reading the documentation of the method AMPacket.address
()
>> > and
>> > says: "Return the node's active message address associated with
this AM
>> > stack".
>> > My question is: where does this address associated with the AM
stack is
>> > obtained? why is it always the same for different TOS_NODE_ID? (I
am
>> > using a
>> > RF230 radio).
>> >
>> >
>> > Thanks in advance,
>> > --
>> > Ricardo
>> >
>> >
>> > _______________________________________________
>> > Tinyos-help mailing list
>> > [email protected]
>> >
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>> >
>
>
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
>
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>

 

_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to