Hi all,
I have a little problem here. I want to read the header
(specifically the AM_ID of the packet).
In my BaseStation program
(which pretty much the standard one), I am doing the following:
message_t* receive( message_t *msg, void *payload, uint8_t len )
{
message_t *ret = msg;
atomic
{
if( !uartFull )
{
// OK the
queue is not full, so extract the data
cc2420_header_t* header = call
CC2420PacketBody.getHeader( msg );
switch( header->type )
{
case
6:
{
report_msg *R_MSG = (REPORT_MSG*) payload;
r_msg->base_id =
TOS_NODE_ID;
call Leds.led0Toggle();
break;
}
case 7:
{
loc_msg *L_MSG = (LOC_MSG*) payload;
// overwrite the base_id field
l_msg->base_id = TOS_NODE_ID;
// get the RSSI value
l_msg->rssi =
call CC2420Packet.getRssi( msg );
l_msg->lqi = call
CC2420Packet.getLqi( msg );
call Leds.led1Toggle();
break;
}
default:
break;
}
ret = uartQueue[uartIn];
uartQueue[uartIn] =
msg;
uartIn = (uartIn + 1) % UART_QUEUE_LEN;
// check, if the
queue is full now
if( uartIn == uartOut )
uartFull = TRUE;
if(
!uartBusy )
{
// OK message can be send to the serial port
post
uartSendTask();
uartBusy = TRUE;
}
}
else dropBlink(); // queue
was full, so discard packet
}
return ret;
}
The packet comes
from a TMote Sky with a CC2420 radio interface. Based on this, I am
looking up the CC2420 packet header.
In case it's am_id 6, I am just
overwriting one packet field. In case it's 7 I am overwriting this field
as well plus the RSS and LQI value.
Unfortunately, when I receive
packets the base_id field is never overwritten.
Is there anything
wrong in the logic/programming?
Thanks for any hint :)
Cheers,
-Martin _______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help