port-probe: set port details when creating the object

Each port probe is always associated to one specific port.
This commit is contained in:
Aleksander Morgado
2012-03-15 14:14:20 +01:00
committed by Aleksander Morgado
parent 74145f5af7
commit 1b84994feb
2 changed files with 74 additions and 3 deletions
+62 -2
View File
@@ -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);
}
+12 -1
View File
@@ -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 */