Correctly handle modem insertions via the modem_added_cb
authorRusty Lynch <rusty.lynch@intel.com>
Thu, 13 Sep 2012 16:39:10 +0000 (09:39 -0700)
committerRusty Lynch <rusty.lynch@intel.com>
Thu, 13 Sep 2012 16:41:23 +0000 (09:41 -0700)
main.c

diff --git a/main.c b/main.c
index d8f8355..39bb795 100644 (file)
--- a/main.c
+++ b/main.c
@@ -64,6 +64,7 @@ static int callback_dialer(struct libwebsocket_context *context,
 
 void set_powered_cb(void *data, DBusMessage *reply, DBusError *error);
 static Eina_Bool power_on_modem(void *data);
+void setup_new_modem(DBusMessageIter entry);
 
 /*
  * Per instance data
@@ -637,18 +638,9 @@ void modem_added_cb(void *data, DBusMessage *msg)
 
 void modem_removed_cb(void *data, DBusMessage *msg)
 {
-    DBusMessageIter iter;
-    const char *path;
-
-    dbus_message_iter_init(msg, &iter);
-    dbus_message_iter_get_basic(&iter, &path);
-
-    json_t *object = json_object();
-    json_object_set(object, "type", json_string("ModemRemoved"));
-    json_object_set(object, "id", json_string(path));
-    char *dump = json_dumps(object, 0);
-    libwebsockets_broadcast(&protocols[PROTOCOL_DIALER], dump, strlen(dump));
-    free(dump);
+    DBusMessageIter entry;
+    dbus_message_iter_init(msg, &entry);
+    setup_new_modem(entry);
 }
 
 
@@ -702,23 +694,8 @@ set_powered_cb(void *data, DBusMessage *reply, DBusError *error)
     }
 }
 
-void
-get_modems_reply(void *data, DBusMessage *reply, DBusError *error)
+void setup_new_modem(DBusMessageIter entry)
 {
-    DBusMessageIter iter, entry;
-    if (dbus_error_is_set(error)) {
-        fprintf(stderr, "Error: %s - %s\n", error->name, error->message);
-        return;
-    }
-
-    dbus_message_iter_init(reply, &iter);
-    if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) {
-        fprintf(stderr, "Unexpeced signature from ofono GetModems call\n");
-        return;
-    }
-
-    dbus_message_iter_recurse(&iter, &entry);
-
     while (dbus_message_iter_get_arg_type(&entry) == DBUS_TYPE_STRUCT) {
         const char *path;
         DBusMessageIter item, properties;
@@ -791,6 +768,26 @@ get_modems_reply(void *data, DBusMessage *reply, DBusError *error)
     }
 }
 
+void
+get_modems_reply(void *data, DBusMessage *reply, DBusError *error)
+{
+    DBusMessageIter iter, entry;
+    if (dbus_error_is_set(error)) {
+        fprintf(stderr, "Error: %s - %s\n", error->name, error->message);
+        return;
+    }
+
+    dbus_message_iter_init(reply, &iter);
+    if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) {
+        fprintf(stderr, "Unexpeced signature from ofono GetModems call\n");
+        return;
+    }
+
+    dbus_message_iter_recurse(&iter, &entry);
+
+    setup_new_modem(entry);
+}
+
 static struct option options[] = {
     { "help",      no_argument,       NULL, 'h' },
     { "port",      required_argument, NULL, 'p' },