-static gboolean __bt_agent_system_popup_timer_cb(gpointer user_data)
-{
- int ret;
- static int retry_count;
- bundle *b = (bundle *)user_data;
- retv_if(user_data == NULL, FALSE);
-
- ++retry_count;
-#if defined(LIBNOTIFY_SUPPORT)
- ret = notify_launch(b);
-#elif defined(LIBNOTIFICATION_SUPPORT)
- ret = notification_launch(b);
-#else
- ret = syspopup_launch("bt-syspopup", b);
-#endif
- if (ret < 0) {
- BT_ERR("Sorry! Can't launch popup, ret=%d, Re-try[%d] time..",
- ret, retry_count);
- if (retry_count >= BT_AGENT_SYSPOPUP_MAX_ATTEMPT) {
- BT_ERR("Sorry!! Max retry %d reached", retry_count);
- bundle_free(b);
- retry_count = 0;
- return FALSE;
- }
- } else {
- BT_DBG("Hurray!! Finally Popup launched");
- retry_count = 0;
- bundle_free(b);
- }
-
- return (ret < 0) ? TRUE : FALSE;
-}
-
-#ifdef TIZEN_WEARABLE
-static void __bt_popup_event_filter(GDBusConnection *connection,
- const gchar *sender_name,
- const gchar *object_path,
- const gchar *interface_name,
- const gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
-{
- BT_DBG("Sender Name[%s] Object Path[%s] Interface[%s] Signal[%s]",
- sender_name, object_path, interface_name, signal_name);
-
- if (g_strcmp0(interface_name, "User.Bluetooth.syspopup") == 0 &&
- g_strcmp0(signal_name, "ResetResponse") == 0) {
- int response;
-
- g_variant_get(parameters, "(i)", &response);
- BT_DBG("response = %d", response);
- }
-}
-
-int __bt_service_subscribe_popup(GDBusConnection *conn,
- gboolean subscribe)
-{
- static guint subs_interface_added_id = 0;
-
- if (conn == NULL)
- return BLUETOOTH_ERROR_INVALID_PARAM;
-
- if (subscribe) {
- if (subs_interface_added_id == 0) {
- subs_interface_added_id = g_dbus_connection_signal_subscribe(conn,
- NULL, "User.Bluetooth.syspopup", "ResetResponse", NULL, NULL, 0,
- __bt_popup_event_filter, NULL, NULL);
- }
- } else {
- if (subs_interface_added_id > 0) {
- g_dbus_connection_signal_unsubscribe(conn,
- subs_interface_added_id);
- subs_interface_added_id = 0;
- }
- }
- return BLUETOOTH_ERROR_NONE;
-}
-
-static void __bt_register_popup_event_signal(void)
-{
- GDBusConnection *conn;
-
- BT_DBG("+\n");
-
- conn = _bt_get_system_gconn();
- if (conn == NULL)
- return;
-
- __bt_service_subscribe_popup(conn, TRUE);
-
- BT_DBG("-\n");
- return;
-}
-
-#if 0
-static gboolean __is_reset_required(const gchar *address)
-{
- GArray *device_list;
- uint32_t no_of_device;
- uint32_t i;
- bluetooth_device_info_t info;
- gboolean is_required = FALSE;
-
- device_list = g_array_new(FALSE, FALSE, sizeof(gchar));
- if (device_list == NULL) {
- BT_ERR("g_array_new is failed");
- return FALSE;
- }
-
- if (_bt_get_bonded_devices(&device_list) != BLUETOOTH_ERROR_NONE) {
- BT_ERR("_bt_get_bonded_devices is failed");
- g_array_free(device_list, TRUE);
- return FALSE;
- }
-
- no_of_device = device_list->len / sizeof(bluetooth_device_info_t);
- for (i = 0; i < no_of_device; i++) {
- char addr[BT_ADDRESS_STRING_SIZE] = { 0 };
-
- info = g_array_index(device_list, bluetooth_device_info_t, i);
-
- _bt_convert_addr_type_to_string(addr, info.device_address.addr);
- if (g_strcmp0(address, addr) == 0) {
- BT_DBG("This device is already in paired list");
- is_required = FALSE;
- break;
- }
-
- if (info.device_class.major_class != BLUETOOTH_DEVICE_MAJOR_CLASS_AUDIO) {
- is_required = TRUE;
- break;
- }
- }
- g_array_free(device_list, TRUE);
-
- return is_required;
-}
-#endif
-#endif
-
-int _bt_launch_system_popup(bt_agent_event_type_t event_type,
- const char *device_name,
- char *passkey,
- const char *filename,
- const char *agent_path)
-{
- int ret;
- bundle *b;
- char event_str[BT_MAX_EVENT_STR_LENGTH + 1];
-
- b = bundle_create();
- if (!b) {
- BT_ERR("Launching system popup failed");
- return -1;
- }
-
- bundle_add(b, "device-name", device_name);
- bundle_add(b, "passkey", passkey);
- bundle_add(b, "file", filename);
- bundle_add(b, "agent-path", agent_path);
-
- switch (event_type) {
- case BT_AGENT_EVENT_PIN_REQUEST:
- g_strlcpy(event_str, "pin-request", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_PASSKEY_CONFIRM_REQUEST:
- g_strlcpy(event_str, "passkey-confirm-request",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_PASSKEY_AUTO_ACCEPTED:
- g_strlcpy(event_str, "passkey-auto-accepted",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_PASSKEY_REQUEST:
- g_strlcpy(event_str, "passkey-request", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_PASSKEY_DISPLAY_REQUEST:
- g_strlcpy(event_str, "passkey-display-request",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_AUTHORIZE_REQUEST:
- g_strlcpy(event_str, "authorize-request",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_CONFIRM_MODE_REQUEST:
- g_strlcpy(event_str, "confirm-mode-request",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_FILE_RECEIVED:
- g_strlcpy(event_str, "file-received", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_KEYBOARD_PASSKEY_REQUEST:
- g_strlcpy(event_str, "keyboard-passkey-request",
- sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_TERMINATE:
- g_strlcpy(event_str, "terminate", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_EXCHANGE_REQUEST:
- g_strlcpy(event_str, "exchange-request", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_PBAP_REQUEST:
- g_strlcpy(event_str, "phonebook-request", sizeof(event_str));
- break;
-
- case BT_AGENT_EVENT_MAP_REQUEST:
- g_strlcpy(event_str, "message-request", sizeof(event_str));
- break;
-
-#ifdef TIZEN_WEARABLE
- case BT_AGENT_EVENT_SYSTEM_RESET_REQUEST:
- __bt_register_popup_event_signal();
- g_strlcpy(event_str, "system-reset-request", sizeof(event_str));
- break;
-#endif
-
- case BT_AGENT_EVENT_LEGACY_PAIR_FAILED_FROM_REMOTE:
- g_strlcpy(event_str, "remote-legacy-pair-failed", sizeof(event_str));
- break;
-
- default:
- BT_ERR("Invalid event type");
- bundle_free(b);
- return -1;
-
- }
-
- bundle_add(b, "event-type", event_str);
-
-#if !defined(LIBNOTIFY_SUPPORT) && !defined(LIBNOTIFICATION_SUPPORT)
- ret = syspopup_launch("bt-syspopup", b);
-#endif
- if (0 > ret) {
- BT_ERR("Popup launch failed...retry %d", ret);
-
- g_timeout_add(BT_AGENT_SYSPOPUP_TIMEOUT_FOR_MULTIPLE_POPUPS,
- (GSourceFunc)__bt_agent_system_popup_timer_cb, b);
- } else {
- bundle_free(b);
- }
-
- BT_INFO("_bt_agent_launch_system_popup");
- return 0;
-}
-