Bluetooth: Set le data length command and event
[platform/kernel/linux-starfive.git] / include / net / bluetooth / mgmt_tizen.h
1 /*
2  * BlueZ - Bluetooth protocol stack for Linux
3  *
4  * Copyright (c) 2015-2016 Samsung Electronics Co., Ltd.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
11  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
13  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
14  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
15  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17  * SOFTWARE.
18  */
19
20 #ifndef __MGMT_TIZEN_H
21 #define __MGMT_TIZEN_H
22
23 #define TIZEN_OP_CODE_BASE      0xff00
24 #define TIZEN_EV_BASE           0xff00
25
26 #define MGMT_OP_SET_ADVERTISING_PARAMS          (TIZEN_OP_CODE_BASE + 0x01)
27 struct mgmt_cp_set_advertising_params {
28         __le16  interval_min;
29         __le16  interval_max;
30         __u8 filter_policy;
31         __u8 type;
32 } __packed;
33 #define MGMT_SET_ADVERTISING_PARAMS_SIZE        6
34
35 #define MGMT_OP_SET_ADVERTISING_DATA            (TIZEN_OP_CODE_BASE + 0x02)
36 struct mgmt_cp_set_advertising_data {
37         __u8    data[HCI_MAX_AD_LENGTH];
38 } __packed;
39 #define MGMT_SET_ADVERTISING_DATA_SIZE          HCI_MAX_AD_LENGTH
40 #define MGMT_SET_ADV_MIN_APP_DATA_SIZE          1
41
42 #define MGMT_OP_SET_SCAN_RSP_DATA               (TIZEN_OP_CODE_BASE + 0x03)
43 struct mgmt_cp_set_scan_rsp_data {
44         __u8    data[HCI_MAX_AD_LENGTH];
45 } __packed;
46 #define MGMT_SET_SCAN_RSP_DATA_SIZE             HCI_MAX_AD_LENGTH
47 #define MGMT_SET_SCAN_RSP_MIN_APP_DATA_SIZE     1
48
49 #define MGMT_OP_ADD_DEV_WHITE_LIST              (TIZEN_OP_CODE_BASE + 0x04)
50 struct mgmt_cp_add_dev_white_list {
51         __u8    bdaddr_type;
52         bdaddr_t bdaddr;
53 } __packed;
54 #define MGMT_ADD_DEV_WHITE_LIST_SIZE            7
55
56 #define MGMT_OP_REMOVE_DEV_FROM_WHITE_LIST      (TIZEN_OP_CODE_BASE + 0x05)
57 struct mgmt_cp_remove_dev_from_white_list {
58         __u8    bdaddr_type;
59         bdaddr_t bdaddr;
60 } __packed;
61 #define MGMT_REMOVE_DEV_FROM_WHITE_LIST_SIZE    7
62
63 #define MGMT_OP_CLEAR_DEV_WHITE_LIST            (TIZEN_OP_CODE_BASE + 0x06)
64 #define MGMT_OP_CLEAR_DEV_WHITE_LIST_SIZE       0
65
66 /* For RSSI monitoring */
67 #define MGMT_OP_SET_RSSI_ENABLE                 (TIZEN_OP_CODE_BASE + 0x07)
68 #define MGMT_SET_RSSI_ENABLE_SIZE               10
69
70 struct mgmt_cp_set_enable_rssi {
71         __s8    low_th;
72         __s8    in_range_th;
73         __s8    high_th;
74         bdaddr_t        bdaddr;
75         __s8    link_type;
76 } __packed;
77
78 struct mgmt_cc_rsp_enable_rssi {
79         __u8    status;
80         __u8    le_ext_opcode;
81         bdaddr_t        bt_address;
82         __s8    link_type;
83 } __packed;
84
85 #define MGMT_OP_GET_RAW_RSSI                    (TIZEN_OP_CODE_BASE + 0x08)
86 #define MGMT_GET_RAW_RSSI_SIZE                  7
87
88 struct mgmt_cp_get_raw_rssi {
89         bdaddr_t bt_address;
90         __u8    link_type;
91 } __packed;
92
93 #define MGMT_OP_SET_RSSI_DISABLE                (TIZEN_OP_CODE_BASE + 0x09)
94 #define MGMT_SET_RSSI_DISABLE_SIZE              7
95 struct mgmt_cp_disable_rssi {
96         bdaddr_t        bdaddr;
97         __u8    link_type;
98 } __packed;
99 struct mgmt_cc_rp_disable_rssi {
100         __u8    status;
101         __u8    le_ext_opcode;
102         bdaddr_t        bt_address;
103         __s8    link_type;
104 } __packed;
105 /* RSSI monitoring */
106
107 /* For le discovery */
108 #define MGMT_OP_START_LE_DISCOVERY              (TIZEN_OP_CODE_BASE + 0x0a)
109 struct mgmt_cp_start_le_discovery {
110         __u8    type;
111 } __packed;
112 #define MGMT_START_LE_DISCOVERY_SIZE            1
113
114 #define MGMT_OP_STOP_LE_DISCOVERY               (TIZEN_OP_CODE_BASE + 0x0b)
115 struct mgmt_cp_stop_le_discovery {
116         __u8    type;
117 } __packed;
118 #define MGMT_STOP_LE_DISCOVERY_SIZE             1
119 /* le discovery */
120
121 /* For LE auto connection */
122 #define MGMT_OP_DISABLE_LE_AUTO_CONNECT         (TIZEN_OP_CODE_BASE + 0x0c)
123 #define MGMT_DISABLE_LE_AUTO_CONNECT_SIZE       0
124 /* LE auto connection */
125
126 /* For Add LE connection parameter update procedure */
127 #define MGMT_LE_CONN_UPDATE_SIZE                14
128 #define MGMT_OP_LE_CONN_UPDATE                  (TIZEN_OP_CODE_BASE + 0x0d)
129 struct mgmt_cp_le_conn_update {
130         __le16  conn_interval_min;
131         __le16  conn_interval_max;
132         __le16  conn_latency;
133         __le16  supervision_timeout;
134         bdaddr_t        bdaddr;
135 } __packed;
136 /* Add LE connection parameter update procedure */
137
138 /* For Set Manufacturer Data */
139 #define MGMT_OP_SET_MANUFACTURER_DATA           (TIZEN_OP_CODE_BASE + 0x0e)
140 struct mgmt_cp_set_manufacturer_data {
141         __u8    data[100];
142 } __packed;
143 #define MGMT_SET_MANUFACTURER_DATA_SIZE         100
144 /* Set Manufacturer Data */
145
146 #define MGMT_OP_LE_SET_SCAN_PARAMS              (TIZEN_OP_CODE_BASE + 0x0f)
147 struct mgmt_cp_le_set_scan_params {
148         __u8    type;   /* le scan type */
149         __le16  interval;
150         __le16  window;
151 } __packed;
152 #define MGMT_LE_SET_SCAN_PARAMS_SIZE            5
153
154 #define MGMT_SCO_ROLE_HANDSFREE                 0x00
155 #define MGMT_SCO_ROLE_AUDIO_GATEWAY             0x01
156 #define MGMT_OP_SET_VOICE_SETTING               (TIZEN_OP_CODE_BASE + 0x10)
157 struct mgmt_cp_set_voice_setting {
158         bdaddr_t        bdaddr;
159         uint8_t         sco_role;
160         uint16_t        voice_setting;
161 } __packed;
162 #define MGMT_SET_VOICE_SETTING_SIZE             9
163
164 #define MGMT_OP_GET_ADV_TX_POWER                (TIZEN_OP_CODE_BASE + 0x11)
165 #define MGMT_GET_ADV_TX_POWER_SIZE              0
166 struct mgmt_rp_get_adv_tx_power {
167         __s8    adv_tx_power;
168 } __packed;
169
170 #define MGMT_OP_ENABLE_6LOWPAN                  (TIZEN_OP_CODE_BASE + 0x12)
171 struct mgmt_cp_enable_6lowpan {
172         __u8    enable_6lowpan;
173 } __packed;
174 #define MGMT_ENABLE_BT_6LOWPAN_SIZE             1
175
176 #define MGMT_OP_CONNECT_6LOWPAN                 (TIZEN_OP_CODE_BASE + 0x13)
177 struct mgmt_cp_connect_6lowpan {
178         struct mgmt_addr_info   addr;
179 } __packed;
180 #define MGMT_CONNECT_6LOWPAN_SIZE               7
181
182 #define MGMT_OP_DISCONNECT_6LOWPAN              (TIZEN_OP_CODE_BASE + 0x14)
183 struct mgmt_cp_disconnect_6lowpan {
184         struct  mgmt_addr_info addr;
185 } __packed;
186 #define MGMT_DISCONNECT_6LOWPAN_SIZE            7
187
188 #define MGMT_OP_LE_READ_MAXIMUM_DATA_LENGTH     (TIZEN_OP_CODE_BASE + 0x15)
189 struct mgmt_rp_le_read_maximum_data_length {
190         __le16  max_tx_octets;
191         __le16  max_tx_time;
192         __le16  max_rx_octets;
193         __le16  max_rx_time;
194 } __packed;
195 #define MGMT_LE_READ_MAXIMUM_DATA_LENGTH_SIZE   0
196
197 #define MGMT_OP_LE_WRITE_HOST_SUGGESTED_DATA_LENGTH     (TIZEN_OP_CODE_BASE + 0x16)
198 struct mgmt_cp_le_write_host_suggested_data_length {
199         __le16  def_tx_octets;
200         __le16  def_tx_time;
201 } __packed;
202 #define MGMT_LE_WRITE_HOST_SUGGESTED_DATA_LENGTH_SIZE   4
203
204 #define MGMT_OP_LE_READ_HOST_SUGGESTED_DATA_LENGTH      (TIZEN_OP_CODE_BASE + 0x17)
205 struct mgmt_rp_le_read_host_suggested_data_length {
206         __le16  def_tx_octets;
207         __le16  def_tx_time;
208 } __packed;
209 #define MGMT_LE_READ_HOST_SUGGESTED_DATA_LENGTH_SIZE    0
210
211 #define MGMT_OP_LE_SET_DATA_LENGTH              (TIZEN_OP_CODE_BASE + 0x18)
212 struct mgmt_cp_le_set_data_length {
213         bdaddr_t        bdaddr;
214         __le16  max_tx_octets;
215         __le16  max_tx_time;
216 } __packed;
217 #define MGMT_LE_SET_DATA_LENGTH_SIZE            10
218
219 struct mgmt_rp_le_set_data_length {
220         __u8    status;
221         __le16  handle;
222 } __packed;
223 #define MGMT_LE_SET_DATA_LENGTH_RSP_SIZE        3
224
225 /* EVENTS */
226
227 /* For device name update changes */
228 #define MGMT_EV_DEVICE_NAME_UPDATE              (TIZEN_EV_BASE + 0x01)
229 struct mgmt_ev_device_name_update {
230         struct mgmt_addr_info addr;
231         __le16  eir_len;
232         __u8    eir[0];
233 } __packed;
234 /* Device name update changes */
235
236 /* For handling of hardware error event */
237 #define MGMT_EV_HARDWARE_ERROR                  (TIZEN_EV_BASE + 0x02)
238 struct mgmt_ev_hardware_error {
239         __u8    error_code;
240 } __packed;
241 /* handling of hardware error event */
242
243 /* For HCI TX Timeout Error */
244 #define MGMT_EV_TX_TIMEOUT_ERROR                (TIZEN_EV_BASE + 0x03)
245 /* HCI TX Timeout Error */
246
247 /* For handling of RSSI Events */
248 #define MGMT_EV_RSSI_ALERT                      (TIZEN_EV_BASE + 0x04)
249 struct mgmt_ev_vendor_specific_rssi_alert {
250         bdaddr_t        bdaddr;
251         __s8    link_type;
252         __s8    alert_type;
253         __s8    rssi_dbm;
254 } __packed;
255
256 #define MGMT_EV_RAW_RSSI                        (TIZEN_EV_BASE + 0x05)
257 struct mgmt_cc_rp_get_raw_rssi {
258         __u8    status;
259         __s8    rssi_dbm;
260         __u8    link_type;
261         bdaddr_t        bt_address;
262 } __packed;
263
264 #define MGMT_EV_RSSI_ENABLED                    (TIZEN_EV_BASE + 0x06)
265
266 #define MGMT_EV_RSSI_DISABLED                   (TIZEN_EV_BASE + 0x07)
267 /* Handling of RSSI Events */
268
269 /* For Add LE connection update Events */
270 #define MGMT_EV_CONN_UPDATED                    (TIZEN_EV_BASE + 0x08)
271 struct mgmt_ev_conn_updated {
272         struct  mgmt_addr_info addr;
273         __le16  conn_interval;
274         __le16  conn_latency;
275         __le16  supervision_timeout;
276 } __packed;
277
278 #define MGMT_EV_CONN_UPDATE_FAILED              (TIZEN_EV_BASE + 0x09)
279 struct mgmt_ev_conn_update_failed {
280         struct  mgmt_addr_info addr;
281         __u8    status;
282 } __packed;
283 /* Add LE connection update Events */
284
285 /* For LE device found event */
286 #define MGMT_EV_LE_DEVICE_FOUND                 (TIZEN_EV_BASE + 0x0a)
287 struct mgmt_ev_le_device_found {
288         struct  mgmt_addr_info addr;
289         __s8    rssi;
290         __le32  flags;
291         __s8    adv_type;
292         __le16  eir_len;
293         __u8    eir[0];
294 } __packed;
295 /* LE device found event */
296
297 /* For LE advertisement state changed event */
298 #define MGMT_EV_MULTI_ADV_STATE_CHANGED         (TIZEN_EV_BASE + 0x0b)
299 struct mgmt_ev_vendor_specific_multi_adv_state_changed {
300         __u8    adv_instance;
301         __u8    state_change_reason;
302         __le16  connection_handle;
303 } __packed;
304 /* LE advertisement state changed event */
305
306 #define MGMT_EV_6LOWPAN_CONN_STATE_CHANGED      (TIZEN_EV_BASE + 0x0c)
307 struct mgmt_ev_6lowpan_conn_state_changed {
308         struct  mgmt_addr_info addr;
309         __u8    connected;
310         __u8    ifname[16];
311 } __packed;
312
313 #define MGMT_EV_LE_DATA_LENGTH_CHANGED          (TIZEN_EV_BASE + 0x0d)
314 struct mgmt_ev_le_data_length_changed {
315         struct  mgmt_addr_info addr;
316         __le16  max_tx_octets;
317         __le16  max_tx_time;
318         __le16  max_rx_octets;
319         __le16  max_rx_time;
320 } __packed;
321
322 #endif  /* __MGMT_TIZEN_H */