summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-05-28 14:02:24 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2008-05-28 14:02:24 +0000
commit9b38501d3e5ea36518eb6cea253a7ad5603b934d (patch)
tree150b82201468e2b372984f2edeb9292b0c72339d
parenta1a1a2637ec9090c021dd83ed7707aabf5a8c0f4 (diff)
Introduce ReleaseMode to Adapter interface.
-rw-r--r--hcid/adapter.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index 9c70b0e9..00dbfee1 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -3795,6 +3795,27 @@ static DBusHandlerResult request_mode(DBusConnection *conn,
return DBUS_HANDLER_RESULT_HANDLED;
}
+static DBusHandlerResult release_mode(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct adapter *adapter = data;
+ DBusMessage *reply;
+ GSList *l;
+
+ l = g_slist_find_custom(adapter->sessions, msg,
+ (GCompareFunc) find_session);
+ if (!l)
+ return error_failed(conn, msg, "No Mode to release");
+
+ session_exit(dbus_message_get_sender(msg), l->data);
+
+ reply = dbus_message_new_method_return(msg);
+ if (!reply)
+ return DBUS_HANDLER_RESULT_NEED_MEMORY;
+
+ return send_message_and_unref(conn, reply);
+}
+
static DBusHandlerResult list_devices(DBusConnection *conn,
DBusMessage *msg, void *data)
{
@@ -4165,6 +4186,7 @@ static DBusMethodVTable adapter_methods[] = {
{ "GetProperties", get_properties, "", "a{sv}" },
{ "SetProperty", set_property, "sv", "" },
{ "RequestMode", request_mode, "s", "" },
+ { "ReleaseMode", release_mode, "s", "" },
{ "DiscoverDevices", adapter_discover_devices, "", "" },
{ "CancelDiscovery", adapter_cancel_discovery, "", "" },
{ "ListDevices", list_devices, "", "ao" },