summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-10-27 09:26:31 +0000
committerRichard Hughes <richard@hughsie.com>2015-10-27 10:16:08 +0000
commitcb05574d94135c7b99527eaaed633d8898717d78 (patch)
treee36a7f04da3684d8a2eb463b7911bdf171b7f3ca
parenta81cc2c66376de784af8d32167bb39ce3d71b944 (diff)
downloadcolord-cb05574d94135c7b99527eaaed633d8898717d78.tar.gz
libcolord: Add two new sensor capability enum values for calibration
This is so we can avoid playing tricks in sensors that support more than one kind of calibration, for instance the Spark sensor.
-rw-r--r--client/cd-util.c19
-rw-r--r--lib/colord/cd-enum.c2
-rw-r--r--lib/colord/cd-enum.h6
-rw-r--r--src/cd-sensor.c5
-rw-r--r--src/sensors/cd-sensor-spark.c12
5 files changed, 29 insertions, 15 deletions
diff --git a/client/cd-util.c b/client/cd-util.c
index 3eb2ba3..e3068e9 100644
--- a/client/cd-util.c
+++ b/client/cd-util.c
@@ -449,6 +449,18 @@ cd_util_sensor_cap_to_string (CdSensorCap sensor_cap)
/* TRANSLATORS: this is the display technology */
return _("Calibration");
}
+ if (sensor_cap == CD_SENSOR_CAP_CALIBRATION_DARK) {
+ /* TRANSLATORS: this is the display calibration type */
+ return _("Dark Calibration");
+ }
+ if (sensor_cap == CD_SENSOR_CAP_CALIBRATION_IRRADIANCE) {
+ /* TRANSLATORS: this is the display calibration type */
+ return _("Irradiance Calibration");
+ }
+ if (sensor_cap == CD_SENSOR_CAP_SPECTRAL) {
+ /* TRANSLATORS: this is the sensor capability */
+ return _("Spectral");
+ }
if (sensor_cap == CD_SENSOR_CAP_LCD) {
/* TRANSLATORS: this is the display technology,
* where LCD stands for 'Liquid Crystal Display' */
@@ -1146,7 +1158,7 @@ cd_util_get_sensor_reading (CdUtilPrivate *priv, gchar **values, GError **error)
getchar ();
j--;
g_clear_error (&error_local);
- cap_tmp = CD_SENSOR_CAP_CALIBRATION;
+ cap_tmp = CD_SENSOR_CAP_CALIBRATION_DARK;
continue;
} else if (g_error_matches (error_local,
CD_SENSOR_ERROR,
@@ -1156,7 +1168,7 @@ cd_util_get_sensor_reading (CdUtilPrivate *priv, gchar **values, GError **error)
getchar ();
j--;
g_clear_error (&error_local);
- cap_tmp = CD_SENSOR_CAP_CALIBRATION;
+ cap_tmp = CD_SENSOR_CAP_CALIBRATION_IRRADIANCE;
continue;
} else {
g_propagate_error (error,
@@ -1166,7 +1178,8 @@ cd_util_get_sensor_reading (CdUtilPrivate *priv, gchar **values, GError **error)
}
/* reset back */
- if (cap_tmp == CD_SENSOR_CAP_CALIBRATION) {
+ if (cap_tmp == CD_SENSOR_CAP_CALIBRATION_DARK ||
+ cap_tmp == CD_SENSOR_CAP_CALIBRATION_IRRADIANCE) {
cap_tmp = CD_SENSOR_CAP_UNKNOWN;
g_print ("%s\n", _("Put the device on the color to be measured and press enter."));
getchar ();
diff --git a/lib/colord/cd-enum.c b/lib/colord/cd-enum.c
index c10f805..b1ced1c 100644
--- a/lib/colord/cd-enum.c
+++ b/lib/colord/cd-enum.c
@@ -178,6 +178,8 @@ static const CdEnumMatch enum_sensor_cap[] = {
{CD_SENSOR_CAP_WIDE_GAMUT_LCD_CCFL, "wide-gamut-lcd-ccfl"},
{CD_SENSOR_CAP_WIDE_GAMUT_LCD_RGB_LED, "wide-gamut-lcd-rgb-led"},
{CD_SENSOR_CAP_SPECTRAL, "spectral"},
+ {CD_SENSOR_CAP_CALIBRATION_DARK, "calibration-dark"},
+ {CD_SENSOR_CAP_CALIBRATION_IRRADIANCE, "calibration-irradiance"},
{0, NULL}
};
diff --git a/lib/colord/cd-enum.h b/lib/colord/cd-enum.h
index 457b2bc..f311d26 100644
--- a/lib/colord/cd-enum.h
+++ b/lib/colord/cd-enum.h
@@ -203,7 +203,7 @@ typedef enum {
/**
* CdSensorCap:
*
- * The sensor capabilities.
+ * The sensor capabilities, i.e. things the sensor can do.
**/
typedef enum {
CD_SENSOR_CAP_UNKNOWN, /* Since: 0.1.6 */
@@ -213,7 +213,7 @@ typedef enum {
CD_SENSOR_CAP_SPOT, /* Since: 0.1.6 */
CD_SENSOR_CAP_PROJECTOR, /* Since: 0.1.6 */
CD_SENSOR_CAP_AMBIENT, /* Since: 0.1.6 */
- CD_SENSOR_CAP_CALIBRATION, /* Since: 0.1.6 */
+ CD_SENSOR_CAP_CALIBRATION, /* Since: 0.1.6 (hint: raw measurement) */
CD_SENSOR_CAP_LED, /* Since: 0.1.17 */
CD_SENSOR_CAP_PLASMA, /* Since: 0.1.29 */
CD_SENSOR_CAP_LCD_CCFL, /* Since: 0.1.31 */
@@ -222,6 +222,8 @@ typedef enum {
CD_SENSOR_CAP_WIDE_GAMUT_LCD_CCFL, /* Since: 0.1.31 */
CD_SENSOR_CAP_WIDE_GAMUT_LCD_RGB_LED, /* Since: 0.1.31 */
CD_SENSOR_CAP_SPECTRAL, /* Since: 1.3.1 */
+ CD_SENSOR_CAP_CALIBRATION_DARK, /* Since: 1.3.1 */
+ CD_SENSOR_CAP_CALIBRATION_IRRADIANCE, /* Since: 1.3.1 */
/*< private >*/
CD_SENSOR_CAP_LAST
} CdSensorCap;
diff --git a/src/cd-sensor.c b/src/cd-sensor.c
index 13f8d93..ba75048 100644
--- a/src/cd-sensor.c
+++ b/src/cd-sensor.c
@@ -1041,12 +1041,13 @@ cd_sensor_dbus_method_call (GDBusConnection *connection, const gchar *sender,
/* check type */
if (cap != CD_SENSOR_CAP_SPECTRAL &&
- cap != CD_SENSOR_CAP_CALIBRATION) {
+ cap != CD_SENSOR_CAP_CALIBRATION_DARK &&
+ cap != CD_SENSOR_CAP_CALIBRATION_IRRADIANCE) {
g_dbus_method_invocation_return_error (invocation,
CD_SENSOR_ERROR,
CD_SENSOR_ERROR_INTERNAL,
"invalid cap, only spectral "
- "or calibration supported");
+ "or calibration type supported");
return;
}
diff --git a/src/sensors/cd-sensor-spark.c b/src/sensors/cd-sensor-spark.c
index 7e2aedf..c462517 100644
--- a/src/sensors/cd-sensor-spark.c
+++ b/src/sensors/cd-sensor-spark.c
@@ -39,7 +39,6 @@ typedef struct
GFile *dark_cal_file;
GFile *irradiance_cal_file;
CdSpectrum *sensitivity_cal;
- CdSensorError last_error;
} CdSensorSparkPrivate;
static CdSensorSparkPrivate *
@@ -207,14 +206,12 @@ cd_sensor_spark_get_spectrum (CdSensor *sensor,
cd_sensor_set_state_in_idle (sensor, CD_SENSOR_STATE_MEASURING);
/* perform dark calibration */
- if (cap == CD_SENSOR_CAP_CALIBRATION &&
- priv->last_error == CD_SENSOR_ERROR_REQUIRED_DARK_CALIBRATION)
+ if (cap == CD_SENSOR_CAP_CALIBRATION_DARK)
return cd_sensor_spark_get_dark_calibration (sensor, error);
/* we have no dark calibration */
if (priv->dark_cal == NULL ||
cd_spectrum_get_size (priv->dark_cal) == 0) {
- priv->last_error = CD_SENSOR_ERROR_REQUIRED_DARK_CALIBRATION;
g_set_error_literal (error,
CD_SENSOR_ERROR,
CD_SENSOR_ERROR_REQUIRED_DARK_CALIBRATION,
@@ -278,8 +275,7 @@ cd_sensor_spark_get_spectrum (CdSensor *sensor,
}
/* perform irradiance calibration */
- if (cap == CD_SENSOR_CAP_CALIBRATION &&
- priv->last_error == CD_SENSOR_ERROR_REQUIRED_IRRADIANCE_CALIBRATION) {
+ if (cap == CD_SENSOR_CAP_CALIBRATION_IRRADIANCE) {
sp = cd_sensor_spark_get_irradiance_calibration (sensor, sp_biased, error);
if (sp == NULL)
return NULL;
@@ -290,7 +286,6 @@ cd_sensor_spark_get_spectrum (CdSensor *sensor,
/* we have no irradiance calibration */
if (priv->irradiance_cal == NULL ||
cd_spectrum_get_size (priv->irradiance_cal) == 0) {
- priv->last_error = CD_SENSOR_ERROR_REQUIRED_IRRADIANCE_CALIBRATION;
g_set_error_literal (error,
CD_SENSOR_ERROR,
CD_SENSOR_ERROR_REQUIRED_IRRADIANCE_CALIBRATION,
@@ -675,7 +670,8 @@ cd_sensor_coldplug (CdSensor *sensor, GError **error)
CdSensorSparkPrivate *priv;
guint64 caps = cd_bitfield_from_enums (CD_SENSOR_CAP_LCD,
CD_SENSOR_CAP_CRT,
- CD_SENSOR_CAP_CALIBRATION,
+ CD_SENSOR_CAP_CALIBRATION_DARK,
+ CD_SENSOR_CAP_CALIBRATION_IRRADIANCE,
CD_SENSOR_CAP_PLASMA,
CD_SENSOR_CAP_SPECTRAL,
-1);