From 5522df64fac7b57d3d9db2272fc9be97c8815b94 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 16 Jun 2012 21:30:28 -0700 Subject: sim: Add special callback for reading MCC and MNC value --- src/sim.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/sim.c b/src/sim.c index 3d4eece4..afb94ff2 100644 --- a/src/sim.c +++ b/src/sim.c @@ -1721,6 +1721,20 @@ static void sim_cphs_information_read_cb(int ok, int length, int record, memcpy(sim->cphs_service_table, data + 1, 2); } +static void sim_mccmnc_cb(const struct ofono_error *error, + const char *mcc, const char *mnc, void *userdata) +{ + struct ofono_sim *sim = userdata; + + if (error->type != OFONO_ERROR_TYPE_NO_ERROR) + return; + + if (!mcc || !mnc) + return; + + sim->mnc_length = strlen(mnc); +} + static void sim_ad_read_cb(int ok, int length, int record, const unsigned char *data, int record_length, void *userdata) @@ -1728,8 +1742,11 @@ static void sim_ad_read_cb(int ok, int length, int record, struct ofono_sim *sim = userdata; int new_mnc_length; - if (!ok) + if (!ok) { + if (sim->driver->read_mccmnc) + sim->driver->read_mccmnc(sim, sim_mccmnc_cb, sim); return; + } if (length < 4) return; -- cgit v1.2.3