aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c14
-rw-r--r--src/kerneldevice/mm-kernel-device-udev.c20
-rw-r--r--src/kerneldevice/mm-kernel-device.c11
-rw-r--r--src/kerneldevice/mm-kernel-device.h2
4 files changed, 47 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index f3ab8b22..c4cfd9a0 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -873,6 +873,19 @@ kernel_device_get_property_as_int (MMKernelDevice *self,
return ((value && mm_get_int_from_str (value, &aux)) ? aux : 0);
}
+static guint
+kernel_device_get_property_as_int_hex (MMKernelDevice *self,
+ const gchar *property)
+{
+ const gchar *value;
+ guint aux = 0;
+
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), -1);
+
+ value = g_object_get_data (G_OBJECT (self), property);
+ return ((value && mm_get_uint_from_hex_str (value, &aux)) ? aux : 0);
+}
+
/*****************************************************************************/
MMKernelDevice *
@@ -1051,6 +1064,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
kernel_device_class->get_property = kernel_device_get_property;
kernel_device_class->get_property_as_boolean = kernel_device_get_property_as_boolean;
kernel_device_class->get_property_as_int = kernel_device_get_property_as_int;
+ kernel_device_class->get_property_as_int_hex = kernel_device_get_property_as_int_hex;
properties[PROP_PROPERTIES] =
g_param_spec_object ("properties",
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c
index f4b47d88..7ad9b29c 100644
--- a/src/kerneldevice/mm-kernel-device-udev.c
+++ b/src/kerneldevice/mm-kernel-device-udev.c
@@ -579,6 +579,25 @@ kernel_device_get_property_as_int (MMKernelDevice *_self,
return g_udev_device_get_property_as_int (self->priv->device, property);
}
+static guint
+kernel_device_get_property_as_int_hex (MMKernelDevice *_self,
+ const gchar *property)
+{
+ MMKernelDeviceUdev *self;
+ const gchar *s;
+ guint out = 0;
+
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_UDEV (_self), -1);
+
+ self = MM_KERNEL_DEVICE_UDEV (_self);
+
+ if (!self->priv->device)
+ return -1;
+
+ s = g_udev_device_get_property (self->priv->device, property);
+ return ((s && mm_get_uint_from_hex_str (s, &out)) ? out : 0);
+}
+
/*****************************************************************************/
MMKernelDevice *
@@ -767,6 +786,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass)
kernel_device_class->get_property = kernel_device_get_property;
kernel_device_class->get_property_as_boolean = kernel_device_get_property_as_boolean;
kernel_device_class->get_property_as_int = kernel_device_get_property_as_int;
+ kernel_device_class->get_property_as_int_hex = kernel_device_get_property_as_int_hex;
properties[PROP_UDEV_DEVICE] =
g_param_spec_object ("udev-device",
diff --git a/src/kerneldevice/mm-kernel-device.c b/src/kerneldevice/mm-kernel-device.c
index ee25fe9a..4de4e744 100644
--- a/src/kerneldevice/mm-kernel-device.c
+++ b/src/kerneldevice/mm-kernel-device.c
@@ -166,6 +166,17 @@ mm_kernel_device_get_property_as_int (MMKernelDevice *self,
-1);
}
+guint
+mm_kernel_device_get_property_as_int_hex (MMKernelDevice *self,
+ const gchar *property)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE (self), 0);
+
+ return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_property_as_int_hex ?
+ MM_KERNEL_DEVICE_GET_CLASS (self)->get_property_as_int_hex (self, property) :
+ 0);
+}
+
/*****************************************************************************/
static void
diff --git a/src/kerneldevice/mm-kernel-device.h b/src/kerneldevice/mm-kernel-device.h
index 11e11113..5c1f6db0 100644
--- a/src/kerneldevice/mm-kernel-device.h
+++ b/src/kerneldevice/mm-kernel-device.h
@@ -61,6 +61,7 @@ struct _MMKernelDeviceClass {
const gchar * (* get_property) (MMKernelDevice *self, const gchar *property);
gboolean (* get_property_as_boolean) (MMKernelDevice *self, const gchar *property);
gint (* get_property_as_int) (MMKernelDevice *self, const gchar *property);
+ guint (* get_property_as_int_hex) (MMKernelDevice *self, const gchar *property);
};
GType mm_kernel_device_get_type (void);
@@ -85,5 +86,6 @@ gboolean mm_kernel_device_has_property (MMKernelDevice *self, con
const gchar *mm_kernel_device_get_property (MMKernelDevice *self, const gchar *property);
gboolean mm_kernel_device_get_property_as_boolean (MMKernelDevice *self, const gchar *property);
gint mm_kernel_device_get_property_as_int (MMKernelDevice *self, const gchar *property);
+guint mm_kernel_device_get_property_as_int_hex (MMKernelDevice *self, const gchar *property);
#endif /* MM_KERNEL_DEVICE_H */