diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-port-probe.c | 64 | ||||
-rw-r--r-- | src/mm-port-probe.h | 13 |
2 files changed, 74 insertions, 3 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c index e771362d..4ebb8f88 100644 --- a/src/mm-port-probe.c +++ b/src/mm-port-probe.c @@ -23,15 +23,67 @@ G_DEFINE_TYPE (MMPortProbe, mm_port_probe, G_TYPE_OBJECT) struct _MMPortProbePrivate { - gpointer dummy; + /* Port and properties */ + GUdevDevice *port; + gchar *subsys; + gchar *name; + gchar *physdev_path; + gchar *driver; }; +GUdevDevice * +mm_port_probe_get_port (MMPortProbe *self) +{ + g_return_val_if_fail (MM_IS_PORT_PROBE (self), NULL); + + return self->priv->port; +} + +const gchar * +mm_port_probe_get_port_name (MMPortProbe *self) +{ + g_return_val_if_fail (MM_IS_PORT_PROBE (self), NULL); + + return self->priv->name; +} + +const gchar * +mm_port_probe_get_port_subsys (MMPortProbe *self) +{ + g_return_val_if_fail (MM_IS_PORT_PROBE (self), NULL); + + return self->priv->subsys; +} + +const gchar * +mm_port_probe_get_port_physdev (MMPortProbe *self) +{ + g_return_val_if_fail (MM_IS_PORT_PROBE (self), NULL); + + return self->priv->physdev_path; +} + +const gchar * +mm_port_probe_get_port_driver (MMPortProbe *self) +{ + g_return_val_if_fail (MM_IS_PORT_PROBE (self), NULL); + + return self->priv->driver; +} + MMPortProbe * -mm_port_probe_new (void) +mm_port_probe_new (GUdevDevice *port, + const gchar *physdev_path, + const gchar *driver) { MMPortProbe *self; self = MM_PORT_PROBE (g_object_new (MM_TYPE_PORT_PROBE, NULL)); + self->priv->port = g_object_ref (port); + self->priv->subsys = g_strdup (g_udev_device_get_subsystem (port)); + self->priv->name = g_strdup (g_udev_device_get_name (port)); + self->priv->physdev_path = g_strdup (physdev_path); + self->priv->driver = g_strdup (driver); return self; } @@ -47,6 +99,14 @@ mm_port_probe_init (MMPortProbe *self) static void finalize (GObject *object) { + MMPortProbe *self = MM_PORT_PROBE (object); + + g_free (self->priv->subsys); + g_free (self->priv->name); + g_free (self->priv->physdev_path); + g_free (self->priv->driver); + g_object_unref (self->priv->port); + G_OBJECT_CLASS (mm_port_probe_parent_class)->finalize (object); } diff --git a/src/mm-port-probe.h b/src/mm-port-probe.h index 4e46423b..9e54d608 100644 --- a/src/mm-port-probe.h +++ b/src/mm-port-probe.h @@ -19,6 +19,9 @@ #include <glib.h> #include <glib-object.h> +#define G_UDEV_API_IS_SUBJECT_TO_CHANGE +#include <gudev/gudev.h> + #define MM_TYPE_PORT_PROBE (mm_port_probe_get_type ()) #define MM_PORT_PROBE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PORT_PROBE, MMPortProbe)) #define MM_PORT_PROBE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_PORT_PROBE, MMPortProbeClass)) @@ -41,7 +44,15 @@ struct _MMPortProbeClass { GType mm_port_probe_get_type (void); -MMPortProbe *mm_port_probe_new (void); +MMPortProbe *mm_port_probe_new (GUdevDevice *port, + const gchar *physdev_path, + const gchar *driver); + +GUdevDevice *mm_port_probe_get_port (MMPortProbe *self); +const gchar *mm_port_probe_get_port_name (MMPortProbe *self); +const gchar *mm_port_probe_get_port_subsys (MMPortProbe *self); +const gchar *mm_port_probe_get_port_physdev (MMPortProbe *self); +const gchar *mm_port_probe_get_port_driver (MMPortProbe *self); #endif /* MM_PORT_PROBE_H */ |