在central端,GAPCentralRole_StartRssi函数能读到RSSI的值,,但是这个需要连接之后才能读到。
现在想请问下,1,在扫描的时候,能够读到RSSI的值吗?
2,Packet Sniffer接收蓝牙信号后,每次跟着RSSI的值,请问,Packet Sniffer是怎么工作的,一直在扫描吗?扫描间隔呢?
wengo wu:
顶起来啊,,没人回答我啊。。
ghostyu:
你应该再仔细看下主从机的源码,有很多值得研究的地方,
主机Role Event Callback回调函数里GAP_DEVICE_INFO_EVENT里是告知主机接收到从机的Adv Data或者Scan Response,
pEvent->deviceInfo结构体成员里有很多重要的参数,其中就包括rssi值。大多数时候,别人比较关注他的:
uint8 *pEvtData; //!< Data field of advertisement or SCAN_RSP
当然,也有你要的rssi
Joker Ly:
回复 ghostyu:
ghostyu的回答给了我很大的启发!我想请问如果不扫描,simpleBLEPeripheral#1是否可以读取到simpleBLEPeripheral#2的rssi值。
zouzou liang:
回复 ghostyu:
你好有相关的例程吗,可以发送一段怎么调用的具体程序给我吗?
Tao Dong:
回复 ghostyu:
在不连接的情况下,我读取的pEvent->deviceInfo结构体里的rssi一直是4,这正常嘛?另外, 应该怎么从uint8 *pEvtData;数据里找出rssi?
Joker Ly:
回复 Tao Dong:
case GAP_DEVICE_INFO_EVENT: { simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType ); int8 rssiAver; int8 newRSSI = -(pEvent->deviceInfo.rssi);
按照如上红色字体 方法读取RSSI,就可以了。
Tao Dong:
回复 Joker Ly:
谢谢,终于明白了。
先前我一直是在下面这个事件里找RSSI的,值始终不变。
case GAP_DEVICE_DISCOVERY_EVENT: { // discovery complete simpleBLEScanning = FALSE;
}
仔细看这个宏的定义才发现一个是扫描过程执行,一个是扫描完成后执行。
Dongxu Hu:
回复 Tao Dong:
十分感谢,ghostyu和Mr Tao ,想进一步问一下,现阶段测出点对点的rssi了,下一步您是如何推进的。谢谢了。
Tao Dong:
回复 Dongxu Hu:
Mr Hu,我现在只是调研阶段,还未运用到实际的应用中,不过,初步设想可以用这个rssi测距,进而达到定位的效果。
Dongxu Hu:
回复 Tao Dong:
十分感谢Mr Dong,我也在做室内定位,现在主要处于课题后期。关于rssi测距的精度建模上,还没有考虑。现在主要考虑节点的接入问题。
TI中文支持网


