cleanup of acquire notification data for stop notify
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / include / oal-manager.h
1 /*
2 * Open Adaptation Layer (OAL)
3 *
4 * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *                          http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 */
19
20 #ifndef _OAL_MANAGER_H_
21 #define _OAL_MANAGER_H_
22
23 #include <glib.h>
24 #include <stdint.h>
25 #include <sys/types.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 #define BT_VERSION_STR_LEN_MAX       30 /**< This specifies maximum adapter version string length */
32
33 #define BT_DEVICE_NAME_LENGTH_MAX       248 /**< This specifies maximum device name length */
34
35 #define BT_ADDRESS_BYTES_NUM            6 /**< This specifies bluetooth device address length */
36
37 #define OAL_UUID_MAX_LENGTH                             16/**< This specifies ble service UUID Length */
38
39 #define BLE_ADV_DATA_LENGTH            62 /**< This specifies Advertising Data Length */
40
41 #define BT_ADDRESS_STR_LEN                              18 /**< BT address String length> */
42
43 #define BT_MAX_SERVICES_FOR_DEVICE  60 /**< This specifies the Maximum UUID Id mentioned in bta_api.h>*/
44
45 #define BLUETOOTH_UUID_STRING_MAX       50
46
47 typedef void (*oal_event_callback)(int event, gpointer event_data, gsize size);
48
49 typedef struct {
50         unsigned char addr[BT_ADDRESS_BYTES_NUM];
51 } bt_address_t;
52
53 typedef struct {
54         char name[BT_DEVICE_NAME_LENGTH_MAX + 1];
55 } bt_name_t;
56
57 typedef enum {
58         OAL_STATUS_SUCCESS,
59         /* Generic */
60         OAL_STATUS_INTERNAL_ERROR,
61         OAL_STATUS_NOT_READY,
62         OAL_STATUS_BUSY,
63         OAL_STATUS_INVALID_PARAM,
64         OAL_STATUS_RMT_DEVICE_DOWN,
65         OAL_STATUS_AUTH_FAILED,
66         OAL_STATUS_NOT_SUPPORT, //For APIs not supported
67         OAL_STATUS_ALREADY_DONE,
68         OAL_STATUS_PENDING,
69         OAL_STATUS_CONN_TIMEOUT,
70         /* HID */
71         OAL_STATUS_HID_FAILED_MOUSE
72 } oal_status_t;
73
74
75
76 /* NOTE: If anything changes in bt_service_id_t enum definition of Bluedroid header, change here too */
77 typedef enum {
78         A2DP_SRC_SERVICE_ID = 3,
79         HSP_SERVICE_ID = 5,
80         HFP_SERVICE_ID = 6,
81         OPP_SERVICE_ID = 7,
82         AVRCP_CT_SERVICE_ID = 9,
83         SAP_SERVICE_ID = 17,
84         A2DP_SERVICE_ID = 18,
85         AVRCP_SERVICE_ID = 19,
86         HID_SERVICE_ID = 20,
87         HSP_HS_SERVICE_ID = 23,
88         HFP_HS_SERVICE_ID = 24,
89 #ifdef TIZEN_BT_HAL
90         IOTIVITY_SERVICE_ID = 29,
91 #endif
92 } oal_service_t;
93
94 /** Bluetooth 128-bit UUID */
95 typedef struct {
96         uint8_t uuid[16];
97 } oal_uuid_t;
98
99 typedef oal_uuid_t service_uuid_t;
100
101 typedef enum {
102         DEV_TYPE_BREDR,
103         DEV_TYPE_BLE_ONLY,
104         DEV_TYPE_DUAL
105 } device_type_t;
106
107 typedef enum {
108         BT_DISC_TYPE_BREDR = 0x01,
109         BT_DISC_TYPE_LE,
110         BT_DISC_TYPE_DUAL
111 } discovery_type_t;
112
113 typedef struct {
114         char name[BT_DEVICE_NAME_LENGTH_MAX + 1];
115         char alias[BT_DEVICE_NAME_LENGTH_MAX + 1];
116         bt_address_t address;
117         int cod;
118         int rssi;
119         int vid;
120         int pid;
121         int is_bonded;
122         int is_connected;
123         device_type_t type;
124         int uuid_count;
125         oal_uuid_t uuid[BT_MAX_SERVICES_FOR_DEVICE];
126         int is_trusted;
127         int is_alias_set;
128 } remote_device_t;
129
130 /** GATT ID adding instance id tracking to the UUID */
131 typedef struct {
132         oal_uuid_t          uuid;
133         uint8_t             inst_id;
134 } oal_gatt_id_t;
135
136 /** GATT Service ID also identifies the service type (primary/secondary) */
137 typedef struct {
138         oal_gatt_id_t    id;
139         uint8_t              is_prmry;
140 } oal_gatt_srvc_id_t;
141
142 /**
143  * @brief Initializes OAL layer
144  *
145  * @remarks Other API can only be used after successful return. \n
146  *
147  * @details EVENT: N/A
148  *
149  * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
150  * @retval #OAL_STATUS_SUCCESS  Successful
151  *
152  * @pre N/A
153  *
154  * @see  oal_bt_deinit()
155  */
156 oal_status_t oal_bt_init(oal_event_callback cb);
157
158 /**
159  * @brief Deinitializes OAL Layer
160  *
161  * @remarks Other API can only be used after oal_bt_init done again. \n
162  *
163  * @details EVENT: N/A
164  *
165  * @return void.
166  * @retval void
167  *
168  * @pre N/A
169  *
170  * @see  oal_bt_init()
171  */
172 void oal_bt_deinit(void);
173
174 /**
175  * @brief Initialize Stack lib based on chip
176  *
177  * @remarks Other API can only be used after oal_lib_init done. \n
178  *
179  * @details EVENT: OAL_EVENT_OAL_INITIALISED_SUCCESS, OAL_EVENT_OAL_INITIALISED_FAILED
180  *
181  * @return bool.
182  * @retval bool
183  *
184  * @pre N/A
185  *
186  * @see  N/A
187  */
188 gboolean oal_lib_init(gpointer data);
189
190 /**
191  * @brief Set Debug Mode Flag to TRUE
192  *
193  * @remarks OAL will run in exclusive mode, no processing of api-call and no event sending. \n
194  *
195  * @details EVENT: N/A
196  *
197  * @return void
198  * @retval void
199  *
200  * @pre N/A
201  *
202  * @see  oal_get_debug_mode()
203  */
204 void oal_set_debug_mode(gboolean mode);
205
206 /**
207  * @brief Set Debug Mode Flag
208  *
209  * @remarks To check whether Debug mode is running. \n
210  *
211  * @details EVENT: N/A
212  *
213  * @return TRUE if debug mode is on, otherwise FALSE
214  * @retval #TRUE  Successful
215  *
216  * @pre N/A
217  *
218  * @see  oal_set_debug_mode()
219  */
220 gboolean oal_get_debug_mode(void);
221
222 #ifdef OAL_DEBUG
223 /**
224  * @brief Register the debug mode event catcher
225  *
226  * @remarks handles the incoming events and passes to debug handler. \n
227  *
228  * @details EVENT: N/A
229  *
230  * @return void
231  * @retval void
232  *
233  * @pre N/A
234  *
235  * @see  N/A
236  */
237 void server_event_catch_register(oal_event_callback dbg_cb);
238 #endif
239
240 #ifdef __cplusplus
241 }
242 #endif /* __cplusplus */
243 #endif /*_OAL_HARDWARE_H_*/