The root cause seems to be a problem with the initialization sequence.
Some requests to RIL were getting the error RADIO_NOT_AVAILABLE, being
the reason that RIL_REQUEST_RADIO_POWER(1) had not been called yet. But,
that request was sent when ril_set_online() was called, thing that only
happened when the SIM card moved to state OFONO_SIM_STATE_READY (see
src/modem.c). For locked up SIMs, that was not happening.

This seems to be a flaw in our logic, as the set_online() function of
the modem driver is called when the modem is powered AND  the SIM is
ready. So I have made a call to ril_send_power() in
ril.c:sim_status_cb(), which callback calls ofono_modem_set_powered().
This solves this bug.

However, this raises a couple of things we should review:

1.- Probably we should not send RIL_REQUEST_RADIO_POWER(1) when the SIM
moves to OFONO_SIM_STATE_READY, as that has already been done.

2.- Maybe this is an opportunity for removing the SIM status request
that we do in ril.c, and replace it with a call to ril_send_power(). The
reply data is used only to set ril->have_sim, and maybe we can do that
later.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1245860

Title:
  [rilmodem] SimManager.CardIdentifier not always available

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ofono/+bug/1245860/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to