aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@gnu.org>2011-09-09 20:00:57 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:20 +0100
commit1b84994febfdd9c821335157f0a8107f1842566f (patch)
treefcb2707484c6c88e4bc11f12c6a715c4af8caf98
parent74145f5af7c4e80ea09b86654fd524b4cd4759a8 (diff)
port-probe: set port details when creating the object
Each port probe is always associated to one specific port.
-rw-r--r--src/mm-port-probe.c64
-rw-r--r--src/mm-port-probe.h13
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 */