Other Parts Discussed in Thread: Z-STACK
之前用的Z-Stack 2.5.1:
- 直接从IncomingMsg中提取RSSI,RSSI的值会随着协调器与终端的距离变化而变化;
- 当RSSI值降低到大约-90dBm的时候,终端掉线。
所以看起来还算正常。
现在用Z-Stack Home 1.2.2a:
- zcl_samplesw.c函数,即应用函数中,从incomingMsg中提取RSSI,发现这个RSSI值不随距离变化,所以初步判定incomingMsg中的RSSI没有生效;
- 自己直接读RSSI寄存器,方法如下。
if (RSSISTAT & 0x01) {
rssiVal = RSSI + MAC_RADIO_RSSI_OFFSET;
lqiVal = 255*(RSSI-MIN_ED)/(MAX_ED-MIN_ED);
}
目前的问题是,这段代码放哪里合适?试过放zcl_samplesw.c中zclSampleSw_event_loop函数收到ZCL_INCOMING_MSG系统事件消息的时候去读RSSI,结果是这个RSSI值在协调器-终端距离固定的时候也会有30dB的跳动。