summaryrefslogtreecommitdiffstats
path: root/src/sim.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2012-06-16 08:17:47 -0500
committerDenis Kenzior <denkenz@gmail.com>2012-06-16 09:50:05 -0500
commita8247d17afe3f86f36966e7e4ca48dcbad30dae8 (patch)
treee2be90dcff722a626f9b211047bbe52118fe93b1 /src/sim.c
parentbee063dd76ae15dc0f081904336a4d9a18f24bdb (diff)
downloadofono-a8247d17afe3f86f36966e7e4ca48dcbad30dae8.tar.bz2
sim: Revert adding special callback for EFmsisdn
This reverts commit c3124b66d903a43ce639e3de8e838ef39419fc4f.
Diffstat (limited to 'src/sim.c')
-rw-r--r--src/sim.c85
1 files changed, 30 insertions, 55 deletions
diff --git a/src/sim.c b/src/sim.c
index 3d4eece4..f02acedc 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -1126,53 +1126,6 @@ static gboolean numbers_list_equal(GSList *a, GSList *b)
return TRUE;
}
-static void sim_own_numbers_update_done(struct ofono_sim *sim)
-{
- /* All records retrieved */
- if (sim->new_numbers)
- sim->new_numbers = g_slist_reverse(sim->new_numbers);
-
- if (!numbers_list_equal(sim->new_numbers, sim->own_numbers)) {
- const char *path = __ofono_atom_get_path(sim->atom);
- char **own_numbers;
- DBusConnection *conn = ofono_dbus_get_connection();
-
- g_slist_foreach(sim->own_numbers, (GFunc) g_free, NULL);
- g_slist_free(sim->own_numbers);
- sim->own_numbers = sim->new_numbers;
-
- own_numbers = get_own_numbers(sim->own_numbers);
-
- ofono_dbus_signal_array_property_changed(conn, path,
- OFONO_SIM_MANAGER_INTERFACE,
- "SubscriberNumbers",
- DBUS_TYPE_STRING, &own_numbers);
-
- g_strfreev(own_numbers);
- } else {
- g_slist_foreach(sim->new_numbers, (GFunc) g_free, NULL);
- g_slist_free(sim->new_numbers);
- }
-
- sim->new_numbers = NULL;
-}
-
-static void sim_msisdn_cb(const struct ofono_error *error,
- const struct ofono_phone_number *ph, void *userdata)
-{
- struct ofono_sim *sim = userdata;
-
- if (error->type == OFONO_ERROR_TYPE_NO_ERROR) {
- struct ofono_phone_number *own;
-
- own = g_new(struct ofono_phone_number, 1);
- memcpy(own, ph, sizeof(struct ofono_phone_number));
- sim->new_numbers = g_slist_prepend(sim->new_numbers, own);
- }
-
- sim_own_numbers_update_done(sim);
-}
-
static void sim_msisdn_read_cb(int ok, int length, int record,
const unsigned char *data,
int record_length, void *userdata)
@@ -1181,13 +1134,8 @@ static void sim_msisdn_read_cb(int ok, int length, int record,
int total;
struct ofono_phone_number ph;
- if (!ok) {
- if (sim->driver->read_msisdn)
- sim->driver->read_msisdn(sim, sim_msisdn_cb, sim);
- else
- sim_own_numbers_update_done(sim);
- return;
- }
+ if (!ok)
+ goto check;
if (record_length < 14 || length < record_length)
return;
@@ -1208,7 +1156,34 @@ static void sim_msisdn_read_cb(int ok, int length, int record,
if (record != total)
return;
- sim_own_numbers_update_done(sim);
+check:
+ /* All records retrieved */
+ if (sim->new_numbers)
+ sim->new_numbers = g_slist_reverse(sim->new_numbers);
+
+ if (!numbers_list_equal(sim->new_numbers, sim->own_numbers)) {
+ const char *path = __ofono_atom_get_path(sim->atom);
+ char **own_numbers;
+ DBusConnection *conn = ofono_dbus_get_connection();
+
+ g_slist_foreach(sim->own_numbers, (GFunc) g_free, NULL);
+ g_slist_free(sim->own_numbers);
+ sim->own_numbers = sim->new_numbers;
+
+ own_numbers = get_own_numbers(sim->own_numbers);
+
+ ofono_dbus_signal_array_property_changed(conn, path,
+ OFONO_SIM_MANAGER_INTERFACE,
+ "SubscriberNumbers",
+ DBUS_TYPE_STRING, &own_numbers);
+
+ g_strfreev(own_numbers);
+ } else {
+ g_slist_foreach(sim->new_numbers, (GFunc) g_free, NULL);
+ g_slist_free(sim->new_numbers);
+ }
+
+ sim->new_numbers = NULL;
}
static gint service_number_compare(gconstpointer a, gconstpointer b)