Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / lib / tizen / ble / inc / bluetooth_type.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18 #ifndef __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
19 #define __TIZEN_NETWORK_BLUETOOTH_TYPE_H__
20
21  #ifdef __cplusplus
22 extern "C"
23 {
24 #endif /* __cplusplus */
25
26 /**
27  * @file bluetooth_type.h
28  * @brief API to control the Bluetooth adapter, devices and communications.
29  * @ingroup     CAPI_NETWORK_BLUETOOTH_TYPE_MODULE
30  */
31
32
33 /**
34  * @ingroup CAPI_NETWORK_BLUETOOTH_MODULE
35  * @brief Enumerations of Bluetooth error codes.
36  */
37 typedef enum
38 {
39         BT_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful*/
40         BT_ERROR_CANCELLED = TIZEN_ERROR_CANCELED, /**< Operation cancelled */
41         BT_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
42         BT_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
43         BT_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
44         BT_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Timeout error */
45         BT_ERROR_NOW_IN_PROGRESS = TIZEN_ERROR_NOW_IN_PROGRESS, /**< Operation now in progress */
46         BT_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED,
47         BT_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
48         BT_ERROR_QUOTA_EXCEEDED = TIZEN_ERROR_QUOTA_EXCEEDED, /**< Quota exceeded */
49         BT_ERROR_NOT_INITIALIZED = TIZEN_ERROR_BLUETOOTH|0x0101, /**< Local adapter not initialized */
50         BT_ERROR_NOT_ENABLED = TIZEN_ERROR_BLUETOOTH|0x0102, /**< Local adapter not enabled */
51         BT_ERROR_ALREADY_DONE = TIZEN_ERROR_BLUETOOTH|0x0103, /**< Operation already done  */
52         BT_ERROR_OPERATION_FAILED = TIZEN_ERROR_BLUETOOTH|0x0104, /**< Operation failed */
53         BT_ERROR_NOT_IN_PROGRESS = TIZEN_ERROR_BLUETOOTH|0x0105, /**< Operation not in progress */
54         BT_ERROR_REMOTE_DEVICE_NOT_BONDED = TIZEN_ERROR_BLUETOOTH|0x0106, /**< Remote device not bonded */
55         BT_ERROR_AUTH_REJECTED = TIZEN_ERROR_BLUETOOTH|0x0107, /**< Authentication rejected */
56         BT_ERROR_AUTH_FAILED = TIZEN_ERROR_BLUETOOTH|0x0108, /**< Authentication failed */
57         BT_ERROR_REMOTE_DEVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x0109, /**< Remote device not found */
58         BT_ERROR_SERVICE_SEARCH_FAILED = TIZEN_ERROR_BLUETOOTH|0x010A, /**< Service search failed */
59         BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED = TIZEN_ERROR_BLUETOOTH|0x010B, /**< Remote device is not connected */
60         BT_ERROR_AGAIN = TIZEN_ERROR_BLUETOOTH|0x010C, /**< Resource temporarily unavailable */
61         BT_ERROR_SERVICE_NOT_FOUND = TIZEN_ERROR_BLUETOOTH|0x010D, /**< Service Not Found */
62 } bt_error_e;
63
64 /**
65  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
66  * @brief  Enumerations of the Bluetooth adapter state.
67  */
68 typedef enum
69 {
70         BT_ADAPTER_DISABLED = 0x00, /**< Bluetooth adapter is disabled */
71         BT_ADAPTER_ENABLED, /**< Bluetooth adapter is enabled */
72 } bt_adapter_state_e;
73
74 /**
75  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
76  * @brief  Enumerations of the Bluetooth adapter le state.
77  */
78 typedef enum
79 {
80         BT_ADAPTER_LE_DISABLED = 0x00, /**< Bluetooth le is disabled */
81         BT_ADAPTER_LE_ENABLED, /**< Bluetooth le is enabled */
82 } bt_adapter_le_state_e;
83
84 /**
85  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
86  * @brief Enumerations of the Bluetooth visibility mode.
87  */
88 typedef enum
89 {
90         BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE = 0x00,  /**< Other devices cannot find your device via discovery */
91         BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE,  /**< Discoverable mode */
92         BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE,  /**< Discoverable mode with time limit. After specific period,
93                                                             it is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.*/
94 } bt_adapter_visibility_mode_e;
95
96 /**
97  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
98  * @brief Enumerations of the discovery state of Bluetooth device.
99  *
100  */
101 typedef enum
102 {
103         BT_ADAPTER_DEVICE_DISCOVERY_STARTED, /**< Device discovery is started */
104         BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, /**< Device discovery is finished */
105         BT_ADAPTER_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth device is found */
106 } bt_adapter_device_discovery_state_e;
107
108 /**
109  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
110  * @brief Enumerations of the discovery state of Bluetooth LE device.
111  *
112  */
113 typedef enum
114 {
115         BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED, /**< LE device discovery is started */
116         BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, /**< LE device discovery is finished */
117         BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND, /**< The remote Bluetooth LE device is found */
118 } bt_adapter_le_device_discovery_state_e;
119
120 /**
121  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
122  * @brief  Enumerations of the Bluetooth advertising state.
123  */
124 typedef enum {
125         BT_ADAPTER_LE_ADVERTISING_STOPPED = 0x00, /**< Bluetooth advertising is stopped */
126         BT_ADAPTER_LE_ADVERTISING_STARTED, /**< Bluetooth advertising is started */
127 } bt_adapter_le_advertising_state_e;
128
129
130 /**
131  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
132  * @brief  Enumerations of the Bluetooth advertising filter policy.
133  */
134 typedef enum {
135         BT_ADAPTER_LE_ADVERTISING_FILTER_DEFAULT = 0x00, /**< White list is not in use */
136         BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_WL = 0x01, /**< Allow the scan
137                                         request that in the White list */
138         BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_CONN_WL = 0x02, /**< Allow the connectoin
139                                         request that in the White list */
140         BT_ADAPTER_LE_ADVERTISING_FILTER_ALLOW_SCAN_CONN_WL = 0x03, /**< Allow the
141                                         scan and connectoin request that in the White list */
142 } bt_adapter_le_advertising_filter_policy_e;
143
144 /**
145  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
146  * @brief  Enumerations of the Bluetooth advertising type.
147  */
148 typedef enum {
149         BT_ADAPTER_LE_ADVERTISING_CONNECTABLE = 0x00, /**< Connectable undirected advertising (ADV_IND) */
150         BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_HIGH = 0x01, /**< Connectable high duty cycle directed advertising (ADV_DIRECT_IND) */
151         BT_ADAPTER_LE_ADVERTISING_SCANNABLE = 0x02, /**< Scannable undirected advertising (ADV_SCAN_IND) */
152         BT_ADAPTER_LE_ADVERTISING_NON_CONNECTABLE = 0x03, /**< Non connectable undirected advertising (ADV_NONCOND_IND) */
153         BT_ADAPTER_LE_ADVERTISING_CONNECTABLE_DIRECT_LOW = 0x04, /**< Connectable low duty cycle directed advertising (ADV_DIRECT_IND) */
154 } bt_adapter_le_advertising_type_e;
155
156 /**
157  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
158  * @brief  Enumerations of the Bluetooth LE packet type.
159  */
160 typedef enum {
161         BT_ADAPTER_LE_PACKET_ADVERTISING, /**< Advertising packet */
162         BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, /**< Sacn response packet */
163 } bt_adapter_le_packet_type_e;
164
165 /**
166  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
167  * @brief  Enumerations of the Bluetooth LE data type
168  *         that can be included in LE packets.
169  */
170 typedef enum {
171         BT_ADAPTER_LE_PACKET_DATA_COMP_LIST_16_BIT_SERVICE_CLASS_UUIDS = 0x03, /**< 16 bit UUID */
172         BT_ADAPTER_LE_PACKET_DATA_MANUFACTURER_SPECIFIC_DATA = 0xff, /**< Manufacturer data */
173 } bt_adapter_le_packet_data_type_e;
174
175 /**
176  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
177  * @brief Enumerations of device disconnect reason.
178  */
179 typedef enum
180 {
181         BT_DEVICE_DISCONNECT_REASON_UNKNOWN, /**< Disconnected by unknown reason */
182         BT_DEVICE_DISCONNECT_REASON_TIMEOUT, /**< Disconnected by timeout */
183         BT_DEVICE_DISCONNECT_REASON_LOCAL_HOST, /**< Disconnected by local host */
184         BT_DEVICE_DISCONNECT_REASON_REMOTE, /**< Disconnected by remote */
185 } bt_device_disconnect_reason_e;
186
187 /**
188  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
189  * @brief Enumerations of connection link type.
190  */
191 typedef enum
192 {
193         BT_DEVICE_CONNECTION_LINK_BREDR, /**< BR/EDR link */
194         BT_DEVICE_CONNECTION_LINK_LE, /**< LE link */
195         BT_DEVICE_CONNECTION_LINK_DEFAULT = 0xFF, /**< The connection type defualt */
196 } bt_device_connection_link_type_e;
197
198 /**
199  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
200  * @brief Enumerations of device authorization state.
201  */
202 typedef enum
203 {
204         BT_DEVICE_AUTHORIZED, /**< The remote Bluetooth device is authorized */
205         BT_DEVICE_UNAUTHORIZED, /**< The remote Bluetooth device is unauthorized */
206 } bt_device_authorization_e;
207
208 /**
209  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
210  * @brief Enumerations of Bluetooth profile.
211  */
212 typedef enum
213 {
214     BT_PROFILE_RFCOMM = 0x01, /**< RFCOMM Profile */
215     BT_PROFILE_A2DP = 0x02, /**< Advanced Audio Distribution Profile */
216     BT_PROFILE_HSP = 0x04, /**< Headset Profile */
217     BT_PROFILE_HID = 0x08, /**< Human Interface Device Profile */
218     BT_PROFILE_NAP = 0x10, /**< Network Access Point Profile */
219     BT_PROFILE_AG = 0x20, /**< Audio Gateway Profile */
220     BT_PROFILE_GATT = 0x40, /**< Generic Attribute Profile */
221     BT_PROFILE_NAP_SERVER = 0x80, /**< NAP server Profile */
222 } bt_profile_e;
223
224 /**
225  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
226  * @brief Enumerations of device address type.
227  */
228 typedef enum
229 {
230         BT_DEVICE_PUBLIC_ADDRESS = 0x00, /**< Public address */
231         BT_DEVICE_RANDOM_ADDRESS, /**< Random address */
232 } bt_device_address_type_e;
233
234 /**
235  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
236  * @brief  Enumerations of service class.
237  */
238 typedef enum {
239         BT_SC_NONE = 0, /**< No service class */
240         BT_SC_RES_SERVICE_MASK = 0x00000001, /**< RES service class */
241         BT_SC_SPP_SERVICE_MASK = 0x00000002, /**< SPP service class */
242         BT_SC_DUN_SERVICE_MASK = 0x00000004, /**< DUN service class */
243         BT_SC_FAX_SERVICE_MASK = 0x00000008, /**< FAX service class */
244         BT_SC_LAP_SERVICE_MASK = 0x00000010, /**< LAP service class */
245         BT_SC_HSP_SERVICE_MASK = 0x00000020, /**< HSP service class */
246         BT_SC_HFP_SERVICE_MASK = 0x00000040, /**< HFP service class */
247         BT_SC_OPP_SERVICE_MASK = 0x00000080, /**< OPP service class */
248         BT_SC_FTP_SERVICE_MASK = 0x00000100, /**< FTP service class */
249         BT_SC_CTP_SERVICE_MASK = 0x00000200, /**< CTP service class */
250         BT_SC_ICP_SERVICE_MASK = 0x00000400, /**< ICP service class */
251         BT_SC_SYNC_SERVICE_MASK = 0x00000800, /**< SYNC service class */
252         BT_SC_BPP_SERVICE_MASK = 0x00001000, /**< BPP service class */
253         BT_SC_BIP_SERVICE_MASK = 0x00002000, /**< BIP service class */
254         BT_SC_PANU_SERVICE_MASK = 0x00004000, /**< PANU service class */
255         BT_SC_NAP_SERVICE_MASK = 0x00008000, /**< NAP service class */
256         BT_SC_GN_SERVICE_MASK = 0x00010000, /**< GN service class */
257         BT_SC_SAP_SERVICE_MASK = 0x00020000, /**< SAP service class */
258         BT_SC_A2DP_SERVICE_MASK = 0x00040000, /**< A2DP service class */
259         BT_SC_AVRCP_SERVICE_MASK = 0x00080000, /**< AVRCP service class */
260         BT_SC_PBAP_SERVICE_MASK = 0x00100000, /**< PBAP service class */
261         BT_SC_HID_SERVICE_MASK = 0x00200000, /**< HID service class */
262         BT_SC_ALL_SERVICE_MASK = 0x00FFFFFF, /**< ALL service class */
263         BT_SC_MAX /**< MAX service class */
264 } bt_service_class_t;
265
266 /**
267  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
268  * @brief  Enumerations of major service class.
269  */
270 typedef enum
271 {
272         BT_MAJOR_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE  = 0x002000, /**< Limited discoverable mode */
273         BT_MAJOR_SERVICE_CLASS_POSITIONING                = 0x010000, /**< Positioning class */
274         BT_MAJOR_SERVICE_CLASS_NETWORKING                 = 0x020000, /**< Networking class */
275         BT_MAJOR_SERVICE_CLASS_RENDERING                  = 0x040000, /**< Rendering class */
276         BT_MAJOR_SERVICE_CLASS_CAPTURING                  = 0x080000, /**< Capturing class */
277         BT_MAJOR_SERVICE_CLASS_OBJECT_TRANSFER            = 0x100000, /**< Object transferring class */
278         BT_MAJOR_SERVICE_CLASS_AUDIO                      = 0x200000, /**< Audio class*/
279         BT_MAJOR_SERVICE_CLASS_TELEPHONY                  = 0x400000, /**< Telephony class */
280         BT_MAJOR_SERVICE_CLASS_INFORMATION                = 0x800000, /**< Information class */
281 } bt_major_service_class_e;
282
283 /**
284  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
285  * @brief  Enumerations of major device class.
286  */
287 typedef enum
288 {
289         BT_MAJOR_DEVICE_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
290         BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01, /**< Computer major device class */
291         BT_MAJOR_DEVICE_CLASS_PHONE = 0x02, /**< Phone major device class */
292         BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03, /**< LAN/Network access point major device class */
293         BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04, /**< Audio/Video major device class */
294         BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class */
295         BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06, /**< Imaging major device class */
296         BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07, /**< Wearable device class */
297         BT_MAJOR_DEVICE_CLASS_TOY = 0x08, /**< Toy device class */
298         BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09, /**< Health device class */
299         BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F, /**< Uncategorized major device class */
300 } bt_major_device_class_e;
301
302 /**
303  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
304  * @brief  Enumerations of minor device class.
305  */
306 typedef enum
307 {
308         BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of computer */
309         BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04, /**< Desktop workstation minor device class of computer */
310         BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08, /**< Server minor device class of computer */
311         BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C, /**< Laptop minor device class of computer */
312         BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10, /**< Handheld PC/PDA minor device class of computer */
313         BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14, /**< Palm sized PC/PDA minor device class of computer */
314         BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18, /**< Wearable(watch sized) minor device class of computer */
315
316         BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of phone */
317         BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04, /**< Cellular minor device class of phone */
318         BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08, /**< Cordless minor device class of phone */
319         BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C, /**< Smart phone minor device class of phone */
320         BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10, /**< Wired modem or voice gateway minor device class of phone */
321         BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14, /**< Common ISDN minor device class of phone */
322
323         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04, /**< Fully available minor device class of LAN/Network access point */
324         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor device class of LAN/Network access point */
325         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor device class of LAN/Network access point */
326         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor device class of LAN/Network access point */
327         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor device class of LAN/Network access point */
328         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor device class of LAN/Network access point */
329         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor device class of LAN/Network access point */
330         BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor device class of LAN/Network access point */
331
332         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of audio/video */
333         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04, /**< Wearable headset minor device class of audio/video */
334         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08, /**< Hands-free minor device class of audio/video */
335         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10, /**< Microphone minor device class of audio/video */
336         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14, /**< Loudspeaker minor device class of audio/video */
337         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18, /**< Headphones minor device class of audio/video */
338         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C, /**< Portable audio minor device class of audio/video */
339         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20, /**< Car audio minor device class of audio/video */
340         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24, /**< Set-top box minor device class of audio/video */
341         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi audio minor device class of audio/video */
342         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C, /**< VCR minor device class of audio/video */
343         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30, /**< Video camera minor device class of audio/video */
344         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34, /**< Camcorder minor device class of audio/video */
345         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38, /**< Video monitor minor device class of audio/video */
346         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C, /**< Video display and loudspeaker minor device class of audio/video */
347         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40, /**< Video conferencing minor device class of audio/video */
348         BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48, /**< Gaming/toy minor device class of audio/video */
349
350         BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of peripheral */
351         BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40, /**< Key board minor device class of peripheral */
352         BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80, /**< Pointing device minor device class of peripheral */
353         BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0, /**< Combo keyboard or pointing device minor device class of peripheral */
354         BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04, /**< Joystick minor device class of peripheral */
355         BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08, /**< Game pad minor device class of peripheral */
356         BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C, /**< Remote control minor device class of peripheral */
357         BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10, /**< Sensing device minor device class of peripheral */
358         BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14, /**< Digitizer minor device class of peripheral */
359         BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18, /**< Card reader minor device class of peripheral */
360         BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C, /**< Digital pen minor device class of peripheral */
361         BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20, /**< Handheld scanner minor device class of peripheral */
362         BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor device class of peripheral */
363
364         BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10, /**< Display minor device class of imaging */
365         BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20, /**< Camera minor device class of imaging */
366         BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40, /**< Scanner minor device class of imaging */
367         BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80, /**< Printer minor device class of imaging */
368
369         BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04, /**< Wrist watch minor device class of wearable */
370         BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08, /**< Pager minor device class of wearable */
371         BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C, /**< Jacket minor device class of wearable */
372         BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10, /**< Helmet minor device class of wearable */
373         BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14, /**< Glasses minor device class of wearable */
374
375         BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04, /**< Robot minor device class of toy */
376         BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08, /**< Vehicle minor device class of toy */
377         BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C, /**< Doll/Action minor device class of toy */
378         BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10, /**< Controller minor device class of toy */
379         BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14, /**< Game minor device class of toy */
380
381         BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00, /**< Uncategorized minor device class of health */
382         BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood pressure monitor minor device class of health */
383         BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08, /**< Thermometer minor device class of health */
384         BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C, /**< Weighing scale minor device class of health */
385         BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10, /**< Glucose minor device class of health */
386         BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14, /**< Pulse oximeter minor device class of health */
387         BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18, /**< Heart/Pulse rate monitor minor device class of health */
388         BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C, /**< Health data display minor device class of health */
389         BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20, /**< Step counter minor device class of health */
390         BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor device class of health */
391         BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor device class of health */
392         BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor device class of health */
393         BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor device class of health */
394         BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor device class of health */
395 } bt_minor_device_class_e;
396
397 /**
398  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
399  * @brief  Enumerations of gap appearance type.
400  */
401 typedef enum
402 {
403         BT_APPEARANCE_TYPE_UNKNOWN = 0x00, /**< Unknown appearance type */
404         BT_APPEARANCE_TYPE_GENERIC_PHONE = 0x40, /**< Generic Phone type - Generic category */
405         BT_APPEARANCE_TYPE_GENERIC_COMPUTER = 0x80, /**< Generic Computer type - Generic category */
406         BT_APPEARANCE_TYPE_GENERIC_WATCH = 0xC0, /**< Generic Watch type - Generic category */
407 } bt_appearance_type_e;
408
409 /**
410  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
411  * @brief  Enumerations of connected Bluetooth device event role.
412  */
413 typedef enum
414 {
415         BT_SOCKET_UNKNOWN = 0x00, /**< Unknown role*/
416         BT_SOCKET_SERVER , /**< Server role*/
417         BT_SOCKET_CLIENT, /**< Client role*/
418 } bt_socket_role_e;
419
420 /**
421  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
422  * @brief  Enumerations of Bluetooth socket connection state.
423  */
424 typedef enum
425 {
426         BT_SOCKET_CONNECTED, /**< RFCOMM is connected */
427         BT_SOCKET_DISCONNECTED, /**< RFCOMM is disconnected */
428 } bt_socket_connection_state_e;
429
430 /**
431  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
432  * @brief  Enumerations for the types of profiles related with audio
433  */
434 typedef enum {
435     BT_AUDIO_PROFILE_TYPE_ALL = 0,  /**< All supported profiles related with audio */
436     BT_AUDIO_PROFILE_TYPE_HSP_HFP,  /**< HSP(Headset Profile) and HFP(Hands-Free Profile) */
437     BT_AUDIO_PROFILE_TYPE_A2DP,  /**< A2DP(Advanced Audio Distribution Profile) */
438     BT_AUDIO_PROFILE_TYPE_AG,  /**< AG(Audio Gateway) */
439 } bt_audio_profile_type_e;
440
441 /**
442  * @internal
443  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
444  * @brief  Enumerations for the call handling event
445  */
446 typedef enum {
447     BT_AG_CALL_HANDLING_EVENT_ANSWER = 0x00,  /**< Request to answer an incoming call */
448     BT_AG_CALL_HANDLING_EVENT_RELEASE,  /**< Request to release a call */
449     BT_AG_CALL_HANDLING_EVENT_REJECT,  /**< Request to reject an incoming call */
450 } bt_ag_call_handling_event_e;
451
452 /**
453  * @internal
454  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
455  * @brief  Enumerations for the multi call handling event
456  */
457 typedef enum {
458     BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_HELD_CALLS = 0x00,  /**< Request to release held calls */
459     BT_AG_MULTI_CALL_HANDLING_EVENT_RELEASE_ACTIVE_CALLS,  /**< Request to release active calls */
460     BT_AG_MULTI_CALL_HANDLING_EVENT_ACTIVATE_HELD_CALL,  /**< Request to put active calls into hold state and activate another (held or waiting) call */
461     BT_AG_MULTI_CALL_HANDLING_EVENT_MERGE_CALLS,  /**< Request to add a held call to the conversation */
462     BT_AG_MULTI_CALL_HANDLING_EVENT_EXPLICIT_CALL_TRANSFER,  /**< Request to let a user who has two calls to connect these two calls together and release its connections to both other parties */
463 } bt_ag_multi_call_handling_event_e;
464
465 /**
466  * @internal
467  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
468  * @brief  Enumerations for the call state
469  */
470 typedef enum {
471     BT_AG_CALL_EVENT_IDLE = 0x00,  /**< Idle */
472     BT_AG_CALL_EVENT_ANSWERED,  /**< Answered */
473     BT_AG_CALL_EVENT_HELD,  /**< Held */
474     BT_AG_CALL_EVENT_RETRIEVED,  /**< Retrieved */
475     BT_AG_CALL_EVENT_DIALING,  /**< Dialing */
476     BT_AG_CALL_EVENT_ALERTING,  /**< Alerting */
477     BT_AG_CALL_EVENT_INCOMING,  /**< Incoming */
478 } bt_ag_call_event_e;
479
480 /**
481  * @internal
482  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
483  * @brief  Enumerations for the call state
484  */
485 typedef enum {
486     BT_AG_CALL_STATE_IDLE = 0x00,  /**< Idle state */
487     BT_AG_CALL_STATE_ACTIVE,  /**< Active state */
488     BT_AG_CALL_STATE_HELD,  /**< Held state */
489     BT_AG_CALL_STATE_DIALING,  /**< Dialing state */
490     BT_AG_CALL_STATE_ALERTING,  /**< Alerting state */
491     BT_AG_CALL_STATE_INCOMING,  /**< Incoming state */
492     BT_AG_CALL_STATE_WAITING,  /**< Waiting for connected indication event after answering an incoming call*/
493 } bt_ag_call_state_e;
494
495 /**
496  * @internal
497  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
498  * @brief  Enumerations for the equalizer state
499  */
500 typedef enum {
501     BT_AVRCP_EQUALIZER_STATE_OFF = 0x01,  /**< Equalizer Off */
502     BT_AVRCP_EQUALIZER_STATE_ON,  /**< Equalizer On */
503 } bt_avrcp_equalizer_state_e;
504
505 /**
506  * @internal
507  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
508  * @brief  Enumerations for the repeat mode
509  */
510 typedef enum {
511     BT_AVRCP_REPEAT_MODE_OFF = 0x01,  /**< Repeat Off */
512     BT_AVRCP_REPEAT_MODE_SINGLE_TRACK,  /**< Single track repeat */
513     BT_AVRCP_REPEAT_MODE_ALL_TRACK,  /**< All track repeat */
514     BT_AVRCP_REPEAT_MODE_GROUP,  /**< Group repeat */
515 } bt_avrcp_repeat_mode_e;
516
517 /**
518  * @internal
519  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
520  * @brief  Enumerations for the shuffle mode
521  */
522 typedef enum {
523     BT_AVRCP_SHUFFLE_MODE_OFF = 0x01,  /**< Shuffle Off */
524     BT_AVRCP_SHUFFLE_MODE_ALL_TRACK,  /**< All tracks shuffle */
525     BT_AVRCP_SHUFFLE_MODE_GROUP,  /**< Group shuffle */
526 } bt_avrcp_shuffle_mode_e;
527
528 /**
529  * @internal
530  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
531  * @brief  Enumerations for the scan mode
532  */
533 typedef enum {
534     BT_AVRCP_SCAN_MODE_OFF = 0x01,  /**< Scan Off */
535     BT_AVRCP_SCAN_MODE_ALL_TRACK,  /**< All tracks scan */
536     BT_AVRCP_SCAN_MODE_GROUP,  /**< Group scan */
537 } bt_avrcp_scan_mode_e;
538
539 /**
540  * @internal
541  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
542  * @brief  Enumerations for the player state
543  */
544 typedef enum {
545     BT_AVRCP_PLAYER_STATE_STOPPED = 0x00,  /**< Stopped */
546     BT_AVRCP_PLAYER_STATE_PLAYING,  /**< Playing */
547     BT_AVRCP_PLAYER_STATE_PAUSED,  /**< Paused */
548     BT_AVRCP_PLAYER_STATE_FORWARD_SEEK,  /**< Seek Forward */
549     BT_AVRCP_PLAYER_STATE_REWIND_SEEK,  /**< Seek Rewind */
550 } bt_avrcp_player_state_e;
551
552 /**
553  * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
554  * @brief  Enumerations for the data channel type
555  */
556 typedef enum {
557     BT_HDP_CHANNEL_TYPE_RELIABLE  = 0x01,  /**< Reliable Data Channel */
558     BT_HDP_CHANNEL_TYPE_STREAMING,  /**< Streaming Data Channel */
559 } bt_hdp_channel_type_e;
560
561 /**
562  * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
563  * @brief  Enumerations for the types of PAN(Personal Area Networking) service
564  */
565 typedef enum {
566     BT_PANU_SERVICE_TYPE_NAP = 0,  /**< Network Access Point */
567 } bt_panu_service_type_e;
568
569 /**
570  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
571  * @brief The handle to control Bluetooth LE advertising
572  */
573 typedef void* bt_advertiser_h;
574
575 /**
576  * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
577  * @brief  The attribute handle of GATT(Generic Attribute Profile)
578  */
579 typedef void* bt_gatt_attribute_h;
580
581 /**
582  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
583  * @brief  The handle of calls state
584  */
585 typedef void* bt_call_list_h;
586
587 /**
588  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
589  * @brief Class structure of device and service.
590  *
591  * @see #bt_device_info_s
592  * @see #bt_adapter_device_discovery_info_s
593  * @see bt_device_bond_created_cb()
594  * @see bt_adapter_device_discovery_state_changed_cb()
595  */
596 typedef struct
597 {
598         bt_major_device_class_e major_device_class;     /**< Major device class. */
599         bt_minor_device_class_e minor_device_class;     /**< Minor device class. */
600         int major_service_class_mask;   /**< Major service class mask.
601         This value can be a combination of #bt_major_service_class_e like #BT_MAJOR_SERVICE_CLASS_RENDERING | #BT_MAJOR_SERVICE_CLASS_AUDIO */
602 } bt_class_s;
603
604 /**
605  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
606  * @brief Structure of device discovery information.
607  *
608  * @see #bt_class_s
609  * @see bt_adapter_device_discovery_state_changed_cb()
610  */
611 typedef struct
612 {
613         char *remote_address;   /**< The address of remote device */
614         char *remote_name;      /**< The name of remote device */
615         bt_class_s bt_class;    /**< The Bluetooth classes */
616         int rssi;       /**< The strength indicator of received signal  */
617         bool is_bonded; /**< The bonding state */
618         char **service_uuid;  /**< The UUID list of service */
619         int service_count;      /**< The number of services */
620         bt_appearance_type_e appearance;        /**< The Bluetooth appearance */
621         int manufacturer_data_len;      /**< manufacturer specific data length */
622         char *manufacturer_data;                /**< manufacturer specific data */
623 } bt_adapter_device_discovery_info_s;
624
625 /**
626  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
627  * @brief Structure of le device discovery information.
628  *
629  * @see #bt_class_s
630  * @see bt_adapter_le_device_discovery_state_changed_cb()
631  */
632 typedef struct
633 {
634         char *remote_address;   /**< The address of remote device */
635         int address_type;       /**< The address type of remote device */
636         int rssi;       /**< The strength indicator of received signal  */
637         char **service_uuid;  /**< The UUID list of service */
638         int service_count;      /**< The number of services */
639         int adv_data_len;               /**< advertising indication data length */
640         char *adv_data;                 /**< advertising indication data */
641         int scan_data_len;              /**< scan response data length */
642         char *scan_data;                /**< scan response data */
643 } bt_adapter_le_device_discovery_info_s;
644
645 /**
646  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
647  * @brief Structure of advertising parameters
648  *
649  * @see #bt_class_s
650  * @see bt_adapter_le_advertising_state_changed_cb()
651  * @see bt_adapter_le_start_advertising()
652  */
653 typedef struct {
654         float interval_min; /**< Minimum advertising interval for non-directed advertising.
655                               A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
656         float interval_max; /**< Maximum advertising interval for non-directed advertising.
657                               A multiple of 0.625ms is only allowed (Time range : 20ms to 10.24sec). */
658         char filter_policy; /* Advertising filter policy */
659         char type; /* Advertising type */
660 } bt_adapter_le_advertising_params_s;
661
662 /**
663  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
664  * @brief Device information structure used for identifying pear device.
665  *
666  * @see #bt_class_s
667  * @see bt_device_bond_created_cb()
668  */
669 typedef struct
670 {
671         char *remote_address;   /**< The address of remote device */
672         char *remote_name;      /**< The name of remote device */
673         bt_class_s bt_class;    /**< The Bluetooth classes */
674         char **service_uuid;  /**< The UUID list of service */
675         int service_count;      /**< The number of services */
676         bool is_bonded; /**< The bonding state */
677         bool is_connected;      /**< The connection state */
678         bool is_authorized;     /**< The authorization state */
679         int manufacturer_data_len;      /**< manufacturer specific data length */
680         char *manufacturer_data;                /**< manufacturer specific data */
681 } bt_device_info_s;
682
683 /**
684  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
685  * @brief Service Discovery Protocol (SDP) data structure.
686  *
687  * @details This protocol is used for discovering available services or pear device,
688  * and finding one to connect with.
689  *
690  * @see bt_device_service_searched_cb()
691  */
692 typedef struct
693 {
694         char *remote_address;   /**< The address of remote device */
695         char **service_uuid;  /**< The UUID list of service */
696         int service_count;    /**< The number of services. */
697 } bt_device_sdp_info_s;
698
699 /**
700  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
701  * @brief Device connection information structure.
702  *
703  * @see bt_device_connection_state_changed_cb()
704  */
705 typedef struct
706 {
707         char *remote_address;   /**< The address of remote device */
708         bt_device_connection_link_type_e link;  /**< Link type */
709         bt_device_disconnect_reason_e disconn_reason;  /**< Disconnection reason */
710 } bt_device_connection_info_s;
711
712 /**
713  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
714  * @brief Device LE connection update structure.
715  *
716  * @see bt_device_le_conn_update()
717  */
718 typedef struct
719 {
720        unsigned int interval_min;   /**< Minimum value for the connection event interval (msec) */
721        unsigned int interval_max;   /**< Maximum value for the connection event interval (msec) */
722        unsigned int latency;   /**< Slave latency (msec) */
723        unsigned int time_out;   /**< Supervision timeout (msec) */
724 } bt_le_conn_update_s;
725
726 /**
727  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
728  *
729  * @brief Rfcomm connection data used for exchanging data between Bluetooth devices.
730  *
731  * @see bt_socket_connection_state_changed_cb()
732  */
733 typedef struct
734 {
735         int socket_fd;  /**< The file descriptor of connected socket */
736         int server_fd;  /**< The file descriptor of the server socket or -1 for client connection */
737         bt_socket_role_e local_role;    /**< The local device role in this connection */
738         char *remote_address;   /**< The remote device address */
739         char *service_uuid;     /**< The service UUId */
740 } bt_socket_connection_s;
741
742 /**
743  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
744  *
745  * @brief Structure of RFCOMM received data.
746  *
747  * @remarks User can use standard linux functions for reading/writing
748  * data from/to sockets.
749  *
750  * @see bt_socket_data_received_cb()
751  */
752 typedef struct
753 {
754         int socket_fd;  /**< The socket fd */
755         int data_size;  /**< The length of the received data */
756         char *data;     /**< The received data */
757 } bt_socket_received_data_s;
758
759 /**
760  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
761  * @brief  Called when the Bluetooth adapter state changes.
762  * @param[in]   result  The result of the adapter state changing
763  * @param[in]   adapter_state  The adapter state to be changed
764  * @param[in]   user_data  The user data passed from the callback registration function
765  * @see bt_adapter_set_state_changed_cb()
766  * @see bt_adapter_unset_state_changed_cb()
767  */
768 typedef void (*bt_adapter_state_changed_cb)(int result, bt_adapter_state_e adapter_state, void *user_data);
769
770 /**
771  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
772  * @brief  Called when adapter name changes.
773  * @param[in]   device_name     The name of the Bluetooth device to be changed
774  * @param[in]   user_data       The user data passed from the callback registration function
775  * @pre This function will be invoked when the name of Bluetooth adapter changes
776  * if you register this callback using bt_adapter_set_name_changed_cb().
777  * @see bt_adapter_set_name()
778  * @see bt_adapter_set_name_changed_cb()
779  * @see bt_adapter_unset_name_changed_cb()
780  */
781 typedef void (*bt_adapter_name_changed_cb)(char *device_name, void *user_data);
782
783 /**
784  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
785  * @brief  Called when the visibility mode changes.
786  * @param[in] result The result of the visibility mode changing
787  * @param[in] visibility_mode The visibility mode to be changed
788  * @param[in] user_data The user data passed from the callback registration function
789  *
790  * @pre This function will be invoked when the visibility of Bluetooth adapter changes
791  * if you register this callback using bt_adapter_set_visibility_mode_changed_cb().
792  *
793  * @see bt_adapter_set_visibility_mode_changed_cb()
794  * @see bt_adapter_unset_visibility_mode_changed_cb()
795  */
796 typedef void (*bt_adapter_visibility_mode_changed_cb)
797         (int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data);
798
799 /**
800  * @ingroup  CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
801  * @brief  Called every second until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE.
802  * @remarks  This callback function is called only if visibility mode is #BT_ADAPTER_VISIBILITY_MODE_LIMITED_DISCOVERABLE.
803  * @param[in]  duration  The duration until the visibility mode is changed to #BT_ADAPTER_VISIBILITY_MODE_NON_DISCOVERABLE (in seconds)
804  * @param[in]  user_data  The user data passed from the callback registration function
805  * @pre  This function will be invoked if you register this callback using bt_adapter_set_visibility_duration_changed_cb().
806  * @see  bt_adapter_set_visibility_duration_changed_cb()
807  * @see  bt_adapter_unset_visibility_duration_changed_cb()
808  */
809 typedef void (*bt_adapter_visibility_duration_changed_cb)(int duration, void *user_data);
810
811 /**
812  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
813  * @brief  Called when the state of device discovery changes.
814  *
815  * @remarks If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_FOUND,
816  * then you can get some information, such as remote device address, remote device name, rssi, and bonding state.
817  *
818  * @param[in] result The result of the device discovery
819  * @param[in] discovery_state The discovery state to be changed
820  * @param[in] discovery_info The information of the discovered device \n
821  *                                      If \a discovery_state is #BT_ADAPTER_DEVICE_DISCOVERY_STARTED or
822  * #BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
823  * @param[in] user_data The user data passed from the callback registration function
824  *
825  * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
826  * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
827  *
828  * @see bt_adapter_start_device_discovery()
829  * @see bt_adapter_stop_device_discovery()
830  * @see bt_adapter_set_device_discovery_state_changed_cb()
831  * @see bt_adapter_unset_device_discovery_state_changed_cb()
832  *
833  */
834 typedef void (*bt_adapter_device_discovery_state_changed_cb)
835         (int result, bt_adapter_device_discovery_state_e discovery_state, bt_adapter_device_discovery_info_s *discovery_info, void *user_data);
836
837 /**
838  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
839  * @brief  Called when you get bonded devices repeatedly.
840  *
841  * @param[in] device_info The bonded device information
842  * @param[in] user_data The user data passed from the foreach function
843  * @return @c true to continue with the next iteration of the loop,
844  * \n @c false to break out of the loop.
845  * @pre bt_adapter_foreach_bonded_device() will invoke this function.
846  *
847  * @see bt_adapter_foreach_bonded_device()
848  *
849  */
850 typedef bool (*bt_adapter_bonded_device_cb)(bt_device_info_s *device_info, void *user_data);
851
852 /**
853  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_MODULE
854  * @brief  Called when the connectable state changes.
855  * @param[in] result The result of the connectable state changing
856  * @param[in] connectable The connectable to be changed
857  * @param[in] user_data The user data passed from the callback registration function
858  *
859  * @pre This function will be invoked when the connectable state of local Bluetooth adapter changes
860  * if you register this callback using bt_adapter_set_connectable_changed_cb().
861  *
862  * @see bt_adapter_set_connectable()
863  * @see bt_adapter_set_connectable_changed_cb()
864  * @see bt_adapter_unset_connectable_changed_cb()
865  */
866 typedef void (*bt_adapter_connectable_changed_cb)
867         (int result, bool connectable, void *user_data);
868
869 /**
870  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
871  * @brief  Called when the state of LE device discovery changes.
872  *
873  * @remarks If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_FOUND,
874  * then you can get some information, such as remote LE device address, remote device name, rssi, and bonding state.
875  *
876  * @param[in] result The result of the LE device discovery
877  * @param[in] discovery_state The discovery state to be changed
878  * @param[in] discovery_info The information of the discovered LE device \n
879  *                                      If \a discovery_state is #BT_ADAPTER_LE_DEVICE_DISCOVERY_STARTED or
880  * #BT_ADAPTER_LE_DEVICE_DISCOVERY_FINISHED, then \a discovery_info is NULL.
881  * @param[in] user_data The user data passed from the callback registration function
882  *
883  * @pre Either bt_adapter_start_device_discovery() or bt_adapter_stop_device_discovery() will invoke this function
884  * if you register this callback using bt_adapter_set_device_discovery_state_changed_cb().
885  *
886  * @see bt_adapter_le_start_device_discovery()
887  * @see bt_adapter_le_stop_device_discovery()
888  * @see bt_adapter_le_set_device_discovery_state_changed_cb()
889  * @see bt_adapter_le_unset_device_discovery_state_changed_cb()
890  *
891  */
892 typedef void (*bt_adapter_le_device_discovery_state_changed_cb)
893         (int result, bt_adapter_le_device_discovery_state_e discovery_state, bt_adapter_le_device_discovery_info_s *discovery_info, void *user_data);
894
895 /**
896  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
897  * @brief  Called when the state of advertiser changes.
898  *
899  * @param[out] result The result of the requested state change of advertiser
900  * @param[out] advertiser The handle of the state changed advertiser
901  * @param[out] adv_state The advertiser state to be changed
902  * @param[out] user_data The user data passed from the start function
903  *
904  * @see bt_adapter_le_start_advertiser()
905  * @see bt_adapter_le_stop_advertiser()
906  */
907 typedef void (*bt_adapter_le_advertising_state_changed_cb)(int result,
908                 bt_advertiser_h advertiser, bt_adapter_le_advertising_state_e adv_state, void *user_data);
909
910 /**
911  * @ingroup CAPI_NETWORK_BLUETOOTH_ADAPTER_LE_MODULE
912  * @brief  Called when the Bluetooth adapter le state changes.
913  * @param[in]   result  The result of the adapter state changing
914  * @param[in]   adapter_le_state  The adapter le state to be changed
915  * @param[in]   user_data  The user data passed from the callback registration function
916  * @pre Either bt_adapter_le_enable() or bt_adapter_le_disable() will invoke this callback if you register this callback using bt_adapter_le_set_state_changed_cb().
917  * @see bt_adapter_le_enable()
918  * @see bt_adapter_le_disable()
919  * @see bt_adapter_le_set_state_changed_cb()
920  * @see bt_adapter_le_unset_state_changed_cb()
921  */
922 typedef void (*bt_adapter_le_state_changed_cb)(int result, bt_adapter_le_state_e adapter_le_state, void *user_data);
923
924 /**
925  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
926  * @brief Called when the process of creating bond finishes.
927  * @remarks If the remote user does not respond within 60 seconds, a time out will happen with #BT_ERROR_TIMED_OUT result code.\n
928  * If bt_device_cancel_bonding() is called and it returns #BT_ERROR_NONE, then this callback function will be called
929  * with #BT_ERROR_CANCELLED result. \n
930  * If creating a bond succeeds but service search fails, then this callback will be called with #BT_ERROR_SERVICE_SEARCH_FAILED.
931  * In this case, you should try service search again by bt_device_start_service_search() to get the supported service list.
932  *
933  * @param[in] result The result of the bonding device
934  * @param[in] device_info The device information which you creates bond with
935  * @param[in] user_data The user data passed from the callback registration function
936  *
937  * @pre Either bt_device_create_bond() will invoke this function
938  * if you register this callback using bt_device_set_bond_created_cb().
939  *
940  * @see bt_device_create_bond()
941  * @see bt_device_cancel_bonding()
942  * @see bt_device_set_bond_created_cb()
943  * @see bt_device_unset_bond_created_cb()
944  */
945 typedef void (*bt_device_bond_created_cb)(int result, bt_device_info_s *device_info, void *user_data);
946
947 /**
948  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
949  * @brief  Called when you get connected profiles repeatedly.
950  * @param[in] profile The connected Bluetooth profile
951  * @param[in] user_data The user data passed from the foreach function
952  * @return @c true to continue with the next iteration of the loop,
953  * \n @c false to break out of the loop.
954  * @pre bt_device_foreach_connected_profiles() will invoke this function.
955  * @see bt_device_foreach_connected_profiles()
956  */
957 typedef bool (*bt_device_connected_profile)(bt_profile_e profile, void *user_data);
958
959 /**
960  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
961  * @brief  Called when the bond destroys.
962  * @param[in] result The result that a bond is destroyed
963  * @param[in] remote_address The address of the remote Bluetooth device to destroy bond with
964  * @param[in] user_data The user data passed from the callback registration function
965  * @pre bt_device_destroy_bond() will invoke this function
966  * if you register this callback using bt_device_set_bond_destroyed_cb().
967  *
968  * @see bt_device_destroy_bond()
969  * @see bt_device_set_bond_destroyed_cb()
970  * @see bt_device_unset_bond_destroyed_cb()
971  */
972 typedef void (*bt_device_bond_destroyed_cb)(int result, char *remote_address, void *user_data);
973
974 /**
975  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
976  * @brief  Called when the authorization of device changes.
977  * @param[in] authorization The authorization of device
978  * @param[in] remote_address The address of the remote Bluetooth device which is (un)authorized
979  * @param[in] user_data The user data passed from the callback registration function
980  * @pre bt_device_set_authorization() will invoke this function if you register this callback using bt_device_set_authorization_changed_cb().
981  *
982  * @see bt_device_set_authorization()
983  * @see #bt_device_set_authorization_changed_cb()
984  * @see #bt_device_unset_authorization_changed_cb()
985  */
986 typedef void (*bt_device_authorization_changed_cb)
987         (bt_device_authorization_e authorization, char *remote_address, void *user_data);
988
989 /**
990  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
991  * @brief  Called when the process of service search finishes.
992  * @remark If bt_device_cancel_service_search() is called and it returns #BT_ERROR_NONE,
993  * then this callback function will be called with #BT_ERROR_CANCELLED result.
994  *
995  * @param[in] result The result of the service searching
996  * @param[in] sdp_info The structure of service lists found on a device
997  * @param[in] user_data The user data passed from the callback registration function
998  * @pre Either bt_device_start_service_search() will invoke this function
999  * if you register this callback using  bt_device_set_service_searched_cb().
1000  *
1001  * @see bt_device_start_service_search()
1002  * @see bt_device_cancel_service_search()
1003  * @see bt_device_set_service_searched_cb()
1004  * @see bt_device_unset_service_searched_cb()
1005  *
1006  */
1007 typedef void (*bt_device_service_searched_cb)(int result, bt_device_sdp_info_s *sdp_info, void *user_data);
1008
1009 /**
1010  * @ingroup CAPI_NETWORK_BLUETOOTH_DEVICE_MODULE
1011  * @brief  Called when the connection state is changed.
1012  * @param[in] connected The connection status: (@c true = connected, @c false = disconnected)
1013  * @param[in] conn_info The connection information
1014  * @param[in] user_data The user data passed from the callback registration function
1015  * @see bt_device_set_connection_state_changed_cb()
1016  * @see bt_device_unset_connection_state_changed_cb()
1017  */
1018 typedef void (*bt_device_connection_state_changed_cb)(bool connected, bt_device_connection_info_s *conn_info, void *user_data);
1019
1020 /**
1021  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
1022  * @brief Called when you receive data.
1023  *
1024  * @param[in] data The received data from the remote device
1025  * @param[in] user_data The user data passed from the callback registration function
1026  *
1027  * @pre When the connected remote Bluetooth device invokes bt_socket_send_data(),
1028  *              this function will be invoked if you register this function using bt_socket_set_data_received_cb().
1029  *
1030  * @see bt_socket_set_data_received_cb()
1031  * @see bt_socket_unset_data_received_cb()
1032  * @see bt_socket_send_data()
1033  */
1034 typedef void (*bt_socket_data_received_cb)(bt_socket_received_data_s *data, void *user_data);
1035
1036 /**
1037  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
1038  * @brief  Called when the socket connection state changes.
1039  * @param[in] result The result of connection state changing
1040  * @param[in] connection_state The connection state
1041  * @param[in] connection The connection information which is established or disconnected
1042  * @param[in] user_data The user data passed from the callback registration function
1043  * @pre Either bt_socket_connect_rfcomm() will invoke this function.
1044  * In addtion, bt_socket_connection_state_changed_cb() will be invoked when the socket connection state is changed.
1045  * @see bt_socket_listen_and_accept_rfcomm()
1046  * @see bt_socket_connect_rfcomm()
1047  * @see bt_socket_set_connection_state_changed_cb()
1048  * @see bt_socket_unset_connection_state_changed_cb()
1049  */
1050 typedef void (*bt_socket_connection_state_changed_cb)
1051         (int result, bt_socket_connection_state_e connection_state, bt_socket_connection_s *connection, void *user_data);
1052
1053 /**
1054  * @ingroup CAPI_NETWORK_BLUETOOTH_SOCKET_MODULE
1055  * @brief  Called when a RFCOMM connection is requested.
1056  * @details You must call bt_socket_accept() if you want to accept. Otherwise, you must call bt_socket_reject().
1057  * @param[in] socket_fd  The file descriptor of socket on which a connection is requested
1058  * @param[in] remote_address  The address of remote device
1059  * @param[in] user_data The user data passed from the callback registration function
1060  * @pre If you register this callback function by bt_socket_set_connection_requested_cb() and listen a socket by bt_socket_listen(),
1061  * bt_socket_connection_requested_cb() will be invoked.
1062  * @see bt_socket_listen()
1063  * @see bt_socket_accept()
1064  * @see bt_socket_reject()
1065  */
1066 typedef void (*bt_socket_connection_requested_cb) (int socket_fd, const char *remote_address, void *user_data);
1067
1068 /**
1069  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
1070  * @brief  Called when the push is requested.
1071  * @details You must call bt_opp_server_accept() if you want to accept.
1072  * Otherwise, you must call bt_opp_server_reject().
1073  * @param[in] file  The path of file to be pushed
1074  * @param[in] size The file size (bytes)
1075  * @param[in] user_data The user data passed from the callback registration function
1076  * @see bt_opp_server_initialize()
1077  */
1078 typedef void (*bt_opp_server_push_requested_cb)(const char *file, int size, void *user_data);
1079
1080 /**
1081  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
1082  * @brief  Called when an OPP connection is requested.
1083  * @details You must call bt_opp_server_accept_connection() if you want to accept.
1084  * Otherwise, you must call bt_opp_server_reject_connection().
1085  * @param[in] remote_address  The address of remote device
1086  * @param[in] user_data The user data passed from the callback registration function
1087  * @see bt_opp_server_initialize()
1088  * @see bt_opp_server_accept_connection()
1089  * @see bt_opp_server_reject_connection()
1090  */
1091 typedef void (*bt_opp_server_connection_requested_cb)(const char *remote_address, void *user_data);
1092
1093 /**
1094  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
1095  * @brief  Called when a file is being transfered.
1096  * @param[in] file  The path of file to be pushed
1097  * @param[in] size The file size (bytes)
1098  * @param[in] percent The progress in percentage (1 ~ 100)
1099  * @param[in] user_data The user data passed from the callback registration function
1100  * @see bt_opp_server_accept()
1101  * @see bt_opp_server_accept_connection()
1102  */
1103 typedef void (*bt_opp_server_transfer_progress_cb) (const char *file, long long size, int percent, void *user_data);
1104
1105 /**
1106  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_SERVER_MODULE
1107  * @brief  Called when a transfer is finished.
1108  * @param[in] error_code  The result of push
1109  * @param[in] file  The path of file to be pushed
1110  * @param[in] size The file size (bytes)
1111  * @param[in] user_data The user data passed from the callback registration function
1112  * @see bt_opp_server_accept()
1113  * @see bt_opp_server_accept_connection()
1114  */
1115 typedef void (*bt_opp_server_transfer_finished_cb) (int result, const char *file, long long size, void *user_data);
1116
1117 /**
1118  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
1119  * @brief  Called when OPP server responds to the push request.
1120  * @param[in] result  The result of OPP server response
1121  * @param[in] remote_address  The remote address
1122  * @param[in] user_data  The user data passed from the callback registration function
1123  * @pre bt_opp_client_push_files() will invoke this function.
1124  * @see bt_opp_client_push_files()
1125  */
1126 typedef void (*bt_opp_client_push_responded_cb)(int result, const char *remote_address, void *user_data);
1127
1128 /**
1129  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
1130  * @brief  Called when each file is being transfered.
1131  * @param[in] file  The path of file to be pushed
1132  * @param[in] size The file size (bytes)
1133  * @param[in] percent The progress in percentage (1 ~ 100). 100 means that a file is transfered completely.
1134  * @param[in] user_data The user data passed from the callback registration function
1135  * @pre bt_opp_client_push_files() will invoke this function.
1136  * @see bt_opp_client_push_files()
1137  */
1138 typedef void (*bt_opp_client_push_progress_cb)(const char *file, long long size, int percent, void *user_data);
1139
1140 /**
1141  * @ingroup CAPI_NETWORK_BLUETOOTH_OPP_CLIENT_MODULE
1142  * @brief  Called when the push request is finished.
1143  * @param[in] result  The result of the push request
1144  * @param[in] remote_address  The remote address
1145  * @param[in] user_data The user data passed from the callback registration function
1146  * @see bt_opp_client_push_files()
1147  */
1148 typedef void (*bt_opp_client_push_finished_cb)(int result, const char *remote_address, void *user_data);
1149
1150 /**
1151  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE
1152  * @brief  Called when the connection state is changed.
1153  * @details  This callback is called when the connection state is changed.
1154  * When you call bt_audio_connect() or bt_audio_disconnect(), this callback is also called with error result even though these functions fail.
1155  * @param[in] result  The result of changing the connection state
1156  * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
1157  * @param[in] remote_address  The remote address
1158  * @param[in] type  The type of audio profile except #BT_AUDIO_PROFILE_TYPE_ALL
1159  * @param[in] user_data The user data passed from the callback registration function
1160  * @see bt_audio_set_connection_state_changed_cb()
1161  * @see bt_audio_unset_connection_state_changed_cb()
1162  */
1163 typedef void (*bt_audio_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_audio_profile_type_e type, void *user_data);
1164
1165 /**
1166  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1167  * @brief  Called when the SCO(Synchronous Connection Oriented link) state is changed.
1168  * @details  This callback is called when the SCO state is changed.
1169  * When you call bt_ag_open_sco() or bt_ag_close_sco(), this callback is also called with error result even though these functions failed.
1170  * @param[in] result  The result of changing the connection state
1171  * @param[in] opened  The state to be changed: (@c true = opened, @c  false = not opened)
1172  * @param[in] user_data The user data passed from the callback registration function
1173  * @see bt_ag_set_sco_state_changed_cb()
1174  * @see bt_ag_unset_sco_state_changed_cb()
1175  * @see bt_ag_open_sco()
1176  * @see bt_ag_close_sco()
1177  */
1178 typedef void (*bt_ag_sco_state_changed_cb) (int result, bool opened, void *user_data);
1179
1180 /**
1181  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1182  * @brief  Called when a call handling event happened from Hands-Free.
1183  * @param[in] event  The call handling event happened from Hands-Free
1184  * @param[in] call_id  The call ID
1185  * @param[in] user_data The user data passed from the callback registration function
1186  * @see bt_ag_set_call_handling_event_cb()
1187  * @see bt_ag_unset_call_handling_event_cb()
1188  */
1189 typedef void (*bt_ag_call_handling_event_cb) (bt_ag_call_handling_event_e event, unsigned int call_id, void *user_data);
1190
1191 /**
1192  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1193  * @brief  Called when a multi call handling event happened from Hands-Free.
1194  * @param[in] event  The call handling event happened from Hands-Free
1195  * @param[in] user_data The user data passed from the callback registration function
1196  * @see bt_ag_set_multi_call_handling_event_cb()
1197  * @see bt_ag_unset_multi_call_handling_event_cb()
1198  */
1199 typedef void (*bt_ag_multi_call_handling_event_cb) (bt_ag_multi_call_handling_event_e event, void *user_data);
1200
1201 /**
1202  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1203  * @brief  Called when a DTMF(Dual Tone Multi Frequency) is transmitted from Hands-Free.
1204  * @param[in] dtmf  The DTMF transmitted from Hands-Free
1205  * @param[in] user_data The user data passed from the callback registration function
1206  * @see bt_ag_set_dtmf_transmitted_cb()
1207  * @see bt_ag_unset_dtmf_transmitted_cb()
1208  */
1209 typedef void (*bt_ag_dtmf_transmitted_cb) (const char *dtmf, void *user_data);
1210
1211 /**
1212  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1213  * @brief  Called when the speaker gain of the remote device is changed.
1214  * @param[in] gain The gain of speaker (0 ~ 15)
1215  * @param[in] user_data The user data passed from the callback registration function
1216  * @see bt_ag_set_speaker_gain_changed_cb()
1217  * @see bt_ag_unset_speaker_gain_changed_cb()
1218  */
1219 typedef void (*bt_ag_speaker_gain_changed_cb) (int gain, void *user_data);
1220
1221 /**
1222  * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_AG_MODULE
1223  * @brief  Called when the microphone gain of the remote device is changed.
1224  * @param[in] gain The gain of microphone (0 ~ 15)
1225  * @param[in] user_data The user data passed from the callback registration function
1226  * @see bt_ag_set_microphone_gain_changed_cb()
1227  * @see bt_ag_unset_microphone_gain_changed_cb()
1228  */
1229 typedef void (*bt_ag_microphone_gain_changed_cb) (int gain, void *user_data);
1230
1231 /**
1232  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
1233  * @brief  Called when the connection state is changed.
1234  * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
1235  * @param[in] remote_address  The remote address
1236  * @param[in] user_data The user data passed from the callback registration function
1237  * @see bt_avrcp_target_initialize()
1238  * @see bt_avrcp_target_deinitialize()
1239  */
1240 typedef void (*bt_avrcp_target_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
1241
1242 /**
1243  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
1244  * @brief  Called when the equalizer state is changed by the remote control device.
1245  * @param[in] equalizer The equalizer state
1246  * @param[in] user_data The user data passed from the callback registration function
1247  * @see bt_avrcp_set_equalizer_state_changed_cb()
1248  * @see bt_avrcp_unset_equalizer_state_changed_cb()
1249  */
1250 typedef void (*bt_avrcp_equalizer_state_changed_cb) (bt_avrcp_equalizer_state_e equalizer, void *user_data);
1251
1252 /**
1253  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
1254  * @brief  Called when the repeat mode is changed by the remote control device.
1255  * @param[in] repeat The repeat mode
1256  * @param[in] user_data The user data passed from the callback registration function
1257  * @see bt_avrcp_set_repeat_mode_changed_cb()
1258  * @see bt_avrcp_unset_repeat_mode_changed_cb()
1259  */
1260 typedef void (*bt_avrcp_repeat_mode_changed_cb) (bt_avrcp_repeat_mode_e repeat, void *user_data);
1261
1262 /**
1263  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
1264  * @brief  Called when the shuffle mode is changed by the remote control device.
1265  * @param[in] shuffle The shuffle mode
1266  * @param[in] user_data The user data passed from the callback registration function
1267  * @see bt_avrcp_set_shuffle_mode_changed_cb()
1268  * @see bt_avrcp_unset_shuffle_mode_changed_cb()
1269  */
1270 typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffle, void *user_data);
1271
1272 /**
1273  * @ingroup CAPI_NETWORK_BLUETOOTH_AVRCP_MODULE
1274  * @brief  Called when the scan mode is changed by the remote control device.
1275  * @param[in] shuffle The shuffle mode
1276  * @param[in] user_data The user data passed from the callback registration function
1277  * @see bt_avrcp_set_scan_mode_changed_cb()
1278  * @see bt_avrcp_unset_scan_mode_changed_cb()
1279  */
1280 typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data);
1281
1282 /**
1283  * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE
1284  * @brief  Called when the connection state is changed.
1285  * @details  This callback is called when the connection state is changed.
1286  * When you call bt_hid_host_connect() or bt_hid_host_disconnect(), this callback is also called with error result even though these functions fail.
1287  * @param[in] result  The result of changing the connection state
1288  * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
1289  * @param[in] remote_address  The remote address
1290  * @param[in] user_data The user data passed from the callback registration function
1291  * @see bt_hid_host_connect()
1292  * @see bt_hid_host_disconnect()
1293  */
1294 typedef void (*bt_hid_host_connection_state_changed_cb) (int result, bool connected, const char *remote_address, void *user_data);
1295
1296 /**
1297  * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
1298  * @brief  Called when the connection is established.
1299  * @param[in] result  The result of connecting to the remote device
1300  * @param[in] remote_address  The address of connected remote device
1301  * @param[in] app_id  The ID of application
1302  * @param[in] type  The type of HDP(Health Device Profile) channel
1303  * @param[in] channel  The connected data channel
1304  * @param[in] user_data The user data passed from the callback registration function
1305  * @see  bt_hdp_disconnected_cb
1306  * @see bt_hdp_set_connection_state_changed_cb()
1307  * @see bt_hdp_unset_connection_state_changed_cb()
1308  */
1309 typedef void (*bt_hdp_connected_cb) (int result, const char *remote_address, const char *app_id,
1310     bt_hdp_channel_type_e type, unsigned int channel, void *user_data);
1311
1312 /**
1313  * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
1314  * @brief  Called when the connection is disconnected.
1315  * @param[in] result  The result of disconnecting from the remote device
1316  * @param[in] remote_address  The address of disconnected remote device
1317  * @param[in] channel  The connected data channel
1318  * @param[in] user_data The user data passed from the callback registration function
1319  * @see  bt_hdp_connected_cb
1320  * @see bt_hdp_set_connection_state_changed_cb()
1321  * @see bt_hdp_unset_connection_state_changed_cb()
1322  */
1323 typedef void (*bt_hdp_disconnected_cb) (int result, const char *remote_address, unsigned int channel, void *user_data);
1324
1325 /**
1326  * @ingroup CAPI_NETWORK_BLUETOOTH_HDP_MODULE
1327  * @brief  Called when the you receive the data.
1328  * @param[in] channel  The connected data channel
1329  * @param[in] data  The received data
1330  * @param[in] size  The size of received data (byte)
1331  * @param[in] user_data The user data passed from the callback registration function
1332  * @see bt_hdp_set_data_received_cb()
1333  * @see bt_hdp_unset_data_received_cb()
1334  */
1335 typedef void (*bt_hdp_data_received_cb) (unsigned int channel, const char *data, unsigned int size, void *user_data);
1336
1337 /**
1338  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1339  * @brief  Called when you get the primary services repeatedly.
1340  * @param[in]  service  The attribute handle of service
1341  * @param[in]  index  The index of a service, starts from 0
1342  * @param[in]  total  The total number of services
1343  * @param[in]  user_data  The user data passed from the foreach function
1344  * @return  @c true to continue with the next iteration of the loop,
1345  * \n @c false to break out of the loop.
1346  * @pre  bt_gatt_foreach_primary_services() will invoke this function.
1347  * @see  bt_gatt_foreach_primary_services()
1348  */
1349 typedef bool (*bt_gatt_primary_service_cb) (bt_gatt_attribute_h service, int index, int total, void *user_data);
1350
1351 /**
1352  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1353  * @brief  Called after the characteristics are discovered by bt_gatt_discover_characteristics().
1354  * @remarks  If bt_gatt_discover_characteristics() failed, then this callback function is called only once with 0 totla and NULL characteristic_handle.
1355  * @param[in]  result  The result of discovering
1356  * @param[in]  index  The index of characteristics in a service, starts from 0
1357  * @param[in]  total  The total number of characteristics in a service
1358  * @param[in]  characteristic  The attribute handle of characteristic
1359  * @param[in]  user_data  The user data passed from the request function
1360  * @return  @c true to continue with the next iteration of the loop,
1361  * \n @c false to break out of the loop.
1362  * @pre  bt_gatt_discover_characteristics() will invoke this callback.
1363  * @see  bt_gatt_discover_characteristics()
1364  */
1365 typedef bool (*bt_gatt_characteristics_discovered_cb) (int result, int index, int total, bt_gatt_attribute_h characteristic, void *user_data);
1366
1367 /**
1368  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1369  * @brief  Called when you get the included services repeatedly.
1370  * @param[in]  service  The attribute handle of service
1371  * @param[in]  user_data  The user data passed from the foreach function
1372  * @return  @c true to continue with the next iteration of the loop,
1373  * \n @c false to break out of the loop.
1374  * @pre  bt_gatt_foreach_included_services() will invoke this function.
1375  * @see  bt_gatt_foreach_included_services()
1376  */
1377 typedef bool (*bt_gatt_included_service_cb) (bt_gatt_attribute_h service, void *user_data);
1378
1379 /**
1380  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1381  * @brief  Called when a characteristic in service is changed.
1382  * @param[in]  characteristic  The attribute handle of characteristic
1383  * @param[in]  value  The value of characteristic (byte array)
1384  * @param[in]  value_length  The length of value
1385  * @param[in]  user_data  The user data passed from the callback registration function
1386  * @see bt_gatt_set_characteristic_changed_cb()
1387  * @see bt_gatt_unset_characteristic_changed_cb()
1388  */
1389 typedef void (*bt_gatt_characteristic_changed_cb) (bt_gatt_attribute_h characteristic, unsigned char *value, int value_length, void *user_data);
1390
1391 /**
1392  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1393  * @brief  Called when a characteristic value is written.
1394  * @see bt_gatt_set_characteristic_value()
1395  */
1396 typedef void (*bt_gatt_characteristic_write_cb) (int result, void *user_data);
1397
1398 /**
1399  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1400  * @brief  Called when a characteristic value is read.
1401  * @param[in]  value  The value of characteristic (byte array)
1402  * @param[in]  value_length  The length of value
1403  * @param[in]  user_data  The user data passed from the foreach function
1404  * @see bt_gatt_read_characteristic_value()
1405  */
1406 typedef void (*bt_gatt_characteristic_read_cb) (unsigned char *value,
1407                         int value_length, void *user_data);
1408
1409 /**
1410  * @ingroup  CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1411  * @brief  Called after the characteristics descriptors are discovered by bt_gatt_discover_characteristic_descriptor().
1412  * @param[in]  result  The result of discovering
1413  * @param[in]  characteristic_format  The format of the information data.
1414  *                        characteristic_format = 0x01 indicates UUIDs are 16-bits
1415  *                        characteristic_format = 0x02 indicates UUIDs are 128-bits
1416  * @param[in]  total  The total number of elements in characteristic_descriptor
1417  * @param[in]  characteristic descriptor  The attribute handle and the UUID of characteristic descriptor
1418  * @param[in]  characteristic  The attribute handle and the UUID of characteristic
1419  * @param[in]  user_data  The user data passed from the request function
1420  * @see  bt_gatt_discover_characteristic_descriptor()
1421  */
1422 typedef void (*bt_gatt_characteristic_descriptor_discovered_cb) (int result,
1423                 unsigned char characteristic_format, int total,
1424                 bt_gatt_attribute_h characteristic_descriptor,
1425                 bt_gatt_attribute_h characteristic, void *user_data);
1426
1427 /**
1428  * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1429  * @brief Called when the connection state is changed.
1430  * @details This callback is called when the connection state is changed.
1431  * When you called bt_gatt_connect() or bt_gatt_disconnect(), this callback is also called with error result even though these functions fail.
1432  *
1433  * @param[in] result The result of changing the connection state.
1434  * @param[in] connected The state to be changed, @a true means connected state, Otherwise, @a false.
1435  * @param[in] remote_address The remote_address
1436  * @param[in] user_data The user data passed from the callback registration function.
1437  *
1438  * @see bt_gatt_connect()
1439  * @see bt_gatt_disconnect()
1440  * @see bt_gatt_set_connection_state_changed_cb()
1441  * @see bt_gatt_unset_connection_state_changed_cb()
1442  */
1443 typedef void (*bt_gatt_connection_state_changed_cb)(int result, bool connected, const char *remote_address, void *user_data);
1444
1445 /**
1446  * @ingroup CAPI_NETWORK_BLUETOOTH_GATT_MODULE
1447  * @brief Called when the remote devices writes a characteristic to the server db.
1448  * @details This callback is called when the remote client device writes a characteristics
1449  *                      to the server attribute database.
1450  *
1451  * @param[in] char_path Characteristic path for which the value is writtten.
1452  * @param[in] char_value The characteristic value
1453  * @param[in] value_length The length of the characteristic value written.
1454  * @param[in] remote_address remote client device bd address.
1455  *
1456  * @see bt_gatt_connect()
1457  */
1458 typedef void (*bt_gatt_remote_characteristic_write_cb) (char *char_path,
1459                                         unsigned char* char_value, int value_length,
1460                                         const char *remote_address,
1461                                         void *user_data);
1462
1463 /**
1464  * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_NAP_MODULE
1465  * @brief  Called when the connection state is changed.
1466  * @param[in] connected  Indicates whether a client is connected or disconnected
1467  * @param[in] remote_address  The remote address
1468  * @param[in] interface_name  The interface name. For example, bnep0, bnep1.
1469  * @param[in] user_data The user data passed from the callback registration function
1470  * @see bt_nap_set_connection_state_changed_cb()
1471  * @see bt_nap_unset_connection_state_changed_cb()
1472  */
1473 typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char *remote_address, const char *interface_name, void *user_data);
1474
1475 /**
1476  * @ingroup CAPI_NETWORK_BLUETOOTH_PAN_PANU_MODULE
1477  * @brief  Called when the connection state is changed.
1478  * @details  This callback is called when the connection state is changed.
1479  * When you call bt_panu_connect() or bt_panu_disconnect(), this callback is also called with error result even though these functions fail.
1480  * @param[in] result  The result of changing the connection state
1481  * @param[in] connected  The state to be changed. @a true means connected state, Otherwise, @a false.
1482  * @param[in] remote_address  The remote address
1483  * @param[in] type  The type of PAN service
1484  * @param[in] user_data The user data passed from the callback registration function
1485  * @see bt_nap_set_connection_state_changed_cb()
1486  * @see bt_nap_unset_connection_state_changed_cb()
1487  */
1488 typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data);
1489
1490
1491 #ifdef __cplusplus
1492 }
1493 #endif /* __cplusplus */
1494
1495 #endif // __TIZEN_NETWORK_BLUETOOTH_TYPE_H__