+ _bt_convert_addr_type_to_string((char *)address, addr->addr);
+ _bt_convert_addr_string_to_secure_string(secure_addr, address);
+ BT_INFO("Address [%s]", secure_addr);
+ dev_info = __find_hid_info_with_address(address);
+ if (dev_info != NULL)
+ __free_hid_info(dev_info);
+
+ dev_info = (hid_connected_device_info_t *)
+ g_malloc0(sizeof(hid_connected_device_info_t));
+
+ dev_info->ctrl_fd = ctrl_fd;
+ dev_info->intr_fd = intr_fd;
+ dev_info->address = g_strdup(address);
+ dev_info->ctrl_data_io = g_io_channel_unix_new(dev_info->ctrl_fd);
+ dev_info->intr_data_io = g_io_channel_unix_new(dev_info->intr_fd);
+ g_io_channel_set_encoding(dev_info->ctrl_data_io, NULL, NULL);
+ g_io_channel_set_flags(dev_info->ctrl_data_io, G_IO_FLAG_NONBLOCK, NULL);
+ g_io_channel_set_close_on_unref(dev_info->ctrl_data_io, TRUE);
+ g_io_channel_set_encoding(dev_info->intr_data_io, NULL, NULL);
+ g_io_channel_set_flags(dev_info->intr_data_io, G_IO_FLAG_NONBLOCK, NULL);
+ g_io_channel_set_close_on_unref(dev_info->intr_data_io, TRUE);
+ dev_info->ctrl_data_id = g_io_add_watch(dev_info->ctrl_data_io,
+ G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+ __received_cb, dev_info);
+ dev_info->intr_data_id = g_io_add_watch(dev_info->intr_data_io,
+ G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+ __received_cb, dev_info);
+ device_list = g_slist_append(device_list, dev_info);
+
+ __hid_connected_cb(dev_info, BLUETOOTH_ERROR_NONE);