[gnome-color-manager] trivial: move the serial number to the GcmSensor object
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] trivial: move the serial number to the GcmSensor object
- Date: Thu, 22 Jul 2010 17:01:27 +0000 (UTC)
commit 948560af8fa73fba24429a2cce355edbfc9fb1f2
Author: Richard Hughes <richard hughsie com>
Date: Thu Jul 22 17:57:30 2010 +0100
trivial: move the serial number to the GcmSensor object
libcolor-glib/gcm-sensor.c | 47 +++++++++++++++++++++++++++++++++++++++++
libcolor-glib/gcm-sensor.h | 3 ++
tools/gcm-sensor-colormunki.c | 26 +++++++++++-----------
3 files changed, 63 insertions(+), 13 deletions(-)
---
diff --git a/libcolor-glib/gcm-sensor.c b/libcolor-glib/gcm-sensor.c
index 81ab273..5ea0cc5 100644
--- a/libcolor-glib/gcm-sensor.c
+++ b/libcolor-glib/gcm-sensor.c
@@ -54,6 +54,7 @@ struct _GcmSensorPrivate
gboolean supports_spot;
gchar *vendor;
gchar *model;
+ gchar *serial_number;
gchar *device;
};
@@ -62,6 +63,7 @@ enum {
PROP_NATIVE,
PROP_VENDOR,
PROP_MODEL,
+ PROP_SERIAL_NUMBER,
PROP_KIND,
PROP_SUPPORTS_DISPLAY,
PROP_SUPPORTS_PROJECTOR,
@@ -93,6 +95,35 @@ gcm_sensor_button_pressed (GcmSensor *sensor)
}
/**
+ * gcm_sensor_set_serial_number:
+ * @sensor: a valid #GcmSensor instance
+ * @serial_number: the serial number
+ *
+ * Sets the sensor serial number which can be used to uniquely identify
+ * the device.
+ **/
+void
+gcm_sensor_set_serial_number (GcmSensor *sensor, const gchar *serial_number)
+{
+ g_free (sensor->priv->serial_number);
+ sensor->priv->serial_number = g_strdup (serial_number);
+}
+
+/**
+ * gcm_sensor_get_serial_number:
+ * @sensor: a valid #GcmSensor instance
+ *
+ * Gets the sensor serial number.
+ *
+ * Return value: a string.
+ **/
+const gchar *
+gcm_sensor_get_serial_number (GcmSensor *sensor)
+{
+ return sensor->priv->serial_number;
+}
+
+/**
* gcm_sensor_get_model:
* @sensor: a valid #GcmSensor instance
*
@@ -409,6 +440,7 @@ gcm_sensor_dump (GcmSensor *sensor, GString *data, GError **error)
g_string_append_printf (data, "kind:%s\n", gcm_sensor_kind_to_string (priv->kind));
g_string_append_printf (data, "vendor:%s\n", priv->vendor);
g_string_append_printf (data, "model:%s\n", priv->model);
+ g_string_append_printf (data, "serial-number:%s\n", priv->serial_number);
g_string_append_printf (data, "device:%s\n", priv->device);
/* dump sensor */
@@ -591,6 +623,9 @@ gcm_sensor_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
case PROP_MODEL:
g_value_set_string (value, priv->model);
break;
+ case PROP_SERIAL_NUMBER:
+ g_value_set_string (value, priv->serial_number);
+ break;
case PROP_KIND:
g_value_set_uint (value, priv->kind);
break;
@@ -631,6 +666,9 @@ gcm_sensor_set_property (GObject *object, guint prop_id, const GValue *value, GP
case PROP_KIND:
priv->kind = g_value_get_uint (value);
break;
+ case PROP_SERIAL_NUMBER:
+ gcm_sensor_set_serial_number (sensor, g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -674,6 +712,14 @@ gcm_sensor_class_init (GcmSensorClass *klass)
g_object_class_install_property (object_class, PROP_MODEL, pspec);
/**
+ * GcmSensor:serial-number:
+ */
+ pspec = g_param_spec_string ("serial-number", NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_SERIAL_NUMBER, pspec);
+
+ /**
* GcmSensor:kind:
*/
pspec = g_param_spec_uint ("kind", NULL, NULL,
@@ -758,6 +804,7 @@ gcm_sensor_finalize (GObject *object)
g_free (priv->device);
g_free (priv->vendor);
g_free (priv->model);
+ g_free (priv->serial_number);
G_OBJECT_CLASS (gcm_sensor_parent_class)->finalize (object);
}
diff --git a/libcolor-glib/gcm-sensor.h b/libcolor-glib/gcm-sensor.h
index 2a3c81e..2115489 100644
--- a/libcolor-glib/gcm-sensor.h
+++ b/libcolor-glib/gcm-sensor.h
@@ -148,6 +148,9 @@ gboolean gcm_sensor_set_from_device (GcmSensor *sensor,
void gcm_sensor_set_output_type (GcmSensor *sensor,
GcmSensorOutputType output_type);
GcmSensorOutputType gcm_sensor_get_output_type (GcmSensor *sensor);
+void gcm_sensor_set_serial_number (GcmSensor *sensor,
+ const gchar *serial_number);
+const gchar *gcm_sensor_get_serial_number (GcmSensor *sensor);
const gchar *gcm_sensor_get_model (GcmSensor *sensor);
const gchar *gcm_sensor_get_vendor (GcmSensor *sensor);
GcmSensorKind gcm_sensor_get_kind (GcmSensor *sensor);
diff --git a/tools/gcm-sensor-colormunki.c b/tools/gcm-sensor-colormunki.c
index 9b3b94d..557c3d1 100644
--- a/tools/gcm-sensor-colormunki.c
+++ b/tools/gcm-sensor-colormunki.c
@@ -61,7 +61,6 @@ struct _GcmSensorColormunkiPrivate
struct libusb_transfer *transfer_state;
GcmUsb *usb;
GcmSensorColormunkiDialPosition dial_position;
- gchar *serial_number;
gchar *version_string;
gchar *chip_id;
gchar *firmware_revision;
@@ -288,7 +287,8 @@ gcm_sensor_colormunki_submit_transfer (GcmSensorColormunki *sensor_colormunki)
**/
static gboolean
gcm_sensor_colormunki_get_eeprom_data (GcmSensorColormunki *sensor_colormunki,
- guint16 address, guchar *data, guint16 size, GError **error)
+ guint32 address, guchar *data,
+ guint32 size, GError **error)
{
gint retval;
libusb_device_handle *handle;
@@ -299,7 +299,7 @@ gcm_sensor_colormunki_get_eeprom_data (GcmSensorColormunki *sensor_colormunki,
/* do EEPROM request
*
- * address length (in LE)
+ * address length (LE)
* ____|____ ____|____
* / \ / \
* 04 00 00 00 04 00 00 00
@@ -405,11 +405,13 @@ gcm_sensor_colormunki_startup (GcmSensor *sensor, GError **error)
libusb_strerror (retval));
goto out;
}
- priv->firmware_revision = g_strdup_printf ("%i.%i", gcm_buffer_read_uint16_le (buffer), gcm_buffer_read_uint16_le (buffer+4));
- priv->tick_duration = gcm_buffer_read_uint16_le (buffer+8);
- priv->min_int = gcm_buffer_read_uint16_le (buffer+0x0c);
- priv->eeprom_blocks = gcm_buffer_read_uint16_le (buffer+0x10);
- priv->eeprom_blocksize = gcm_buffer_read_uint16_le (buffer+0x14);
+ priv->firmware_revision = g_strdup_printf ("%i.%i",
+ gcm_buffer_read_uint32_le (buffer),
+ gcm_buffer_read_uint32_le (buffer+4));
+ priv->tick_duration = gcm_buffer_read_uint32_le (buffer+8);
+ priv->min_int = gcm_buffer_read_uint32_le (buffer+0x0c);
+ priv->eeprom_blocks = gcm_buffer_read_uint32_le (buffer+0x10);
+ priv->eeprom_blocksize = gcm_buffer_read_uint32_le (buffer+0x14);
/* get chip ID */
retval = libusb_control_transfer (handle,
@@ -440,17 +442,16 @@ gcm_sensor_colormunki_startup (GcmSensor *sensor, GError **error)
}
/* get serial number */
- priv->serial_number = g_new0 (gchar, 10);
ret = gcm_sensor_colormunki_get_eeprom_data (sensor_colormunki,
COLORMUNKI_EEPROM_OFFSET_SERIAL_NUMBER,
- (guchar*)priv->serial_number,
- 10, error);
+ buffer, 10, error);
if (!ret)
goto out;
+ gcm_sensor_set_serial_number (sensor, (const gchar*) buffer);
/* print details */
egg_debug ("Chip ID\t%s", priv->chip_id);
- egg_debug ("Serial number\t%s", priv->serial_number);
+ egg_debug ("Serial number\t%s", gcm_sensor_get_serial_number (sensor));
egg_debug ("Version\t%s", priv->version_string);
egg_debug ("Firmware\tfirmware_revision=%s, tick_duration=%i, min_int=%i, eeprom_blocks=%i, eeprom_blocksize=%i",
priv->firmware_revision, priv->tick_duration, priv->min_int, priv->eeprom_blocks, priv->eeprom_blocksize);
@@ -595,7 +596,6 @@ gcm_sensor_colormunki_finalize (GObject *object)
g_free (priv->version_string);
g_free (priv->chip_id);
g_free (priv->firmware_revision);
- g_free (priv->serial_number);
G_OBJECT_CLASS (gcm_sensor_colormunki_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]