From: Mariem Cherif <mariem.che...@ardia.com.tn>

---
 plugins/gemalto.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/plugins/gemalto.c b/plugins/gemalto.c
index 16ca463..c7fb783 100644
--- a/plugins/gemalto.c
+++ b/plugins/gemalto.c
@@ -497,6 +497,36 @@ static void gemalto_set_online(struct ofono_modem *modem, 
ofono_bool_t online,
        g_free(cbd);
 }
 
+static void gemalto_ciev_notify(GAtResult *result, gpointer user_data)
+{
+       struct ofono_sim *sim = user_data;
+       const char *sim_status = "simstatus";
+       const char *ind_str;
+       int status;
+       GAtResultIter iter;
+
+       g_at_result_iter_init(&iter, result);
+
+       if (!g_at_result_iter_next(&iter, "+CIEV:"))
+               return;
+
+       if (!g_at_result_iter_next_unquoted_string(&iter, &ind_str))
+               return;
+
+       if (!g_str_equal(sim_status, ind_str))
+               return;
+
+       if (!g_at_result_iter_next_number(&iter, &status))
+               return;
+
+       DBG("sim status %d", status);
+       if (status == 0) {
+               ofono_sim_inserted_notify(sim, FALSE);
+       } else if(status == 1) {
+               ofono_sim_inserted_notify(sim, TRUE);
+       }
+}
+
 static void gemalto_pre_sim(struct ofono_modem *modem)
 {
        struct gemalto_data *data = ofono_modem_get_data(modem);
@@ -509,6 +539,13 @@ static void gemalto_pre_sim(struct ofono_modem *modem)
        sim = ofono_sim_create(modem, OFONO_VENDOR_CINTERION, "atmodem",
                                                data->app);
 
+       /* Register for specific sim status reports */
+       g_at_chat_register(data->app, "+CIEV:",
+                       gemalto_ciev_notify, FALSE, sim, NULL);
+
+       g_at_chat_send(data->app, "AT^SIND=\"simstatus\",1", none_prefix,
+                       NULL, NULL, NULL);
+
        if (sim && data->have_sim == TRUE)
                ofono_sim_inserted_notify(sim, TRUE);
 }
-- 
1.9.1

_______________________________________________
ofono mailing list
ofono@ofono.org
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to