diff --git a/Controllers/RGBFusion2USBController/RGBFusion2USBController.cpp b/Controllers/RGBFusion2USBController/RGBFusion2USBController.cpp index e0c72065c..ee7d4864c 100644 --- a/Controllers/RGBFusion2USBController/RGBFusion2USBController.cpp +++ b/Controllers/RGBFusion2USBController/RGBFusion2USBController.cpp @@ -29,14 +29,15 @@ static LEDCount LedCountToEnum(unsigned int c) RGBFusion2USBController::RGBFusion2USBController(hid_device* handle, const char *path, std::string mb_name) : dev(handle) { - int res = 0; - char text[64] {}; - unsigned char buffer[64] {}; - - if( dev ) { + int res = 0; + char text[64] = { 0x00 }; + unsigned char buffer[64] = { 0x00 }; + if( dev ) + { SetCalibration(); + name = mb_name; // hid report read needs 0x60 packet or it gives IO error SendPacket(0x60, 0x00); @@ -46,9 +47,8 @@ RGBFusion2USBController::RGBFusion2USBController(hid_device* handle, const char { report = *reinterpret_cast(buffer); - name = mb_name; description = std::string(report.str_product, 32); - description.erase(std::find(name.begin(), name.end(), '\0'), name.end()); + //description.erase(std::find(description.begin(), description.end(), '\0'), name.end()); snprintf(text, 11, "0x%08X", report.fw_ver); version = text; @@ -56,7 +56,6 @@ RGBFusion2USBController::RGBFusion2USBController(hid_device* handle, const char snprintf(text, 11, "0x%08X", report.chip_id); chip_id = text; } - loc = path; EnableBeat(false); diff --git a/Controllers/RGBFusion2USBController/RGBFusion2USBControllerDetect.cpp b/Controllers/RGBFusion2USBController/RGBFusion2USBControllerDetect.cpp index 91b002368..c879eb5c0 100644 --- a/Controllers/RGBFusion2USBController/RGBFusion2USBControllerDetect.cpp +++ b/Controllers/RGBFusion2USBController/RGBFusion2USBControllerDetect.cpp @@ -4,6 +4,7 @@ #define IT8297_VID 0x048D #define IT8297_IFC 0 +#define IT8297_U 0xCC #define IT8297_UPG 0xFF89 #define COUNT_RGBFUSION2_PIDS (sizeof(RGBFusion2_pids) / sizeof(RGBFusion2_pids[ 0 ])) @@ -43,11 +44,12 @@ void DetectRGBFusion2USBControllers(std::vector &rgb_controllers while(info) { if((info->vendor_id == IT8297_VID) - && (info->interface_number == IT8297_IFC) #ifdef USE_HID_USAGE &&(info->product_id == tmpPID) + &&(info->usage == IT8297_U) //Usage and usage page required to get the correct interface &&(info->usage_page == IT8297_UPG)) #else + &&(info->interface_number == IT8297_IFC) //Interface is only valid on Windows where there is > 1 interface &&(info->product_id == tmpPID)) #endif { @@ -57,6 +59,7 @@ void DetectRGBFusion2USBControllers(std::vector &rgb_controllers RGBFusion2USBController * controller = new RGBFusion2USBController(dev, info->path, MB_info.getMainboard()); RGBController_RGBFusion2USB * rgb_controller = new RGBController_RGBFusion2USB(controller); rgb_controllers.push_back(rgb_controller); + break; } } info = info->next; diff --git a/dependencies/dmiinfo.cpp b/dependencies/dmiinfo.cpp index c8a2fde07..8e210d43d 100644 --- a/dependencies/dmiinfo.cpp +++ b/dependencies/dmiinfo.cpp @@ -42,7 +42,7 @@ DMIInfo::DMIInfo() for (QueryObj &i : q_res_BaseBoard) { manufacturer = i["Manufacturer"].c_str(); - mainboard = i["Model"].c_str(); + mainboard = i["Product"].c_str(); } } #else /* WIN32 */