Compare commits

...

2 Commits

Author SHA1 Message Date
Slava Monich
08bae57a2b Merge branch 'jb49714' into 'master'
Register settings atom as soon as we have IMSI

See merge request mer-core/ofono!262
2020-04-23 09:08:23 +00:00
Slava Monich
1915aeda76 [ril] Register settings atom as soon as we have IMSI. Fixes JB#49714
There's no need to wait for modem to get powered on. This is just a user
setting - if it can't be applied right away, it will be applied later at
appropriate time.
2020-04-23 04:20:28 +03:00

View File

@@ -218,31 +218,29 @@ static void ril_modem_schedule_online_check(struct ril_modem_data *md)
static void ril_modem_update_radio_settings(struct ril_modem_data *md) static void ril_modem_update_radio_settings(struct ril_modem_data *md)
{ {
struct ril_modem *m = &md->modem; struct ril_modem *m = &md->modem;
if (m->radio->state == RADIO_STATE_ON && md->watch->imsi) { struct ofono_radio_settings *rs = ril_modem_radio_settings(m);
if (md->watch->imsi) {
/* radio-settings.c assumes that IMSI is available */ /* radio-settings.c assumes that IMSI is available */
if (!ril_modem_radio_settings(m)) { if (!rs) {
DBG_(md, "initializing radio settings interface"); DBG_(md, "initializing radio settings interface");
ofono_radio_settings_create(m->ofono, 0, ofono_radio_settings_create(m->ofono, 0,
RILMODEM_DRIVER, md); RILMODEM_DRIVER, md);
} }
} else { } else if (rs) {
/* ofono core may remove radio settings atom internally */
struct ofono_radio_settings *rs = ril_modem_radio_settings(m);
if (rs) {
DBG_(md, "removing radio settings interface"); DBG_(md, "removing radio settings interface");
ofono_radio_settings_remove(rs); ofono_radio_settings_remove(rs);
} else { } else {
/* ofono core may remove radio settings atom internally */
DBG_(md, "radio settings interface is already gone"); DBG_(md, "radio settings interface is already gone");
} }
} }
}
static void ril_modem_radio_state_cb(struct ril_radio *radio, void *data) static void ril_modem_radio_state_cb(struct ril_radio *radio, void *data)
{ {
struct ril_modem_data *md = data; struct ril_modem_data *md = data;
GASSERT(md->modem.radio == radio); GASSERT(md->modem.radio == radio);
ril_modem_update_radio_settings(md);
ril_modem_update_online_state(md); ril_modem_update_online_state(md);
} }