summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamrat Guha Niyogi <samrat.guha.niyogi@intel.com>2016-08-06 09:53:46 +0530
committerDenis Kenzior <denkenz@gmail.com>2016-08-06 10:50:27 -0500
commit162f6985e3e85881ed8ddcc118ae303b359b76d3 (patch)
tree0534ea97fb39ab9aad2d89c60bd072e981ec22d8
parentf4a90e5e0dc48c4a50f0246dc221be2d656aded2 (diff)
downloadofono-162f6985e3e85881ed8ddcc118ae303b359b76d3.tar.gz
sim: query facility during initialization in chain manner
query facility during initialization is modified from back to back invocation to chain manner to keep it inline with RIL design. All vendor RIL does not support back to back handling since RIL telephony framework sends the request synchronously.
-rw-r--r--src/sim.c42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/sim.c b/src/sim.c
index 6d9ed5d2..0bbd1ef4 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2468,31 +2468,48 @@ static void sim_set_locked_pin(struct ofono_sim *sim,
g_strfreev(locked_pins);
}
-static void sim_query_fac_imsilock_cb(const struct ofono_error *error,
+static void sim_query_fac_pinlock_cb(const struct ofono_error *error,
ofono_bool_t status, void *data)
{
+ struct ofono_sim *sim = data;
+
if (error->type != OFONO_ERROR_TYPE_NO_ERROR)
- return;
+ goto done;
- sim_set_locked_pin(data, OFONO_SIM_PASSWORD_PHSIM_PIN, status);
+ sim_set_locked_pin(data, OFONO_SIM_PASSWORD_SIM_PIN, status);
+
+done:
+ sim_initialize(sim);
}
static void sim_query_fac_networklock_cb(const struct ofono_error *error,
ofono_bool_t status, void *data)
{
+ struct ofono_sim *sim = data;
if (error->type != OFONO_ERROR_TYPE_NO_ERROR)
- return;
+ goto done;
sim_set_locked_pin(data, OFONO_SIM_PASSWORD_PHNET_PIN, status);
+
+done:
+ sim->driver->query_facility_lock(sim,
+ OFONO_SIM_PASSWORD_SIM_PIN,
+ sim_query_fac_pinlock_cb, sim);
}
-static void sim_query_fac_pinlock_cb(const struct ofono_error *error,
+static void sim_query_fac_imsilock_cb(const struct ofono_error *error,
ofono_bool_t status, void *data)
{
+ struct ofono_sim *sim = data;
if (error->type != OFONO_ERROR_TYPE_NO_ERROR)
- return;
+ goto done;
- sim_set_locked_pin(data, OFONO_SIM_PASSWORD_SIM_PIN, status);
+ sim_set_locked_pin(data, OFONO_SIM_PASSWORD_PHSIM_PIN, status);
+
+done:
+ sim->driver->query_facility_lock(sim,
+ OFONO_SIM_PASSWORD_PHNET_PIN,
+ sim_query_fac_networklock_cb, sim);
}
void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted)
@@ -2526,16 +2543,9 @@ void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted)
OFONO_SIM_PASSWORD_PHSIM_PIN,
sim_query_fac_imsilock_cb, sim);
- sim->driver->query_facility_lock(sim,
- OFONO_SIM_PASSWORD_PHNET_PIN,
- sim_query_fac_networklock_cb, sim);
-
- sim->driver->query_facility_lock(sim,
- OFONO_SIM_PASSWORD_SIM_PIN,
- sim_query_fac_pinlock_cb, sim);
+ } else {
+ sim_initialize(sim);
}
-
- sim_initialize(sim);
} else {
sim->pin_type = OFONO_SIM_PASSWORD_NONE;