如何自定义 Ble services¶
BLE services 的文件位置¶
BLE Service 的源文件路径是: esp-at/components/customized_partitions/raw_data/ble_data/example.csv
. 如果需要自定义服务,那么需要这么做:
- 修改
BLE Service
文件 - 使用 esp-at/tools/BLEService.py 重新生成 ble_data.bin
- 将 ble_data.bin 下载到 ESP32,具体下载的地址在
module_config/module_esp32_default/partitions_at.csv
分区表里面有定义。
如何修改 BLE services 文件¶
BLE services 的定义类似于一个多元数组,每一行是一个 GATT 结构体,每个服务都是由 service 定义、 characteristic 定义以及一些可选的 description 组成。
用户可以定义多个服务,比如 Service A、 Service B 和 Service C, 这三个服务就需要依次排序,因为每个服务的定义都是类似的,我们只拿其中一个举例说明。
首先,需要说明的是,所有服务定义的第一行都是固定的,第一行用来定义了服务的 UUID,标志着一个服务定义的开始。例如示例中,0x2800 表示这一行定义了一个 Primary Service, 具体的这个服务的 UUID 在 value 字段(用户也可定义为 SIG 颁布的 UUID,例如 0x180A, 也可以自定义,例如示例中是一个自定义的服务,UUID为 0xA002)。
- 例如:
index | uuid_len | uuid | perm | val_max_len | val_cur_len | value |
---|---|---|---|---|---|---|
0 | 16 | 0x2800 | 0x01 | 2 | 2 | A002 |
从第二行开始就是这个服务所包含的 characteristics 的定义, 每个 characteristic 至少有两行组成,第一行是 characteristic 的申明,它的 UUID 是固定的 0x2803,value 字段表示的是这一行可读可写的属性,这里直接参照示例,不要修改,全部是可读可写。第二行是 characteristic 的本身,UUID 可以用户自己定义,这里 value 字段就是 characteristic 本身的数值。
- 例如:
index | uuid_len | uuid | perm | val_max_len | val_cur_len | value |
---|---|---|---|---|---|---|
1 | 16 | 0x2803 | 0x01 | 1 | 1 | 02 |
2 | 16 | 0xC300 | 0x01 | 1 | 1 | 30 |
某些 characteristic 后面还会跟着 description。比如,如果这个 characteristic 是可 notify 的,后面就必须跟着 UUID 为 0x2902 的 description。
- 例如:
index | uuid_len | uuid | perm | val_max_len | val_cur_len | value |
---|---|---|---|---|---|---|
3 | 16 | 0x2803 | 0x01 | 1 | 1 | 02 |
4 | 16 | 0xC306 | 0x01 | 1 | 1 | 30 |
5 | 16 | 0x2902 | 0x011 | 2 | 2 | 0000 |
定义完所有的 characteristics,就是一个服务的结束,如果还想定义其他的 services ,同样的方法依次排列即可