52a36f91bd01a57b1497bfcaaad55dcf445899e7
[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 /* EVENTS */
189
190 /* For device name update changes */
191 #define MGMT_EV_DEVICE_NAME_UPDATE              (TIZEN_EV_BASE + 0x01)
192 struct mgmt_ev_device_name_update {
193         struct mgmt_addr_info addr;
194         __le16  eir_len;
195         __u8    eir[0];
196 } __packed;
197 /* Device name update changes */
198
199 /* For handling of hardware error event */
200 #define MGMT_EV_HARDWARE_ERROR                  (TIZEN_EV_BASE + 0x02)
201 struct mgmt_ev_hardware_error {
202         __u8    error_code;
203 } __packed;
204 /* handling of hardware error event */
205
206 /* For HCI TX Timeout Error */
207 #define MGMT_EV_TX_TIMEOUT_ERROR                (TIZEN_EV_BASE + 0x03)
208 /* HCI TX Timeout Error */
209
210 /* For handling of RSSI Events */
211 #define MGMT_EV_RSSI_ALERT                      (TIZEN_EV_BASE + 0x04)
212 struct mgmt_ev_vendor_specific_rssi_alert {
213         bdaddr_t        bdaddr;
214         __s8    link_type;
215         __s8    alert_type;
216         __s8    rssi_dbm;
217 } __packed;
218
219 #define MGMT_EV_RAW_RSSI                        (TIZEN_EV_BASE + 0x05)
220 struct mgmt_cc_rp_get_raw_rssi {
221         __u8    status;
222         __s8    rssi_dbm;
223         __u8    link_type;
224         bdaddr_t        bt_address;
225 } __packed;
226
227 #define MGMT_EV_RSSI_ENABLED                    (TIZEN_EV_BASE + 0x06)
228
229 #define MGMT_EV_RSSI_DISABLED                   (TIZEN_EV_BASE + 0x07)
230 /* Handling of RSSI Events */
231
232 /* For Add LE connection update Events */
233 #define MGMT_EV_CONN_UPDATED                    (TIZEN_EV_BASE + 0x08)
234 struct mgmt_ev_conn_updated {
235         struct  mgmt_addr_info addr;
236         __le16  conn_interval;
237         __le16  conn_latency;
238         __le16  supervision_timeout;
239 } __packed;
240
241 #define MGMT_EV_CONN_UPDATE_FAILED              (TIZEN_EV_BASE + 0x09)
242 struct mgmt_ev_conn_update_failed {
243         struct  mgmt_addr_info addr;
244         __u8    status;
245 } __packed;
246 /* Add LE connection update Events */
247
248 /* For LE device found event */
249 #define MGMT_EV_LE_DEVICE_FOUND                 (TIZEN_EV_BASE + 0x0a)
250 struct mgmt_ev_le_device_found {
251         struct  mgmt_addr_info addr;
252         __s8    rssi;
253         __le32  flags;
254         __s8    adv_type;
255         __le16  eir_len;
256         __u8    eir[0];
257 } __packed;
258 /* LE device found event */
259
260 /* For LE advertisement state changed event */
261 #define MGMT_EV_MULTI_ADV_STATE_CHANGED         (TIZEN_EV_BASE + 0x0b)
262 struct mgmt_ev_vendor_specific_multi_adv_state_changed {
263         __u8    adv_instance;
264         __u8    state_change_reason;
265         __le16  connection_handle;
266 } __packed;
267 /* LE advertisement state changed event */
268
269 #define MGMT_EV_6LOWPAN_CONN_STATE_CHANGED      (TIZEN_EV_BASE + 0x0c)
270 struct mgmt_ev_6lowpan_conn_state_changed {
271         struct  mgmt_addr_info addr;
272         __u8    connected;
273         __u8    ifname[16];
274 } __packed;
275
276 #endif  /* __MGMT_TIZEN_H */