From eb31cd1e27f3526f356013c34d453aa28f5e01dd Mon Sep 17 00:00:00 2001 From: Rusty Lynch Date: Thu, 13 Sep 2012 09:39:10 -0700 Subject: [PATCH] Correctly handle modem insertions via the modem_added_cb --- main.c | 53 +++++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/main.c b/main.c index d8f8355..39bb795 100644 --- 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' }, -- 2.7.4