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