Enhance debug message
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / include / bt-common.h
index f62ada3..b4873d9 100644 (file)
@@ -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 <sys/types.h>
 #include <libintl.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus.h>
 #include <dlog.h>
+#include <glib.h>
+#include <gio/gio.h>
 
 #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
 }