From 5aad79135f2bef4626ae9fc0b9a441fbb260e9b7 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Wed, 1 Jul 2020 19:25:29 -0500 Subject: [PATCH] Don't try to read fan status for Hue 2 devices without fan controllers --- .../NZXTHue2Controller/NZXTHue2Controller.cpp | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp b/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp index aef23c5cc..0349b30ad 100644 --- a/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp +++ b/Controllers/NZXTHue2Controller/NZXTHue2Controller.cpp @@ -161,32 +161,35 @@ void NZXTHue2Controller::UpdateStatus() unsigned char usb_buf[64]; unsigned int ret_val = 0; - /*-----------------------------------------------------*\ - | Zero out buffer | - \*-----------------------------------------------------*/ - memset(usb_buf, 0, sizeof(usb_buf)); - - /*-----------------------------------------------------*\ - | Read packet | - \*-----------------------------------------------------*/ - do + if(num_fan_channels > 0) { - ret_val = hid_read(dev, usb_buf, sizeof(usb_buf)); - } while( (ret_val != 64) || (usb_buf[0] != 0x67) || (usb_buf[1] != 0x02) ); - - /*-----------------------------------------------------*\ - | Extract fan information | - \*-----------------------------------------------------*/ - for(int fan_idx = 0; fan_idx < num_fan_channels; fan_idx++) - { - unsigned char cmd; - unsigned short rpm; + /*-----------------------------------------------------*\ + | Zero out buffer | + \*-----------------------------------------------------*/ + memset(usb_buf, 0, sizeof(usb_buf)); - cmd = usb_buf[40 + fan_idx]; - rpm = ( usb_buf[25 + (2 * fan_idx)] << 8 ) | usb_buf[24 + (2 * fan_idx)]; + /*-----------------------------------------------------*\ + | Read packet | + \*-----------------------------------------------------*/ + do + { + ret_val = hid_read(dev, usb_buf, sizeof(usb_buf)); + } while( (ret_val != 64) || (usb_buf[0] != 0x67) || (usb_buf[1] != 0x02) ); - fan_cmd[fan_idx] = cmd; - fan_rpm[fan_idx] = rpm; + /*-----------------------------------------------------*\ + | Extract fan information | + \*-----------------------------------------------------*/ + for(int fan_idx = 0; fan_idx < num_fan_channels; fan_idx++) + { + unsigned char cmd; + unsigned short rpm; + + cmd = usb_buf[40 + fan_idx]; + rpm = ( usb_buf[25 + (2 * fan_idx)] << 8 ) | usb_buf[24 + (2 * fan_idx)]; + + fan_cmd[fan_idx] = cmd; + fan_rpm[fan_idx] = rpm; + } } }