TuyaOS
tal_bluetooth_def.h
1#ifndef __TAL_BLUETOOTH_DEF_H__
2#define __TAL_BLUETOOTH_DEF_H__
3
4#include "tuya_cloud_types.h"
5#include "tuya_error_code.h"
6
8/* Tuya Ble Command Service UUID First-Version */
9#define TAL_BLE_CMD_SERVICE_UUID_V1 (0x1910)
10/* Tuya Ble Write Characteristic UUID First-Version*/
11#define TAL_BLE_CMD_WRITE_CHAR_UUID_V1 (0x2B11)
12/* Tuya Ble Notify Characteristic UUID First-Version*/
13#define TAL_BLE_CMD_NOTIFY_CHAR_UUID_V1 (0x2B10)
14
15/* Tuya Ble Bulk Service UUID First-Version */
16#define TAL_BLE_BULK_SERVICE_UUID_V1 (0x1920)
17/* Tuya Ble Write Characteristic UUID First-Version*/
18#define TAL_BLE_BULK_WRITE_CHAR_UUID_V1 (0x2B23)
19/* Tuya Ble Notify Characteristic UUID First-Version*/
20#define TAL_BLE_BULK_NOTIFY_CHAR_UUID_V1 (0x2B24)
21
22/* Tuya Ble Command Service UUID Second-Version */
23#define TAL_BLE_CMD_SERVICE_UUID_V2 (0xFD50)
24/* Tuya Ble Write Characteristic UUID Second-Version*/
25#define TAL_BLE_CMD_WRITE_CHAR_UUID_V2 (0x0001)
26#define TAL_BLE_CMD_WRITE_CHAR_UUID128_V2 {0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}
27/* Tuya Ble Notify Characteristic UUID Second-Version*/
28#define TAL_BLE_CMD_NOTIFY_CHAR_UUID_V2 (0x0002)
29#define TAL_BLE_CMD_NOTIFY_CHAR_UUID128_V2 {0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}
30/* Tuya Ble Read Characteristic UUID Second-Version*/
31#define TAL_BLE_CMD_READ_CHAR_UUID_V2 (0x0003)
32#define TAL_BLE_CMD_READ_CHAR_UUID128_V2 {0xD0, 0x07, 0x9B, 0x5F, 0x80, 0x00, 0x01, 0x80, 0x01, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00}
33
34/* Tuya Ble Service UUID Scan UUID */
35#define TAL_BLE_SVC_SCAN_UUID_V1 (0xA201)
36#define TAL_BLE_SVC_SCAN_UUID_V2 (0xA300)
37#define TAL_BLE_SVC_SCAN_UUID_V3 (0xFD50)
38
39/* Tuya Ble Service Characteristic Index */
40#define TAL_COMMON_WRITE_CHAR_INDEX (0)
41#define TAL_COMMON_NOTIFY_CHAR_INDEX (1)
42#define TAL_COMMON_READ_CHAR_INDEX (2)
43
44#define DEFAULT_ADV_PARAMS(min, max) \
45 { \
46 .adv_interval_min = min, \
47 .adv_interval_max = max, \
48 .adv_type = TAL_BLE_ADV_TYPE_CS_UNDIR, \
49 }
50#define TUYAOS_BLE_DEFAULT_ADV_PARAM ((TAL_BLE_ADV_PARAMS_T *) (&(TAL_BLE_ADV_PARAMS_T) DEFAULT_ADV_PARAMS(30, 60)))
51
52#define DEFAULT_SCAN_PARAMS(interval, window) \
53 { \
54 .type = TAL_BLE_SCAN_TYPE_ACTIVE, \
55 .scan_interval = interval, \
56 .scan_window = window, \
57 .timeout = 0x0000, \
58 .filter_dup = 1, \
59 }
60#define TUYAOS_BLE_DEFAULT_SCAN_PARAM ((TAL_BLE_SCAN_PARAMS_T *) (&(TAL_BLE_SCAN_PARAMS_T) DEFAULT_SCAN_PARAMS(30, 30)))
61
62#define DEFAULT_CONN_PARAMS(min, max) \
63 { \
64 .min_conn_interval = min, \
65 .max_conn_interval = max, \
66 .latency = 0, \
67 .conn_sup_timeout = 0x100, \
68 .connection_timeout = 5, \
69 }
70#define TUYAOS_BLE_DEFAULT_CONN_PARAM ((TAL_BLE_CONN_PARAMS_T *) (&(TAL_BLE_CONN_PARAMS_T) DEFAULT_CONN_PARAMS(30, 60)))
71
73 typedef enum {
74 TAL_BLE_ADDR_TYPE_PUBLIC = 0x00,
75 TAL_BLE_ADDR_TYPE_RANDOM = 0x01,
76} TAL_BLE_ADDR_TYPE_E;
77
78 typedef enum {
79 TAL_BLE_ADV_DATA,
80 TAL_BLE_RSP_DATA,
81 TAL_BLE_ADV_RSP_DATA,
82} TAL_BLE_ADV_DATA_TYPE_E;
83
84typedef enum {
85 TAL_BLE_ADV_TYPE_CS_UNDIR = 0x01,
86 TAL_BLE_ADV_TYPE_CNS_DIR_HIGH_DUTY = 0x02,
87 TAL_BLE_ADV_TYPE_CNS_DIR = 0x03,
88 TAL_BLE_ADV_TYPE_NCS_UNDIR = 0x04,
89 TAL_BLE_ADV_TYPE_NCNS_UNDIR = 0x05,
90} TAL_BLE_ADV_TYPE_E;
91
92typedef struct {
93 TAL_BLE_ADDR_TYPE_E type;
94 UCHAR_T addr[6];
96
97typedef struct {
100 TAL_BLE_ADV_TYPE_E adv_type;
103
104typedef struct {
106 TAL_BLE_ADV_DATA_TYPE_E adv_type;
108 CHAR_T rssi;
109 UCHAR_T *p_data;
110 UCHAR_T data_len;
112
113typedef struct {
114 USHORT_T len;
115 UCHAR_T *p_data;
117
119typedef enum {
120 TAL_BLE_SCAN_TYPE_ACTIVE,
121 TAL_BLE_SCAN_TYPE_PASSIVE,
122} TAL_BLE_SCAN_TYPE_E;
123
124typedef struct {
125 TAL_BLE_SCAN_TYPE_E type;
126
127 USHORT_T scan_interval;
128 USHORT_T scan_window;
129 USHORT_T timeout;
130 UCHAR_T filter_dup;
132
134typedef struct {
135 USHORT_T conn_handle;
136 USHORT_T char_handle[6];
141
142typedef struct {
146
147typedef struct {
150 USHORT_T latency;
155
156typedef struct {
160 INT_T result;
162
163typedef struct {
165 UCHAR_T reason;
167
168typedef struct {
169 USHORT_T conn_handle;
170 USHORT_T char_handle;
172 INT_T result;
174
175typedef struct {
176 USHORT_T conn_handle;
177 CHAR_T rssi;
179
180typedef struct {
181 USHORT_T conn_handle;
182 USHORT_T mtu;
184
185typedef struct {
186 USHORT_T conn_handle;
189
190
192typedef enum {
193 TAL_BLE_ROLE_PERIPERAL = 0x0001,
194 TAL_BLE_ROLE_CENTRAL = 0x0002,
195 TAL_BLE_ROLE_BEACON = 0x0004,
197 TAL_MESH_ROLE_ADV_PROVISIONER = 0x0100,
198 TAL_MESH_ROLE_GATT_PROVISIONER = 0x0200,
199 TAL_MESH_ROLE_NODE = 0x0400,
200} TAL_BLE_ROLE_E;
201
202typedef enum {
203 TAL_BLE_STACK_INIT = 0x01,
205 TAL_BLE_STACK_DEINIT,
207 TAL_BLE_EVT_PERIPHERAL_CONNECT,
209 TAL_BLE_EVT_CENTRAL_CONNECT_DISCOVERY,
211 TAL_BLE_EVT_DISCONNECT,
213 TAL_BLE_EVT_ADV_REPORT,
215 TAL_BLE_EVT_CONN_PARAM_REQ,
217 TAL_BLE_EVT_CONN_PARAM_UPDATE,
219 TAL_BLE_EVT_CONN_RSSI,
221 TAL_BLE_EVT_MTU_REQUEST,
223 TAL_BLE_EVT_MTU_RSP,
225 TAL_BLE_EVT_NOTIFY_TX,
227 TAL_BLE_EVT_WRITE_REQ,
229 TAL_BLE_EVT_NOTIFY_RX,
231 TAL_BLE_EVT_READ_RX,
233 TAL_BLE_EVT_SUBSCRIBE,
235 TAL_BLE_EVT_READ_CHAR,
236} TAL_BLE_EVT_TYPE_E;
237
238typedef struct {
239 USHORT_T conn_handle;
240 USHORT_T char_handle;
241 UCHAR_T reason;
242 UCHAR_T prev_notify : 1;
243 UCHAR_T cur_notify : 1;
244 UCHAR_T prev_indicate : 1;
245 UCHAR_T cur_indicate : 1;
247
248typedef struct {
249 USHORT_T conn_handle;
250 USHORT_T char_handle;
251 USHORT_T offset;
253
254typedef struct {
255 TAL_BLE_EVT_TYPE_E type;
256
257 union {
258 UCHAR_T init;
271 }ble_event;
273
274
276typedef VOID(*TAL_BLE_EVT_FUNC_CB)(TAL_BLE_EVT_PARAMS_T *p_event);
277
278#endif
279
Definition: tal_bluetooth_def.h:92
TAL_BLE_ADDR_TYPE_E type
Definition: tal_bluetooth_def.h:93
Definition: tal_bluetooth_def.h:97
USHORT_T adv_interval_max
Definition: tal_bluetooth_def.h:99
USHORT_T adv_interval_min
Definition: tal_bluetooth_def.h:98
TAL_BLE_ADV_TYPE_E adv_type
Definition: tal_bluetooth_def.h:100
TAL_BLE_ADDR_T direct_addr
Definition: tal_bluetooth_def.h:101
Definition: tal_bluetooth_def.h:104
CHAR_T rssi
Definition: tal_bluetooth_def.h:108
UCHAR_T data_len
Definition: tal_bluetooth_def.h:110
UCHAR_T * p_data
Definition: tal_bluetooth_def.h:109
TAL_BLE_ADDR_T peer_addr
Definition: tal_bluetooth_def.h:105
TAL_BLE_ADV_DATA_TYPE_E adv_type
Definition: tal_bluetooth_def.h:106
Definition: tal_bluetooth_def.h:156
TAL_BLE_CONN_PARAMS_T conn_param
Definition: tal_bluetooth_def.h:159
INT_T result
Definition: tal_bluetooth_def.h:160
TAL_BLE_PEER_INFO_T peer
Definition: tal_bluetooth_def.h:157
Definition: tal_bluetooth_def.h:147
USHORT_T conn_sup_timeout
Definition: tal_bluetooth_def.h:151
USHORT_T connection_timeout
Definition: tal_bluetooth_def.h:153
USHORT_T min_conn_interval
Definition: tal_bluetooth_def.h:148
USHORT_T max_conn_interval
Definition: tal_bluetooth_def.h:149
USHORT_T latency
Definition: tal_bluetooth_def.h:150
Definition: tal_bluetooth_def.h:185
USHORT_T conn_handle
Definition: tal_bluetooth_def.h:186
TAL_BLE_CONN_PARAMS_T conn
Definition: tal_bluetooth_def.h:187
Definition: tal_bluetooth_def.h:175
CHAR_T rssi
Definition: tal_bluetooth_def.h:177
USHORT_T conn_handle
Definition: tal_bluetooth_def.h:176
Definition: tal_bluetooth_def.h:142
TAL_BLE_DATA_T report
Definition: tal_bluetooth_def.h:144
TAL_BLE_PEER_INFO_T peer
Definition: tal_bluetooth_def.h:143
Definition: tal_bluetooth_def.h:113
USHORT_T len
Definition: tal_bluetooth_def.h:114
UCHAR_T * p_data
Definition: tal_bluetooth_def.h:115
Definition: tal_bluetooth_def.h:163
TAL_BLE_PEER_INFO_T peer
Definition: tal_bluetooth_def.h:164
UCHAR_T reason
Definition: tal_bluetooth_def.h:165
Definition: tal_bluetooth_def.h:254
TAL_BLE_ADV_REPORT_T adv_report
Definition: tal_bluetooth_def.h:261
TAL_BLE_DATA_REPORT_T data_read
Definition: tal_bluetooth_def.h:268
TAL_BLE_DATA_REPORT_T data_report
Definition: tal_bluetooth_def.h:267
TAL_BLE_EXCHANGE_MTU_EVT_T exchange_mtu
Definition: tal_bluetooth_def.h:263
TAL_BLE_DATA_REPORT_T write_report
Definition: tal_bluetooth_def.h:266
UCHAR_T init
Definition: tal_bluetooth_def.h:258
TAL_BLE_SUBSCRBE_EVT_T subscribe
Definition: tal_bluetooth_def.h:269
TAL_BLE_READ_CHAR_EVT_T char_read
Definition: tal_bluetooth_def.h:270
TAL_BLE_CONN_PARAM_EVT_T conn_param
Definition: tal_bluetooth_def.h:262
TAL_BLE_CONN_RSSI_EVT_T link_rssi
Definition: tal_bluetooth_def.h:264
TAL_BLE_CONNECT_EVT_T connect
Definition: tal_bluetooth_def.h:259
TAL_BLE_DISCONNECT_EVT_T disconnect
Definition: tal_bluetooth_def.h:260
TAL_BLE_NOTIFY_TX_EVT_T notify_result
Definition: tal_bluetooth_def.h:265
Definition: tal_bluetooth_def.h:180
USHORT_T mtu
Definition: tal_bluetooth_def.h:182
USHORT_T conn_handle
Definition: tal_bluetooth_def.h:181
Definition: tal_bluetooth_def.h:168
INT_T result
Definition: tal_bluetooth_def.h:172
USHORT_T char_handle
Definition: tal_bluetooth_def.h:170
USHORT_T conn_handle
Definition: tal_bluetooth_def.h:169
Definition: tal_bluetooth_def.h:134
TAL_BLE_ADDR_T peer_addr
Definition: tal_bluetooth_def.h:138
Definition: tal_bluetooth_def.h:248
USHORT_T char_handle
Definition: tal_bluetooth_def.h:250
USHORT_T offset
Definition: tal_bluetooth_def.h:251
Definition: tal_bluetooth_def.h:124
USHORT_T scan_window
Definition: tal_bluetooth_def.h:128
USHORT_T scan_interval
Definition: tal_bluetooth_def.h:127
USHORT_T timeout
Definition: tal_bluetooth_def.h:129
UCHAR_T filter_dup
Definition: tal_bluetooth_def.h:130
Definition: tal_bluetooth_def.h:238
USHORT_T char_handle
Definition: tal_bluetooth_def.h:240
UCHAR_T prev_indicate
Definition: tal_bluetooth_def.h:244
UCHAR_T cur_indicate
Definition: tal_bluetooth_def.h:245
UCHAR_T prev_notify
Definition: tal_bluetooth_def.h:242