CH573 observer最多只能获取到31位数据么

在做蓝牙扫描时,我在gapDeviceInfoEvent_t这个结构体中最多只能获得31位数据,怎么获取剩下的数据呢

BLE的广播的内容格式普通广播

  • 广播包 (Advertising Data)

  • 响应包 (Scan Response),需要扫描设备,发起scan_request 才会被回应.

  • 传统广播模式无论广播包,还是扫描响应包都是31 Byte 最长

扩展广播(>=蓝牙5.0)

  • 广播包长度可以设置到255甚至更长


CH57* 系列的芯片都是BLE 4.2 的,这意味着不能实现5.0以后引入的扩展广播包,当然这跟本帖问题关系不太大.


像很多ble soc 一样,wch的蓝牙协议栈,主机扫描时候,为保持灵活性, 协议栈向应用层送的只是原始的广播数据, 同时广播包和扫描响应包 也是分开的.

在扫描时候,通过GAP_DEVICE_INFO_EVENT 事件,在下面结构体里面的eventype指示该包的类型

image.png

eventType的有下面类型:

其中紫色框即意味着,当前的包为 扫描回复包,其他的都是广播包

image.png


上面,还有个前提,即: 主动扫描

下面函数的第二个参数,必须为true ,才有可能拿到 扫描回复包.

      GAPRole_CentralStartDiscovery( DEFAULT_DISCOVERY_MODE,
                               DEFAULT_DISCOVERY_ACTIVE_SCAN,
                               DEFAULT_DISCOVERY_WHITE_LIST );



扫描回复包,在中心设备中怎么读取、调用?


此结构体成员包含广播包和扫描应答包

image.pngimage.png

如果需要区分广播包和扫描应答包可以根据eventtype进行区分。即上述工程师提供的讲解。


只有登录才能回复,可以选择微信账号登录