From 4f649795b3c4af42f66ea49ca707d2cf62db8ac6 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 9 Aug 2022 20:57:59 +1000 Subject: [PATCH] Fixing regression to the `DetectCoolerMasterMouse` callback made in f33fc268 * Changed the `if` to a `switch case` to correct the MM720 triggering the callback but not creating a controller. * Code cleanup and readability changes. * Related to !1116 --- .../CoolerMasterControllerDetect.cpp | 141 +++++++++++++----- 1 file changed, 101 insertions(+), 40 deletions(-) diff --git a/Controllers/CoolerMasterController/CoolerMasterControllerDetect.cpp b/Controllers/CoolerMasterController/CoolerMasterControllerDetect.cpp index 77a755e6..47f8cb5f 100644 --- a/Controllers/CoolerMasterController/CoolerMasterControllerDetect.cpp +++ b/Controllers/CoolerMasterController/CoolerMasterControllerDetect.cpp @@ -1,5 +1,14 @@ +/*-----------------------------------------------------*\ +| OpenRGB includes | +\*-----------------------------------------------------*/ +#include #include "Detector.h" +#include "LogManager.h" #include "RGBController.h" + +/*-----------------------------------------------------*\ +| Coolermaster specific includes | +\*-----------------------------------------------------*/ #include "RGBController_CMMMController.h" #include "RGBController_CMMM711Controller.h" #include "RGBController_CMMP750Controller.h" @@ -9,27 +18,49 @@ #include "RGBController_CMRGBController.h" #include "RGBController_CMR6000Controller.h" #include "RGBController_CMMKController.h" -#include -#define COOLERMASTER_VID 0x2516 +/*-----------------------------------------------------*\ +| Coolermaster USB vendor ID | +\*-----------------------------------------------------*/ +#define COOLERMASTER_VID 0x2516 -#define COOLERMASTER_MM530_PID 0x0065 -#define COOLERMASTER_MM531_PID 0x0097 -#define COOLERMASTER_MM711_PID 0x0101 -#define COOLERMASTER_MM720_PID 0x0141 -#define COOLERMASTER_MP750_XL_PID 0x0109 -#define COOLERMASTER_MP750_L_PID 0x0107 -#define COOLERMASTER_MP750_MEDIUM_PID 0x0105 -#define COOLERMASTER_ARGB_PID 0x1011 -#define COOLERMASTER_ARGB_GEN2_A1_PID 0x0173 -#define COOLERMASTER_SMALL_ARGB_PID 0x1000 -#define COOLERMASTER_RGB_PID 0x004F -#define COOLERMASTER_MASTERKEYS_PRO_L_PID 0x003B -#define COOLERMASTER_MASTERKEYS_PRO_L_WHITE_PID 0x0047 -#define COOLERMASTER_MASTERKEYS_PRO_S_PID 0x003C -#define COOLERMASTER_MASTERKEYS_MK750_PID 0x0067 -#define COOLERMASTER_MASTERKEYS_SK630_PID 0x0089 -#define COOLERMASTER_MASTERKEYS_SK650_PID 0x008D +/*-----------------------------------------------------*\ +| Coolermaster Keyboards | +\*-----------------------------------------------------*/ +#define COOLERMASTER_MASTERKEYS_PRO_L_PID 0x003B +#define COOLERMASTER_MASTERKEYS_PRO_L_WHITE_PID 0x0047 +#define COOLERMASTER_MASTERKEYS_PRO_S_PID 0x003C +#define COOLERMASTER_MASTERKEYS_MK750_PID 0x0067 +#define COOLERMASTER_MASTERKEYS_SK630_PID 0x0089 +#define COOLERMASTER_MASTERKEYS_SK650_PID 0x008D + +/*-----------------------------------------------------*\ +| Coolermaster GPUs | +| PIDs defined in `CMR6000Controller.h` | +\*-----------------------------------------------------*/ + +/*-----------------------------------------------------*\ +| Coolermaster LEDstrip controllers | +\*-----------------------------------------------------*/ +#define COOLERMASTER_ARGB_PID 0x1011 +#define COOLERMASTER_ARGB_GEN2_A1_PID 0x0173 +#define COOLERMASTER_SMALL_ARGB_PID 0x1000 +#define COOLERMASTER_RGB_PID 0x004F + +/*-----------------------------------------------------*\ +| Coolermaster Mice | +\*-----------------------------------------------------*/ +#define COOLERMASTER_MM530_PID 0x0065 +#define COOLERMASTER_MM531_PID 0x0097 +#define COOLERMASTER_MM711_PID 0x0101 +#define COOLERMASTER_MM720_PID 0x0141 + +/*-----------------------------------------------------*\ +| Coolermaster Mousemats | +\*-----------------------------------------------------*/ +#define COOLERMASTER_MP750_XL_PID 0x0109 +#define COOLERMASTER_MP750_L_PID 0x0107 +#define COOLERMASTER_MP750_MEDIUM_PID 0x0105 /******************************************************************************************\ * * @@ -106,21 +137,31 @@ void DetectCoolerMasterMouse(hid_device_info* info, const std::string& name) if(dev) { - if(info->product_id == COOLERMASTER_MM530_PID || info->product_id == COOLERMASTER_MM531_PID) + switch(info->product_id) { - CMMMController* controller = new CMMMController(dev, info->path, info->product_id); - RGBController_CMMMController* rgb_controller = new RGBController_CMMMController(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } - else if(info->product_id == COOLERMASTER_MM711_PID) - { - CMMM711Controller* controller = new CMMM711Controller(dev, info->path); - RGBController_CMMM711Controller* rgb_controller = new RGBController_CMMM711Controller(controller); - // Constructor sets the name - ResourceManager::get()->RegisterRGBController(rgb_controller); - } + case COOLERMASTER_MM530_PID: + case COOLERMASTER_MM531_PID: + case COOLERMASTER_MM720_PID: + { + CMMMController* controller = new CMMMController(dev, info->path, info->product_id); + RGBController_CMMMController* rgb_controller = new RGBController_CMMMController(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } + break; + case COOLERMASTER_MM711_PID: + { + CMMM711Controller* controller = new CMMM711Controller(dev, info->path); + RGBController_CMMM711Controller* rgb_controller = new RGBController_CMMM711Controller(controller); + // Constructor sets the name + ResourceManager::get()->RegisterRGBController(rgb_controller); + } + break; + + default: + LOG_DEBUG("[%s] Controller not created as the product ID %04X is missing from detector switch", name.c_str(), info->product_id); + } } } @@ -163,22 +204,42 @@ void DetectCoolerMasterSmallARGB(hid_device_info* info, const std::string&) } } -REGISTER_HID_DETECTOR_IPU("Cooler Master MM530", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM530_PID, 1, 0xFF00, 1); -//REGISTER_HID_DETECTOR_IPU("Cooler Master MM531", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM531_PID, 1, 0xFF00, 1); -REGISTER_HID_DETECTOR_IPU("Cooler Master MM711", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM711_PID, 1, 0xFF00, 1); -REGISTER_HID_DETECTOR_IPU("Cooler Master MM720", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM720_PID, 1, 0xFF00, 1); -REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 XL", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_XL_PID, 0xFF00, 1); -REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 Large", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_L_PID, 0xFF00, 1); -REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 Medium", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_MEDIUM_PID, 0xFF00, 1); +/*-----------------------------------------------------*\ +| Coolermaster Keyboards | +\*-----------------------------------------------------*/ REGISTER_HID_DETECTOR_IPU("Cooler Master MasterKeys Pro L", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_PRO_L_PID, 1, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master MasterKeys Pro L White", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_PRO_L_WHITE_PID, 1, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master MasterKeys Pro S", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_PRO_S_PID, 1, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master MK570", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_MK750_PID, 1, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master SK630", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_SK630_PID, 1, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master SK650", DetectCoolerMasterKeyboards, COOLERMASTER_VID, COOLERMASTER_MASTERKEYS_SK650_PID, 1, 0xFF00, 1); + +/*-----------------------------------------------------*\ +| Coolermaster LEDstrip controllers | +\*-----------------------------------------------------*/ REGISTER_HID_DETECTOR_IPU("Cooler Master ARGB", DetectCoolerMasterARGB, COOLERMASTER_VID, COOLERMASTER_ARGB_PID, 0, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master ARGB Gen 2 A1", DetectCoolerMasterARGBGen2A1, COOLERMASTER_VID, COOLERMASTER_ARGB_GEN2_A1_PID, 1, 0xFF01, 1); -REGISTER_HID_DETECTOR_IPU("Cooler Master Small ARGB", DetectCoolerMasterSmallARGB, COOLERMASTER_VID, COOLERMASTER_SMALL_ARGB_PID, 0, 0xFF00, 1); REGISTER_HID_DETECTOR_IPU("Cooler Master RGB", DetectCoolerMasterRGB, COOLERMASTER_VID, COOLERMASTER_RGB_PID, 1, 0xFF00, 1); +REGISTER_HID_DETECTOR_IPU("Cooler Master Small ARGB", DetectCoolerMasterSmallARGB, COOLERMASTER_VID, COOLERMASTER_SMALL_ARGB_PID, 0, 0xFF00, 1); + +/*-----------------------------------------------------*\ +| Coolermaster Mice | +\*-----------------------------------------------------*/ +REGISTER_HID_DETECTOR_IPU("Cooler Master MM530", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM530_PID, 1, 0xFF00, 1); +//REGISTER_HID_DETECTOR_IPU("Cooler Master MM531", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM531_PID, 1, 0xFF00, 1); +REGISTER_HID_DETECTOR_IPU("Cooler Master MM711", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM711_PID, 1, 0xFF00, 1); +REGISTER_HID_DETECTOR_IPU("Cooler Master MM720", DetectCoolerMasterMouse, COOLERMASTER_VID, COOLERMASTER_MM720_PID, 1, 0xFF00, 1); + +/*-----------------------------------------------------*\ +| Coolermaster Mousemats | +\*-----------------------------------------------------*/ +REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 XL", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_XL_PID, 0xFF00, 1); +REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 Large", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_L_PID, 0xFF00, 1); +REGISTER_HID_DETECTOR_PU ("Cooler Master MP750 Medium", DetectCoolerMasterMousemats, COOLERMASTER_VID, COOLERMASTER_MP750_MEDIUM_PID, 0xFF00, 1); + +/*-----------------------------------------------------*\ +| Coolermaster GPUs | +| PIDs defined in `CMR6000Controller.h` | +\*-----------------------------------------------------*/ REGISTER_HID_DETECTOR_I ("Cooler Master Radeon 6000 GPU", DetectCoolerMasterGPU, COOLERMASTER_VID, COOLERMASTER_RADEON_6000_PID, 1 ); REGISTER_HID_DETECTOR_I ("Cooler Master Radeon 6900 GPU", DetectCoolerMasterGPU, COOLERMASTER_VID, COOLERMASTER_RADEON_6900_PID, 1 );