ble 广播内容是由一个一个的 AD Structure 组合而成的, AD Structure 的结构为 length type data 三部分组成, 各字段含义如下.
W800 SDK 中设置广播方式有两种:
1, 参考 src/app/bleapp/wm_bt_app. c 文件里, 如下图分三步.
首先按照 length/type/data 的结构, 把要广播的数据内容准备好, 然后调用 tls_ble_gap_set_data 接口来设置广播内容, 最后再调用 tls_nimble_gap_adv 来启动广播.
2, 参考 src/app/bleapp/wm_ble_server_api_demo. c, 同样也是分为三步.
首先定义了一个 ble_hs_adv_fields 的变量 fields, 根据要广播的内容给 fields 的不同字段赋值, 比如 demo 里设置了 flags 和 name, uuid16 这三个字段. 然后调用 ble_gap_adv_set_fields 来设置广播的内容. 最后调用 tls_nimble_gap_adv 来启动广播.
注意: ble 广播内容的最大长度为 31 字节, 如果广播的内容超过了 31 字节, 剩余的内容可以通过 scan/response 方式来发送, 只需要将 response 的内容准备好, 然后调用 ble_gap_adv_rsp_set_data 来设置. 只不过这里和第一种方式里调用 ble_gap_adv_rsp_set_data 时传入的第一个参数 type 不同, 此处传入的是 WM_BLE_ADV_RSP_DATA. 当收到主动扫描请求时, 会自动把设置好的 scan_response 内容回复给请求方.