X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-api%2Finclude%2Fbt-common.h;h=b4873d94f876a14d325c1de1ba0e073b234810cd;hb=1fa07edcd0e77a445700975773db3300f556caf5;hp=f62ada3c832d7d09cc79797215cd3e1c7c75111e;hpb=c944a9e0d3e63ce11f03d0ff5be084ddcf8b4ea4;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-api/include/bt-common.h b/bt-api/include/bt-common.h index f62ada3..b4873d9 100644 --- a/bt-api/include/bt-common.h +++ b/bt-api/include/bt-common.h @@ -1,13 +1,11 @@ /* - * bluetooth-frwk - * - * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -23,9 +21,9 @@ #include #include -#include -#include #include +#include +#include #include "bluetooth-api.h" @@ -34,16 +32,48 @@ extern "C" { #endif /* __cplusplus */ #undef LOG_TAG -#define LOG_TAG "BLUETOOTH_FRWK" +#define LOG_TAG "BLUETOOTH_FRWK_API" #ifndef BT_EXPORT_API #define BT_EXPORT_API __attribute__((visibility("default"))) #endif +#define LOG_COLOR_RESET "\033[0m" +#define LOG_COLOR_RED "\033[31m" +#define LOG_COLOR_YELLOW "\033[33m" +#define LOG_COLOR_GREEN "\033[32m" +#define LOG_COLOR_BLUE "\033[36m" +#define LOG_COLOR_PURPLE "\033[35m" + #define BT_DBG(fmt, args...) \ - SLOGD(fmt, ##args) + SLOGD(fmt, ##args) +#define BT_INFO(fmt, args...) \ + SLOGI(fmt, ##args) #define BT_ERR(fmt, args...) \ - SLOGE(fmt, ##args) + SLOGE(fmt, ##args) + +#define BT_DBG_UUID(uuids, len, i) \ + BT_DBG("***UUIDs***"); \ + for (i = 0; i < len; i++) { \ + BT_DBG("%s", uuids[i]); \ + } + +#define BT_INFO_C(fmt, arg...) \ + SLOGI_IF(TRUE, LOG_COLOR_GREEN" "fmt" "LOG_COLOR_RESET, ##arg) +#define BT_ERR_C(fmt, arg...) \ + SLOGI_IF(TRUE, LOG_COLOR_RED" "fmt" "LOG_COLOR_RESET, ##arg) + +#define DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args) +#define ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args) + +//#define FUNCTION_TRACE +#ifdef FUNCTION_TRACE +#define FN_START BT_DBG("[ENTER FUNC]") +#define FN_END BT_DBG("[EXIT FUNC]") +#else +#define FN_START +#define FN_END +#endif #define ret_if(expr) \ do { \ @@ -68,7 +98,7 @@ extern "C" { GArray *in_param4 = NULL; \ GArray *out_param = NULL; -#define BT_FREE_PARAMS(IP1,IP2,IP3,IP4,OP) \ +#define BT_FREE_PARAMS(IP1, IP2, IP3, IP4, OP) \ do { \ if (IP1) \ g_array_free(IP1, TRUE); \ @@ -82,19 +112,19 @@ extern "C" { g_array_free(OP, TRUE); \ } while (0) -#define BT_ALLOC_PARAMS(IP1,IP2,IP3,IP4,OP ) \ +#define BT_ALLOC_PARAMS(IP1, IP2, IP3, IP4, OP) \ do { \ - IP1 = g_array_new(FALSE, FALSE, sizeof(gchar)); \ - IP2 = g_array_new(FALSE, FALSE, sizeof(gchar)); \ - IP3 = g_array_new(FALSE, FALSE, sizeof(gchar)); \ - IP4 = g_array_new(FALSE, FALSE, sizeof(gchar)); \ + IP1 = g_array_new(TRUE, TRUE, sizeof(gchar)); \ + IP2 = g_array_new(TRUE, TRUE, sizeof(gchar)); \ + IP3 = g_array_new(TRUE, TRUE, sizeof(gchar)); \ + IP4 = g_array_new(TRUE, TRUE, sizeof(gchar)); \ } while (0) #define BT_INIT_AGENT_PARAMS() \ GArray *in_param = NULL; \ GArray *out_param = NULL; -#define BT_FREE_AGENT_PARAMS(IP,OP) \ +#define BT_FREE_AGENT_PARAMS(IP, OP) \ do { \ if (IP) \ g_array_free(IP, TRUE); \ @@ -102,43 +132,73 @@ extern "C" { g_array_free(OP, TRUE); \ } while (0) -#define BT_ALLOC_AGENT_PARAMS(IP,OP) \ +#define BT_ALLOC_AGENT_PARAMS(IP, OP) \ do { \ - IP = g_array_new(FALSE, FALSE, sizeof(gchar)); \ + IP = g_array_new(FALSE, FALSE, sizeof(gchar)); \ } while (0) #define BT_CHECK_PARAMETER(arg, func) \ do { \ - if (arg == NULL) \ - { \ - BT_ERR("INVALID PARAMETER"); \ + if (arg == NULL) { \ + BT_ERR("%s is NULL", #arg); \ func BLUETOOTH_ERROR_INVALID_PARAM; \ } \ } while (0) #define BT_CHECK_ENABLED(func) \ do { \ - if (bluetooth_check_adapter() == BLUETOOTH_ADAPTER_DISABLED) \ - { \ + if (bluetooth_check_adapter() == BLUETOOTH_ADAPTER_DISABLED) { \ + BT_ERR("BT BREDR is not enabled"); \ + func BLUETOOTH_ERROR_DEVICE_NOT_ENABLED; \ + } \ + } while (0) + +#define BT_CHECK_ENABLED_LE(func) \ + do { \ + if (bluetooth_check_adapter_le() == BLUETOOTH_ADAPTER_LE_DISABLED) { \ + BT_ERR("BT LE is not enabled"); \ + func BLUETOOTH_ERROR_DEVICE_NOT_ENABLED; \ + } \ + } while (0) + +#define BT_CHECK_ENABLED_ANY(func) \ + do { \ + if (bluetooth_check_adapter() == BLUETOOTH_ADAPTER_DISABLED && \ + bluetooth_check_adapter_le() == BLUETOOTH_ADAPTER_LE_DISABLED) { \ BT_ERR("BT is not enabled"); \ func BLUETOOTH_ERROR_DEVICE_NOT_ENABLED; \ } \ } while (0) +#define BT_CHECK_ENABLED_INTERNAL(func) \ + do { \ + if (_bt_check_enabled_internal() == FALSE) { \ + BT_ERR("BT BREDR is not enabled"); \ + func BLUETOOTH_ERROR_DEVICE_NOT_ENABLED; \ + } \ + } while (0) + #define BT_ADDRESS_LENGTH_MAX 6 #define BT_ADDRESS_STRING_SIZE 18 #define BT_ADAPTER_OBJECT_PATH_MAX 50 +#define BT_RFCOMM_BUFFER_LEN 1024 + +#define BT_ACCESS_DENIED_MSG "Rejected send message" #define BT_EVENT_FREEDESKTOP "org.freedesktop.DBus" #define BT_FREEDESKTOP_PATH "/org/freedesktop/DBus" +#define BT_EVENT_MANAGER "org.bluez.Manager" #define BT_MANAGER_PATH "/" + + #define BT_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager" #define BT_ADAPTER_INTERFACE "org.bluez.Adapter1" #define BT_DEVICE_INTERFACE "org.bluez.Device1" - #define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" -#define BT_BLUEZ_HCI_PATH "/org/bluez/hci0" + + +#define BT_SERIAL_INTERFACE "org.bluez.Serial" #define BT_BLUEZ_NAME "org.bluez" #define BT_DBUS_NAME "org.projectx.bt" @@ -146,30 +206,48 @@ extern "C" { #define BT_AGENT_NAME "org.bluez.frwk_agent" #define BT_AGENT_PATH "/org/bluez/agent/frwk_agent" + #define BT_AGENT_INTERFACE "org.bluez.Agent1" -#define BT_MAX_USER_INFO 5 +#define BT_ERROR_INTERNAL "InternalError" +#define BT_ERROR_NOT_AVAILABLE "NotAvailable" +#define BT_ERROR_NOT_CONNECTED "NotConnected" +#define BT_ERROR_NOT_CONNECTION_FAILED "ConnectionFailed" +#define BT_ERROR_BUSY "InProgress" +#define BT_ERROR_INVALID_PARAM "InvalidArguments" +#define BT_ERROR_ALREADY_EXIST "AlreadyExists" +#define BT_ERROR_DOES_NOT_EXIST "DoesNotExist" +#define BT_ERROR_ALREADY_CONNECTED "Already Connected" +#define BT_ERROR_NO_MEMORY "No memory" +#define BT_ERROR_NO_DATA "No data" +#define BT_ERROR_I_O_ERROR "I/O error" +#define BT_ERROR_OPERATION_NOT_AVAILABLE "Operation currently not available" +#define BT_ERROR_OPERATION_NOT_ALLOWED "Operation not allowed" +#define BT_ERROR_OPERATION_NOT_SUPPORTED "Operation not supported" +#define BT_ERROR_INVALID_FILE_DESCRIPTOR "Invalid File Descriptor" +#define BT_ERROR_ACCESS_DENIED "Rejected send message" + #define RFKILL_EVENT_SIZE 8 #define RFKILL_NODE "/dev/rfkill" typedef enum { - RFKILL_TYPE_ALL = 0, - RFKILL_TYPE_WLAN, - RFKILL_TYPE_BLUETOOTH, - RFKILL_TYPE_UWB, - RFKILL_TYPE_WIMAX, - RFKILL_TYPE_WWAN, - RFKILL_TYPE_GPS, - RFKILL_TYPE_FM, - NUM_RFKILL_TYPES, + RFKILL_TYPE_ALL = 0, + RFKILL_TYPE_WLAN, + RFKILL_TYPE_BLUETOOTH, + RFKILL_TYPE_UWB, + RFKILL_TYPE_WIMAX, + RFKILL_TYPE_WWAN, + RFKILL_TYPE_GPS, + RFKILL_TYPE_FM, + NUM_RFKILL_TYPES, } rfkill_type; typedef struct { - unsigned int idx; - unsigned char type; - unsigned char op; - unsigned char soft; - unsigned char hard; + unsigned int idx; + unsigned char type; + unsigned char op; + unsigned char soft; + unsigned char hard; } rfkill_event; typedef enum { @@ -177,6 +255,15 @@ typedef enum { BT_HID, BT_AUDIO, BT_AVRCP, + BT_HF, +#ifndef GATT_DIRECT + BT_GATT_SERVER, +#endif + +#ifdef TIZEN_GATT_CLIENT + BT_GATT_CLIENT, +#endif + BT_MAX_USER_INFO } bt_user_info_type_t; typedef struct { @@ -199,36 +286,135 @@ void _bt_input_event_cb(int event, int result, void *param, void _bt_headset_event_cb(int event, int result, void *param, void *callback, void *user_data); +void _bt_a2dp_source_event_cb(int event, int result, void *param, + void *callback, void *user_data); + +void _bt_hf_event_cb(int event, int result, void *param, + void *callback, void *user_data); + void _bt_avrcp_event_cb(int event, int result, void *param, void *callback, void *user_data); void _bt_opp_client_event_cb(int event, int result, void *param, void *callback, void *user_data); +void _bt_map_client_event_cb(int event, int result, void *param, + void *callback, void *user_data); + +#ifndef GATT_DIRECT +void _bt_gatt_server_event_cb(int event, int result, void *param, + void *callback, void *user_data); +#endif + +#ifdef TIZEN_GATT_CLIENT +void _bt_gatt_client_event_cb(int event, int result, void *param, + void *callback, void *user_data); +#endif + void _bt_divide_device_class(bluetooth_device_class_t *device_class, unsigned int cod); -void _bt_convert_addr_string_to_type(unsigned char *addr, - const char *address); +void _bt_convert_addr_string_to_type(unsigned char *addr, const char *address); + +void _bt_convert_addr_string_to_secure_string(char *addr, const char *address); + +void _bt_convert_addr_type_to_string(char *address, unsigned char *addr); -void _bt_convert_addr_type_to_string(char *address, - unsigned char *addr); +void _bt_convert_addr_type_to_secure_string(char *address, unsigned char *addr); + +const char *_bt_convert_error_to_string(int error); + +const char *_bt_convert_service_function_to_string(int function); int _bt_copy_utf8_string(char *dest, const char *src, unsigned int length); -int _bt_get_adapter_path(DBusGConnection *g_conn, char *path); +gboolean _bt_utf8_validate(char *name); + +void _bt_convert_uuid_type_to_string(char *str, const unsigned char *uuid); + +typedef struct { + char *obj_path; + char *uuid; + gboolean authentication; + gboolean authorization; + char *role; + + char *service; + +} bt_register_profile_info_t; + +int _bt_get_adapter_path(GDBusConnection *conn, char *path); +char *_bt_get_device_object_path(char *address); +void _bt_print_api_caller_name(void); +int _bt_connect_profile(char *address, char *uuid, void *cb, + gpointer func_data); +int _bt_disconnect_profile(char *address, char *uuid, void *cb, + gpointer func_data); +int _bt_disconnect_ext_profile(char *address, char *path); -gboolean _bt_get_adapter_power(DBusGConnection *conn); +int _bt_cancel_discovers(char *address); +int _bt_discover_services(char *address, char *uuid, void *cb, + gpointer func_data); +int _bt_discover_service_uuids(char *address, char *remote_uuid); +int _bt_get_cod_by_address(char *address, bluetooth_device_class_t *dev_class); + +void _bt_set_le_scan_status(gboolean mode); + +int _bt_register_profile(bt_register_profile_info_t *info, gboolean use_default_rfcomm); +int _bt_register_profile_platform(bt_register_profile_info_t *info, gboolean use_default_rfcomm); +int _bt_register_profile_ex(bt_register_profile_info_t *info, gboolean use_default_rfcomm, const char *name, const char *path); + +void _bt_unregister_profile(char *path); +int __rfcomm_assign_id(void); +void __rfcomm_delete_id(int id); +void _bt_unregister_gdbus(int object_id); +typedef int (*bt_new_connection_cb) (const char *path, int fd, + bluetooth_device_address_t *address); +int _bt_register_new_conn(const char *path, bt_new_connection_cb cb); +int _bt_register_new_conn_ex(const char *path, const char *bus_name, bt_new_connection_cb cb); +void _bt_swap_addr(unsigned char *dst, const unsigned char *src); + +int _bt_register_osp_server_in_agent(int type, char *uuid, char *path, int fd); +int _bt_unregister_osp_server_in_agent(int type, char *uuid); + +int _bt_check_privilege(int service_type, int service_function); + +GDBusConnection *_bt_get_system_shared_conn(void); +GDBusConnection *_bt_get_system_private_conn(void); + +GVariant *_bt_get_managed_objects(void); + +gboolean _bt_check_enabled_internal(void); + +void _bt_set_adapter_internal_status(gboolean enabled); + +void _bt_convert_device_path_to_addr_type(const char *device_path, + unsigned char *addr); + +void _bt_convert_device_path_to_address(const char *device_path, + char *device_address); + +#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT +void _bt_rfcomm_server_free_all(void); + +void _bt_rfcomm_server_disconnect_all(void); + +void _bt_rfcomm_client_disconnect_all(void); + +gboolean _check_uuid_path(char *path, char *uuid); +#endif -DBusGProxy *_bt_get_adapter_proxy(DBusGConnection *conn); +int _bt_hid_device_get_fd(const char *address, int *ctrl, int *intr); -void _bt_device_path_to_address(const char *device_path, char *device_address); +int _bt_hid_new_connection(bluetooth_device_address_t *addr, + int ctrl_fd, int intr_fd); -DBusGConnection *__bt_init_system_gconn(void); +void _bt_hid_free_hid_info(void); -DBusGConnection *_bt_get_system_gconn(void); +int _bt_get_error_value_from_message(const char *error_message); -DBusConnection *_bt_get_system_conn(void); +void _bt_hdp_app_remove_obj_info(unsigned int channe_id); +int _bt_hdp_app_acquire_fd(bt_hdp_connected_t *conn_info); #ifdef __cplusplus }