static void ril_clir_query_cb(struct ril_msg *message, gpointer user_data) { struct cb_data *cbd = user_data; struct ofono_call_settings *cs = cbd->user; struct settings_data *sd = ofono_call_settings_get_data(cs); ofono_call_settings_clir_cb_t cb = cbd->cb; struct reply_clir *rclir; if (message->error != RIL_E_SUCCESS) { ofono_error("%s: Reply failure: %s", __func__, ril_error_to_string(message->error)); goto error; } rclir = g_ril_reply_parse_get_clir(sd->ril, message); if (rclir == NULL) { ofono_error("%s: parse error", __func__); goto error; } CALLBACK_WITH_SUCCESS(cb, rclir->status, rclir->provisioned, cbd->data); g_ril_reply_free_get_clir(rclir); return; error: CALLBACK_WITH_FAILURE(cb, -1, -1, cbd->data); }
static void ril_call_settings_remove(struct ofono_call_settings *cs) { struct settings_data *sd = ofono_call_settings_get_data(cs); ofono_call_settings_set_data(cs, NULL); g_ril_unref(sd->ril); g_free(sd); }
static void ril_set_cb(struct ril_msg *message, gpointer user_data) { struct cb_data *cbd = user_data; struct ofono_call_settings *cs = cbd->user; struct settings_data *sd = ofono_call_settings_get_data(cs); ofono_call_settings_set_cb_t cb = cbd->cb; if (message->error == RIL_E_SUCCESS) { g_ril_print_response_no_args(sd->ril, message); CALLBACK_WITH_SUCCESS(cb, cbd->data); } else { CALLBACK_WITH_FAILURE(cb, cbd->data); } }
static void ril_clir_query(struct ofono_call_settings *cs, ofono_call_settings_clir_cb_t cb, void *data) { struct settings_data *sd = ofono_call_settings_get_data(cs); struct cb_data *cbd = cb_data_new(cb, data, cs); int ret; ret = g_ril_send(sd->ril, RIL_REQUEST_GET_CLIR, NULL, ril_clir_query_cb, cbd, g_free); if (ret <= 0) { g_free(cbd); CALLBACK_WITH_FAILURE(cb, -1, -1, data); } }
static void ril_clip_query(struct ofono_call_settings *cs, ofono_call_settings_status_cb_t cb, void *data) { struct settings_data *sd = ofono_call_settings_get_data(cs); struct cb_data *cbd = cb_data_new(cb, data, cs); int ret; ret = g_ril_send(sd->ril, RIL_REQUEST_QUERY_CLIP, NULL, ril_clip_query_cb, cbd, g_free); /* In case of error free cbd and return the cb with failure */ if (ret <= 0) { g_free(cbd); CALLBACK_WITH_FAILURE(cb, -1, data); } }
static void ril_cw_query_cb(struct ril_msg *message, gpointer user_data) { struct cb_data *cbd = user_data; struct ofono_call_settings *cs = cbd->user; struct settings_data *sd = ofono_call_settings_get_data(cs); ofono_call_settings_status_cb_t cb = cbd->cb; if (message->error == RIL_E_SUCCESS) { int res; res = g_ril_reply_parse_query_call_waiting(sd->ril, message); CALLBACK_WITH_SUCCESS(cb, res, cbd->data); } else { CALLBACK_WITH_FAILURE(cb, -1, cbd->data); } }
static void ril_clir_set(struct ofono_call_settings *cs, int mode, ofono_call_settings_set_cb_t cb, void *data) { struct settings_data *sd = ofono_call_settings_get_data(cs); struct cb_data *cbd = cb_data_new(cb, data, cs); struct parcel rilp; int ret; g_ril_request_set_clir(sd->ril, mode, &rilp); ret = g_ril_send(sd->ril, RIL_REQUEST_SET_CLIR, &rilp, ril_set_cb, cbd, g_free); if (ret <= 0) { g_free(cbd); CALLBACK_WITH_FAILURE(cb, data); } }
static void ril_cw_set(struct ofono_call_settings *cs, int mode, int cls, ofono_call_settings_set_cb_t cb, void *data) { struct settings_data *sd = ofono_call_settings_get_data(cs); struct cb_data *cbd = cb_data_new(cb, data, cs); int ret; struct parcel rilp; g_ril_request_set_call_waiting(sd->ril, mode, cls, &rilp); ret = g_ril_send(sd->ril, RIL_REQUEST_SET_CALL_WAITING, &rilp, ril_set_cb, cbd, g_free); /* In case of error free cbd and return the cb with failure */ if (ret <= 0) { g_free(cbd); CALLBACK_WITH_FAILURE(cb, data); } }
static inline struct ril_call_settings *ril_call_settings_get_data( struct ofono_call_settings *b) { return ofono_call_settings_get_data(b); }