mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-28 09:50:09 +01:00
bluez: pass the NMBluezDevice down to the NMDeviceBt
So that the latter can use the former instead of listening for changes over dbus.
This commit is contained in:
parent
024f7e10b2
commit
f422acc9d3
4 changed files with 35 additions and 4 deletions
|
|
@ -61,6 +61,7 @@ static void
|
|||
emit_bdaddr_added (NMBluezManager *self, NMBluezDevice *device)
|
||||
{
|
||||
g_signal_emit (self, signals[BDADDR_ADDED], 0,
|
||||
device,
|
||||
nm_bluez_device_get_address (device),
|
||||
nm_bluez_device_get_name (device),
|
||||
nm_bluez_device_get_path (device),
|
||||
|
|
@ -370,7 +371,8 @@ nm_bluez_manager_class_init (NMBluezManagerClass *klass)
|
|||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (NMBluezManagerClass, bdaddr_added),
|
||||
NULL, NULL, NULL,
|
||||
G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
|
||||
G_TYPE_NONE, 5, G_TYPE_OBJECT, G_TYPE_STRING,
|
||||
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
|
||||
|
||||
signals[BDADDR_REMOVED] =
|
||||
g_signal_new (NM_BLUEZ_MANAGER_BDADDR_REMOVED,
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "nm-glib-compat.h"
|
||||
#include "nm-bluez-common.h"
|
||||
#include "nm-bluez-device.h"
|
||||
#include "nm-dbus-manager.h"
|
||||
#include "nm-device-bt.h"
|
||||
#include "nm-device-private.h"
|
||||
|
|
@ -61,6 +62,8 @@ typedef struct {
|
|||
guint mm_watch_id;
|
||||
gboolean mm_running;
|
||||
|
||||
NMBluezDevice *bt_device;
|
||||
|
||||
char *bdaddr;
|
||||
char *name;
|
||||
guint32 capabilities;
|
||||
|
|
@ -82,6 +85,7 @@ enum {
|
|||
PROP_0,
|
||||
PROP_BT_NAME,
|
||||
PROP_BT_CAPABILITIES,
|
||||
PROP_BT_DEVICE,
|
||||
|
||||
LAST_PROP
|
||||
};
|
||||
|
|
@ -1111,7 +1115,8 @@ mm_name_owner_changed (NMDBusManager *dbus_mgr,
|
|||
/*****************************************************************************/
|
||||
|
||||
NMDevice *
|
||||
nm_device_bt_new (const char *udi,
|
||||
nm_device_bt_new (NMBluezDevice *bt_device,
|
||||
const char *udi,
|
||||
const char *bdaddr,
|
||||
const char *name,
|
||||
guint32 capabilities)
|
||||
|
|
@ -1120,12 +1125,14 @@ nm_device_bt_new (const char *udi,
|
|||
g_return_val_if_fail (bdaddr != NULL, NULL);
|
||||
g_return_val_if_fail (name != NULL, NULL);
|
||||
g_return_val_if_fail (capabilities != NM_BT_CAPABILITY_NONE, NULL);
|
||||
g_return_val_if_fail (NM_IS_BLUEZ_DEVICE (bt_device), NULL);
|
||||
|
||||
return (NMDevice *) g_object_new (NM_TYPE_DEVICE_BT,
|
||||
NM_DEVICE_UDI, udi,
|
||||
NM_DEVICE_IFACE, bdaddr,
|
||||
NM_DEVICE_DRIVER, "bluez",
|
||||
NM_DEVICE_HW_ADDRESS, bdaddr,
|
||||
NM_DEVICE_BT_DEVICE, bt_device,
|
||||
NM_DEVICE_BT_NAME, name,
|
||||
NM_DEVICE_BT_CAPABILITIES, capabilities,
|
||||
NM_DEVICE_TYPE_DESC, "Bluetooth",
|
||||
|
|
@ -1185,6 +1192,10 @@ set_property (GObject *object, guint prop_id,
|
|||
/* Construct only */
|
||||
priv->capabilities = g_value_get_uint (value);
|
||||
break;
|
||||
case PROP_BT_DEVICE:
|
||||
/* Construct only */
|
||||
priv->bt_device = g_value_dup_object (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -1204,6 +1215,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_BT_CAPABILITIES:
|
||||
g_value_set_uint (value, priv->capabilities);
|
||||
break;
|
||||
case PROP_BT_DEVICE:
|
||||
g_value_set_object (value, priv->bt_device);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
|
@ -1229,6 +1243,7 @@ dispose (GObject *object)
|
|||
g_clear_object (&priv->type_proxy);
|
||||
g_clear_object (&priv->dev_proxy);
|
||||
g_clear_object (&priv->modem);
|
||||
g_clear_object (&priv->bt_device);
|
||||
|
||||
G_OBJECT_CLASS (nm_device_bt_parent_class)->dispose (object);
|
||||
}
|
||||
|
|
@ -1289,6 +1304,14 @@ nm_device_bt_class_init (NMDeviceBtClass *klass)
|
|||
NM_BT_CAPABILITY_NONE, G_MAXUINT, NM_BT_CAPABILITY_NONE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, PROP_BT_DEVICE,
|
||||
g_param_spec_object (NM_DEVICE_BT_DEVICE,
|
||||
"NMBluezDevice object for the Device",
|
||||
"NMBluezDevice object for the Device",
|
||||
NM_TYPE_BLUEZ_DEVICE,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
/* Signals */
|
||||
signals[PPP_STATS] =
|
||||
g_signal_new ("ppp-stats",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#define NM_DEVICE_BT_H
|
||||
|
||||
#include <nm-device.h>
|
||||
#include "nm-bluez-device.h"
|
||||
#include "nm-modem.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
|
@ -41,6 +42,7 @@ typedef enum {
|
|||
|
||||
#define NM_DEVICE_BT_NAME "name"
|
||||
#define NM_DEVICE_BT_CAPABILITIES "bt-capabilities"
|
||||
#define NM_DEVICE_BT_DEVICE "bt-device"
|
||||
|
||||
typedef struct {
|
||||
NMDevice parent;
|
||||
|
|
@ -55,7 +57,8 @@ typedef struct {
|
|||
|
||||
GType nm_device_bt_get_type (void);
|
||||
|
||||
NMDevice *nm_device_bt_new (const char *udi,
|
||||
NMDevice *nm_device_bt_new (NMBluezDevice *bt_device,
|
||||
const char *udi,
|
||||
const char *bdaddr,
|
||||
const char *name,
|
||||
guint32 capabilities);
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ static void impl_manager_check_connectivity (NMManager *manager,
|
|||
#include "nm-manager-glue.h"
|
||||
|
||||
static void bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
|
||||
NMBluezDevice *bt_device,
|
||||
const char *bdaddr,
|
||||
const char *name,
|
||||
const char *object_path,
|
||||
|
|
@ -2184,6 +2185,7 @@ add_device (NMManager *self, NMDevice *device)
|
|||
|
||||
static void
|
||||
bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
|
||||
NMBluezDevice *bt_device,
|
||||
const char *bdaddr,
|
||||
const char *name,
|
||||
const char *object_path,
|
||||
|
|
@ -2198,12 +2200,13 @@ bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr,
|
|||
g_return_if_fail (name != NULL);
|
||||
g_return_if_fail (object_path != NULL);
|
||||
g_return_if_fail (capabilities != NM_BT_CAPABILITY_NONE);
|
||||
g_return_if_fail (NM_IS_BLUEZ_DEVICE (bt_device));
|
||||
|
||||
/* Make sure the device is not already in the device list */
|
||||
if (nm_manager_get_device_by_udi (manager, object_path))
|
||||
return;
|
||||
|
||||
device = nm_device_bt_new (object_path, bdaddr, name, capabilities);
|
||||
device = nm_device_bt_new (bt_device, object_path, bdaddr, name, capabilities);
|
||||
if (device) {
|
||||
nm_log_info (LOGD_HW, "BT device %s (%s) added (%s%s%s)",
|
||||
name,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue