---
 src/emulator.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index ce3fabd..1d4fbc6 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -387,6 +387,34 @@ fail:
        }
 }
 
+static void ckpd_cb(GAtServer *server, GAtServerRequestType type,
+                       GAtResult *result, gpointer user_data)
+{
+       switch (type) {
+       case G_AT_SERVER_REQUEST_TYPE_SET:
+       {
+               GAtResultIter iter;
+               int key;
+               g_at_result_iter_init(&iter, result);
+               g_at_result_iter_next(&iter, "");
+
+               if (g_at_result_iter_next_number(&iter, &key) == FALSE)
+                       goto fail;
+
+               if (key != 200)
+                       goto fail;
+
+               g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+               break;
+       }
+
+       default:
+fail:
+               g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+               break;
+       }
+}
+
 static void emulator_add_indicator(struct ofono_emulator *em, const char* name,
                                        int min, int max, int dflt)
 {
@@ -462,6 +490,8 @@ void ofono_emulator_register(struct ofono_emulator *em, int 
fd)
                g_at_server_register(em->server, "+BRSF", brsf_cb, em, NULL);
                g_at_server_register(em->server, "+CIND", cind_cb, em, NULL);
                g_at_server_register(em->server, "+CMER", cmer_cb, em, NULL);
+       } else if (em->type == OFONO_EMULATOR_TYPE_HSP) {
+               g_at_server_register(em->server, "+CKPD", ckpd_cb, em, NULL);
        }
 
        __ofono_atom_register(em->atom, emulator_unregister);
-- 
1.7.1

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to