diff options
author | Richard Hughes <richard@hughsie.com> | 2015-10-27 09:26:31 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-10-27 10:16:08 +0000 |
commit | cb05574d94135c7b99527eaaed633d8898717d78 (patch) | |
tree | e36a7f04da3684d8a2eb463b7911bdf171b7f3ca | |
parent | a81cc2c66376de784af8d32167bb39ce3d71b944 (diff) | |
download | colord-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.c | 19 | ||||
-rw-r--r-- | lib/colord/cd-enum.c | 2 | ||||
-rw-r--r-- | lib/colord/cd-enum.h | 6 | ||||
-rw-r--r-- | src/cd-sensor.c | 5 | ||||
-rw-r--r-- | src/sensors/cd-sensor-spark.c | 12 |
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); |