diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-modem.c | 12 | ||||
-rw-r--r-- | src/mm-base-modem.h | 2 | ||||
-rw-r--r-- | src/mm-device.c | 5 |
3 files changed, 16 insertions, 3 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index 322fb892..d028be7b 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -61,6 +61,7 @@ static GParamSpec *properties[PROP_LAST]; struct _MMBaseModemPrivate { /* The connection to the system bus */ GDBusConnection *connection; + guint dbus_id; /* Modem-wide cancellable. If it ever gets cancelled, no further operations * should be done by the modem. */ @@ -113,6 +114,12 @@ struct _MMBaseModemPrivate { #endif }; +guint +mm_base_modem_get_dbus_id (MMBaseModem *self) +{ + return self->priv->dbus_id; +} + static gchar * get_hash_key (const gchar *subsys, const gchar *name) @@ -1518,11 +1525,16 @@ teardown_ports_table (MMBaseModem *self) static void mm_base_modem_init (MMBaseModem *self) { + static guint id = 0; + /* Initialize private data */ self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_BASE_MODEM, MMBaseModemPrivate); + /* Each modem is given a unique id to build its own DBus path */ + self->priv->dbus_id = id++; + /* Setup authorization provider */ self->priv->authp = mm_auth_provider_get (); self->priv->authp_cancellable = g_cancellable_new (); diff --git a/src/mm-base-modem.h b/src/mm-base-modem.h index e4001f2b..0c4b95f2 100644 --- a/src/mm-base-modem.h +++ b/src/mm-base-modem.h @@ -105,6 +105,8 @@ struct _MMBaseModemClass { GType mm_base_modem_get_type (void); +guint mm_base_modem_get_dbus_id (MMBaseModem *self); + gboolean mm_base_modem_grab_port (MMBaseModem *self, MMKernelDevice *kernel_device, MMPortType ptype, diff --git a/src/mm-device.c b/src/mm-device.c index 86baf7c7..f3b0726d 100644 --- a/src/mm-device.c +++ b/src/mm-device.c @@ -251,8 +251,7 @@ static void export_modem (MMDevice *self) { GDBusConnection *connection = NULL; - static guint32 id = 0; - gchar *path; + gchar *path; g_assert (MM_IS_BASE_MODEM (self->priv->modem)); g_assert (G_IS_DBUS_OBJECT_MANAGER (self->priv->object_manager)); @@ -275,7 +274,7 @@ export_modem (MMDevice *self) /* No outstanding port tasks, so if the modem is valid we can export it */ - path = g_strdup_printf (MM_DBUS_MODEM_PREFIX "/%d", id++); + path = g_strdup_printf (MM_DBUS_MODEM_PREFIX "/%d", mm_base_modem_get_dbus_id (self->priv->modem)); g_object_get (self->priv->object_manager, "connection", &connection, NULL); |