From a8247d17afe3f86f36966e7e4ca48dcbad30dae8 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Sat, 16 Jun 2012 08:17:47 -0500 Subject: sim: Revert adding special callback for EFmsisdn This reverts commit c3124b66d903a43ce639e3de8e838ef39419fc4f. --- src/sim.c | 85 ++++++++++++++++++++++----------------------------------------- 1 file changed, 30 insertions(+), 55 deletions(-) (limited to 'src/sim.c') 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) -- cgit v1.2.3