summary refs log tree commit diff
path: root/src/bluez-manager/nm-bluez4-adapter.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2014-07-06 02:16:10 +0200
committerMichael Biebl <biebl@debian.org>2014-07-06 02:16:10 +0200
commit33491bc4279481db8ae47213e34a6d695a0e8830 (patch)
tree097d2b0fdff3fae6885381ae5e57a182cd8cbbba /src/bluez-manager/nm-bluez4-adapter.c
parent59c3714a494c3b3765657c0551ad82842d98a7d2 (diff)
Imported Upstream version 0.9.10.0 upstream/0.9.10.0
Diffstat (limited to 'src/bluez-manager/nm-bluez4-adapter.c')
-rw-r--r--src/bluez-manager/nm-bluez4-adapter.c397
1 files changed, 0 insertions, 397 deletions
diff --git a/src/bluez-manager/nm-bluez4-adapter.c b/src/bluez-manager/nm-bluez4-adapter.c
deleted file mode 100644
index 817df73d..00000000
--- a/src/bluez-manager/nm-bluez4-adapter.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
-/* NetworkManager -- Network link manager
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Copyright (C) 2009 - 2012 Red Hat, Inc.
- */
-
-#include <glib.h>
-#include <string.h>
-
-#include "NetworkManager.h"
-#include "nm-dbus-manager.h"
-#include "nm-bluez4-adapter.h"
-#include "nm-bluez-device.h"
-#include "nm-bluez-common.h"
-#include "nm-dbus-glib-types.h"
-#include "nm-logging.h"
-
-
-G_DEFINE_TYPE (NMBluezAdapter, nm_bluez_adapter, G_TYPE_OBJECT)
-
-#define NM_BLUEZ_ADAPTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ_ADAPTER, NMBluezAdapterPrivate))
-
-typedef struct {
-	char *path;
-	DBusGProxy *proxy;
-	gboolean initialized;
-
-	char *address;
-	GHashTable *devices;
-
-	/* Cached for devices */
-	NMConnectionProvider *provider;
-} NMBluezAdapterPrivate;
-
-
-enum {
-	PROP_0,
-	PROP_PATH,
-	PROP_ADDRESS,
-
-	LAST_PROP
-};
-
-/* Signals */
-enum {
-	INITIALIZED,
-	DEVICE_ADDED,
-	DEVICE_REMOVED,
-	LAST_SIGNAL
-};
-static guint signals[LAST_SIGNAL] = { 0 };
-
-const char *
-nm_bluez_adapter_get_path (NMBluezAdapter *self)
-{
-	g_return_val_if_fail (NM_IS_BLUEZ_ADAPTER (self), NULL);
-
-	return NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->path;
-}
-
-const char *
-nm_bluez_adapter_get_address (NMBluezAdapter *self)
-{
-	g_return_val_if_fail (NM_IS_BLUEZ_ADAPTER (self), NULL);
-
-	return NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->address;
-}
-
-gboolean
-nm_bluez_adapter_get_initialized (NMBluezAdapter *self)
-{
-	g_return_val_if_fail (NM_IS_BLUEZ_ADAPTER (self), FALSE);
-
-	return NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->initialized;
-}
-
-GSList *
-nm_bluez_adapter_get_devices (NMBluezAdapter *self)
-{
-	GSList *devices = NULL;
-	GHashTableIter iter;
-	NMBluezDevice *device;
-
-	g_hash_table_iter_init (&iter, NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->devices);
-	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device)) {
-		if (nm_bluez_device_get_usable (device))
-			devices = g_slist_append (devices, device);
-	}
-	return devices;
-}
-
-static void
-device_usable (NMBluezDevice *device, GParamSpec *pspec, gpointer user_data)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	gboolean usable = nm_bluez_device_get_usable (device);
-
-	nm_log_dbg (LOGD_BT, "(%s): bluez device now %s",
-	            nm_bluez_device_get_path (device),
-	            usable ? "usable" : "unusable");
-
-	if (usable) {
-		nm_log_dbg (LOGD_BT, "(%s): bluez device address %s",
-				    nm_bluez_device_get_path (device),
-				    nm_bluez_device_get_address (device));
-		g_signal_emit (self, signals[DEVICE_ADDED], 0, device);
-	} else
-		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
-}
-
-static void
-device_initialized (NMBluezDevice *device, gboolean success, gpointer user_data)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-
-	nm_log_dbg (LOGD_BT, "(%s): bluez device %s",
-	            nm_bluez_device_get_path (device),
-	            success ? "initialized" : "failed to initialize");
-	if (!success)
-		g_hash_table_remove (priv->devices, nm_bluez_device_get_path (device));
-}
-
-static void
-device_created (DBusGProxy *proxy, const char *path, gpointer user_data)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-	NMBluezDevice *device;
-
-	device = nm_bluez_device_new (path, priv->provider);
-	g_signal_connect (device, "initialized", G_CALLBACK (device_initialized), self);
-	g_signal_connect (device, "notify::usable", G_CALLBACK (device_usable), self);
-	g_hash_table_insert (priv->devices, (gpointer) nm_bluez_device_get_path (device), device);
-
-	nm_log_dbg (LOGD_BT, "(%s): new bluez device found", path);
-}
-
-static void
-device_removed (DBusGProxy *proxy, const char *path, gpointer user_data)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-	NMBluezDevice *device;
-
-	nm_log_dbg (LOGD_BT, "(%s): bluez device removed", path);
-
-	device = g_hash_table_lookup (priv->devices, path);
-	if (device) {
-		g_object_ref (device);
-		g_hash_table_remove (priv->devices, nm_bluez_device_get_path (device));
-		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
-		g_object_unref (device);
-	}
-}
-
-
-static void
-get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-	GHashTable *properties = NULL;
-	GError *err = NULL;
-	GValue *value;
-	GPtrArray *devices;
-	int i;
-
-	if (!dbus_g_proxy_end_call (proxy, call, &err,
-	                            DBUS_TYPE_G_MAP_OF_VARIANT, &properties,
-	                            G_TYPE_INVALID)) {
-		nm_log_warn (LOGD_BT, "bluez error getting adapter properties: %s",
-		             err && err->message ? err->message : "(unknown)");
-		g_error_free (err);
-		goto done;
-	}
-
-	value = g_hash_table_lookup (properties, "Address");
-	priv->address = value ? g_value_dup_string (value) : NULL;
-
-	value = g_hash_table_lookup (properties, "Devices");
-	devices = value ? g_value_get_boxed (value) : NULL;
-
-	for (i = 0; devices && i < devices->len; i++)
- 		device_created (priv->proxy, g_ptr_array_index (devices, i), self);
-
-	g_hash_table_unref (properties);
-
-	priv->initialized = TRUE;
-
-done:
-	g_signal_emit (self, signals[INITIALIZED], 0, priv->initialized);
-}
-
-static void
-query_properties (NMBluezAdapter *self)
-{
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-	DBusGProxyCall *call;
-
-	call = dbus_g_proxy_begin_call (priv->proxy, "GetProperties",
-	                                get_properties_cb,
-	                                self,
-	                                NULL, G_TYPE_INVALID);
-	if (!call) {
-		nm_log_warn (LOGD_BT, "failed to request Bluetooth adapter properties for %s.",
-		             priv->path);
-	}
-}
-
-/***********************************************************/
-
-NMBluezAdapter *
-nm_bluez_adapter_new (const char *path, NMConnectionProvider *provider)
-{
-	NMBluezAdapter *self;
-	NMBluezAdapterPrivate *priv;
-	NMDBusManager *dbus_mgr;
-	DBusGConnection *connection;
-
-	self = (NMBluezAdapter *) g_object_new (NM_TYPE_BLUEZ_ADAPTER,
-	                                        NM_BLUEZ_ADAPTER_PATH, path,
-	                                        NULL);
-	if (!self)
-		return NULL;
-
-	priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-
-	priv->provider = provider;
-
-	dbus_mgr = nm_dbus_manager_get ();
-	connection = nm_dbus_manager_get_connection (dbus_mgr);
-
-	priv->proxy = dbus_g_proxy_new_for_name (connection,
-	                                         BLUEZ_SERVICE,
-	                                         priv->path,
-	                                         BLUEZ_ADAPTER_INTERFACE);
-	g_object_unref (dbus_mgr);
-
-	dbus_g_proxy_add_signal (priv->proxy, "DeviceCreated",
-	                         DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-	dbus_g_proxy_connect_signal (priv->proxy, "DeviceCreated",
-	                             G_CALLBACK (device_created), self, NULL);
-
-	dbus_g_proxy_add_signal (priv->proxy, "DeviceRemoved",
-	                         DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-	dbus_g_proxy_connect_signal (priv->proxy, "DeviceRemoved",
-	                             G_CALLBACK (device_removed), self, NULL);
-
-	query_properties (self);
-	return self;
-}
-
-static void
-nm_bluez_adapter_init (NMBluezAdapter *self)
-{
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-
-	priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal,
-	                                       NULL, g_object_unref);
-}
-
-static void
-dispose (GObject *object)
-{
-	NMBluezAdapter *self = NM_BLUEZ_ADAPTER (object);
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (self);
-	GHashTableIter iter;
-	NMBluezDevice *device;
-
-	g_hash_table_iter_init (&iter, priv->devices);
-	while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device))
-		g_signal_emit (self, signals[DEVICE_REMOVED], 0, device);
-	g_hash_table_remove_all (priv->devices);
-
-	G_OBJECT_CLASS (nm_bluez_adapter_parent_class)->dispose (object);
-}
-
-static void
-finalize (GObject *object)
-{
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (object);
-
-	g_hash_table_destroy (priv->devices);
-	g_free (priv->address);
-	g_free (priv->path);
-	g_object_unref (priv->proxy);
-
-	G_OBJECT_CLASS (nm_bluez_adapter_parent_class)->finalize (object);
-}
-
-static void
-get_property (GObject *object, guint prop_id,
-              GValue *value, GParamSpec *pspec)
-{
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (object);
-
-	switch (prop_id) {
-	case PROP_PATH:
-		g_value_set_string (value, priv->path);
-		break;
-	case PROP_ADDRESS:
-		g_value_set_string (value, priv->address);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-set_property (GObject *object, guint prop_id,
-              const GValue *value, GParamSpec *pspec)
-{
-	NMBluezAdapterPrivate *priv = NM_BLUEZ_ADAPTER_GET_PRIVATE (object);
-
-	switch (prop_id) {
-	case PROP_PATH:
-		/* construct only */
-		priv->path = g_value_dup_string (value);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-nm_bluez_adapter_class_init (NMBluezAdapterClass *config_class)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (config_class);
-
-	g_type_class_add_private (config_class, sizeof (NMBluezAdapterPrivate));
-
-	/* virtual methods */
-	object_class->get_property = get_property;
-	object_class->set_property = set_property;
-	object_class->dispose = dispose;
-	object_class->finalize = finalize;
-
-	/* Properties */
-	g_object_class_install_property
-		(object_class, PROP_PATH,
-		 g_param_spec_string (NM_BLUEZ_ADAPTER_PATH,
-		                      "DBus Path",
-		                      "DBus Path",
-		                      NULL,
-		                      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
-	g_object_class_install_property
-		(object_class, PROP_ADDRESS,
-		 g_param_spec_string (NM_BLUEZ_ADAPTER_ADDRESS,
-		                      "Address",
-		                      "Address",
-		                      NULL,
-		                      G_PARAM_READABLE));
-
-	/* Signals */
-	signals[INITIALIZED] = g_signal_new ("initialized",
-	                                     G_OBJECT_CLASS_TYPE (object_class),
-	                                     G_SIGNAL_RUN_LAST,
-	                                     G_STRUCT_OFFSET (NMBluezAdapterClass, initialized),
-	                                     NULL, NULL,
-	                                     g_cclosure_marshal_VOID__BOOLEAN,
-	                                     G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
-	signals[DEVICE_ADDED] = g_signal_new ("device-added",
-	                                      G_OBJECT_CLASS_TYPE (object_class),
-	                                      G_SIGNAL_RUN_LAST,
-	                                      G_STRUCT_OFFSET (NMBluezAdapterClass, device_added),
-	                                      NULL, NULL,
-	                                      g_cclosure_marshal_VOID__OBJECT,
-	                                      G_TYPE_NONE, 1, G_TYPE_OBJECT);
-
-	signals[DEVICE_REMOVED] = g_signal_new ("device-removed",
-	                                        G_OBJECT_CLASS_TYPE (object_class),
-	                                        G_SIGNAL_RUN_LAST,
-	                                        G_STRUCT_OFFSET (NMBluezAdapterClass, device_removed),
-	                                        NULL, NULL,
-	                                        g_cclosure_marshal_VOID__OBJECT,
-	                                        G_TYPE_NONE, 1, G_TYPE_OBJECT);
-}
-