summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sim.c28
-rw-r--r--src/sim.h2
2 files changed, 30 insertions, 0 deletions
diff --git a/src/sim.c b/src/sim.c
index c3829dab..9f388dcd 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -49,6 +49,7 @@ struct sim_manager_data {
char *imsi;
GSList *own_numbers;
GSList *ready_notify;
+ gboolean ready;
int dcbyte;
@@ -819,9 +820,36 @@ void ofono_sim_ready_notify_unregister(struct ofono_modem *modem,
g_slist_remove(modem->sim_manager->ready_notify, cb);
}
+int ofono_sim_get_ready(struct ofono_modem *modem)
+{
+ if (modem->sim_manager == NULL)
+ return 0;
+
+ if (modem->sim_manager->ready == TRUE)
+ return 1;
+
return 0;
}
+void ofono_sim_set_ready(struct ofono_modem *modem)
+{
+ GSList *l;
+
+ if (modem->sim_manager == NULL)
+ return;
+
+ if (modem->sim_manager->ready == TRUE)
+ return;
+
+ modem->sim_manager->ready = TRUE;
+
+ for (l = modem->sim_manager->ready_notify; l; l = l->next) {
+ ofono_sim_ready_notify_cb_t cb = l->data;
+
+ cb(modem);
+ }
+}
+
int ofono_sim_manager_register(struct ofono_modem *modem,
struct ofono_sim_ops *ops)
{
diff --git a/src/sim.h b/src/sim.h
index 8f1707be..ec69070b 100644
--- a/src/sim.h
+++ b/src/sim.h
@@ -39,3 +39,5 @@ void ofono_sim_ready_notify_unregister(struct ofono_modem *modem,
const char *ofono_operator_name_sim_override(struct ofono_modem *modem,
const char *mcc,
const char *mnc);
+int ofono_sim_get_ready(struct ofono_modem *modem);
+void ofono_sim_set_ready(struct ofono_modem *modem);