static void search_cb(sdp_list_t *recs, int err, gpointer user_data) { DBG(""); struct conn_mcl_data *conn_data = user_data; GError *gerr = NULL; bdaddr_t dst; uint16_t ccpsm; if (!conn_data->dev->mcap_adapter->mi) { g_set_error(&gerr, MCAP_ERROR, MCAP_CONNECTION_ERROR, "Mcap instance released"); goto fail; } if (err || !recs) { g_set_error(&gerr, MCAP_ERROR, MCAP_CONNECTION_ERROR, "Error getting remote SDP records"); goto fail; } if (!get_ccpsm(recs, &ccpsm)) { g_set_error(&gerr, MCAP_ERROR, MCAP_CONNECTION_ERROR, "Can't get remote PSM for control channel"); goto fail; } conn_data = con_mcl_data_ref(conn_data); device_get_address(conn_data->dev->dev, &dst,NULL); if (!mcap_create_mcl(conn_data->dev->mcap_adapter->mi, &dst, ccpsm, create_mcl_cb, conn_data, destroy_con_mcl_data, &gerr)) { con_mcl_data_unref(conn_data); goto fail; } return; fail: conn_data->func(conn_data->data, gerr); g_error_free(gerr); }
static void destroy_con_mcl_data(gpointer data) { con_mcl_data_unref(data); }
void destroy_con_mcl_data(gpointer data) { DBG(""); con_mcl_data_unref(data); }