[Tinyos-help] TKN154: What I am receiving?

2012-07-27 Thread David Rodenas

Hi all
Sorry for the length, but I thing that it was necessary to explain my concern. 
I've programmed a telosb acting as a transmitter that sends periodically a 
broadcast message to another telosb acting as a network coordinator (and also 
as a reciver). I am using the TKN154 libraries. The main network parameters 
are: 
RADIO CHANNEL is 26,PAN ID is 0x4927,COORDINATOR ADDRESS is 0x6287,DEVICE 
ADDRESS is 0x6245,TRANSMISSION is broadcast (daddr is 0x).
The payload contains two fields: 1) the device address (0x6287) and 2) four 
uint16_t values as network data (0x2301 0x2302 0x2303 0x2304)
The coordinator app is based on the packetsniffer app (apps/tests/tkn154) with 
some modifications. What I want is to send every data frame received by the 
coordinator through the serial port to my laptop. Thereby, here is the part of 
the code that conducts this issue: 
event message_t* MCPS_DATA.indication ( message_t* frame_ ){  call 
Leds.led1Toggle();  if (call Queue.enqueue(frame_) != SUCCESS) {call 
Leds.led0On(); // overflowreturn frame_;  } else {post 
serialSendTask();return call Pool.get();  }}  task void serialSendTask() {  
message_t* frame;  uint8_t headerLen;   uint8_t payloadLen;   uint8_t 
serialLen;   uint8_t *header;  uint8_t *payload;  uint8_t i;   if (call 
Queue.empty() || m_serialSendBusy)return;frame = call Queue.head(); 
   headerLen = call Frame.getHeaderLength(frame);  payloadLen = call 
Frame.getPayloadLength(frame);  header = call Frame.getHeader(frame);  payload 
= call Frame.getPayload(frame); /*  // Test 1: printf  printf(MHRLen: 
%d\n, headerLen);  printf(MHR: );  for (i=0; iheaderLen; i++){
printf(0x%02X , header[i]);  }  printf(\n);printf(PayloadLen: 
%d\n, payloadLen);  printf(Payload: );  for (i=0; ipayloadLen; i++){
printf(0x%02X , payload[i]);  }  printf(\n\n);  */// Test 2: java 
Listen  serialLen = headerLen + payloadLen;  m_serialSendBusy = TRUE;  if (call 
SerialSend.send(frame, serialLen) != SUCCESS)report_received();   //call 
Leds.led2Toggle();} 
As you can see, I carry out two tests: 1) by using the printf libraries, I 
represent the content of the header and the payload fields; and 2) I use the 
Listen java app to see what I receive from the serial port. The results are the 
following:
Test 1: PRINTF (only one data frame is depicted since the transmission 
conditions and network data are always the same)
$ java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb
MHRLen: 9MHR: 0x41 0x88 0x90 0x27 0x49 0xFF 0xFF 0x45 0x62 PayloadLen: 
10Payload: 0x45 0x62 0x01 0x23 0x02 0x23 0x03 0x23 0x04 0x23 
I've not checked the header fields but, a priori, the result is what I 
expected. 

Test 2: LISTEN JAVA (5 data frames are depicted)
$ java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb
02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 01 23 02 23 03 23 04 23 06 EA 00 
00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 
23 04 23 08 EB 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 45 
62 00 00 02 23 03 23 04 23 0C E9 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 
00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 09 EA 00 00 00 00 00 00 00 02 00 
00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 0C EB 00 00 00 
00 00 00 00
I am aware of that the first byte is the AM type (0x02). In addition, the 
payload is successfully received (45 62 01 23 02 23 03 23 04 23). However, 
where is the header? And the latest zeros? and what do 06 EA, 08 EB, 0C 
E9, 09 EA, 0C EB mean?
I'd like to know what I am doing wrong. In this sense, all the help possible 
would be appreciated. 
Regards
David ___
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Re: [Tinyos-help] TKN154: What I am receiving?

2012-07-27 Thread Jan Hauer
 Test 2: LISTEN JAVA (5 data frames are depicted)

 $ java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb

 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 01 23 02 23 03 23 04 23 06 EA

This packet is not an AM-packet, because the first byte is not zero
(c.f. 
http://docs.tinyos.net/tinywiki/index.php/Mote-PC_serial_communication_and_SerialForwarder).
You are using apps/tests/tkn154/packetsniffer, which doesn't use the
default serial stack, but wires to Serial802_15_4C (in
tos/lib/serial). Take a look
apps/tests/tkn154/packetsniffer/README.txt, it explains the packet
format and points you to a c-file that you can use to extract the
data.

If you want to send standard AM-Packets (and use java
net.tinyos.tools.Listen) wire to SerialActiveMessageC instead of
Serial802_15_4C (see example in apps/tests/TestSerial).

Jan

On Fri, Jul 27, 2012 at 12:10 PM, David Rodenas drod...@hotmail.com wrote:
 Hi all

 Sorry for the length, but I thing that it was necessary to explain my
 concern. I've programmed a telosb acting as a transmitter that sends
 periodically a broadcast message to another telosb acting as a network
 coordinator (and also as a reciver). I am using the TKN154 libraries. The
 main network parameters are:

 RADIO CHANNEL is 26,
 PAN ID is 0x4927,
 COORDINATOR ADDRESS is 0x6287,
 DEVICE ADDRESS is 0x6245,
 TRANSMISSION is broadcast (daddr is 0x).

 The payload contains two fields: 1) the device address (0x6287) and 2) four
 uint16_t values as network data (0x2301 0x2302 0x2303 0x2304)

 The coordinator app is based on the packetsniffer app (apps/tests/tkn154)
 with some modifications. What I want is to send every data frame received by
 the coordinator through the serial port to my laptop. Thereby, here is the
 part of the code that conducts this issue:

 event message_t* MCPS_DATA.indication ( message_t* frame_ ){
   call Leds.led1Toggle();
   if (call Queue.enqueue(frame_) != SUCCESS) {
 call Leds.led0On(); // overflow
 return frame_;
   } else {
 post serialSendTask();
 return call Pool.get();
   }
 }

 task void serialSendTask()
 {
   message_t* frame;
   uint8_t headerLen;
   uint8_t payloadLen;
   uint8_t serialLen;
   uint8_t *header;
   uint8_t *payload;
   uint8_t i;
   if (call Queue.empty() || m_serialSendBusy)
 return;

   frame = call Queue.head();

   headerLen = call Frame.getHeaderLength(frame);
   payloadLen = call Frame.getPayloadLength(frame);
   header = call Frame.getHeader(frame);
   payload = call Frame.getPayload(frame);

   /*
   // Test 1: printf
   printf(MHRLen: %d\n, headerLen);
   printf(MHR: );
   for (i=0; iheaderLen; i++){
 printf(0x%02X , header[i]);
   }
   printf(\n);
   printf(PayloadLen: %d\n, payloadLen);
   printf(Payload: );
   for (i=0; ipayloadLen; i++){
 printf(0x%02X , payload[i]);
   }
   printf(\n\n);
   */

   // Test 2: java Listen
   serialLen = headerLen + payloadLen;
   m_serialSendBusy = TRUE;
   if (call SerialSend.send(frame, serialLen) != SUCCESS)
 report_received();   //call Leds.led2Toggle();
 }

 As you can see, I carry out two tests: 1) by using the printf libraries, I
 represent the content of the header and the payload fields; and 2) I use the
 Listen java app to see what I receive from the serial port. The results are
 the following:

 Test 1: PRINTF (only one data frame is depicted since the transmission
 conditions and network data are always the same)

 $ java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb

 MHRLen: 9
 MHR: 0x41 0x88 0x90 0x27 0x49 0xFF 0xFF 0x45 0x62
 PayloadLen: 10
 Payload: 0x45 0x62 0x01 0x23 0x02 0x23 0x03 0x23 0x04 0x23

 I've not checked the header fields but, a priori, the result is what I
 expected.


 Test 2: LISTEN JAVA (5 data frames are depicted)

 $ java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb

 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 01 23 02 23 03 23 04 23 06 EA
 00 00 00 00 00 00 00
 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 08 EB
 00 00 00 00 00 00 00
 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 0C E9
 00 00 00 00 00 00 00
 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 09 EA
 00 00 00 00 00 00 00
 02 00 00 00 00 00 00 00 00 00 00 00 00 45 62 00 00 02 23 03 23 04 23 0C EB
 00 00 00 00 00 00 00

 I am aware of that the first byte is the AM type (0x02). In addition, the
 payload is successfully received (45 62 01 23 02 23 03 23 04 23). However,
 where is the header? And the latest zeros? and what do 06 EA, 08 EB, 0C
 E9, 09 EA, 0C EB mean?

 I'd like to know what I am doing wrong. In this sense, all the help possible
 would be appreciated.

 Regards

 David

 ___
 Tinyos-help mailing list
 Tinyos-help@millennium.berkeley.edu
 https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
___
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu