[gnome-color-manager] Add a status property to GcmSensor to help GUI applications
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] Add a status property to GcmSensor to help GUI applications
- Date: Wed, 28 Jul 2010 09:02:21 +0000 (UTC)
commit b0f77f0cb41a56f71b9664160462632598f4c2b6
Author: Richard Hughes <richard hughsie com>
Date: Wed Jul 28 09:55:15 2010 +0100
Add a status property to GcmSensor to help GUI applications
libcolor-glib/gcm-sensor-huey.c | 15 +++++++++++++
libcolor-glib/gcm-sensor.c | 43 +++++++++++++++++++++++++++++++++++++++
libcolor-glib/gcm-sensor.h | 14 ++++++++++++
3 files changed, 72 insertions(+), 0 deletions(-)
---
diff --git a/libcolor-glib/gcm-sensor-huey.c b/libcolor-glib/gcm-sensor-huey.c
index fd3f3eb..c54a0cc 100644
--- a/libcolor-glib/gcm-sensor-huey.c
+++ b/libcolor-glib/gcm-sensor-huey.c
@@ -574,6 +574,9 @@ gcm_sensor_huey_get_ambient (GcmSensor *sensor, gdouble *value, GError **error)
goto out;
}
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_MEASURING);
+
/* hit hardware */
request[2] = (output_type == GCM_SENSOR_OUTPUT_TYPE_LCD) ? 0x00 : 0x02;
ret = gcm_sensor_huey_send_data (sensor_huey, request, 8, reply, 8, &reply_read, error);
@@ -583,6 +586,8 @@ gcm_sensor_huey_get_ambient (GcmSensor *sensor, gdouble *value, GError **error)
/* parse the value */
*value = (gdouble) (reply[5] * 0xff + reply[6]) / HUEY_AMBIENT_UNITS_TO_LUX;
out:
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_IDLE);
return ret;
}
@@ -679,6 +684,9 @@ gcm_sensor_huey_sample (GcmSensor *sensor, GcmColorXYZ *value, GError **error)
goto out;
}
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_MEASURING);
+
/* set this to one value for a quick approximate value */
multiplier.R = 1;
multiplier.G = 1;
@@ -721,6 +729,8 @@ gcm_sensor_huey_sample (GcmSensor *sensor, GcmColorXYZ *value, GError **error)
egg_debug ("POST MULTIPLY: %s\n", gcm_vec3_to_string (output));
out:
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_IDLE);
return ret;
}
@@ -773,6 +783,9 @@ gcm_sensor_huey_startup (GcmSensor *sensor, GError **error)
if (!ret)
goto out;
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_STARTING);
+
/* unlock */
ret = gcm_sensor_huey_send_unlock (sensor_huey, error);
if (!ret)
@@ -814,6 +827,8 @@ gcm_sensor_huey_startup (GcmSensor *sensor, GError **error)
g_usleep (50000);
}
out:
+ /* set state */
+ gcm_sensor_set_state (sensor, GCM_SENSOR_STATE_IDLE);
g_free (serial_number_tmp);
return ret;
}
diff --git a/libcolor-glib/gcm-sensor.c b/libcolor-glib/gcm-sensor.c
index 5ea0cc5..01e10e4 100644
--- a/libcolor-glib/gcm-sensor.c
+++ b/libcolor-glib/gcm-sensor.c
@@ -45,6 +45,7 @@ static void gcm_sensor_finalize (GObject *object);
struct _GcmSensorPrivate
{
gboolean native;
+ GcmSensorState state;
gboolean done_startup;
GcmSensorKind kind;
GcmSensorOutputType output_type;
@@ -61,6 +62,7 @@ struct _GcmSensorPrivate
enum {
PROP_0,
PROP_NATIVE,
+ PROP_STATE,
PROP_VENDOR,
PROP_MODEL,
PROP_SERIAL_NUMBER,
@@ -124,6 +126,33 @@ gcm_sensor_get_serial_number (GcmSensor *sensor)
}
/**
+ * gcm_sensor_set_state:
+ * @sensor: a valid #GcmSensor instance
+ * @state: the sensor state, e.g %GCM_SENSOR_STATE_IDLE
+ *
+ * Sets the device state.
+ **/
+void
+gcm_sensor_set_state (GcmSensor *sensor, GcmSensorState state)
+{
+ sensor->priv->state = state;
+}
+
+/**
+ * gcm_sensor_get_state:
+ * @sensor: a valid #GcmSensor instance
+ *
+ * Gets if the sensor is state taking a measurement.
+ *
+ * Return value: %TRUE for state.
+ **/
+GcmSensorState
+gcm_sensor_get_state (GcmSensor *sensor)
+{
+ return sensor->priv->state;
+}
+
+/**
* gcm_sensor_get_model:
* @sensor: a valid #GcmSensor instance
*
@@ -617,6 +646,9 @@ gcm_sensor_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
case PROP_NATIVE:
g_value_set_boolean (value, priv->native);
break;
+ case PROP_STATE:
+ g_value_set_uint (value, priv->state);
+ break;
case PROP_VENDOR:
g_value_set_string (value, priv->vendor);
break;
@@ -663,6 +695,9 @@ gcm_sensor_set_property (GObject *object, guint prop_id, const GValue *value, GP
case PROP_NATIVE:
priv->native = g_value_get_boolean (value);
break;
+ case PROP_STATE:
+ priv->state = g_value_get_uint (value);
+ break;
case PROP_KIND:
priv->kind = g_value_get_uint (value);
break;
@@ -696,6 +731,14 @@ gcm_sensor_class_init (GcmSensorClass *klass)
g_object_class_install_property (object_class, PROP_NATIVE, pspec);
/**
+ * GcmSensor:state:
+ */
+ pspec = g_param_spec_uint ("state", NULL, NULL,
+ 0, G_MAXUINT, GCM_SENSOR_STATE_STARTING,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ g_object_class_install_property (object_class, PROP_STATE, pspec);
+
+ /**
* GcmSensor:vendor:
*/
pspec = g_param_spec_string ("vendor", NULL, NULL,
diff --git a/libcolor-glib/gcm-sensor.h b/libcolor-glib/gcm-sensor.h
index 2115489..ba5844d 100644
--- a/libcolor-glib/gcm-sensor.h
+++ b/libcolor-glib/gcm-sensor.h
@@ -121,6 +121,17 @@ typedef enum {
GCM_SENSOR_KIND_UNKNOWN
} GcmSensorKind;
+/**
+ * GcmSensorState:
+ *
+ * The state of the sensor.
+ **/
+typedef enum {
+ GCM_SENSOR_STATE_STARTING,
+ GCM_SENSOR_STATE_IDLE,
+ GCM_SENSOR_STATE_MEASURING
+} GcmSensorState;
+
/* dummy */
#define GCM_SENSOR_ERROR 1
@@ -128,6 +139,9 @@ GType gcm_sensor_get_type (void);
GcmSensor *gcm_sensor_new (void);
void gcm_sensor_button_pressed (GcmSensor *sensor);
+void gcm_sensor_set_state (GcmSensor *sensor,
+ GcmSensorState state);
+GcmSensorState gcm_sensor_get_state (GcmSensor *sensor);
gboolean gcm_sensor_dump (GcmSensor *sensor,
GString *data,
GError **error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]