static void sim_watch(struct ofono_atom *atom, enum ofono_atom_watch_condition cond, void *data) { struct ofono_modem *modem = data; if (cond == OFONO_ATOM_WATCH_CONDITION_UNREGISTERED) { modem->sim_ready_watch = 0; return; } modem->sim = __ofono_atom_get_data(atom); modem->sim_ready_watch = ofono_sim_add_state_watch(modem->sim, sim_state_watch, modem, NULL); }
static void sim_watch(struct ofono_atom *atom, enum ofono_atom_watch_condition cond, void *data) { struct ofono_sim *sim = __ofono_atom_get_data(atom); struct ofono_modem *modem = data; int watch; if (cond == OFONO_ATOM_WATCH_CONDITION_UNREGISTERED) { sim_state_watch(OFONO_SIM_STATE_NOT_PRESENT, modem); sim_watch_remove(sim, g_hash_table_lookup(sim_hash, sim), NULL); g_hash_table_remove(sim_hash, sim); return; } watch = ofono_sim_add_state_watch(sim, sim_state_watch, modem, NULL); g_hash_table_insert(sim_hash, sim, GUINT_TO_POINTER(watch)); sim_state_watch(ofono_sim_get_state(sim), modem); }
static gboolean ril_sim_register(gpointer user) { struct ofono_sim *sim = user; struct sim_data *sd = ofono_sim_get_data(sim); DBG(""); ofono_sim_register(sim); if (sd->ril_state_watch != NULL && !ofono_sim_add_state_watch(sim, sd->ril_state_watch, sd->modem, NULL)) ofono_error("Error registering ril sim watch"); /* * We use g_idle_add here to make sure that the presence of the SIM * interface is signalled before signalling anything else from the said * interface, as ofono_sim_register also uses g_idle_add. */ g_idle_add(listen_and_get_sim_status, sim); return FALSE; }