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); } }
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__); }