1. 一些基本的数据包格式
message_t
message_t的定义位于 /tos/types/ 的 message.h 中
具体定义:
|
|
oscilloscope_t
oscilloscope_t的定义在 /apps/ 下的 MultihopOscilloscope/MultihopOscilloscope.h 和 Oscilloscope/Oscilloscope.h 都有定义
具体定义:
|
|
Serial header
定义在tos/lib/serial/Serial.h
具体定义:
typedef nx_struct serial_header {
nx_am_addr_t dest; //2字节(16位)
nx_am_addr_t src;
nx_uint8_t length;
nx_am_group_t group; //1字节(8位)
nx_am_id_t type; //1字节(8位)
} serial_header_t;
ctp_data_header和 ctp_routing_header
定义在 tos/lib/net/ctp/Ctp.h
ctp_data_header 具体定义:
|
|
ctp_routing_header具体定义:
|
|
注意: 上述数据格式中的一些定义,如 uint16_t 和 nx_uint16_t 表示的都是无符号int数,大小是两个字节(16位),其他以此类推。特殊的定义,例如 nx_ctp_options_t、nx_am_addr_t 可在 tos/types/AM.h 找到具体的定义。
CTP协议中的Routing table entry
具体定义在 tos/lib/net/ctp/TreeRouting.h
格式如下:
|
|
一些默认的枚举类型:
|
|
2.一些接口以及功能
获取RSSI
我最先了解的是如何获取RSSI,使用的是 CC2420Packet 接口,其中先要添加组件 CC2420ActiveMessageC。
例如:
|
|
获取的RSSi值是16进制的,要将其转换为dBm, 需要
1.将得到的16进制数换算为10进制。
2.将这个10进制数 减去256
3.最后,计算出的RSSI 有45的偏移量,所以最后得到的数值需要 减去 45。
##获取CTP协议的信息
目前我通过CtpPacket接口找到一些数据的获取途径:
|
|
##获取包的时间戳
通过接口PacketTimeStamp可以获取包的时间戳
|
|