TuyaOS
tkl_bluetooth_def.h
1#ifndef __TKL_BLUETOOTH_DEF_H__
2#define __TKL_BLUETOOTH_DEF_H__
3
4#include "tuya_cloud_types.h"
5#include "tuya_error_code.h"
6
7#define TKL_BLE_ROLE_SERVER (0x01)
8#define TKL_BLE_ROLE_CLIENT (0x02)
10#define TKL_BLE_GAP_ADDR_TYPE_PUBLIC (0x00)
11#define TKL_BLE_GAP_ADDR_TYPE_RANDOM (0x01)
13#define TKL_BLE_SCAN_TYPE_ACTIVE (0x00)
14#define TKL_BLE_SCAN_TYPE_PASSIVE (0x01)
16#define TKL_BLE_GAP_ADV_SET_DATA_SIZE_MAX (31)
18#define TKL_BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED (255)
23#define TKL_BLE_GAP_ADV_TYPE_CONN_SCANNABLE_UNDIRECTED (0x01)
25#define TKL_BLE_GAP_ADV_TYPE_CONN_NONSCANNABLE_DIR_HIGHDUTY_CYCLE (0x02)
29#define TKL_BLE_GAP_ADV_TYPE_CONN_NONSCANNABLE_DIRECTED (0x03)
32#define TKL_BLE_GAP_ADV_TYPE_NONCONN_SCANNABLE_UNDIRECTED (0x04)
34#define TKL_BLE_GAP_ADV_TYPE_NONCONN_NONSCANNABLE_UNDIRECTED (0x05)
36#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_CONN_NONSCANNABLE_UNDIRECTED (0x06)
38#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_CONN_NONSCANNABLE_DIRECTED (0x07)
40#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_NONCONN_SCANNABLE_UNDIRECTED (0x08)
43#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_NONCONN_SCANNABLE_DIRECTED (0x09)
46#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_NONCONN_NONSCANNABLE_UNDIRECTED (0x0A)
48#define TKL_BLE_GAP_ADV_TYPE_EXTENDED_NONCONN_NONSCANNABLE_DIRECTED (0x0B)
51#define TKL_BLE_GAP_PHY_AUTO (0x00)
52#define TKL_BLE_GAP_PHY_1MBPS (0x01)
53#define TKL_BLE_GAP_PHY_2MBPS (0x02)
54#define TKL_BLE_GAP_PHY_CODED (0x04)
56#define TKL_BLE_GAP_ADV_STATE_IDLE (0x00)
57#define TKL_BLE_GAP_ADV_STATE_START (0x01)
58#define TKL_BLE_GAP_ADV_STATE_ADVERTISING (0x02)
59#define TKL_BLE_GAP_ADV_STATE_STOP (0x04)
61#define TKL_BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION (0x13)
62#define TKL_BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES (0x14)
63#define TKL_BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF (0x15)
64#define TKL_BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION (0x16)
66#define TKL_BLE_GATT_SERVICE_MAX_NUM (3)
67#define TKL_BLE_GATT_CHAR_MAX_NUM (6)
68
69#define TKL_BLE_GATT_INVALID_HANDLE (0xFFFF)
72typedef struct {
73 UCHAR_T type;
74 UCHAR_T addr[6];
76
77typedef struct {
78 USHORT_T length;
79 UCHAR_T *p_data;
81
82 typedef enum {
83 TKL_BLE_ADV_DATA,
84 TKL_BLE_RSP_DATA,
85 TKL_BLE_ADV_RSP_DATA,
86} TKL_BLE_GAP_ADV_TYPE_E;
87
89typedef struct {
90 UCHAR_T adv_type;
98
100typedef struct {
101 TKL_BLE_GAP_ADV_TYPE_E adv_type;
103 CHAR_T rssi;
107
109typedef struct {
110 UCHAR_T extended;
114 UCHAR_T active : 1;
116 UCHAR_T scan_phys;
117 USHORT_T interval;
118 USHORT_T window;
119 USHORT_T timeout;
122
124typedef struct {
127 USHORT_T conn_latency;
130 USHORT_T connection_timeout;
132
133typedef enum {
134 TKL_BLE_UUID_TYPE_16,
135 TKL_BLE_UUID_TYPE_32,
136 TKL_BLE_UUID_TYPE_128,
137} TKL_BLE_UUID_TYPE_E;
138
140typedef struct {
141 TKL_BLE_UUID_TYPE_E uuid_type;
143 union {
144 USHORT_T uuid16;
145 UINT_T uuid32;
146 UCHAR_T uuid128[16];
147 }uuid;
149
151typedef enum {
152 TKL_BLE_GATT_CHAR_PROP_BROADCAST = 0x01,
153 TKL_BLE_GATT_CHAR_PROP_READ = 0x02,
154 TKL_BLE_GATT_CHAR_PROP_WRITE_NO_RSP = 0x04,
155 TKL_BLE_GATT_CHAR_PROP_WRITE = 0x08,
156 TKL_BLE_GATT_CHAR_PROP_NOTIFY = 0x10,
157 TKL_BLE_GATT_CHAR_PROP_INDICATE = 0x20,
158 TKL_BLE_GATT_CHAR_PROP_WRITE_AUTHEN_SIGNED = 0x40,
159 TKL_BLE_GATT_CHAR_PROP_EXT_PROP = 0x80,
160}TKL_BLE_CHAR_PROP_TYPE_E;
161
163typedef enum {
164 TKL_BLE_GATT_PERM_NONE = 0x01,
165 TKL_BLE_GATT_PERM_READ = 0x02,
166 TKL_BLE_GATT_PERM_WRITE = 0x04,
167 TKL_BLE_GATT_PERM_READ_ENCRYPT = 0x08,
168 TKL_BLE_GATT_PERM_WRITE_ENCRYPT = 0x10,
169 TKL_BLE_GATT_PERM_READ_AUTHEN = 0x20,
170 TKL_BLE_GATT_PERM_WRITE_AUTHEN = 0x40,
171 TKL_BLE_GATT_PERM_PREPARE_WRITE = 0x80,
172} TKL_BLE_ATTR_PERM_E;
173
174typedef struct {
175 USHORT_T handle;
178 UCHAR_T property;
179 UCHAR_T permission;
180 UCHAR_T value_len;
182
183typedef enum {
184 TKL_BLE_UUID_UNKNOWN = 0x0000,
185 TKL_BLE_UUID_SERVICE_PRIMARY = 0x2800,
186 TKL_BLE_UUID_SERVICE_SECONDARY = 0x2801,
187 TKL_BLE_UUID_SERVICE_INCLUDE = 0x2802,
188 TKL_BLE_UUID_CHARACTERISTIC = 0x2803,
189} TKL_BLE_SERVICE_TYPE_E;
190
191typedef struct {
192 USHORT_T handle;
195 TKL_BLE_SERVICE_TYPE_E type;
197 UCHAR_T char_num;
200
201typedef struct {
202 UCHAR_T svc_num;
203 TKL_BLE_SERVICE_PARAMS_T *p_service;
205
206typedef enum {
207 TKL_BLE_EVT_STACK_INIT = 0x01,
209 TKL_BLE_EVT_STACK_DEINIT,
211 TKL_BLE_EVT_STACK_RESET,
213 TKL_BLE_GAP_EVT_CONNECT,
215 TKL_BLE_GAP_EVT_DISCONNECT,
217 TKL_BLE_GAP_EVT_ADV_STATE,
219 TKL_BLE_GAP_EVT_ADV_REPORT,
221 TKL_BLE_GAP_EVT_CONN_PARAM_REQ,
223 TKL_BLE_GAP_EVT_CONN_PARAM_UPDATE,
225 TKL_BLE_GAP_EVT_CONN_RSSI,
226} TKL_BLE_GAP_EVT_TYPE_E;
227
228typedef enum {
229 TKL_BLE_GATT_EVT_MTU_REQUEST = 0x01 ,
231 TKL_BLE_GATT_EVT_MTU_RSP,
233 TKL_BLE_GATT_EVT_PRIM_SEV_DISCOVERY,
235 TKL_BLE_GATT_EVT_CHAR_DISCOVERY,
237 TKL_BLE_GATT_EVT_CHAR_DESC_DISCOVERY,
239 TKL_BLE_GATT_EVT_NOTIFY_TX,
241 TKL_BLE_GATT_EVT_WRITE_REQ,
243 TKL_BLE_GATT_EVT_NOTIFY_INDICATE_RX,
245 TKL_BLE_GATT_EVT_READ_RX,
247 TKL_BLE_GATT_EVT_SUBSCRIBE,
249 TKL_BLE_GATT_EVT_READ_CHAR_VALUE,
251} TKL_BLE_GATT_EVT_TYPE_E;
252
253typedef struct {
254 UCHAR_T role;
258
259typedef struct {
260 UCHAR_T role;
261 INT_T reason;
263
264typedef struct {
265 USHORT_T char_handle;
266 INT_T result;
268
269typedef struct {
270 UCHAR_T svc_num;
272 struct {
274 USHORT_T start_handle;
275 USHORT_T end_handle;
276 }services[TKL_BLE_GATT_SERVICE_MAX_NUM];
277
279
280typedef struct {
281 UCHAR_T char_num;
283 struct {
285 USHORT_T handle;
286 }characteristics[TKL_BLE_GATT_CHAR_MAX_NUM];
288
289typedef struct {
290 USHORT_T cccd_handle;
292
293typedef struct {
294 USHORT_T char_handle;
297
298typedef struct {
299 TKL_BLE_GAP_EVT_TYPE_E type;
300 USHORT_T conn_handle;
301 INT_T result;
303 union {
308 CHAR_T link_rssi;
309 }gap_event;
311typedef struct {
312 USHORT_T char_handle;
313 UCHAR_T reason;
314 UCHAR_T prev_notify : 1;
315 UCHAR_T cur_notify : 1;
316 UCHAR_T prev_indicate : 1;
317 UCHAR_T cur_indicate : 1;
319typedef struct {
320 USHORT_T char_handle;
321 USHORT_T offset;
323
324typedef struct {
325 TKL_BLE_GATT_EVT_TYPE_E type;
326 USHORT_T conn_handle;
327 INT_T result;
329 union {
330 USHORT_T exchange_mtu;
340 }gatt_event;
342
344typedef VOID(*TKL_BLE_GAP_EVT_FUNC_CB)(TKL_BLE_GAP_PARAMS_EVT_T *p_event);
345
347typedef VOID(*TKL_BLE_GATT_EVT_FUNC_CB)(TKL_BLE_GATT_PARAMS_EVT_T *p_event);
348
349#endif
350
Definition: tkl_bluetooth_def.h:174
TKL_BLE_UUID_T char_uuid
Definition: tkl_bluetooth_def.h:177
UCHAR_T value_len
Definition: tkl_bluetooth_def.h:180
UCHAR_T permission
Definition: tkl_bluetooth_def.h:179
UCHAR_T property
Definition: tkl_bluetooth_def.h:178
USHORT_T handle
Definition: tkl_bluetooth_def.h:175
Definition: tkl_bluetooth_def.h:293
USHORT_T char_handle
Definition: tkl_bluetooth_def.h:294
TKL_BLE_DATA_T report
Definition: tkl_bluetooth_def.h:295
Definition: tkl_bluetooth_def.h:77
USHORT_T length
Definition: tkl_bluetooth_def.h:78
UCHAR_T * p_data
Definition: tkl_bluetooth_def.h:79
GAP address parameters.
Definition: tkl_bluetooth_def.h:72
UCHAR_T type
Definition: tkl_bluetooth_def.h:73
GAP advertising parameters.
Definition: tkl_bluetooth_def.h:89
USHORT_T adv_interval_max
Definition: tkl_bluetooth_def.h:94
UCHAR_T adv_type
Definition: tkl_bluetooth_def.h:90
UCHAR_T adv_channel_map
Definition: tkl_bluetooth_def.h:95
USHORT_T adv_interval_min
Definition: tkl_bluetooth_def.h:93
TKL_BLE_GAP_ADDR_T direct_addr
Definition: tkl_bluetooth_def.h:91
GAP adv report parameters.
Definition: tkl_bluetooth_def.h:100
UCHAR_T channel_index
Definition: tkl_bluetooth_def.h:104
CHAR_T rssi
Definition: tkl_bluetooth_def.h:103
TKL_BLE_DATA_T data
Definition: tkl_bluetooth_def.h:105
TKL_BLE_GAP_ADV_TYPE_E adv_type
Definition: tkl_bluetooth_def.h:101
TKL_BLE_GAP_ADDR_T peer_addr
Definition: tkl_bluetooth_def.h:102
Definition: tkl_bluetooth_def.h:253
UCHAR_T role
Definition: tkl_bluetooth_def.h:254
TKL_BLE_GAP_ADDR_T peer_addr
Definition: tkl_bluetooth_def.h:255
TKL_BLE_GAP_CONN_PARAMS_T conn_params
Definition: tkl_bluetooth_def.h:256
Definition of LE connection request parameter.
Definition: tkl_bluetooth_def.h:124
USHORT_T conn_interval_max
Definition: tkl_bluetooth_def.h:126
USHORT_T conn_latency
Definition: tkl_bluetooth_def.h:127
USHORT_T conn_interval_min
Definition: tkl_bluetooth_def.h:125
USHORT_T conn_sup_timeout
Definition: tkl_bluetooth_def.h:128
Definition: tkl_bluetooth_def.h:259
INT_T reason
Definition: tkl_bluetooth_def.h:261
UCHAR_T role
Definition: tkl_bluetooth_def.h:260
Definition: tkl_bluetooth_def.h:298
TKL_BLE_GAP_EVT_TYPE_E type
Definition: tkl_bluetooth_def.h:299
TKL_BLE_GAP_CONN_PARAMS_T conn_param
Definition: tkl_bluetooth_def.h:307
TKL_BLE_GAP_DISCONNECT_EVT_T disconnect
Definition: tkl_bluetooth_def.h:305
TKL_BLE_GAP_CONNECT_EVT_T connect
Definition: tkl_bluetooth_def.h:304
INT_T result
Definition: tkl_bluetooth_def.h:301
TKL_BLE_GAP_ADV_REPORT_T adv_report
Definition: tkl_bluetooth_def.h:306
USHORT_T conn_handle
Definition: tkl_bluetooth_def.h:300
CHAR_T link_rssi
Definition: tkl_bluetooth_def.h:308
GAP scanning parameters.
Definition: tkl_bluetooth_def.h:109
UCHAR_T extended
Definition: tkl_bluetooth_def.h:110
USHORT_T interval
Definition: tkl_bluetooth_def.h:117
USHORT_T timeout
Definition: tkl_bluetooth_def.h:119
UCHAR_T active
Definition: tkl_bluetooth_def.h:114
USHORT_T window
Definition: tkl_bluetooth_def.h:118
UCHAR_T scan_phys
Definition: tkl_bluetooth_def.h:116
UCHAR_T scan_channel_map
Definition: tkl_bluetooth_def.h:120
Definition: tkl_bluetooth_def.h:201
UCHAR_T svc_num
Definition: tkl_bluetooth_def.h:202
Definition: tkl_bluetooth_def.h:280
USHORT_T handle
Definition: tkl_bluetooth_def.h:285
TKL_BLE_UUID_T uuid
Definition: tkl_bluetooth_def.h:284
UCHAR_T char_num
Definition: tkl_bluetooth_def.h:281
Definition: tkl_bluetooth_def.h:289
USHORT_T cccd_handle
Definition: tkl_bluetooth_def.h:290
Definition: tkl_bluetooth_def.h:324
TKL_BLE_SUBSCRBE_EVT_T subscribe
Definition: tkl_bluetooth_def.h:338
TKL_BLE_DATA_REPORT_T data_report
Definition: tkl_bluetooth_def.h:336
USHORT_T conn_handle
Definition: tkl_bluetooth_def.h:326
TKL_BLE_GATT_EVT_TYPE_E type
Definition: tkl_bluetooth_def.h:325
INT_T result
Definition: tkl_bluetooth_def.h:327
TKL_BLE_DATA_REPORT_T write_report
Definition: tkl_bluetooth_def.h:335
TKL_BLE_NOTIFY_RESULT_EVT_T notify_result
Definition: tkl_bluetooth_def.h:334
USHORT_T exchange_mtu
Definition: tkl_bluetooth_def.h:330
TKL_BLE_GATT_DESC_DISC_TYPE_T desc_disc
Definition: tkl_bluetooth_def.h:333
TKL_BLE_GATT_SVC_DISC_TYPE_T svc_disc
Definition: tkl_bluetooth_def.h:331
TKL_BLE_GATT_CHAR_DISC_TYPE_T char_disc
Definition: tkl_bluetooth_def.h:332
TKL_BLE_READ_CHAR_EVT_T char_read
Definition: tkl_bluetooth_def.h:339
TKL_BLE_DATA_REPORT_T data_read
Definition: tkl_bluetooth_def.h:337
Definition: tkl_bluetooth_def.h:269
USHORT_T end_handle
Definition: tkl_bluetooth_def.h:275
UCHAR_T svc_num
Definition: tkl_bluetooth_def.h:270
USHORT_T start_handle
Definition: tkl_bluetooth_def.h:274
TKL_BLE_UUID_T uuid
Definition: tkl_bluetooth_def.h:273
Definition: tkl_bluetooth_def.h:264
USHORT_T char_handle
Definition: tkl_bluetooth_def.h:265
INT_T result
Definition: tkl_bluetooth_def.h:266
Definition: tkl_bluetooth_def.h:319
USHORT_T char_handle
Definition: tkl_bluetooth_def.h:320
Definition: tkl_bluetooth_def.h:191
TKL_BLE_CHAR_PARAMS_T * p_char
Definition: tkl_bluetooth_def.h:198
USHORT_T handle
Definition: tkl_bluetooth_def.h:192
TKL_BLE_SERVICE_TYPE_E type
Definition: tkl_bluetooth_def.h:195
UCHAR_T char_num
Definition: tkl_bluetooth_def.h:197
TKL_BLE_UUID_T svc_uuid
Definition: tkl_bluetooth_def.h:194
Definition: tkl_bluetooth_def.h:311
UCHAR_T cur_indicate
Definition: tkl_bluetooth_def.h:317
UCHAR_T prev_notify
Definition: tkl_bluetooth_def.h:314
UCHAR_T prev_indicate
Definition: tkl_bluetooth_def.h:316
USHORT_T char_handle
Definition: tkl_bluetooth_def.h:312
Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs.
Definition: tkl_bluetooth_def.h:140
UINT_T uuid32
Definition: tkl_bluetooth_def.h:145
TKL_BLE_UUID_TYPE_E uuid_type
Definition: tkl_bluetooth_def.h:141
USHORT_T uuid16
Definition: tkl_bluetooth_def.h:144