示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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);
	}
}
示例#4
0
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);
	}
}
示例#5
0
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);
	}
}
示例#6
0
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);
	}
}
示例#7
0
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);
	}
}
示例#8
0
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);
	}
}
示例#9
0
static inline struct ril_call_settings *ril_call_settings_get_data(
					struct ofono_call_settings *b)
{
	return ofono_call_settings_get_data(b);
}