From 3e0cabfa83f6d28021883de10e46326bfd8d1ffc Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 3 May 2011 17:11:05 +0200 Subject: [PATCH] adapter: CurrentTarget and Polling signal emission --- src/adapter.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 8c3a5ef..582211b 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -61,6 +61,27 @@ static void free_adapter(gpointer data) g_free(adapter); } +static void polling_changed(struct near_adapter *adapter) +{ + + near_dbus_property_changed_basic(adapter->path, + NFC_ADAPTER_INTERFACE, "Polling", + DBUS_TYPE_BOOLEAN, &adapter->polling); +} + +static void current_target_changed(struct near_adapter *adapter) +{ + const char *target_path; + + target_path = __near_target_get_path(adapter->target); + if (target_path == NULL) + return; + + near_dbus_property_changed_basic(adapter->path, + NFC_ADAPTER_INTERFACE, "CurrentTarget", + DBUS_TYPE_OBJECT_PATH, &target_path); +} + static void append_path(gpointer key, gpointer value, gpointer user_data) { struct near_adapter *adapter = value; @@ -188,6 +209,8 @@ static DBusMessage *start_poll(DBusConnection *conn, adapter->polling = TRUE; + polling_changed(adapter); + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } @@ -205,6 +228,8 @@ static DBusMessage *stop_poll(DBusConnection *conn, adapter->polling = FALSE; + polling_changed(adapter); + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } @@ -305,8 +330,13 @@ int __near_adapter_add_target(uint32_t idx, struct near_target *target) return -ENODEV; adapter->target = target; + adapter->polling = FALSE; + polling_changed(adapter); + + current_target_changed(adapter); + return 0; } @@ -322,6 +352,8 @@ int __near_adapter_remove_target(uint32_t idx) adapter->target = NULL; + current_target_changed(adapter); + return 0; } -- 2.7.4