summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-09-09 13:44:59 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-09-09 13:44:59 -0500
commitffcb821ccfed2433e078729c35d0075ced4b539e (patch)
treeeec9c7a098494dda90d585e3c75eb2310a17e994 /src
parent4a60d69e9868f7e0dc1b9056c4e62e4c8c8a3e61 (diff)
downloadofono-ffcb821ccfed2433e078729c35d0075ced4b539e.tar.bz2
manager: Add ModemAdded signal
Diffstat (limited to 'src')
-rw-r--r--src/manager.c1
-rw-r--r--src/modem.c29
2 files changed, 30 insertions, 0 deletions
diff --git a/src/manager.c b/src/manager.c
index c7d5d237..285844ab 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -34,6 +34,7 @@ static GDBusMethodTable manager_methods[] = {
};
static GDBusSignalTable manager_signals[] = {
+ { "ModemAdded", "oa{sv}" },
{ }
};
diff --git a/src/modem.c b/src/modem.c
index ca2b06ed..2c101786 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -1333,6 +1333,33 @@ static void sim_watch(struct ofono_atom *atom,
modem, NULL);
}
+static void emit_modem_added(struct ofono_modem *modem)
+{
+ DBusMessage *signal;
+ DBusMessageIter iter;
+ DBusMessageIter dict;
+ const char *path;
+
+ signal = dbus_message_new_signal(OFONO_MANAGER_PATH,
+ OFONO_MANAGER_INTERFACE,
+ "ModemAdded");
+
+ if (signal == NULL)
+ return;
+
+ dbus_message_iter_init_append(signal, &iter);
+
+ path = modem->path;
+ dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, &path);
+ dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
+ OFONO_PROPERTIES_ARRAY_SIGNATURE,
+ &dict);
+ __ofono_modem_append_properties(modem, &dict);
+ dbus_message_iter_close_container(&iter, &dict);
+
+ g_dbus_send_message(ofono_dbus_get_connection(), signal);
+}
+
int ofono_modem_register(struct ofono_modem *modem)
{
DBusConnection *conn = ofono_dbus_get_connection();
@@ -1381,6 +1408,8 @@ int ofono_modem_register(struct ofono_modem *modem)
modem->atom_watches = __ofono_watchlist_new(g_free);
+ emit_modem_added(modem);
+
modem->sim_watch = __ofono_modem_add_atom_watch(modem,
OFONO_ATOM_TYPE_SIM,
sim_watch, modem, NULL);