static void ril_post_sim(struct ofono_modem *modem) { struct ril_data *rd = ofono_modem_get_data(modem); struct ofono_gprs *gprs; struct ofono_gprs_context *gc; if (ofono_modem_get_boolean(modem, MODEM_PROP_LTE_CAPABLE)) ofono_sms_create(modem, 0, "rilmodem", rd->ril); else ofono_sms_create(modem, OFONO_RIL_VENDOR_IMC_SOFIA3GR, "rilmodem", rd->ril); gprs = ofono_gprs_create(modem, 0, "rilmodem", rd->ril); gc = ofono_gprs_context_create(modem, 0, "rilmodem", rd->ril); if (gc) { ofono_gprs_context_set_type(gc, OFONO_GPRS_CONTEXT_TYPE_INTERNET); ofono_gprs_add_context(gprs, gc); } if (ofono_modem_get_boolean(modem, MODEM_PROP_LTE_CAPABLE)) ofono_lte_create(modem, "rilmodem", rd->ril); ofono_stk_create(modem, 0, "rilmodem", rd->ril); }
static void mtk_query_available_rats_cb(struct ril_msg *message, gpointer user_data) { struct cb_data *cbd = user_data; struct ofono_radio_settings *rs = cbd->user; struct radio_data *rd = ofono_radio_settings_get_data(rs); ofono_radio_settings_available_rats_query_cb_t cb = cbd->cb; unsigned int available_rats = OFONO_RADIO_ACCESS_MODE_GSM; int slot_3g, is_3g; if (message->error != RIL_E_SUCCESS) { ofono_error("%s: error %s", __func__, ril_error_to_string(message->error)); CALLBACK_WITH_FAILURE(cb, 0, cbd->data); return; } slot_3g = g_mtk_reply_parse_get_3g_capability(rd->ril, message); if (slot_3g < 0) { ofono_error("%s: parse error", __func__); CALLBACK_WITH_FAILURE(cb, 0, cbd->data); return; } is_3g = (g_ril_get_slot(rd->ril) == slot_3g); if (is_3g) { available_rats |= OFONO_RADIO_ACCESS_MODE_UMTS; if (ofono_modem_get_boolean(rd->modem, MODEM_PROP_LTE_CAPABLE)) available_rats |= OFONO_RADIO_ACCESS_MODE_LTE; } CALLBACK_WITH_SUCCESS(cb, available_rats, cbd->data); }
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 gboolean modem_is_always_online(struct ofono_modem *modem) { if (modem->driver->set_online == NULL) return TRUE; if (ofono_modem_get_boolean(modem, "AlwaysOnline") == TRUE) return TRUE; return FALSE; }
static void ril_post_online(struct ofono_modem *modem) { struct ril_data *rd = ofono_modem_get_data(modem); ofono_netreg_create(modem, 0, "rilmodem", rd->ril); if (ofono_modem_get_boolean(modem, MODEM_PROP_LTE_CAPABLE)) ofono_radio_settings_create(modem, 0, "rilmodem", rd->ril); else ofono_radio_settings_create(modem, OFONO_RIL_VENDOR_IMC_SOFIA3GR, "rilmodem", rd->ril); ofono_ussd_create(modem, 0, "rilmodem", rd->ril); ofono_netmon_create(modem, 0, "rilmodem", rd->ril); }