summaryrefslogtreecommitdiffstats
path: root/src/sim.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-06-16 21:30:28 -0700
committerMarcel Holtmann <marcel@holtmann.org>2012-06-16 21:30:28 -0700
commit5522df64fac7b57d3d9db2272fc9be97c8815b94 (patch)
tree40ac4fcae3b43af99290262490bc578eaa256be3 /src/sim.c
parentc3124b66d903a43ce639e3de8e838ef39419fc4f (diff)
downloadofono-5522df64fac7b57d3d9db2272fc9be97c8815b94.tar.bz2
sim: Add special callback for reading MCC and MNC value
Diffstat (limited to 'src/sim.c')
-rw-r--r--src/sim.c19
1 files changed, 18 insertions, 1 deletions
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;