[argyllcms/f21] Add experimental ColorHug2 driver
Richard Hughes
rhughes at fedoraproject.org
Fri Oct 24 19:26:05 UTC 2014
commit 5cec56781a7c289fb16acc7f46865c71cd9964cc
Author: Richard Hughes <richard at hughsie.com>
Date: Fri Oct 24 17:53:28 2014 +0100
Add experimental ColorHug2 driver
0001-Add-support-for-the-ColorHug2-sensor.patch | 220 +++++++++++++++++++++++
argyllcms.spec | 9 +-
2 files changed, 228 insertions(+), 1 deletions(-)
---
diff --git a/0001-Add-support-for-the-ColorHug2-sensor.patch b/0001-Add-support-for-the-ColorHug2-sensor.patch
new file mode 100644
index 0000000..0490d5e
--- /dev/null
+++ b/0001-Add-support-for-the-ColorHug2-sensor.patch
@@ -0,0 +1,220 @@
+From 0680d52f503248658e334b7bc73cde1c92619ed1 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Sun, 19 Oct 2014 22:57:29 +0100
+Subject: [PATCH] Add support for the ColorHug2 sensor
+
+---
+ spectro/colorhug.c | 52 ++++++++++++++++++++++++++++++++++++++++++----------
+ spectro/colorhug.h | 5 +++--
+ spectro/inst.c | 3 ++-
+ spectro/insttypes.c | 13 +++++++++++++
+ spectro/insttypes.h | 1 +
+ 10 files changed, 71 insertions(+), 13 deletions(-)
+
+diff --git a/spectro/colorhug.c b/spectro/colorhug.c
+index 0152000..528f62e 100644
+--- a/spectro/colorhug.c
++++ b/spectro/colorhug.c
+@@ -6,10 +6,10 @@
+ * Hughski ColorHug related functions
+ *
+ * Author: Richard Hughes
+- * Date: 30/11/2011
++ * Date: 30/11/2011 - 19/10/2014
+ *
+ * Copyright 2006 - 2014, Graeme W. Gill
+- * Copyright 2011, Richard Hughes
++ * Copyright 2011 - 2014, Richard Hughes
+ * All rights reserved.
+ *
+ * (Based on huey.c)
+@@ -53,6 +53,7 @@ typedef enum {
+ ch_set_mult = 0x04, /* Set multiplier value */
+ ch_set_integral = 0x06, /* Set integral time */
+ ch_get_firmware_version = 0x07, /* Get the Firmware version number */
++ ch_get_hardware_version = 0x30, /* Get the hardware version number */
+ ch_get_serial = 0x0b, /* Gets the serial number */
+ ch_set_leds = 0x0e, /* Sets the LEDs */
+ ch_take_reading = 0x22, /* Takes a raw reading minus dark offset */
+@@ -487,6 +488,26 @@ colorhug_get_firmwareversion (colorhug *p)
+ return ev;
+ }
+
++/* Get the hardware version */
++static inst_code
++colorhug_get_hardwareversion (colorhug *p)
++{
++ inst_code ev;
++ unsigned char obuf;
++
++ ev = colorhug_command(p, ch_get_firmware_version,
++ NULL, 0,
++ &obuf, 1,
++ 2.0);
++ if (ev != inst_ok)
++ return ev;
++
++ p->hwrev = obuf;
++ a1logd(p->log,2,"colorhug: Hardware version = %u\n", p->hwrev);
++
++ return ev;
++}
++
+ /* Get the serial number */
+ static inst_code
+ colorhug_get_serialnumber (colorhug *p)
+@@ -577,6 +598,11 @@ colorhug_init_inst(inst *pp)
+ if (ev != inst_ok)
+ return ev;
+
++ /* Get the hardware version */
++ ev = colorhug_get_hardwareversion(p);
++ if (ev != inst_ok)
++ return ev;
++
+ /* Get the serial number */
+ ev = colorhug_get_serialnumber(p);
+ if (ev != inst_ok)
+@@ -588,16 +614,21 @@ colorhug_init_inst(inst *pp)
+ return ev;
+
+ /* Turn the sensor on */
+- ev = colorhug_set_multiplier(p, 0x03);
+- if (ev != inst_ok)
+- return ev;
++ if (p->itype == instColorHug) {
++ ev = colorhug_set_multiplier(p, 0x03);
++ if (ev != inst_ok)
++ return ev;
++ }
+
+ /* Set the integral time to maximum precision */
+- ev = colorhug_set_integral(p, 0xffff);
+- if (ev != inst_ok)
+- return ev;
++ if (p->itype == instColorHug) {
++ ev = colorhug_set_integral(p, 0xffff);
++ if (ev != inst_ok)
++ return ev;
++ }
+
+- if (p->maj <= 1 && p->min <= 1 && p->uro <= 4) {
++ if (p->itype == instColorHug &&
++ p->maj <= 1 && p->min <= 1 && p->uro <= 4) {
+
+ /* Get the post scale factor */
+ ev = colorhug_get_postscale(p, &p->postscale);
+@@ -621,8 +652,9 @@ colorhug_init_inst(inst *pp)
+ a1logd(p->log, 2, "colorhug_init: inited coms OK\n");
+
+ a1logv(p->log,1,"Serial Number: %06u\n"
++ "Hardware Version: %u\n"
+ "Firmware Version: %d.%d.%d\n"
+- ,p->ser_no,p->maj,p->min,p->uro);
++ ,p->ser_no,p->hwrev,p->maj,p->min,p->uro);
+
+ /* Flash the LEDs */
+ ev = colorhug_set_LEDs(p, 0x1);
+diff --git a/spectro/colorhug.h b/spectro/colorhug.h
+index a591608..46460a3 100644
+--- a/spectro/colorhug.h
++++ b/spectro/colorhug.h
+@@ -6,10 +6,10 @@
+ * Hughski ColorHug related defines
+ *
+ * Author: Richard Hughes
+- * Date: 30/11/2011
++ * Date: 30/11/2011 - 19/10/2014
+ *
+ * Copyright 2006 - 2013, Graeme W. Gill
+- * Copyright 2011, Richard Hughes
++ * Copyright 2011 - 2014, Richard Hughes
+ * All rights reserved.
+ *
+ * (Based on huey.h)
+@@ -68,6 +68,7 @@ struct _colorhug {
+ inst_opt_type trig; /* Reading trigger mode */
+
+ int maj, min, uro; /* Version number */
++ int hwrev; /* Hardware revision */
+ int ser_no; /* Serial number */
+
+ inst_disptypesel *dtlist; /* Display Type list */
+diff --git a/spectro/inst.c b/spectro/inst.c
+index a910750..7c216f2 100644
+--- a/spectro/inst.c
++++ b/spectro/inst.c
+@@ -600,7 +600,8 @@ void *cntx /* Context for callback */
+ p = (inst *)new_huey(icom, itype);
+ else if (itype == instSmile)
+ p = (inst *)new_i1disp(icom, itype);
+- else if (itype == instColorHug)
++ else if (itype == instColorHug ||
++ itype == instColorHug2)
+ p = (inst *)new_colorhug(icom, itype);
+ #endif /* ENABLE_USB */
+
+diff --git a/spectro/insttypes.c b/spectro/insttypes.c
+index d70bc71..235ae5e 100644
+--- a/spectro/insttypes.c
++++ b/spectro/insttypes.c
+@@ -92,6 +92,8 @@ char *inst_sname(instType itype) {
+ return "specbos";
+ case instColorHug:
+ return "ColorHug";
++ case instColorHug2:
++ return "ColorHug2";
+ default:
+ break;
+ }
+@@ -153,6 +155,8 @@ char *inst_name(instType itype) {
+ return "JETI specbos";
+ case instColorHug:
+ return "Hughski ColorHug";
++ case instColorHug2:
++ return "Hughski ColorHug2";
+ default:
+ break;
+ }
+@@ -219,6 +223,8 @@ instType inst_enum(char *name) {
+ return instSpecbos;
+ else if (strcmp(name, "Hughski ColorHug") == 0)
+ return instColorHug;
++ else if (strcmp(name, "Hughski ColorHug2") == 0)
++ return instColorHug2;
+
+
+ return instUnknown;
+@@ -297,6 +303,12 @@ int nep) { /* Number of end points */
+ || (idVendor == 0x273f && idProduct == 0x1001)) { /* Hughski & ColorHug Fmw. >= 0.1.20 */
+ return instColorHug;
+ }
++
++ if (idVendor == 0x273f && idProduct == 0x1004) {
++ /* Hughski ColorHug */
++ return instColorHug2;
++ }
++
+ /* Add other instruments here */
+
+
+@@ -391,6 +403,7 @@ int inst_illuminant(xspect *sp, instType itype) {
+ return 1; /* Not applicable */
+
+ case instColorHug:
++ case instColorHug2:
+ return 1; /* Not applicable */
+
+
+diff --git a/spectro/insttypes.h b/spectro/insttypes.h
+index ff86cc5..6b0c787 100644
+--- a/spectro/insttypes.h
++++ b/spectro/insttypes.h
+@@ -52,6 +52,7 @@ typedef enum {
+ instSpecbos1201, /* JETI specbos 1201 */
+ instSpecbos, /* JETI specbos XXXX */
+ instColorHug, /* Hughski ColorHug */
++ instColorHug2, /* Hughski ColorHug2 */
+
+
+ instFakeDisp = 9998, /* Fake display & instrument device id */
diff --git a/argyllcms.spec b/argyllcms.spec
index c7930ed..ac1be5d 100644
--- a/argyllcms.spec
+++ b/argyllcms.spec
@@ -1,12 +1,15 @@
Name: argyllcms
Version: 1.6.3
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: ICC compatible color management system
Group: User Interface/X
License: GPLv3 and MIT
URL: http://gitorious.org/hargyllcms
Source0: http://people.freedesktop.org/~hughsient/releases/hargyllcms-%{version}.tar.xz
+# already sent upstream; pending a new release
+Patch0: 0001-Add-support-for-the-ColorHug2-sensor.patch
+
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
@@ -51,6 +54,7 @@ This package contains the Argyll color management system documentation.
%prep
%setup -q -n hargyllcms-%{version}
+%patch0 -p1 -b .colorhug2
# we're not allowed to refer to acquisition devices as scanners
./legal.sh
autoreconf --force --install
@@ -89,6 +93,9 @@ rm -f $RPM_BUILD_ROOT/lib/udev/rules.d/55-Argyll.rules
%doc doc/*.html doc/*.jpg doc/*.txt
%changelog
+* Fri Oct 24 2014 Richard Hughes <rhughes at redhat.com> - 1.6.3-4
+- Add experimental ColorHug2 driver, which has already been sent upstream.
+
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.6.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
More information about the scm-commits
mailing list