gboolean fail = false;
bt_req_info_t *cb_data = user_data;
- bluetooth_event_param_t bt_event;
+ bluetooth_event_param_t bt_event;
GArray *out_param1 = NULL;
GUnixFDList *out_fd_list = NULL;
+ bt_l2cap_user_info_t *l2cap_user_info = NULL;
BT_DBG("+");
+ if (cb_data)
+ l2cap_user_info = (bt_l2cap_user_info_t *)cb_data->user_data;
+
+ if (l2cap_user_info)
+ cb_data->user_data = (void *)l2cap_user_info->user_data;
+
_bt_get_fd_list_info(proxy, res, user_data, &bt_event, &out_param1,
&event_type, &out_fd_list, &result, &fail);
- if (fail)
+ if (fail) {
+ BT_INFO("Connection failed due to error: %d", result);
+ bluetooth_l2cap_le_connection_t *conn_info;
+
+ conn_info = g_malloc0(sizeof(bluetooth_l2cap_le_connection_t));
+ memset(conn_info, 0x00, sizeof(bluetooth_l2cap_le_connection_t));
+
+ conn_info->psm = l2cap_user_info->psm;
+ memcpy(&conn_info->device_addr, &l2cap_user_info->device_addr,
+ sizeof(bluetooth_device_address_t));
+
+ bt_event.param_data = (void *)conn_info;
goto failed;
+ }
if (!cb_data)
goto done;
if (out_param1)
g_array_free(out_param1, TRUE);
+ g_free(l2cap_user_info);
g_free(cb_data);
BT_DBG("-");
}
int result;
bt_user_info_t *user_info;
int t_psm;
+ bt_l2cap_user_info_t *l2cap_user_info;
BT_CHECK_PARAMETER(remote_bt_address, return);
BT_CHECK_ENABLED_LE(return);
BT_ERR("Don't have a privilege to use this API");
}
+ l2cap_user_info = g_malloc0(sizeof(bt_l2cap_user_info_t));
+ l2cap_user_info->psm = psm;
+ l2cap_user_info->user_data = user_info->user_data;
+ memcpy(&l2cap_user_info->device_addr, remote_bt_address,
+ sizeof(bluetooth_device_address_t));
+
BT_INIT_PARAMS();
BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
BT_L2CAP_LE_CLIENT_CONNECT,
in_param1, in_param2,
in_param3, in_param4,
- user_info->cb, user_info->user_data,
+ user_info->cb, (void *)l2cap_user_info,
NULL, (GAsyncReadyCallback)__async_req_cb_with_unix_fd_list);
BT_INFO("result: %x", result);