aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2014-06-22 17:29:50 +0200
committerAleksander Morgado <aleksander@aleksander.es>2014-06-23 18:12:27 +0200
commit7c347aa3ec1d5540c23c20dcb5edd3c6ccb28c24 (patch)
treed60adda1f391e4ae112f057853d7f07426ad5f89 /src/mm-port.c
parent7752c9920d83059836d010a61e44daa4232c4c65 (diff)
port: store parent sysfs path in each MMPort
Diffstat (limited to 'src/mm-port.c')
-rw-r--r--src/mm-port.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/mm-port.c b/src/mm-port.c
index 2ebad13c..0ee9a199 100644
--- a/src/mm-port.c
+++ b/src/mm-port.c
@@ -29,15 +29,17 @@ enum {
PROP_SUBSYS,
PROP_TYPE,
PROP_CONNECTED,
+ PROP_PARENT_PATH,
LAST_PROP
};
struct _MMPortPrivate {
- char *device;
+ gchar *device;
MMPortSubsys subsys;
MMPortType ptype;
gboolean connected;
+ gchar *parent_path;
};
/*****************************************************************************/
@@ -94,6 +96,14 @@ mm_port_set_connected (MMPort *self, gboolean connected)
}
}
+const gchar *
+mm_port_get_parent_path (MMPort *self)
+{
+ g_return_val_if_fail (MM_IS_PORT (self), NULL);
+
+ return self->priv->parent_path;
+}
+
/*****************************************************************************/
static void
@@ -126,6 +136,10 @@ set_property (GObject *object,
case PROP_CONNECTED:
self->priv->connected = g_value_get_boolean (value);
break;
+ case PROP_PARENT_PATH:
+ g_free (self->priv->parent_path);
+ self->priv->parent_path = g_value_dup_string (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -151,6 +165,9 @@ get_property (GObject *object, guint prop_id,
case PROP_CONNECTED:
g_value_set_boolean (value, self->priv->connected);
break;
+ case PROP_PARENT_PATH:
+ g_value_set_string (value, self->priv->parent_path);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -163,6 +180,7 @@ finalize (GObject *object)
MMPort *self = MM_PORT (object);
g_free (self->priv->device);
+ g_free (self->priv->parent_path);
G_OBJECT_CLASS (mm_port_parent_class)->finalize (object);
}
@@ -214,4 +232,12 @@ mm_port_class_init (MMPortClass *klass)
"Is connected for data and not usable for control",
FALSE,
G_PARAM_READWRITE));
+
+ g_object_class_install_property
+ (object_class, PROP_PARENT_PATH,
+ g_param_spec_string (MM_PORT_PARENT_PATH,
+ "Parent path",
+ "sysfs path of the parent device",
+ NULL,
+ G_PARAM_READWRITE));
}