From: Denis Kenzior Date: Fri, 18 Sep 2009 18:41:29 +0000 (-0500) Subject: Assume cbs is registered after sim ready X-Git-Tag: 0.5~30 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6914b1126997c1cde6876c644ed555251e9ad467;p=platform%2Fupstream%2Fofono.git Assume cbs is registered after sim ready --- diff --git a/src/message-waiting.c b/src/message-waiting.c index 94a5b6c..c69854f 100644 --- a/src/message-waiting.c +++ b/src/message-waiting.c @@ -54,8 +54,6 @@ struct ofono_message_waiting { gboolean mbdn_not_provided; struct ofono_phone_number mailbox_number[5]; struct ofono_sim *sim; - unsigned int sim_watch; - unsigned int sim_ready_watch; struct ofono_atom *atom; }; @@ -705,57 +703,17 @@ void __ofono_message_waiting_mwi(struct ofono_message_waiting *mw, return; } -static void message_waiting_sim_ready(void *userdata) -{ - struct ofono_message_waiting *mw = userdata; - - /* Loads MWI states and MBDN from SIM */ - ofono_sim_read(mw->sim, SIM_EFMWIS_FILEID, mw_mwis_read_cb, mw); - ofono_sim_read(mw->sim, SIM_EFMBI_FILEID, mw_mbi_read_cb, mw); -} - static void message_waiting_unregister(struct ofono_atom *atom) { - struct ofono_message_waiting *mw = __ofono_atom_get_data(atom); DBusConnection *conn = ofono_dbus_get_connection(); struct ofono_modem *modem = __ofono_atom_get_modem(atom); const char *path = __ofono_atom_get_path(atom); - if (mw->sim_watch) { - __ofono_modem_remove_atom_watch(modem, mw->sim_watch); - mw->sim_watch = 0; - } - - if (mw->sim_ready_watch) { - ofono_sim_remove_ready_watch(mw->sim, mw->sim_ready_watch); - mw->sim_ready_watch = 0; - mw->sim = NULL; - } - g_dbus_unregister_interface(conn, path, MESSAGE_WAITING_INTERFACE); ofono_modem_remove_interface(modem, MESSAGE_WAITING_INTERFACE); } -static void sim_watch(struct ofono_atom *atom, - enum ofono_atom_watch_condition cond, void *data) -{ - struct ofono_message_waiting *mw = data; - - if (cond == OFONO_ATOM_WATCH_CONDITION_UNREGISTERED) { - mw->sim = NULL; - mw->sim_ready_watch = 0; - return; - } - - mw->sim = __ofono_atom_get_data(atom); - mw->sim_ready_watch = ofono_sim_add_ready_watch(mw->sim, - message_waiting_sim_ready, mw, NULL); - - if (ofono_sim_get_ready(mw->sim)) - message_waiting_sim_ready(mw); -} - void ofono_message_waiting_register(struct ofono_message_waiting *mw) { DBusConnection *conn = ofono_dbus_get_connection(); @@ -775,14 +733,16 @@ void ofono_message_waiting_register(struct ofono_message_waiting *mw) ofono_modem_add_interface(modem, MESSAGE_WAITING_INTERFACE); - mw->sim_watch = __ofono_modem_add_atom_watch(modem, - OFONO_ATOM_TYPE_SIM, - sim_watch, mw, NULL); - sim_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_SIM); - if (sim_atom && __ofono_atom_get_registered(sim_atom)) - sim_watch(sim_atom, OFONO_ATOM_WATCH_CONDITION_REGISTERED, mw); + if (sim_atom) { + /* Assume that if sim atom exists, it is ready */ + mw->sim = __ofono_atom_get_data(sim_atom); + + /* Loads MWI states and MBDN from SIM */ + ofono_sim_read(mw->sim, SIM_EFMWIS_FILEID, mw_mwis_read_cb, mw); + ofono_sim_read(mw->sim, SIM_EFMBI_FILEID, mw_mbi_read_cb, mw); + } __ofono_atom_register(mw->atom, message_waiting_unregister); }