是不是任何一个开启可发现的广播包的蓝牙设备 都能被设置成主动扫描的蓝牙扫描获取到RSSI信息 非过滤
我的广播方选的的BLE_Proximity例程,扫描方设置的是主动扫面 white list only 模式 不知道怎么添加对方的设备地址用于筛选 求解答




    Wireless-Tech 是不是任何一个开启可发现的广播包的蓝牙设备 都能被设置成主动扫描的蓝牙扫描获取到RSSI信息 非过滤

    答:是的。RSSI的值可以在主机的CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT事件中直接读取,这个RSSI值放在CYBLE_GAPC_ADV_REPORT_T这个结构体变量中。

    Wireless-Tech 我的广播方选的的BLE_Proximity例程,扫描方设置的是主动扫面 white list only 模式 不知道怎么添加对方的设备地址用于筛选 求解答

    答:将对方的MAC地址,填充到
    CYBLE_API_RESULT_T CyBle_GapAddDeviceToWhiteList  ( CYBLE_GAP_BD_ADDR_T *  bdAddr )
    这个API的形参中即可,前提你要提前知道对方的MAC地址

      设置要添加的白名单的地址 CYBLE_GAP_BD_ADDR_T dev_list1= {{0x35u, 0x8Bu, 0x26u, 0x7Au, 0x92u, 0x6Au}, 0x00u };
      添加白名单 CyBle_GapAddDeviceToWhiteList ( &dev_list1 );
      然后BLE控件的 FILTER POLICY 设置成 WHITE LIST ONLY 格式后

      CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT 事件就没有响应了

      当 BLE控件的 FILTER POLICY 设置成 ALL 格式后 能扫描到周围的广播包
      不知道白名单的添加方式哪里不对 求指导 (不确定是否添加成功)

        Wireless-Tech 设置要添加的白名单的地址 CYBLE_GAP_BD_ADDR_T dev_list1= {{0x35u, 0x8Bu, 0x26u, 0x7Au, 0x92u, 0x6Au}, 0x00u };

        这个地址是是高字节在前,低字节在后,你的白名单的地址是这样的吗?

          没有弄错 我是用SMARTdongle那个扫出来的

            Wireless-Tech 没有弄错 我是用SMARTdongle那个扫出来的

            那你看看调用增加白名单的返回值吧

              Wireless-Tech 那你看看调用增加白名单的返回值吧

              返回值是0

                ,白名单添加成功,也能用函数获取到,我的扫描端设置如下图,地址也正确,但是显示超时,只扫描一次就不扫描了,源码如下,楼主有空帮看看

                  Wireless-Tech 白名单添加成功,也能用函数获取到,我的扫描端设置如下图,地址也正确,但是显示超时,只扫描一次就不扫描了,源码如下,楼主有空帮看看

                  1、你说的显示超时是什么意思?如果是说最后进入TIMER_OUT事件的话这个是正常的,因为你设置的扫描时间是有期限的
                  2、只扫描一次是指的是只进来扫描事件一次?如果是说你成功的扫描到白名单的设备一次,那这个是因为你把那个重复过滤的勾选了

                    问题1. 会进入到TIMER_OUT事件
                    问题2. 勾选白名单选项后啥也扫不到,只会进入到超时事件和CYBLE_EVT_GAPC_SCAN_START_STOP事件

                    源码昨天已经发给你了
                    如果把白名单选项去掉 就都扫到周围的广播

                      楼主多谢啦 找到问题所在了
                      Whitelisting guidelines
                      The whitelist on the module can only be modified while you are not already advertising, scanning, or connected.

                      把白名单的添加位置放到CYBLE_EVT_STACK_ON: 事件下的 CyBle_GapcStartScan( CYBLE_SCANNING_FAST );函数扫描开始前即可。

                        撰写回复...