This is putting the RSSI in the 20th byte of the the TOS_Msg.data
field, but probably the CntToRfm message says that the significant
data (TOS_Msg.length) is much shorter...I forget, 4 or 6 bytes...
so your client is just displaying the N significant bytes.
You should be able to verify this with ListenRaw, or a slightly
hacked version of Listen that dumps the whole message struct.
Assuming that you don't care what's in the original message data
you can stick the strength in any byte, say data[0]...
MS
Paul David Kavan wrote:
Hello all:
I am working on a simple system of Telos B Motes to do some distance
ranging experiments. I realize that this subject has been beat dead on
this board, but I am stuck and would appreciate any insight.
I have several motes programmed with CntToRfm. No problems there. I can
install TOSBase on a Base mote and see that those are in fact
transmitting a counter over the radio.
I am working on a modification to the Base Mote that extracts the RSSI
information and replaces the payload (ie the counter data) with the RSSI
for that packet. I know that the command to get this information is
Msg->strength;
However, replacing the payload is where I am stuck. I am having
difficulties understanding NesC enough to make this happen. I tried to
use the TOSBase app in $TOSHOME/apps/TOSBase/ without any luck. I
searched the archives of this board and came across a guy who modified
the TOSBase located in $TOSHOME/apps/TransparentBase/ as such
1> event TOS_MsgPtr RadioReceive.receive(TOS_MsgPtr Msg) {
2> TOS_MsgPtr pBuf;
3> dbg(DBG_USR1, "TOSBase received radio packet.\n");
4> if (Msg->crc) {
5> /* Filter out messages by group id */
6> if (Msg->group != TOS_AM_GROUP)
7> return Msg;
8> atomic {
9> pBuf = gRxBufPoolTbl[gRxHeadIndex];
10> if (pBuf->length == 0) {
11> gRxBufPoolTbl[gRxHeadIndex] = Msg;
12> gRxBufPoolTbl[gRxHeadIndex]->data[20] = Msg->strength; //ADDED IN
13> gRxHeadIndex++; gRxHeadIndex %= QUEUE_SIZE;
14> }
15> else {
16> pBuf = NULL;
17> }
18> }
19>
20> if (pBuf) {
21> post RadioRcvdTask();
22> }
23> else {
24> pBuf = Msg;
25> }
26> }
27> else {
28> pBuf = Msg;
29> }
30> return pBuf;
31> }
It is clear that in line #12 we are getting the rssi and it looks to me
like we are storing that in gRxBufPoolTbl[gRxHeadIndex]->data[20]
However, when I load this program and view the serial output with serial
forwarder I still only get the counter coming through. Is there some way
I could modify the above code so that the counter is replaced with just
the rssi data?
Thanks.
Paul
*****************************************
Paul David Kavan
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
329 Walter Scott Engineering Center
University of Nebraska
402-472-2764
*****************************************
------------------------------------------------------------------------
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help