Пример #1
0
void ril_gprs_set_ia_apn(struct ofono_gprs *gprs, const char *apn,
				enum ofono_gprs_proto proto, const char *user,
				const char *passwd, const char *mccmnc,
				ofono_gprs_cb_t cb, void *data)
{
	struct ril_gprs_data *gd = ofono_gprs_get_data(gprs);
	struct cb_data *cbd;
	struct parcel rilp;

	if (!ofono_modem_get_boolean(gd->modem, MODEM_PROP_LTE_CAPABLE)) {
		CALLBACK_WITH_SUCCESS(cb, data);
		return;
	}

	cbd = cb_data_new(cb, data, gprs);

	g_ril_request_set_initial_attach_apn(gd->ril, apn, proto, user, passwd,
						mccmnc, &rilp);

	if (g_ril_send(gd->ril, RIL_REQUEST_SET_INITIAL_ATTACH_APN,
			&rilp, set_ia_apn_cb, cbd, g_free) == 0) {
		ofono_error("%s: failure sending request", __func__);

		g_free(cbd);
		CALLBACK_WITH_FAILURE(cb, data);
	}
}
Пример #2
0
static void set_ia_apn(struct ofono_radio_settings *rs)
{
	char mccmnc[OFONO_MAX_MCC_LENGTH + OFONO_MAX_MNC_LENGTH + 1];
	struct radio_data *rd = ofono_radio_settings_get_data(rs);
	struct parcel rilp;
	struct ofono_gprs *gprs;
	const struct ofono_gprs_primary_context *ia_ctx;

	if ((rd->available_rats & OFONO_RADIO_ACCESS_MODE_LTE) == 0)
		return;

	gprs = __ofono_atom_find(OFONO_ATOM_TYPE_GPRS, rd->modem);
	if (gprs == NULL)
		return;

	/* Ask for APN data */
	ia_ctx = ofono_gprs_get_ia_apn(gprs, mccmnc);
	if (ia_ctx == NULL)
		return;

	g_ril_request_set_initial_attach_apn(rd->ril, ia_ctx->apn,
						ia_ctx->proto, ia_ctx->username,
						ia_ctx->password, mccmnc,
						&rilp);

	if (g_ril_send(rd->ril, RIL_REQUEST_SET_INITIAL_ATTACH_APN,
			&rilp, set_ia_apn_cb, rs, NULL) == 0)
		ofono_error("%s: failure sending request", __func__);
}