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

Reply via email to