Blob Blame History Raw
From c68e7a7b44aef8ecb4a8db798ae3e1cb6cc0557d Mon Sep 17 00:00:00 2001
From: Richard Hughes <richard@hughsie.com>
Date: Mon, 3 Sep 2012 17:22:05 +0100
Subject: [PATCH] colorhug: Add support for firmware >= 1.2.0 by accepting a
 full HID buffer

This is needed for OS-X and Windows compatibility.
---
 src/sensors/cd-sensor-colorhug-private.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/sensors/cd-sensor-colorhug-private.c b/src/sensors/cd-sensor-colorhug-private.c
index 0a65c85..5a5edb5 100644
--- a/src/sensors/cd-sensor-colorhug-private.c
+++ b/src/sensors/cd-sensor-colorhug-private.c
@@ -324,19 +324,20 @@ ch_device_reply_cb (GObject *source_object,
 	/* parse */
 	if (helper->buffer[CH_BUFFER_OUTPUT_RETVAL] != CH_ERROR_NONE ||
 	    helper->buffer[CH_BUFFER_OUTPUT_CMD] != helper->cmd ||
-	    actual_len != helper->buffer_out_len + CH_BUFFER_OUTPUT_DATA) {
+	    (actual_len != helper->buffer_out_len + CH_BUFFER_OUTPUT_DATA &&
+	     actual_len != CH_USB_HID_EP_SIZE)) {
 		error_enum = helper->buffer[CH_BUFFER_OUTPUT_RETVAL];
 		msg = g_strdup_printf ("Invalid read: retval=0x%02x [%s] "
 				       "cmd=0x%02x (expected 0x%x [%s]) "
-				       "len=%"G_GSIZE_FORMAT" "
-				       "(expected %"G_GSIZE_FORMAT")",
+				       "len=%" G_GSIZE_FORMAT " (expected %" G_GSIZE_FORMAT " or %i)",
 				       error_enum,
 				       ch_strerror (error_enum),
 				       helper->buffer[CH_BUFFER_OUTPUT_CMD],
 				       helper->cmd,
 				       ch_command_to_string (helper->cmd),
 				       actual_len,
-				       helper->buffer_out_len + CH_BUFFER_OUTPUT_DATA);
+				       helper->buffer_out_len + CH_BUFFER_OUTPUT_DATA,
+				       CH_USB_HID_EP_SIZE);
 		g_simple_async_result_set_error (helper->res, 1, 0, "%s", msg);
 		g_simple_async_result_complete_in_idle (helper->res);
 		ch_device_free_helper (helper);
-- 
1.7.11.4