4 * Copyright (c) 2015 -2016 Samsung Electronics Co., Ltd All Rights Reserved.
6 * Contact: Anupam Roy <anupam.r@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 #ifndef _BT_HAL_DBUS_COMMON_UTILS_H_
23 #define _BT_HAL_DBUS_COMMON_UTILS_H_
26 #include <sys/types.h>
47 #define BT_HAL_MAX_DBUS_TIMEOUT 45000
48 #define BT_HAL_TIMEOUT_MESSAGE "Did not receive a reply. Possible causes include: " \
49 "the remote application did not send a reply, " \
50 "the message bus security policy blocked the reply, " \
51 "the reply timeout expired, or the network connection " \
53 #define BT_HAL_ACCESS_DENIED_MSG "Rejected send message"
55 #define BT_HAL_DISCOVERY_FINISHED_DELAY 200
57 #define BT_HAL_UUID_SIZE 16
58 #define BT_HAL_UUID_STRING_LEN 37
59 #define BT_HAL_ADDRESS_LENGTH_MAX 6
60 #define BT_HAL_ADDRESS_STRING_SIZE 18
61 #define BT_HAL_LOWER_ADDRESS_LENGTH 9
62 #define BT_HAL_AGENT_NEW_LINE "\r\n"
64 #define BT_HAL_VERSION_LENGTH_MAX 30 /**< This specifies bluetooth device version length */
65 #define BT_HAL_INTERFACE_NAME_LENGTH 16
66 #define BT_HAL_DEVICE_NAME_LENGTH_MAX 248 /**< This specifies maximum device name length */
67 #define BT_HAL_DEVICE_PASSKEY_LENGTH_MAX 50 /**< This specifies maximum length of the passkey */
68 #define BT_HAL_ADVERTISING_DATA_LENGTH_MAX 31 /**< This specifies maximum AD data length */
69 #define BT_HAL_SCAN_RESP_DATA_LENGTH_MAX 31 /**< This specifies maximum LE Scan response data length */
70 #define BT_HAL_MANUFACTURER_DATA_LENGTH_MAX 240 /**< This specifies maximum manufacturer data length */
71 #define BT_HAL_BLUEZ_NAME "org.bluez"
72 #define BT_HAL_BLUEZ_PATH "/org/bluez"
73 #define BT_HAL_MANAGER_PATH "/"
74 #define BT_HAL_BLUEZ_HCI_PATH "/org/bluez/hci0"
76 #define BT_HAL_DEVICE_AGENT_PATH "/org/tizen/device_agent"
77 #define BT_HAL_ADAPTER_AGENT_PATH "/org/tizen/adapter_agent"
79 #define BT_HAL_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager"
80 #define BT_HAL_ADAPTER_INTERFACE "org.bluez.Adapter1"
81 #define BT_HAL_DEVICE_INTERFACE "org.bluez.Device1"
82 #define BT_HAL_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
84 #define BT_HAL_HARDWARE_ERROR "HardwareError"
85 #define BT_HAL_TX_TIMEOUT_ERROR "TxTimeoutError"
86 #define BT_HAL_DBFW_PLUS_INFO "BrcmEnhancedDBFWInfo"
88 #define BT_HAL_FREEDESKTOP_INTERFACE "org.freedesktop.DBus"
89 #define BT_HAL_FREEDESKTOP_PATH "/org/freedesktop/DBus"
91 #define BT_HAL_SINK_INTERFACE "org.bluez.AudioSink"
92 #define BT_HAL_AUDIO_INTERFACE "org.bluez.Audio"
93 #define BT_HAL_INPUT_INTERFACE "org.bluez.Input1"
94 #define BT_HAL_AGENT_INTERFACE "org.bluez.Agent1"
95 #define BT_HAL_AGENT_MANAGER_INTERFACE "org.bluez.AgentManager1"
96 #define BT_HAL_MEDIA_INTERFACE "org.bluez.Media1"
97 #define BT_HAL_MEDIA_PLAYER_INTERFACE "org.mpris.MediaPlayer2.Player"
98 #define BT_HAL_MEDIATRANSPORT_INTERFACE "org.bluez.MediaTransport1"
99 #define BT_HAL_MEDIA_CONTROL_INTERFACE "org.bluez.MediaControl1"
100 #define BT_HAL_PLAYER_CONTROL_INTERFACE "org.bluez.MediaPlayer1"
101 #define BT_HAL_GATT_SERVICE_INTERFACE "org.bluez.GattService1"
102 #define BT_HAL_GATT_CHAR_INTERFACE "org.bluez.GattCharacteristic1"
103 #define BT_HAL_GATT_DESC_INTERFACE "org.bluez.GattDescriptor1"
104 #define BT_HAL_NETWORK_INTERFACE "org.bluez.Network"
105 #define BT_HAL_NETWORK_CLIENT_INTERFACE "org.bluez.Network1"
106 #define BT_HAL_NETWORK_SERVER_INTERFACE "org.bluez.NetworkServer1"
107 #define BT_HAL_MEDIA_INTERFACE "org.bluez.Media1"
108 #define BT_HAL_MEDIA_PLAYER_INTERFACE "org.mpris.MediaPlayer2.Player"
109 #define BT_HAL_OBEX_TRANSFER_INTERFACE "org.bluez.obex.Transfer1"
110 #define BT_HAL_HEADSET_INTERFACE "org.bluez.Headset"
113 #define BT_HAL_INTERFACES_ADDED "InterfacesAdded"
114 #define BT_HAL_INTERFACES_REMOVED "InterfacesRemoved"
115 #define BT_HAL_NAME_OWNER_CHANGED "NameOwnerChanged"
116 #define BT_HAL_PROPERTIES_CHANGED "PropertiesChanged"
118 #define BT_HAL_HID_SERVICE_NAME "org.bluez.hid_agent"
119 #define BT_HAL_HID_AGENT_OBJECT_PATH "/org/bluez/hid_agent"
120 #define BT_HAL_HID_SERVICE_INTERFACE "org.tizen.HidApp"
123 * This is Bluetooth error code
125 #define BT_HAL_ERROR_BASE ((int)0) /**< Error code base */
127 #define BT_HAL_ERROR_NONE ((int)0) /**< No error #0 */
128 #define BT_HAL_ERROR_CANCEL ((int)BT_HAL_ERROR_BASE - 0x01)
130 #define BT_HAL_ERROR_INVALID_CALLBACK ((int)BT_HAL_ERROR_BASE - 0x02)
131 /**< Callback error */
132 #define BT_HAL_ERROR_INVALID_PARAM ((int)BT_HAL_ERROR_BASE - 0x03)
133 /**< invalid paramerror */
134 #define BT_HAL_ERROR_INVALID_DATA ((int)BT_HAL_ERROR_BASE - 0x04)
135 /**< invalid data error */
136 #define BT_HAL_ERROR_MEMORY_ALLOCATION ((int)BT_HAL_ERROR_BASE - 0x05)
137 /**< Memory allocation error */
138 #define BT_HAL_ERROR_OUT_OF_MEMORY ((int)BT_HAL_ERROR_BASE - 0x06)
139 /**< out of memory error */
140 #define BT_HAL_ERROR_TIMEOUT ((int)BT_HAL_ERROR_BASE - 0x07)
141 /**< timeout error */
142 #define BT_HAL_ERROR_NO_RESOURCES ((int)BT_HAL_ERROR_BASE - 0x08)
143 /**< No resource error */
144 #define BT_HAL_ERROR_INTERNAL ((int)BT_HAL_ERROR_BASE - 0x09)
145 /**< internal error */
146 #define BT_HAL_ERROR_NOT_SUPPORT ((int)BT_HAL_ERROR_BASE - 0x0a)
147 /**< Not supported error */
148 #define BT_HAL_ERROR_DEVICE_NOT_ENABLED ((int)BT_HAL_ERROR_BASE - 0x0b)
149 /**< Operation is failed because
150 of not enabled BT Adapter */
151 #define BT_HAL_ERROR_DEVICE_ALREADY_ENABLED ((int)BT_HAL_ERROR_BASE - 0x0c)
152 /**< Enabling is failed because of
153 already enabled BT Adapter */
154 #define BT_HAL_ERROR_DEVICE_BUSY ((int)BT_HAL_ERROR_BASE - 0x0d)
155 /**< Operation is failed because of
156 other on going operation */
157 #define BT_HAL_ERROR_ACCESS_DENIED ((int)BT_HAL_ERROR_BASE - 0x0e)
158 /**< access denied error */
159 #define BT_HAL_ERROR_MAX_CLIENT ((int)BT_HAL_ERROR_BASE - 0x0f)
160 /**< max client error */
161 #define BT_HAL_ERROR_NOT_FOUND ((int)BT_HAL_ERROR_BASE - 0x10)
162 /**< not found error */
163 #define BT_HAL_ERROR_SERVICE_SEARCH_ERROR ((int)BT_HAL_ERROR_BASE - 0x11)
164 /**< service search fail */
165 #define BT_HAL_ERROR_PARING_FAILED ((int)BT_HAL_ERROR_BASE - 0x12)
166 /**< pairing failed error */
167 #define BT_HAL_ERROR_NOT_PAIRED ((int)BT_HAL_ERROR_BASE - 0x13)
168 /**< Not paired error */
169 #define BT_HAL_ERROR_SERVICE_NOT_FOUND ((int)BT_HAL_ERROR_BASE - 0x14)
170 /**< no service error */
171 #define BT_HAL_ERROR_NOT_CONNECTED ((int)BT_HAL_ERROR_BASE - 0x15)
172 /**< no connection error */
173 #define BT_HAL_ERROR_ALREADY_CONNECT ((int)BT_HAL_ERROR_BASE - 0x16)
174 /**< alread connected error */
175 #define BT_HAL_ERROR_CONNECTION_BUSY ((int)BT_HAL_ERROR_BASE - 0x17)
176 /**< connection busy error */
177 #define BT_HAL_ERROR_CONNECTION_ERROR ((int)BT_HAL_ERROR_BASE - 0x18)
178 /**< connection error */
179 #define BT_HAL_ERROR_MAX_CONNECTION ((int)BT_HAL_ERROR_BASE - 0x19)
180 /**< max connection error*/
181 #define BT_HAL_ERROR_NOT_IN_OPERATION ((int)BT_HAL_ERROR_BASE - 0x1a)
182 /**< Not in operation */
183 #define BT_HAL_ERROR_CANCEL_BY_USER ((int)BT_HAL_ERROR_BASE - 0x1b)
184 /**< Cancelled by user */
185 #define BT_HAL_ERROR_REGISTRATION_FAILED ((int)BT_HAL_ERROR_BASE - 0x1c)
186 /**< Service record registration failed */
187 #define BT_HAL_ERROR_IN_PROGRESS ((int)BT_HAL_ERROR_BASE - 0x1d)
188 /**< Operation in progress */
189 #define BT_HAL_ERROR_AUTHENTICATION_FAILED ((int)BT_HAL_ERROR_BASE - 0x1e)
190 /**< authentication failed error when paring*/
191 #define BT_HAL_ERROR_HOST_DOWN ((int)BT_HAL_ERROR_BASE - 0x1f)
192 /**< Remote host is down */
193 #define BT_HAL_ERROR_END_OF_DEVICE_LIST ((int)BT_HAL_ERROR_BASE - 0x20)
194 /**< End of device list */
196 #define BT_HAL_ERROR_AGENT_ALREADY_EXIST ((int)BT_HAL_ERROR_BASE - 0x21)
197 /**< Obex agent already exists */
198 #define BT_HAL_ERROR_AGENT_DOES_NOT_EXIST ((int)BT_HAL_ERROR_BASE - 0x22)
199 /**< Obex agent does not exist */
201 #define BT_HAL_ERROR_ALREADY_INITIALIZED ((int)BT_HAL_ERROR_BASE - 0x23)
202 /**< Already initialized */
204 #define BT_HAL_ERROR_PERMISSION_DEINED ((int)BT_HAL_ERROR_BASE - 0x24)
205 /**< Permission deined */
207 #define BT_HAL_ERROR_ALREADY_DEACTIVATED ((int)BT_HAL_ERROR_BASE - 0x25)
208 /**< Nap already done */
210 #define BT_HAL_ERROR_NOT_INITIALIZED ((int)BT_HAL_ERROR_BASE - 0x26)
211 /**< Not initialized */
213 #define BT_HAL_ERROR_DEVICE_POLICY_RESTRICTION ((int)BT_HAL_ERROR_BASE - 0x27)
214 /**< Device Policy Restricted */
216 * Service class part of class of device returned from device discovery
219 BT_HAL_DEVICE_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE = 0x002000,
220 BT_HAL_DEVICE_SERVICE_CLASS_POSITIONING = 0x010000, /**< */
221 BT_HAL_DEVICE_SERVICE_CLASS_NETWORKING = 0x020000, /**< */
222 BT_HAL_DEVICE_SERVICE_CLASS_RENDERING = 0x040000, /**< */
223 BT_HAL_DEVICE_SERVICE_CLASS_CAPTURING = 0x080000, /**< */
224 BT_HAL_DEVICE_SERVICE_CLASS_OBJECT_TRANSFER = 0x100000, /**< */
225 BT_HAL_DEVICE_SERVICE_CLASS_AUDIO = 0x200000, /**< */
226 BT_HAL_DEVICE_SERVICE_CLASS_TELEPHONY = 0x400000, /**< */
227 BT_HAL_DEVICE_SERVICE_CLASS_INFORMATION = 0x800000, /**< */
228 } bt_hal_device_service_class_t;
231 * Major device mask (For device discovery)
234 BT_HAL_DEVICE_MAJOR_MASK_MISC = 0x00,
235 BT_HAL_DEVICE_MAJOR_MASK_COMPUTER = 0x0001,
236 BT_HAL_DEVICE_MAJOR_MASK_PHONE = 0x0002,
237 BT_HAL_DEVICE_MAJOR_MASK_LAN_ACCESS_POINT = 0x0004,
238 BT_HAL_DEVICE_MAJOR_MASK_AUDIO = 0x0008,
239 BT_HAL_DEVICE_MAJOR_MASK_PERIPHERAL = 0x0010,
240 BT_HAL_DEVICE_MAJOR_MASK_IMAGING = 0x0020,
241 BT_HAL_DEVICE_MAJOR_MASK_WEARABLE = 0x0040,
242 BT_HAL_DEVICE_MAJOR_MASK_TOY = 0x0080,
243 BT_HAL_DEVICE_MAJOR_MASK_HEALTH = 0x0100,
244 } bt_hal_device_major_mask_t;
247 * Major device class (part of Class of Device)
250 BT_HAL_DEVICE_MAJOR_CLASS_MISC = 0x00, /**< Miscellaneous major device class*/
251 BT_HAL_DEVICE_MAJOR_CLASS_COMPUTER = 0x01, /**< Computer major device class*/
252 BT_HAL_DEVICE_MAJOR_CLASS_PHONE = 0x02, /**< Phone major device class*/
253 BT_HAL_DEVICE_MAJOR_CLASS_LAN_ACCESS_POINT = 0x03, /**< LAN major device class*/
254 BT_HAL_DEVICE_MAJOR_CLASS_AUDIO = 0x04, /**< AUDIO major device class*/
255 BT_HAL_DEVICE_MAJOR_CLASS_PERIPHERAL = 0x05, /**< Peripheral major device class*/
256 BT_HAL_DEVICE_MAJOR_CLASS_IMAGING = 0x06, /**< Imaging major device class*/
257 BT_HAL_DEVICE_MAJOR_CLASS_WEARABLE = 0x07, /**< Wearable device class*/
258 BT_HAL_DEVICE_MAJOR_CLASS_TOY = 0x08, /**< Toy device class*/
259 BT_HAL_DEVICE_MAJOR_CLASS_HEALTH = 0x09, /**< Health device class*/
260 BT_HAL_DEVICE_MAJOR_CLASS_UNCLASSIFIED = 0x1F /**< Unknown major device class*/
261 } bt_hal_device_major_class_t;
265 BT_HAL_DEVICE_MINOR_CLASS_UNCLASSIFIED = 0x00, /**< unclassified minor class */
267 /* About Computer Major class */
268 BT_HAL_DEVICE_MINOR_CLASS_DESKTOP_WORKSTATION = 0x04, /**< desktop workstation
270 BT_HAL_DEVICE_MINOR_CLASS_SERVER_CLASS_COMPUTER = 0x08, /**< server minor class */
271 BT_HAL_DEVICE_MINOR_CLASS_LAPTOP = 0x0C, /**< laptop minor class */
272 BT_HAL_DEVICE_MINOR_CLASS_HANDHELD_PC_OR_PDA = 0x10, /**< PDA minor class */
273 BT_HAL_DEVICE_MINOR_CLASS_PALM_SIZED_PC_OR_PDA = 0x14, /**< PALM minor class */
274 BT_HAL_DEVICE_MINOR_CLASS_WEARABLE_COMPUTER = 0x18, /**< Wearable PC minor class */
276 /* About Phone Major class */
277 BT_HAL_DEVICE_MINOR_CLASS_CELLULAR = 0x04, /**< Cellular minor class */
278 BT_HAL_DEVICE_MINOR_CLASS_CORDLESS = 0x08, /**< cordless minor class */
279 BT_HAL_DEVICE_MINOR_CLASS_SMART_PHONE = 0x0C, /**< smart phone minor class */
280 BT_HAL_DEVICE_MINOR_CLASS_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10,
281 /**< voice gateway minor class */
282 BT_HAL_DEVICE_MINOR_CLASS_COMMON_ISDN_ACCESS = 0x14, /**< ISDN minor class */
284 /* About LAN/Network Access Point Major class */
285 BT_HAL_DEVICE_MINOR_CLASS_FULLY_AVAILABLE = 0x04, /**< Fully available minor class */
286 BT_HAL_DEVICE_MINOR_CLASS_1_TO_17_PERCENT_UTILIZED = 0x20, /**< 1-17% utilized minor class */
287 BT_HAL_DEVICE_MINOR_CLASS_17_TO_33_PERCENT_UTILIZED = 0x40, /**< 17-33% utilized minor class */
288 BT_HAL_DEVICE_MINOR_CLASS_33_TO_50_PERCENT_UTILIZED = 0x60, /**< 33-50% utilized minor class */
289 BT_HAL_DEVICE_MINOR_CLASS_50_to_67_PERCENT_UTILIZED = 0x80, /**< 50-67% utilized minor class */
290 BT_HAL_DEVICE_MINOR_CLASS_67_TO_83_PERCENT_UTILIZED = 0xA0, /**< 67-83% utilized minor class */
291 BT_HAL_DEVICE_MINOR_CLASS_83_TO_99_PERCENT_UTILIZED = 0xC0, /**< 83-99% utilized minor class */
292 BT_HAL_DEVICE_MINOR_CLASS_NO_SERVICE_AVAILABLE = 0xE0, /**< No service available minor class */
294 /* About Audio/Video Major class */
295 BT_HAL_DEVICE_MINOR_CLASS_HEADSET_PROFILE = 0x04, /**< Headset minor class */
296 BT_HAL_DEVICE_MINOR_CLASS_HANDSFREE = 0x08, /**< Handsfree minor class*/
298 BT_HAL_DEVICE_MINOR_CLASS_MICROPHONE = 0x10, /**< Microphone minor class */
299 BT_HAL_DEVICE_MINOR_CLASS_LOUD_SPEAKER = 0x14, /**< Loud Speaker minor class */
300 BT_HAL_DEVICE_MINOR_CLASS_HEADPHONES = 0x18, /**< Headphones minor class */
301 BT_HAL_DEVICE_MINOR_CLASS_PORTABLE_AUDIO = 0x1C, /**< Portable Audio minor class */
302 BT_HAL_DEVICE_MINOR_CLASS_CAR_AUDIO = 0x20, /**< Car Audio minor class */
303 BT_HAL_DEVICE_MINOR_CLASS_SET_TOP_BOX = 0x24, /**< Set top box minor class */
304 BT_HAL_DEVICE_MINOR_CLASS_HIFI_AUDIO_DEVICE = 0x28, /**< Hifi minor class */
305 BT_HAL_DEVICE_MINOR_CLASS_VCR = 0x2C, /**< VCR minor class */
306 BT_HAL_DEVICE_MINOR_CLASS_VIDEO_CAMERA = 0x30, /**< Video Camera minor class */
307 BT_HAL_DEVICE_MINOR_CLASS_CAM_CORDER = 0x34, /**< CAM Corder minor class */
308 BT_HAL_DEVICE_MINOR_CLASS_VIDEO_MONITOR = 0x38, /**<Video Monitor minor class */
309 BT_HAL_DEVICE_MINOR_CLASS_VIDEO_DISPLAY_AND_LOUD_SPEAKER = 0x3C,
310 /**< Video Display and Loud
311 Speaker minor class */
312 BT_HAL_DEVICE_MINOR_CLASS_VIDEO_CONFERENCING = 0x40, /**< Video Conferencing minor*/
314 BT_HAL_DEVICE_MINOR_CLASS_GAMING_OR_TOY = 0x48, /**< Gaming or toy minor class */
316 /* About Peripheral Major class */
317 BT_HAL_DEVICE_MINOR_CLASS_KEY_BOARD = 0x40, /**< Key board minor class */
318 BT_HAL_DEVICE_MINOR_CLASS_POINTING_DEVICE = 0x80, /**< Pointing Device minor class */
319 BT_HAL_DEVICE_MINOR_CLASS_COMBO_KEYBOARD_OR_POINTING_DEVICE = 0xC0,
320 /**< Combo Keyboard or pointing
323 BT_HAL_DEVICE_MINOR_CLASS_JOYSTICK = 0x04, /**< JoyStick minor class */
324 BT_HAL_DEVICE_MINOR_CLASS_GAME_PAD = 0x08, /**< Game Pad minor class */
325 BT_HAL_DEVICE_MINOR_CLASS_REMOTE_CONTROL = 0x0C, /**< Remote Control minor class */
326 BT_HAL_DEVICE_MINOR_CLASS_SENSING_DEVICE = 0x10, /**< Sensing Device minor class */
327 BT_HAL_DEVICE_MINOR_CLASS_DIGITIZER_TABLET = 0x14, /**< Digitizer minor class */
328 BT_HAL_DEVICE_MINOR_CLASS_CARD_READER = 0x18, /**< Card Reader minor class */
329 BT_HAL_DEVICE_MINOR_CLASS_DIGITAL_PEN = 0x1C, /**< Digital pen minor class */
330 BT_HAL_DEVICE_MINOR_CLASS_HANDHELD_SCANNER = 0x20, /**< Handheld scanner for bar-codes, RFID minor class */
331 BT_HAL_DEVICE_MINOR_CLASS_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24, /**< Handheld gestural input device minor class */
333 /* About Imaging Major class */
334 BT_HAL_DEVICE_MINOR_CLASS_DISPLAY = 0x10, /**< Display minor class */
335 BT_HAL_DEVICE_MINOR_CLASS_CAMERA = 0x20, /**< Camera minor class */
336 BT_HAL_DEVICE_MINOR_CLASS_SCANNER = 0x40, /**< Scanner minor class */
337 BT_HAL_DEVICE_MINOR_CLASS_PRINTER = 0x80, /**< Printer minor class */
339 /* About Wearable Major class */
340 BT_HAL_DEVICE_MINOR_CLASS_WRIST_WATCH = 0x04, /**< Wrist watch minor class */
341 BT_HAL_DEVICE_MINOR_CLASS_PAGER = 0x08, /**< Pager minor class */
342 BT_HAL_DEVICE_MINOR_CLASS_JACKET = 0x0C, /**< Jacket minor class */
343 BT_HAL_DEVICE_MINOR_CLASS_HELMET = 0x10, /**< Helmet minor class */
344 BT_HAL_DEVICE_MINOR_CLASS_GLASSES = 0x14, /**< Glasses minor class */
346 /* About Toy Major class */
347 BT_HAL_DEVICE_MINOR_CLASS_ROBOT = 0x04, /**< Robot minor class */
348 BT_HAL_DEVICE_MINOR_CLASS_VEHICLE = 0x08, /**< Vehicle minor class */
349 BT_HAL_DEVICE_MINOR_CLASS_DOLL_OR_ACTION = 0x0C, /**< Doll or Action minor class */
350 BT_HAL_DEVICE_MINOR_CLASS_CONTROLLER = 0x10, /**< Controller minor class */
351 BT_HAL_DEVICE_MINOR_CLASS_GAME = 0x14, /**< Game minor class */
353 /* About Health Major class */
354 BT_HAL_DEVICE_MINOR_CLASS_BLOOD_PRESSURE_MONITOR = 0x04, /**< Blood Pressure minor class */
355 BT_HAL_DEVICE_MINOR_CLASS_THERMOMETER = 0x08, /**< Thermometer minor class */
356 BT_HAL_DEVICE_MINOR_CLASS_WEIGHING_SCALE = 0x0C, /**< Weighing Scale minor class */
357 BT_HAL_DEVICE_MINOR_CLASS_GLUCOSE_METER = 0x10, /**< Glucose minor class */
358 BT_HAL_DEVICE_MINOR_CLASS_PULSE_OXIMETER = 0x14, /**< Pulse Oximeter minor class */
359 BT_HAL_DEVICE_MINOR_CLASS_HEART_OR_PULSE_RATE_MONITOR = 0x18,/**< Heart or pulse rate monitor minor class */
360 BT_HAL_DEVICE_MINOR_CLASS_MEDICAL_DATA_DISPLAY = 0x1C, /**< Medical minor class */
361 BT_HAL_DEVICE_MINOR_CLASS_STEP_COUNTER = 0x20, /**< Step Counter minor class */
362 BT_HAL_DEVICE_MINOR_CLASS_BODY_COMPOSITION_ANALYZER = 0x24, /**< Body composition analyzer minor class */
363 BT_HAL_DEVICE_MINOR_CLASS_PEAK_FLOW_MONITOR = 0x28, /**< Peak flow monitor minor class */
364 BT_HAL_DEVICE_MINOR_CLASS_MEDICATION_MONITOR = 0x2C, /**< Medication monitor minor class */
365 BT_HAL_DEVICE_MINOR_CLASS_KNEE_PROSTHESIS = 0x30, /**< Knee prosthesis minor class */
366 BT_HAL_DEVICE_MINOR_CLASS_ANKLE_PROSTHESIS = 0x34, /**< Ankle prosthesis minor class */
367 } bt_hal_device_minor_class_t;
370 BT_HAL_GATT_PERMISSION_READ = 0x01,
371 BT_HAL_GATT_PERMISSION_WRITE = 0x02,
372 BT_HAL_GATT_PERMISSION_ENCRYPT_READ = 0x04,
373 BT_HAL_GATT_PERMISSION_ENCRYPT_WRITE = 0x08,
374 BT_HAL_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_READ = 0x10,
375 BT_HAL_GATT_PERMISSION_ENCRYPT_AUTHENTICATED_WRITE = 0x20,
376 } bt_hal_gatt_permission_t;
379 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_BROADCAST = 0x01,
380 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_READ = 0x02,
381 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_WRITE_NO_RESPONSE = 0x04,
382 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_WRITE = 0x08,
383 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_NOTIFY = 0x10,
384 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_INDICATE = 0x20,
385 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_SIGNED_WRITE = 0x40,
386 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_RELIABLE_WRITE = 0x80,
387 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_WRITABLE_AUXILIARIES = 0x100,
388 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_READ = 0x200,
389 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_WRITE = 0x400,
390 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_READ = 0x800,
391 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_ENCRYPT_AUTHENTICATED_WRITE = 0x1000,
392 BT_HAL_GATT_CHARACTERISTIC_PROPERTY_EXTENDED_PROPS = 0xffff,
393 } bt_hal_gatt_characteristic_property_t;
396 * This is Bluetooth device address type, fixed to 6 bytes ##:##:##:##:##:##
399 unsigned char addr[BT_HAL_ADDRESS_LENGTH_MAX];
400 } bt_hal_device_address_t;
403 * structure to hold the device information
406 bt_hal_device_major_class_t major_class; /**< major device class */
407 bt_hal_device_minor_class_t minor_class; /**< minor device class */
408 bt_hal_device_service_class_t service_class;
409 /**< service device class */
410 } bt_hal_device_class_t;
413 * Connected state types
416 BT_HAL_CONNECTED_LINK_NONE = 0x00,
417 BT_HAL_CONNECTED_LINK_BREDR = 0x01,
418 BT_HAL_CONNECTED_LINK_LE = 0x02,
419 BT_HAL_CONNECTED_LINK_BREDR_LE = 0x03,
420 } bt_hal_connected_link_t;
425 gboolean authentication;
426 gboolean authorization;
429 } bt_hal_register_profile_info_t;
431 typedef int (*bt_hal_new_connection_cb) (const char *path, int fd, bt_bdaddr_t *address);
433 GDBusProxy *_bt_hal_get_adapter_proxy(void);
434 GDBusProxy *_bt_hal_get_adapter_properties_proxy(void);
435 GDBusConnection *_bt_hal_get_system_gconn(void);
436 GDBusProxy *_bt_hal_get_manager_proxy(void);
437 GDBusProxy *_bt_hal_get_profile_proxy(void);
438 GDBusProxy *_bt_hal_get_avrcp_ctrl_proxy(bt_bdaddr_t *bd_addr);
439 GDBusProxy *_bt_hal_get_avrcp_ctrl_properties_proxy(bt_bdaddr_t *bd_addr);
440 GDBusProxy *_bt_hal_get_avrcp_transport_properties_proxy(bt_bdaddr_t *bd_addr);
441 char *_bt_hal_get_adapter_path(void);
442 gboolean _bt_hal_is_adapter_powered(gboolean *powered);
444 char *_bt_hal_get_device_object_path(char *address);
446 GDBusProxy *_bt_hal_get_hid_agent_proxy(void);
448 void _bt_hal_convert_device_path_to_address(const char *device_path, char *device_address);
449 void _bt_hal_convert_addr_string_to_type(unsigned char *addr, const char *address);
450 void _bt_hal_convert_addr_type_to_string(char *address, const unsigned char *addr);
451 void _bt_hal_convert_uuid_string_to_type(unsigned char *uuid, const char *device_uuid);
452 void _bt_hal_convert_uuid_type_to_string(char *str, const unsigned char *uuid);
454 int _bt_hal_connect_profile(char *address, char *uuid, void *cb, gpointer func_data);
455 int _bt_hal_disconnect_profile(char *address, char *uuid, void *cb, gpointer func_data);
456 int _bt_hal_register_profile(bt_hal_register_profile_info_t *info, gboolean use_default_rfcomm);
457 void _bt_hal_unregister_profile(char *path);
460 int _bt_hal_discover_services(char *address, char *uuid, void *cb, gpointer func_data);
461 int _bt_hal_cancel_discovers(char *address);
462 int _bt_hal_discover_service_uuids(char *address, char *remote_uuid);
464 int _bt_hal_register_new_gdbus_object(const char *path, bt_hal_new_connection_cb cb);
465 void _bt_hal_unregister_gdbus_object(int object_id);
467 char *_bt_hal_get_control_device_path(bt_bdaddr_t *bd_addr);
468 void _bt_hal_set_control_device_path(const char *path);
469 void _bt_hal_remove_control_device_path(const char *path);
472 int bt_hal_gatt_convert_prop2string(
473 bt_hal_gatt_characteristic_property_t properties,
474 char *char_properties[]);
476 int bt_hal_gatt_convert_perm2string(
477 bt_hal_gatt_permission_t properties,
478 char *char_properties[]);
480 gboolean _bt_hal_uuid_is_standard(bt_uuid_t *p_uuid);
482 gboolean _bt_hal_is_service_enabled(const char *uuid);
484 GVariant *_bt_hal_get_managed_objects(void);
486 char * _bt_hal_convert_disc_reason_to_string(int reason);
490 #endif /* __cplusplus */
491 #endif /* _BT_HAL_DBUS_COMMON_UTILS_H_ */