#include <gio/gio.h>
#include "bluetooth-api.h"
+#include "bt-internal-types.h"
+#include "bt-service-agent.h"
#ifdef __cplusplus
extern "C" {
#define LOG_COLOR_BLUE "\033[36m"
#define LOG_COLOR_PURPLE "\033[35m"
+
#define BT_DBG(fmt, args...) \
- SLOGD(fmt, ##args)
+ ((TIZEN_PROFILE_TV) ? (LOGI(fmt, ##args)) : (SLOGD(fmt, ##args)))
#define BT_INFO(fmt, args...) \
- SLOGI(fmt, ##args)
+ ((TIZEN_PROFILE_TV) ? (LOGI(fmt, ##args)) : (SLOGI(fmt, ##args)))
#define BT_ERR(fmt, args...) \
- SLOGE(fmt, ##args)
+ ((TIZEN_PROFILE_TV) ? (LOGE(fmt, ##args)) : (SLOGE(fmt, ##args)))
#define BT_INFO_C(fmt, arg...) \
SLOGI_IF(TRUE, LOG_COLOR_GREEN" "fmt" "LOG_COLOR_RESET, ##arg)
SLOGI_IF(TRUE, LOG_COLOR_RED" "fmt" "LOG_COLOR_RESET, ##arg)
#define DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args)
+#define INFO_SECURE(fmt, args...) SECURE_SLOGI(fmt, ##args)
#define ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args)
#define ret_if(expr) \
#define BT_CHECK_PARAMETER(arg, func) \
do { \
- if (arg == NULL) \
- { \
+ if (arg == NULL) { \
BT_ERR("%s is NULL", #arg); \
func BLUETOOTH_ERROR_INVALID_PARAM; \
} \
#define BT_AGENT_NEW_LINE "\r\n"
#define BT_MAX_DBUS_TIMEOUT 45000
-#ifndef TIZEN_TV
-#define BT_ENABLE_TIMEOUT 20000 /* 20 seconds */
-#else
-#define BT_ENABLE_TIMEOUT 5000 /* 5 seconds */
-#endif
+#define BT_ENABLE_TIMEOUT ((TIZEN_PROFILE_TV) ? 5000 : 20000) /* 5(TV),20(others) seconds */
#define BT_DISCOVERY_FINISHED_DELAY 200
+#define BT_SESSION_BUS_GET_TIMEOUT 200 /* 200 ms */
+
#define MANAGER_EVENT_MATCH_RULE \
"type='signal'," \
"interface='%s'," \
"the reply timeout expired, or the network connection " \
"was broken."
+#define BT_DBUS_TIMEOUT_MESSAGE "Timeout was reached"
+
#define BT_BLUEZ_NAME "org.bluez"
+#define BT_IPSP_NAME "org.projectx.bt_ipsp"
#define BT_BLUEZ_PATH "/org/bluez"
#define BT_BLUEZ_HCI_PATH "/org/bluez/hci0"
#define BT_AGENT_NAME "org.bluez.frwk_agent"
#define BT_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager"
#define BT_ADAPTER_INTERFACE "org.bluez.Adapter1"
+#define BT_IPSP_INTERFACE "org.projectx.bt_ipsp"
#define BT_AGENT_INTERFACE "org.bluez.Agent1"
#define BT_AGENT_MANAGER_INTERFACE "org.bluez.AgentManager1"
#define BT_DEVICE_INTERFACE "org.bluez.Device1"
#define BT_OBEXD_MANAGER_INTERFACE "org.openobex.Manager"
#define BT_OBEXD_TRANSFER_INTERFACE "org.openobex.Transfer"
#define BT_A2DP_SOURCE_INTERFACE "org.bluez.AudioSource"
+#define BT_PROXIMITY_MONITOR_INTERFACE "org.bluez.ProximityMonitor1"
+#define BT_PROXIMITY_REPORTER_INTERFACE "org.bluez.ProximityReporter1"
+#define BT_TDS_PROVIDER_INTERFACE "org.bluez.TdsServiceProvider1"
#define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
-
#define BT_OBEX_SERVICE_NAME "org.bluez.obex"
#define BT_OBEX_CLIENT_PATH "/org/bluez/obex"
#define BT_OBEX_CLIENT_INTERFACE "org.bluez.obex.Client1"
-
+#define BT_OBEX_MESSAGE_INTERFACE "org.bluez.obex.MessageAccess1"
#define BT_OBEX_TRANSFER_INTERFACE "org.bluez.obex.Transfer1"
#define BT_OBEX_AGENT_INTERFACE "org.bluez.obex.Agent1"
#define BT_FREEDESKTOP_PATH "/org/freedesktop/DBus"
+#define BT_DUMP_SERVICE_NAME "org.tizen.system.dumpservice"
+#define BT_DUMP_SERVICE_PATH "/Org/Tizen/System/DumpService"
+#define BT_DUMP_SERVICE_INTERFACE BT_DUMP_SERVICE_NAME
+
+#define BT_DUMP_SERVICE_SIGNAL "Dump"
+#define BT_DUMP_SERVICE_START_SIGNAL "Start"
+#define BT_DUMP_SERVICE_FINISH_SIGNAL "Finish"
+
+
#define BT_INTERFACES_ADDED "InterfacesAdded"
#define BT_INTERFACES_REMOVED "InterfacesRemoved"
#define BT_NAME_OWNER_CHANGED "NameOwnerChanged"
#define BT_PROPERTIES_CHANGED "PropertiesChanged"
+#define BT_HID_SERVICE_NAME "org.bluez.hid_agent"
+#define BT_HID_AGENT_OBJECT_PATH "/org/bluez/hid_agent"
+#define BT_HID_SERVICE_INTERFACE "org.tizen.HidApp"
#define BT_SESSION_BASEPATH_SERVER "/org/bluez/obex/server"
/* UUID */
#define GENERIC_AUDIO_UUID "00001203-0000-1000-8000-00805f9b34fb"
-#define OBEX_OPP_UUID "00001105-0000-1000-8000-00805f9b34fb"
-
-#define HSP_HS_UUID "00001108-0000-1000-8000-00805f9b34fb"
-#define HSP_AG_UUID "00001112-0000-1000-8000-00805f9b34fb"
+#define AVRCP_TARGET_UUID "0000110c-0000-1000-8000-00805f9b34fb"
+#define AVRCP_REMOTE_UUID "0000110e-0000-1000-8000-00805f9b34fb"
+#define ADVANCED_AUDIO_UUID "0000110d-0000-1000-8000-00805f9b34fb"
+#define A2DP_SINK_UUID "0000110b-0000-1000-8000-00805f9b34fb"
+#define A2DP_SOURCE_UUID "0000110a-0000-1000-8000-00805f9b34fb"
#define HFP_HS_UUID "0000111e-0000-1000-8000-00805f9b34fb"
#define HFP_AG_UUID "0000111f-0000-1000-8000-00805f9b34fb"
-#define ADVANCED_AUDIO_UUID "0000110d-0000-1000-8000-00805f9b34fb"
-
-#define A2DP_SOURCE_UUID "0000110a-0000-1000-8000-00805f9b34fb"
-#define A2DP_SINK_UUID "0000110b-0000-1000-8000-00805f9b34fb"
-
-#define AVRCP_REMOTE_UUID "0000110e-0000-1000-8000-00805f9b34fb"
-#define AVRCP_TARGET_UUID "0000110c-0000-1000-8000-00805f9b34fb"
+#define HSP_HS_UUID "00001108-0000-1000-8000-00805f9b34fb"
+#define HSP_AG_UUID "00001112-0000-1000-8000-00805f9b34fb"
+#define RFCOMM_UUID_STR "00000003-0000-1000-8000-00805f9b34fb"
+#define HID_DEVICE_UUID "00001124-0000-1000-8000-00805f9b43bf"
#define HID_UUID "00001124-0000-1000-8000-00805f9b34fb"
+#define PANU_UUID "00001115-0000-1000-8000-00805f9b34fb"
+#define NAP_UUID "00001116-0000-1000-8000-00805f9b34fb"
#define PNP_UUID "00001200-0000-1000-8000-00805f9b34fb"
-#define RFCOMM_UUID_STR "00000003-0000-1000-8000-00805f9b34fb"
-#define PANU_UUID "00001115-0000-1000-8000-00805f9b34fb"
-#define NAP_UUID "00001116-0000-1000-8000-00805f9b34fb"
-#define OBEX_PSE_UUID "0000112f-0000-1000-8000-00805f9b34fb"
-#define GATT_UUID "00001801-0000-1000-8000-00805f9b34fb"
+#define PBAP_UUID "0000112f-0000-1000-8000-00805f9b34fb"
+
+#define OBEX_OPP_UUID "00001105-0000-1000-8000-00805f9b34fb"
+#define OBEX_MAP_UUID "00001134-0000-1000-8000-00805f9b34fb"
+#define OBEX_PSE_UUID "0000112f-0000-1000-8000-00805f9b34fb"
+
+#define GATT_UUID "00001801-0000-1000-8000-00805f9b34fb"
/* Privilege */
#define BT_PRIVILEGE_PUBLIC "http://tizen.org/privilege/bluetooth"
#define BT_LE_ADV_NONCONN_IND 0x03
#define BT_LE_ADV_SCAN_RSP 0x04
+#define HEADED_PLUGIN_FILEPATH "/usr/lib/bt-plugin-headed.so"
+#define HEADED_PLUGIN_FILEPATH64 "/usr/lib64/bt-plugin-headed.so"
+#define FILEPATH_ARCH_64 "/usr/lib64"
+
/* Profile states matched to btd_service_state_t of bluez service.h */
typedef enum {
BT_PROFILE_STATE_UNAVAILABLE,
BT_SCAN_RSP_INFO = 0x01,
} bt_le_device_info_type_t;
+/* Profile type matched to bluetooth_service_type_t of bluetooth-api.h */
typedef enum {
- BT_PROFILE_CONN_RFCOMM= 0x01,
- BT_PROFILE_CONN_A2DP= 0x02,
- BT_PROFILE_CONN_HSP= 0x04,
- BT_PROFILE_CONN_HID= 0x08,
- BT_PROFILE_CONN_NAP= 0x10,
- BT_PROFILE_CONN_HFG= 0x20,
- BT_PROFILE_CONN_GATT= 0x40,
+ BT_PROFILE_CONN_RFCOMM = 0x01,
+ BT_PROFILE_CONN_A2DP = 0x02,
+ BT_PROFILE_CONN_HSP = 0x04,
+ BT_PROFILE_CONN_HID = 0x08,
+ BT_PROFILE_CONN_NAP = 0x10,
+ BT_PROFILE_CONN_HFG = 0x20,
+ BT_PROFILE_CONN_GATT = 0x40,
BT_PROGILE_CONN_NAP = 0x80,
- BT_PROFILE_CONN_A2DP_SINK= 0x100,
- BT_PROFILE_CONN_ALL= 0xffffffff,
+ BT_PROFILE_CONN_A2DP_SINK = 0x100,
+ BT_PROFILE_CONN_PBAP = 0x200,
+ BT_PROFILE_CONN_ALL = 0xffffffff,
} bt_profile_type_t;
typedef struct {
gboolean paired;
bluetooth_connected_link_t connected;
gboolean trust;
+ gboolean is_alias_set;
char *manufacturer_data;
int manufacturer_data_len;
guchar addr_type;
char *address;
} bt_function_data_t;
-GDBusConnection *_bt_get_system_conn(void);
+struct bluetooth_headed_plugin_t {
+ int (*bt_launch_dpmpopup) (char *mode);
+ int (*bt_launch_system_popup)(bt_agent_event_type_t event_type,
+ const char *device_name,
+ const unsigned char *auth_info,
+ char *passkey,
+ const char *filename,
+ const char *agent_path);
+ void (*bt_destroy_popup_all)(void);
+ bool (*bt_launch_unable_to_pairing_syspopup)(int result);
+ bool (*bt_is_tethering_enabled)(void);
+ int (*bt_get_mime_type)(char *file_name, char **mime_type);
+};
+
+typedef struct {
+ gboolean plugin_headed_enabled;
+ void *handle_headed;
+ struct bluetooth_headed_plugin_t *headed_plugin;
+} bt_plugin_info_t;
-GDBusConnection *_bt_get_system_gconn(void);
+extern bt_plugin_info_t *headed_plugin_info;
-GDBusConnection *_bt_get_session_gconn(void);
+GDBusConnection *_bt_gdbus_get_system_gconn(void);
+
+GDBusConnection *_bt_gdbus_get_session_gconn(void);
void *_bt_get_net_conn(void);
GDBusProxy *_bt_get_adapter_proxy(void);
+GDBusProxy *_bt_get_ipsp_proxy(void);
+
GDBusProxy *_bt_get_adapter_properties_proxy(void);
char *_bt_get_device_object_path(char *address);
char *_bt_get_profile_uuid128(bt_profile_type_t profile_type);
-char *_bt_convert_error_to_string(int error);
+const char *_bt_convert_uuid_to_string(const char *uuid);
+
+const char *_bt_convert_error_to_string(int error);
+
+const char *_bt_convert_disc_reason_to_string(int reason);
+
+const char *_bt_convert_profile_state_to_string(bt_profile_state_t state);
-char * _bt_convert_disc_reason_to_string(int reason);
+const char *_bt_convert_service_function_to_string(int function);
void _bt_logging_connection(gboolean connect, int addr_type);
void _bt_deinit_proxys(void);
+GDBusProxy *_bt_gdbus_get_hid_agent_proxy(void);
+
void _bt_convert_device_path_to_address(const char *device_path,
char *device_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);
int _bt_eventsystem_set_value(const char *event, const char *key, const char *value);
+void __bt_get_auth_info(GVariant *reply, char *auth_info);
+
+int _bt_convert_gerror(GError *g_error);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */