summaryrefslogtreecommitdiffstats
path: root/src/message-waiting.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-09-18 13:41:29 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-09-22 00:07:06 -0500
commit6914b1126997c1cde6876c644ed555251e9ad467 (patch)
tree3d679214163b6e1c5e0f19430bd5d18de80a4bd4 /src/message-waiting.c
parent84515b9d395fd4729d823441c354e1df6d6b7a08 (diff)
downloadofono-6914b1126997c1cde6876c644ed555251e9ad467.tar.bz2
Assume cbs is registered after sim ready
Diffstat (limited to 'src/message-waiting.c')
-rw-r--r--src/message-waiting.c56
1 files changed, 8 insertions, 48 deletions
diff --git a/src/message-waiting.c b/src/message-waiting.c
index 94a5b6c1..c69854ff 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);
}