1## Gatt测试使用说明文档
2
3​		本文档主要介绍蓝牙专项测试程序的Gatt部分的功能使用说明。
4
5### 从主界面跳转到Gatt蓝牙部分
6
7Gatt测试分为Client测试和Server测试
8
9![主界面与Gatt跳转](主界面与Gatt跳转.png)
10
11### Gatt客户端
12
13选择GattClient测试,进行Gatt客户端的测试
14
15![Gatt与GattClient跳转1](Gatt与GattClient跳转1.png)
16
17#### GattClientSetting界面
18
19点击"switch"图标<img src="switch.png" alt="switch" style="zoom: 50%;" />,可以在setting界面修改MAC地址, ServerUUID, characteristicUuid, descriptorUuid的值。已经设置了默认值。
20
21![GattClient与GattClientSetting跳转](GattClient与GattClientSetting跳转.png)
22
23>Gatt_ClientSetting中参数有:
24>
25>​	外围设备MAC
26>
27>​	服务UUID
28>
29>​	特征值UUID,特征值Value
30>
31>​	描述符UUID,描述符Value
32>
33
34#### GattClient的主要接口
35
36|      method名称      |              API名称              |                           所需参数                           |           返回值            | 备注 |
37| :------------------: | :-------------------------------: | :----------------------------------------------------------: | :-------------------------: | :--: |
38|    创建GattClient    |         createGattClient          |                      (deviceId: string)                      |      GattClientDevice       |      |
39|         连接         |              connect              |                              ()                              |           boolean           |      |
40|       取消连接       |            disconnect             |                              ()                              |           boolean           |      |
41|     ble连接状态      |   on.BLEConnectionStatecChange    | (type: "BLEConnectionStateChange", callback: Callback<BLEConnectChangedState>) |            void             |      |
42|         关闭         |               close               |                              ()                              |           boolean           |      |
43|   获取服务callback   |       getServices(callback)       |        (callback: AsyncCallback<Array<GattService>>)         |            void             |      |
44|   获取服务promise    |        getServices(pomise)        |                              ()                              | Promise<Array<GattService>> |      |
45|  读取特征值callback  | readCharacteristicValue(callback) | (characteristic: BLECharacteristic, callback: AsyncCallback<BLECharacteristic>) |            void             |      |
46|  读取特征值promise   |  readCharacteristicValue(pomise)  |             (characteristic: BLECharacteristic)              | Promise<BLECharacteristic>  |      |
47| 读取描述符值callback |  readDescripitorValue(callback)   | (descriptor: BLEDescriptor, callback: AsyncCallback<BLEDescriptor>) |            void             |      |
48| 读取描述符值promise  |   readDescripitorValue(promise)   |                 (descriptor: BLEDescriptor)                  |   Promise<BLEDescriptor>    |      |
49|      写入特征值      |     writeCharacteristicValue      |             (characteristic: BLECharacteristic)              |           boolean           |      |
50|     写入描述符值     |       writeDescripitorValue       |                 (descriptor: BLEDescriptor)                  |           boolean           |      |
51|    BLE特征值变化     |    on.BLECharacteristicChange     | (type: "BLECharacteristicChange", callback: Callback<BLECharacteristic>) |            void             |      |
52|    设定BLEMtu尺寸    |           setBLEMtuSize           |                        (mtu: number)                         |           boolean           |      |
53|   设置通知特性更改   |   setNotifyCharateristicChanged   |     (characteristic: BLECharacteristic, enable: boolean)     |           boolean           |      |
54| 获取设备名称callback |      getDeviceName(callback)      |              (callback: AsyncCallback<string>)               |            void             |      |
55| 获取设备名称promise  |      getDeviceName(promise)       |                              ()                              |       Promise<string>       |      |
56|  获取Rssi值callback  |      getRssiValue(callback)       |              (callback: AsyncCallback<number>)               |            void             |      |
57|  获取Rssi值promise   |       getRssiValue(promise)       |                              ()                              |       Promise<number>       |      |
58
59#### Gatt_Client测试功能
60
61**"蓝牙打开"是其他功能测试的前提**
62
631. 创造GattClient
64
65   - 使用指导:点击"创造GattClient"后,创建一个JavaScript网关客户端设备实例。
66   - 限制条件:蓝牙状态要打开,且GattClient不存在实例,并且会判断是否输入了MAC地址和MAC地址长度正确与否。
67   - 验证方法:尝试可以去连接GattServer端的设备。
68
692. 连接/取消连接
70
71   - 使用指导:
72
73     > 连接:连接到BLE外围设备。如果连接进程启动,返回信息为true;否则返回false。
74     >
75     > 订阅“BLEConnectionStateChange”事件(即"ble连接状态")可以返回连接状态。
76     >
77     > 取消连接:断开或停止与BLE外围设备的持续连接。如果断开连接过程开始,返回信息为true;否则返回false。
78     >
79
80   - 限制条件:只有蓝牙打开且连接成功后,"连接"的返回信息才会显示"成功",才能成功取消连接设备。
81
82   - 验证方法:在设备设置上查看连接状态。如果成功连接正在advertise on的服务端,服务端会有连接响应。
83
843. ble连接状态
85
86   - 使用指导:为回调函数,用来监听相关类型事件的变化,并弹窗显示信息。
87
88     > - 订阅客户端连接状态更改事件。
89     > - type为要侦听的连接状态更改事件的类型。
90     > - callback回调用于侦听连接状态更改事件。
91
92   - 限制条件:需要在相关类型事件发生改变前,开启监听。且需要蓝牙打开,gatt客户端实例存在。
93
94   - 验证方法:在事件变化后,查看是否有弹窗信息显示,或直接查看其BLE连接状态。
95
964. 关闭
97
98   - 使用指导:禁用BLE外围设备。
99   - 限制条件:创立了Gatt客户端实例后,此方法注销设备并清除已注册的callback和handle。
100   - 验证方法:客户端已经关闭,无法连接server端。
101
1025. 获取服务callback/promise
103
104   - 使用指导:点击后,开始发现服务。返回的信息为BLE外围设备的服务GattService列表。
105   - 限制条件:Gatt客户端实例存在,连接设备的code不为0,ServerUUid正确。
106   - 验证方法:查看返回信息与连接的服务是否相同。
107
1086. 读取特征值callback/promise
109
110   - 使用指导:点击后,读取BLE外围设备的特性。characteristic表示要读取的特征。
111   - 限制条件:Gatt客户端实例存在,连接设备的errcode为0,特征值UUid正确。
112   - 验证方法:查看返回信息与连接的特征值是否相同。
113
1147. 读取描述符值callback/promise
115
116   - 使用指导:点击后,读取BLE外围设备的描述符。descriptor表示要读取的描述符。
117   - 限制条件:Gatt客户端实例存在,连接设备的errcode为0,描述符UUid正确。
118   - 验证方法:查看返回信息与连接的描述符值是否相同。
119
1208. 写入特征值
121
122   - 使用指导:写入BLE外围设备的特性。characteristic表示要写入的特征。如果成功写入特征,返回true;否则返回false。
123   - 限制条件:Gatt客户端实例存在,有写入的特征值。
124   - 验证方法:用验证程序查看写入的特征值。
125
1269. 写入描述符值
127
128   - 使用指导:写入BLE外围设备的描述符。descriptor指示要写入的描述符。如果描述符写入成功,返回true;否则返回false。
129   - 限制条件:Gatt客户端实例存在,有写入的描述符值。
130   - 验证方法:用验证程序查看写入的描述符值。
131
13210. BLE特征值变化
133
134    - 使用指导:为回调函数,用来监听相关类型事件的变化,并弹窗显示信息。
135
136      >订阅特征值更改事件。
137      >
138      >type为要侦听的特征值更改事件的类型。
139      >
140      >callback回调用于侦听特征值更改事件。
141
142    - 限制条件:需要在相关类型事件发生改变前,开启监听。
143
144    - 验证方法:在事件变化后,查看是否有弹窗信息显示。
145
14611. 设定BLEMtu尺寸
147
148    - 使用指导:设置BLE外围设备的mtu大小。mtu最大传输单位。如果设置mtu成功,返回信息为true;否则返回false。
149    - 限制条件:蓝牙需要打开,Gatt客户端实例存在。
150    - 验证方法:查看显示结果。
151
15212. 设置通知特性更改
153
154    - 使用指导:启用或禁用值更改时的特征通知。enable指定是否启用特征通知。值为true时表示通知已启用,值为false时表示通知已禁用。如果特性通知被启用,返回true;否则返回false。
155    - 限制条件:蓝牙需要打开,Gatt客户端实例存在,且需要传入UUid值。
156    - 验证方法:查看特征值的变化。
157
15813. 获取设备名称_callback/promise
159
160    - 使用指导:获取BLE外围设备的名称。如果获得,返回名称的字符串表示形式;如果无法获取名称或名称不存在,则返回null。
161    - 限制条件:Gatt客户端实例存在,传入的Name值要正确。
162    - 验证方法:查看显示的结果。
163
16414. 获取Rssi值_callback/promise
165
166    - 使用指导:获取此BLE外围设备的RSSI值。return返回RSSI值。
167    - 限制条件:Gatt客户端实例存在,传入的Rssi值要正确。
168    - 验证方法:查看显示的结果。
169
170---
171
172### Gatt服务器
173
174<img src="Gatt与GattServer跳转1.png" alt="Gatt与GattServer跳转1">
175
176#### GattServerSetting界面
177
178点击"switch"图标<img src="switch.png" alt="switch" style="zoom: 50%;" />,同样可以在setting界面修改MAC地址,ServerUUID,characteristicUuid,descriptorUuid的值。并且可以设置广播配置。默认值已经设置好,默认"设置"和"connectable"为已勾选的true,其他为false,如果测试时需要,可以手动设置"interval","txPower","Response"
179
180![GattServer与GattServerSetting跳转](GattServer与GattServerSetting跳转.png)
181
182#### GattServer中的主要接口
183
184|   method名称   |        API名称         |                           所需参数                           |   返回值   | 备注 |
185| :------------: | :--------------------: | :----------------------------------------------------------: | :--------: | :--: |
186| 创建Gatt服务器 |    createGattServer    |                              ()                              | GattServer |      |
187|    添加服务    |       addService       |                    (service: GattService)                    |  boolean   |      |
188|    删除服务    |     removeService      |                    (serviceUuid: string)                     |  boolean   |      |
189|    开始广播    |    startAdvertising    | (setting: AdvertiseSetting, advData: AdvertiseData, advResponse?: AdvertiseData) |    void    |      |
190|    停止广播    |    stopAdvertising     |                              ()                              |    void    |      |
191|      关闭      |         close          |                              ()                              |    void    |      |
192|    连接状态    | on.connectStateChange  | (type: "connectStateChange", callback: Callback<BLEConnectChangedState>) |    void    |      |
193|   读取特征值   | on.characteristicRead  | (type: "characteristicRead", callback: Callback<CharacteristicReadReq>) |    void    |      |
194|   写入特征值   | on.characteristicWrite | (type: "characteristicWrite", callback: Callback<CharacteristicWriteReq>) |    void    |      |
195|   读取描述符   |   on.descriptorRead    | (type: "descriptorRead", callback: Callback<DescriptorReadReq>) |    void    |      |
196|   写入描述符   |   on.descriptorWrite   | (type: "descriptorWrite", callback: Callback<DescriptorWriteReq>) |    void    |      |
197
198#### Gatt_Server测试功能
199
2001. 创建Gatt服务器
201
202   - 使用指导:创建JavaScript网关服务器实例。return返回JavaScript网关服务器实例code网关服务器。
203   - 限制条件:蓝牙状态要打开,且GattServer不存在实例。
204   - 验证方法:可以尝试用Client端去搜索本设备的GattServer端。
205
2062. 添加/删除服务
207
208   - 使用指导:
209
210     >添加服务:
211     >
212     >- 添加要承载的指定服务,添加的服务及其特性由本地设备提供。
213     >
214     >- service表示要添加的服务。
215     >
216     >- 如果添加了服务,返回 true;否则返回 false。
217     >
218     >删除服务:
219     >
220     >- 从该设备提供的GATT服务列表中删除指定的服务。
221     >
222     >- serviceUuid表示要删除的服务的UUID。
223     >
224     >- 如果服务被删除,返回 true;否则返回 false。
225
226   - 限制条件:Gatt服务端实例要存在,并且要传入UUid和value的值。
227
228   - 验证方法:使用验证程序查看服务是否添加/删除成功。
229
2303. 开始/停止广播
231
232   - 使用指导:
233
234     >开始广播:
235     >
236     >- 启动BLE广播。
237     >- setting指示BLE广播的设置。如果需要使用默认值,将此参数设置为null。
238     >- advData表示广播数据。advResponse表示与广播数据关联的扫描响应。
239     >
240     >停止广播:停止BLE广播。
241
242   - 限制条件:配置页面中勾选了"√",并传入了正确的配置信息。
243
244   - 验证方法:查看显示信息,使用client端设备去尝试搜索广播。
245
2464. 关闭
247
248   - 使用指导:关闭此{GattServer}对象并注销其回调。
249   - 限制条件:Server端存在,才可以关闭。
250   - 验证方法:Server端关闭,无法搜索到本设备的Server端。
251
2525. 连接状态
253
254   - 使用指导:为回调函数,用来监听相关类型事件的变化,并弹窗显示信息。
255
256     > 订阅服务器连接状态更改事件。
257     >
258     > type为要侦听的连接状态更改事件的类型。
259     >
260     > callback回调用于侦听连接状态更改事件。
261
262   - 限制条件:需要在相关类型事件发生改变前,开启监听。
263
264   - 验证方法:在事件变化后,查看是否有弹窗信息显示。
265
2666. 读取/写入特征值
267
268   - 使用指导:为回调函数,用来监听相关类型事件的变化,并弹窗显示信息。
269
270     >读取特征值:
271     >
272     >- 订阅特征读取事件。
273     >- type为要侦听的特征读取事件的类型。
274     >- callback回调用于侦听特征读取事件。
275     >
276     >写入特征值:
277     >
278     >- 订阅特征写入事件。
279     >- type为要侦听的特征写入事件的类型。
280     >- callback回调用于侦听特征写入事件。
281
282   - 限制条件:需要在相关类型事件发生改变前,开启监听。
283
284   - 验证方法:在事件变化后,查看是否有弹窗信息显示。
285
2867. 读取/写入描述符
287
288   - 使用指导:为回调函数,用来监听相关类型事件的变化,并弹窗显示信息。
289
290     >读取描述符值:
291     >
292     >- 订阅描述符写入事件。
293     >- type为要侦听的描述符写入事件的类型。
294     >- callback为回调用于侦听描述符写入事件。
295     >
296     >写入描述符值:
297     >
298     >- 订阅描述符读取事件。
299     >- type为要侦听的描述符读取事件的类型。
300     >- callback回调用于侦听描述符读取事件。
301
302   - 限制条件:需要在相关类型事件发生改变前,开启监听。
303
304   - 验证方法:在事件变化后,查看是否有弹窗信息显示。
305