diff --git a/Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.cpp b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.cpp similarity index 84% rename from Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.cpp rename to Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.cpp index cdf3d5d80..a522b3eef 100644 --- a/Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.cpp +++ b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLightKBController.cpp | +| MSIKeyboard1565Controller.cpp | | | | Driver for MSI Mystic Light MS-1565 keyboard leds | | | @@ -7,11 +7,9 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "MSIMysticLightKBController.h" - -#include "StringUtils.h" -#include "hidapi.h" #include +#include "MSIKeyboard1565Controller.h" +#include "StringUtils.h" std::map zone_map = { @@ -22,25 +20,18 @@ std::map zone_map = { MS_1565_ZONE_DEVICE, 15} }; -MSIKeyboardController::MSIKeyboardController -( - hid_device *handle, - const char *path -) +MSIKeyboard1565Controller::MSIKeyboard1565Controller(hid_device *handle, const char *path) { - dev = handle; - if(dev) - { - location = path; - } + dev = handle; + location = path; } -MSIKeyboardController::~MSIKeyboardController() +MSIKeyboard1565Controller::~MSIKeyboard1565Controller() { hid_close(dev); } -void MSIKeyboardController::SetMode +void MSIKeyboard1565Controller::SetMode ( MS_1565_MODE mode, MS_1565_SPEED speed1, @@ -73,7 +64,7 @@ void MSIKeyboardController::SetMode return; } -std::string MSIKeyboardController::GetDeviceName() +std::string MSIKeyboard1565Controller::GetDeviceName() { wchar_t tname[256]; @@ -100,7 +91,7 @@ std::string MSIKeyboardController::GetDeviceName() return(name); } -std::string MSIKeyboardController::GetFWVersion() +std::string MSIKeyboard1565Controller::GetFWVersion() { /*-----------------------------------------------------*\ | This device doesn't support firmware version | @@ -109,12 +100,12 @@ std::string MSIKeyboardController::GetFWVersion() return firmware_version; } -std::string MSIKeyboardController::GetDeviceLocation() +std::string MSIKeyboard1565Controller::GetDeviceLocation() { return ("HID: " + location); } -std::string MSIKeyboardController::GetSerial() +std::string MSIKeyboard1565Controller::GetSerial() { wchar_t serial_string[128]; int ret = hid_get_serial_number_string(dev, serial_string, 128); diff --git a/Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.h b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.h similarity index 91% rename from Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.h rename to Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.h index b7a535776..b825f098b 100644 --- a/Controllers/MSIKeyboardController/MSIMysticLightKBController/MSIMysticLightKBController.h +++ b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565Controller.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight1565Controller.h | +| MSIKeyboard1565Controller.h | | | | Driver for MSI Mystic Light MS-1565 keyboard leds | | | @@ -7,13 +7,12 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#ifndef MSIMYSTICLIGHTKBCONTROLLER_H -#define MSIMYSTICLIGHTKBCONTROLLER_H +#pragma once #include #include -#include #include +#include struct Color { @@ -74,15 +73,15 @@ enum MS_1565_ZONE MS_1565_ZONE_DEVICE }; -class MSIKeyboardController +class MSIKeyboard1565Controller { public: - MSIKeyboardController + MSIKeyboard1565Controller ( hid_device* handle, const char* path ); - ~MSIKeyboardController(); + ~MSIKeyboard1565Controller(); void SetMode ( @@ -106,6 +105,3 @@ private: hid_device* dev; std::string location; }; - - -#endif // MSIMYSTICLIGHTKBCONTROLLER_H diff --git a/Controllers/MSIKeyboardController/MSIKeyboardControllerDetect.cpp b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565ControllerDetect.cpp similarity index 70% rename from Controllers/MSIKeyboardController/MSIKeyboardControllerDetect.cpp rename to Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565ControllerDetect.cpp index 95ae563a3..3e32e82e5 100644 --- a/Controllers/MSIKeyboardController/MSIKeyboardControllerDetect.cpp +++ b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/MSIKeyboard1565ControllerDetect.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIKeyboardControllerDetect.cpp | +| MSIKeyboard1565ControllerDetect.cpp | | | | Detector for MSI Mystic Light MS-1565 Keyboard | | | @@ -8,12 +8,12 @@ \*---------------------------------------------------------*/ #include "DetectionManager.h" -#include "MSIMysticLightKBController.h" -#include "RGBController_MSIMysticLightKB.h" +#include "MSIKeyboard1565Controller.h" +#include "RGBController_MSIKeyboard1565.h" #define MSI_USB_VID 0x1462 -DetectedControllers DetectMSIKeyboardController(hid_device_info* info, const std::string& /*name*/) +DetectedControllers DetectMSIKeyboardController(hid_device_info* info, const std::string& /*name*/) { DetectedControllers detected_controllers; hid_device* dev; @@ -22,8 +22,8 @@ DetectedControllers DetectMSIKeyboardController(hid_device_info* info, const std if(dev) { - MSIKeyboardController* controller = new MSIKeyboardController(dev, info->path); - RGBController_MSIKeyboard* rgb_controller = new RGBController_MSIKeyboard(controller); + MSIKeyboard1565Controller* controller = new MSIKeyboard1565Controller(dev, info->path); + RGBController_MSIKeyboard1565* rgb_controller = new RGBController_MSIKeyboard1565(controller); detected_controllers.push_back(rgb_controller); } diff --git a/Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.h b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIKeyboard1565.h similarity index 72% rename from Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.h rename to Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIKeyboard1565.h index e25234992..fd19661e3 100644 --- a/Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.h +++ b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIKeyboard1565.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight1565.h | +| RGBController_MSIKeyboard1565.h | | | | Driver for MSI Mystic Light MS-1565 keyboard leds | | | @@ -7,17 +7,16 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#ifndef RGBCONTROLLER_MSIMYSTICLIGHTKB_H -#define RGBCONTROLLER_MSIMYSTICLIGHTKB_H +#pragma once #include "RGBController.h" -#include "MSIMysticLightKBController.h" +#include "MSIKeyboard1565Controller.h" -class RGBController_MSIKeyboard : public RGBController +class RGBController_MSIKeyboard1565 : public RGBController { public: - RGBController_MSIKeyboard(MSIKeyboardController* controller_ptr); - ~RGBController_MSIKeyboard(); + RGBController_MSIKeyboard1565(MSIKeyboard1565Controller* controller_ptr); + ~RGBController_MSIKeyboard1565(); void SetupZones(); @@ -28,7 +27,7 @@ public: void DeviceUpdateMode(); private: - MSIKeyboardController* controller; + MSIKeyboard1565Controller* controller; void SetupModes(); void SetupMode @@ -45,5 +44,3 @@ private: unsigned int flags ); }; - -#endif // RGBCONTROLLER_MSIMYSTICLIGHTKB_H diff --git a/Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.cpp b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIMysticLightKB.cpp similarity index 87% rename from Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.cpp rename to Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIMysticLightKB.cpp index 635241166..14e5fa3e6 100644 --- a/Controllers/MSIKeyboardController/MSIMysticLightKBController/RGBController_MSIMysticLightKB.cpp +++ b/Controllers/MSIKeyboardController/MSIKeyboard1565Controller/RGBController_MSIMysticLightKB.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLightKB.cpp | +| RGBController_MSIKeyboard1565.cpp | | | | Driver for MSI Mystic Light MS-1565 keyboard leds | | | @@ -7,11 +7,9 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "RGBController_MSIMysticLightKB.h" -#include "MSIMysticLightKBController.h" -#include "RGBController.h" - #include +#include "MSIKeyboard1565Controller.h" +#include "RGBController_MSIKeyboard1565.h" /**------------------------------------------------------------------*\ @name MSI MS-1565 Mystic Light Keyboard (64 Byte) @@ -24,16 +22,13 @@ @comment \*-------------------------------------------------------------------*/ -RGBController_MSIKeyboard::RGBController_MSIKeyboard -( - MSIKeyboardController *controller_ptr -) +RGBController_MSIKeyboard1565::RGBController_MSIKeyboard1565(MSIKeyboard1565Controller *controller_ptr) { controller = controller_ptr; name = controller->GetDeviceName(); vendor = "MSI"; type = DEVICE_TYPE_KEYBOARD; - description = "MSI Mystic Light MS-1565"; + description = "MSI Mystic Light MS-1565 Keyboard Device"; version = controller->GetFWVersion(); location = controller->GetDeviceLocation(); serial = controller->GetSerial(); @@ -41,23 +36,23 @@ RGBController_MSIKeyboard::RGBController_MSIKeyboard SetupColors(); } -RGBController_MSIKeyboard::~RGBController_MSIKeyboard() +RGBController_MSIKeyboard1565::~RGBController_MSIKeyboard1565() { Shutdown(); delete controller; } -void RGBController_MSIKeyboard::SetupZones() +void RGBController_MSIKeyboard1565::SetupZones() { } -void RGBController_MSIKeyboard::DeviceUpdateMode() +void RGBController_MSIKeyboard1565::DeviceUpdateMode() { DeviceUpdateLEDs(); } -void RGBController_MSIKeyboard::DeviceUpdateLEDs() +void RGBController_MSIKeyboard1565::DeviceUpdateLEDs() { mode &Mode = modes[active_mode]; MS_1565_MODE msi_mode = (MS_1565_MODE)Mode.value; @@ -96,15 +91,15 @@ void RGBController_MSIKeyboard::DeviceUpdateLEDs() controller->SetMode(msi_mode, speed1, speed2, wave_direction, zone, ck); } -void RGBController_MSIKeyboard::DeviceUpdateZoneLEDs(int /*zone*/) +void RGBController_MSIKeyboard1565::DeviceUpdateZoneLEDs(int /*zone*/) { } -void RGBController_MSIKeyboard::DeviceUpdateSingleLED(int /*led*/) +void RGBController_MSIKeyboard1565::DeviceUpdateSingleLED(int /*led*/) { } -void RGBController_MSIKeyboard::SetupModes() +void RGBController_MSIKeyboard1565::SetupModes() { SetupZonesMode("Off", MS_1565_MODE::MS_1565_OFF, 0); SetupZonesMode("Static", MS_1565_MODE::MS_1565_STEADY, MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | @@ -121,7 +116,7 @@ void RGBController_MSIKeyboard::SetupModes() MODE_FLAG_HAS_DIRECTION_LR); } -void RGBController_MSIKeyboard::SetupMode +void RGBController_MSIKeyboard1565::SetupMode ( const std::string name, MS_1565_MODE mod, @@ -183,7 +178,7 @@ void RGBController_MSIKeyboard::SetupMode controller->mode_zones.push_back(zone); } -void RGBController_MSIKeyboard::SetupZonesMode +void RGBController_MSIKeyboard1565::SetupZonesMode ( const std::string name, MS_1565_MODE mod, diff --git a/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLigh64ControllerDetect.cpp b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLigh64ControllerDetect.cpp new file mode 100644 index 000000000..c4f1af450 --- /dev/null +++ b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLigh64ControllerDetect.cpp @@ -0,0 +1,39 @@ +/*---------------------------------------------------------*\ +| MSIMysticLigh64ControllerDetect.cpp | +| | +| Detector for MSI Mystic Light 64 keyboards | +| | +| This file is part of the OpenRGB project | +| SPDX-License-Identifier: GPL-2.0-or-later | +\*---------------------------------------------------------*/ + +#include "DetectionManager.h" +#include "MSIMysticLight64Controller.h" +#include "RGBController_MSIMysticLight64.h" + +/*---------------------------------------------------------*\ +| USB IDs | +\*---------------------------------------------------------*/ +#define MSI_USB_VID 0x1462 + +DetectedControllers DetectMSIMysticLight64Controllers(hid_device_info* info, const std::string& /*name*/) +{ + DetectedControllers detected_controllers; + hid_device* dev; + + dev = hid_open_path(info->path); + + if(dev != nullptr) + { + MSIMysticLight64Controller* controller = new MSIMysticLight64Controller(dev, info->path); + RGBController_MSIMysticLight64* rgb_controller = new RGBController_MSIMysticLight64(controller); + + detected_controllers.push_back(rgb_controller); + } + + return(detected_controllers); +} + +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1562", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1562, 0x00FF, 0x01); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1563", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1563, 0x00FF, 0x01); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1564", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1564, 0x00FF, 0x01); \ No newline at end of file diff --git a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp similarity index 86% rename from Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp rename to Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp index df0fb8ecd..beb40672d 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp +++ b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.cpp @@ -17,17 +17,10 @@ #include "MSIMysticLight64Controller.h" #include "StringUtils.h" -MSIMysticLight64Controller::MSIMysticLight64Controller -( - hid_device *handle, - const char *path -) +MSIMysticLight64Controller::MSIMysticLight64Controller(hid_device *handle, const char *path) { - dev = handle; - if(dev) - { - location = path; - } + dev = handle; + location = path; } MSIMysticLight64Controller::~MSIMysticLight64Controller() @@ -37,26 +30,30 @@ MSIMysticLight64Controller::~MSIMysticLight64Controller() void MSIMysticLight64Controller::SetMode ( - MSI_64_MODE mode, - MSI_SPEED speed, - MSI_BRIGHTNESS brightness, - unsigned int num_colors, - Color colors[] + MSI_64_MODE mode, + MSI_64_SPEED speed, + MSI_64_BRIGHTNESS brightness, + unsigned int num_colors, + Color colors[] ) { FeaturePacket_64 data; + for(int i = 0; i < MSI_64_MAX_COLORS; i++) { - data.colors[i] = colors[i]; + data.colors[i] = colors[i]; } - data.speed = speed; - data.brightness = brightness; - data.num_colors = num_colors; - data.mode = mode; + + data.speed = speed; + data.brightness = brightness; + data.num_colors = num_colors; + data.mode = mode; + /*-----------------------------------------------------*\ | Send packet to hardware, return true if successful | \*-----------------------------------------------------*/ hid_send_feature_report(dev, (unsigned char *)&data, sizeof(data)); + return; } diff --git a/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.h b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.h new file mode 100644 index 000000000..1a5f53815 --- /dev/null +++ b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/MSIMysticLight64Controller.h @@ -0,0 +1,102 @@ +/*---------------------------------------------------------*\ +| MSIMysticLight64Controller.h | +| | +| Driver for MSI Mystic Light 64-byte motherboard | +| | +| T-bond 03 Apr 2020 | +| Adam Honse 06 Mar 2021 | +| Elchanan Haas 23 Aug 2022 | +| | +| This file is part of the OpenRGB project | +| SPDX-License-Identifier: GPL-2.0-or-later | +\*---------------------------------------------------------*/ + +#pragma once + +#include +#include +#include +#include "RGBController.h" + +enum MSI_64_BRIGHTNESS +{ + MSI_64_BRIGHTNESS_OFF = 0, + MSI_64_BRIGHTNESS_LEVEL_10 = 1, + MSI_64_BRIGHTNESS_LEVEL_20 = 2, + MSI_64_BRIGHTNESS_LEVEL_30 = 3, + MSI_64_BRIGHTNESS_LEVEL_40 = 4, + MSI_64_BRIGHTNESS_LEVEL_50 = 5, + MSI_64_BRIGHTNESS_LEVEL_60 = 6, + MSI_64_BRIGHTNESS_LEVEL_70 = 7, + MSI_64_BRIGHTNESS_LEVEL_80 = 8, + MSI_64_BRIGHTNESS_LEVEL_90 = 9, + MSI_64_BRIGHTNESS_LEVEL_100 = 10, +}; + +enum MSI_64_MODE +{ + MSI_64_OFF = 0, + MSI_64_STEADY = 1, + MSI_64_BREATHING = 2, + MSI_64_PULSE = 3, + MSI_64_DOUBLE_PULSE = 4, + MSI_64_CYCLE = 5, + MSI_64_SMOOTH_CYCLE = 6, +}; + +enum MSI_64_SPEED +{ + MSI_64_SPEED_LOW = 0, + MSI_64_SPEED_MEDIUM = 1, + MSI_64_SPEED_HIGH = 2, +}; + +#define MSI_64_MAX_COLORS 7 + +struct Color +{ + unsigned char R; + unsigned char G; + unsigned char B; +}; + +struct FeaturePacket_64 +{ + const unsigned char report_id = 0x02; // Report ID + const unsigned char second_byte = 0x00; + unsigned char mode = 0x00; + unsigned char speed = 0x00; + unsigned char brightness = 0x00; + unsigned char num_colors = 0x00; + Color colors[MSI_64_MAX_COLORS] = {}; + const unsigned char padding[37] = {}; //pad to make the packet size 64 bytes +}; + +class MSIMysticLight64Controller +{ +public: + MSIMysticLight64Controller + ( + hid_device* handle, + const char *path + ); + ~MSIMysticLight64Controller(); + + void SetMode + ( + MSI_64_MODE mode, + MSI_64_SPEED speed, + MSI_64_BRIGHTNESS brightness, + unsigned int num_colors, + Color colors[] + ); + + std::string GetDeviceName(); + std::string GetDeviceLocation(); + std::string GetFWVersion(); + std::string GetSerial(); + +private: + hid_device* dev; + std::string location; +}; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp similarity index 63% rename from Controllers/MSIMysticLightController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp rename to Controllers/MSIKeyboardController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp index d96db2c3c..644067417 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp +++ b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.cpp @@ -23,10 +23,7 @@ @comment \*-------------------------------------------------------------------*/ -RGBController_MSIMysticLight64::RGBController_MSIMysticLight64 -( - MSIMysticLight64Controller *controller_ptr -) +RGBController_MSIMysticLight64::RGBController_MSIMysticLight64(MSIMysticLight64Controller *controller_ptr) { controller = controller_ptr; name = controller->GetDeviceName(); @@ -70,15 +67,17 @@ void RGBController_MSIMysticLight64::DeviceUpdateMode() void RGBController_MSIMysticLight64::DeviceUpdateLEDs() { - mode &Mode = modes[active_mode]; - MSI_64_MODE msi_mode = (MSI_64_MODE)Mode.value; - MSI_SPEED speed = (MSI_SPEED)Mode.speed; - MSI_BRIGHTNESS brightness = (MSI_BRIGHTNESS)(Mode.brightness); - Color led_colors[MSI_64_MAX_COLORS] = {}; - unsigned int num_colors = 0; + mode& Mode = modes[active_mode]; + MSI_64_MODE msi_mode = (MSI_64_MODE)Mode.value; + MSI_64_SPEED speed = (MSI_64_SPEED)Mode.speed; + MSI_64_BRIGHTNESS brightness = (MSI_64_BRIGHTNESS)(Mode.brightness); + Color led_colors[MSI_64_MAX_COLORS] = {}; + unsigned int num_colors = 0; + if(Mode.flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR) { num_colors = (unsigned int)Mode.colors.size(); + for(unsigned int i = 0; i < num_colors; i++) { led_colors[i].R = RGBGetRValue(Mode.colors[i]); @@ -86,6 +85,7 @@ void RGBController_MSIMysticLight64::DeviceUpdateLEDs() led_colors[i].B = RGBGetBValue(Mode.colors[i]); } } + controller->SetMode(msi_mode, speed, brightness, num_colors, led_colors); } @@ -102,49 +102,50 @@ void RGBController_MSIMysticLight64::DeviceUpdateSingleLED(int /*led*/) void RGBController_MSIMysticLight64::SetupModes() { unsigned int TRANSITION=MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR; - SetupMode("Off", MSI_64_MODE::MSI_64_OFF, 0); - SetupMode("Static", MSI_64_MODE::MSI_64_STEADY, MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR); - SetupMode("Breathing", MSI_64_MODE::MSI_64_BREATHING, TRANSITION); - SetupMode("Flashing", MSI_64_MODE::MSI_64_PULSE, TRANSITION); - SetupMode("Double Flashing", MSI_64_MODE::MSI_64_DOUBLE_PULSE, TRANSITION); - SetupMode("Spectrum Cycle", MSI_64_MODE::MSI_64_CYCLE, TRANSITION); - SetupMode("Smooth Spectrum Cycle", MSI_64_MODE::MSI_64_SMOOTH_CYCLE, TRANSITION); + + SetupMode("Off", MSI_64_MODE::MSI_64_OFF, 0); + SetupMode("Static", MSI_64_MODE::MSI_64_STEADY, MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR); + SetupMode("Breathing", MSI_64_MODE::MSI_64_BREATHING, TRANSITION); + SetupMode("Flashing", MSI_64_MODE::MSI_64_PULSE, TRANSITION); + SetupMode("Double Flashing", MSI_64_MODE::MSI_64_DOUBLE_PULSE, TRANSITION); + SetupMode("Spectrum Cycle", MSI_64_MODE::MSI_64_CYCLE, TRANSITION); + SetupMode("Smooth Spectrum Cycle", MSI_64_MODE::MSI_64_SMOOTH_CYCLE, TRANSITION); } -void RGBController_MSIMysticLight64::SetupMode -( - const char *name, - MSI_64_MODE mod, - unsigned int flags -) + +void RGBController_MSIMysticLight64::SetupMode(const char *name, MSI_64_MODE mod, unsigned int flags) { mode Mode; - Mode.name = name; - Mode.value = mod; - Mode.flags = flags; + + Mode.name = name; + Mode.value = mod; + Mode.flags = flags; + if(flags & MODE_FLAG_HAS_BRIGHTNESS) { - Mode.brightness_min = MSI_BRIGHTNESS_LEVEL_10; - Mode.brightness_max = MSI_BRIGHTNESS_LEVEL_100; - Mode.brightness = MSI_BRIGHTNESS_LEVEL_100; + Mode.brightness_min = MSI_64_BRIGHTNESS_LEVEL_10; + Mode.brightness_max = MSI_64_BRIGHTNESS_LEVEL_100; + Mode.brightness = MSI_64_BRIGHTNESS_LEVEL_100; } if(flags & MODE_FLAG_HAS_SPEED) { - Mode.speed_min = MSI_SPEED_LOW; - Mode.speed_max = MSI_SPEED_HIGH; - Mode.speed = MSI_SPEED_LOW; + Mode.speed_min = MSI_64_SPEED_LOW; + Mode.speed_max = MSI_64_SPEED_HIGH; + Mode.speed = MSI_64_SPEED_LOW; } if(flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR) { - Mode.color_mode= MODE_COLORS_MODE_SPECIFIC; - Mode.colors_min = 1; - Mode.colors_max = 1; - if (flags & MODE_FLAG_HAS_SPEED) + Mode.color_mode = MODE_COLORS_MODE_SPECIFIC; + Mode.colors_min = 1; + Mode.colors_max = 1; + + if(flags & MODE_FLAG_HAS_SPEED) { Mode.colors_max = MSI_64_MAX_COLORS; } - /*-------------------------------------------------*\ - | Set up colors for rainbow cycle | - \*-------------------------------------------------*/ + + /*-------------------------------------------------*\ + | Set up colors for rainbow cycle | + \*-------------------------------------------------*/ Mode.colors.push_back(0x000000FF); Mode.colors.push_back(0x000050FF); Mode.colors.push_back(0x0000FFFF); diff --git a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.h b/Controllers/MSIKeyboardController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.h similarity index 100% rename from Controllers/MSIMysticLightController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.h rename to Controllers/MSIKeyboardController/MSIMysticLight64Controller/RGBController_MSIMysticLight64.h diff --git a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.cpp b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.cpp similarity index 90% rename from Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.cpp index 536a81730..6dfafda6f 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight112Controller.cpp | +| MSIMotherboard112Controller.cpp | | | | Driver for MSI Mystic Light 112-byte motherboard | | | @@ -12,7 +12,7 @@ #include #include #include -#include "MSIMysticLight112Controller.h" +#include "MSIMotherboard112Controller.h" #include "StringUtils.h" #define BITSET(val, bit, pos) ((unsigned char)std::bitset<8>(val).set((pos), (bit)).to_ulong()) @@ -32,12 +32,7 @@ const std::vector zones_set = MSI_ZONE_ON_BOARD_LED_0 }; -MSIMysticLight112Controller::MSIMysticLight112Controller - ( - hid_device* handle, - const char* path, - std::string dev_name - ) +MSIMotherboard112Controller::MSIMotherboard112Controller(hid_device* handle, const char* path, std::string dev_name) { dev = handle; location = path; @@ -49,15 +44,15 @@ MSIMysticLight112Controller::MSIMysticLight112Controller ReadSettings(); } - /*-----------------------------------------*\ - | Initialize save flag | - \*-----------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize save flag | + \*-----------------------------------------------------*/ data.save_data = 0; data.on_board_led.colorFlags = 0x81; // force MS bit of color flags to 1 to have expected zone control - /*-----------------------------------------*\ - | Initialize zone based per LED data | - \*-----------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize zone based per LED data | + \*-----------------------------------------------------*/ numof_onboard_leds = 7; supported_zones = &zones_set; @@ -84,12 +79,12 @@ MSIMysticLight112Controller::MSIMysticLight112Controller direct_mode = false; } -MSIMysticLight112Controller::~MSIMysticLight112Controller() +MSIMotherboard112Controller::~MSIMotherboard112Controller() { hid_close(dev); } -void MSIMysticLight112Controller::SetMode +void MSIMotherboard112Controller::SetMode ( MSI_ZONE zone, MSI_MODE mode, @@ -138,24 +133,24 @@ void MSIMysticLight112Controller::SetMode } } -std::string MSIMysticLight112Controller::GetDeviceName() +std::string MSIMotherboard112Controller::GetDeviceName() { return name; } -std::string MSIMysticLight112Controller::GetFWVersion() +std::string MSIMotherboard112Controller::GetFWVersion() { std::string firmware_version; firmware_version = "APROM: " + version_APROM + ", LDROM: " + version_LDROM; return firmware_version; } -std::string MSIMysticLight112Controller::GetDeviceLocation() +std::string MSIMotherboard112Controller::GetDeviceLocation() { return("HID: " + location); } -std::string MSIMysticLight112Controller::GetSerial() +std::string MSIMotherboard112Controller::GetSerial() { wchar_t serial_string[128]; int ret = hid_get_serial_number_string(dev, serial_string, 128); @@ -168,7 +163,7 @@ std::string MSIMysticLight112Controller::GetSerial() return(StringUtils::wstring_to_string(serial_string)); } -bool MSIMysticLight112Controller::ReadSettings() +bool MSIMotherboard112Controller::ReadSettings() { /*-----------------------------------------------------*\ | Read packet from hardware, return true if successful | @@ -176,7 +171,7 @@ bool MSIMysticLight112Controller::ReadSettings() return(hid_get_feature_report(dev, (unsigned char*)&data, sizeof(data)) == sizeof data); } -bool MSIMysticLight112Controller::Update +bool MSIMotherboard112Controller::Update ( bool save ) @@ -195,7 +190,7 @@ bool MSIMysticLight112Controller::Update } } -void MSIMysticLight112Controller::SetZoneColor +void MSIMotherboard112Controller::SetZoneColor ( MSI_ZONE zone, unsigned char red1, @@ -239,7 +234,7 @@ void MSIMysticLight112Controller::SetZoneColor } } -void MSIMysticLight112Controller::SetLedColor +void MSIMotherboard112Controller::SetLedColor ( MSI_ZONE zone, unsigned char red, @@ -267,7 +262,7 @@ void MSIMysticLight112Controller::SetLedColor zone_data->color2.B = blu; } -ZoneData *MSIMysticLight112Controller::GetZoneData +ZoneData *MSIMotherboard112Controller::GetZoneData ( FeaturePacket_112& data_packet, MSI_ZONE zone @@ -302,7 +297,7 @@ ZoneData *MSIMysticLight112Controller::GetZoneData return nullptr; } -bool MSIMysticLight112Controller::ReadFwVersion() +bool MSIMotherboard112Controller::ReadFwVersion() { unsigned char request[64]; unsigned char response[64]; @@ -384,12 +379,12 @@ bool MSIMysticLight112Controller::ReadFwVersion() return(ret_val > 0); } -MSI_MODE MSIMysticLight112Controller::GetMode() +MSI_MODE MSIMotherboard112Controller::GetMode() { return (MSI_MODE)data.on_board_led.effect; } -void MSIMysticLight112Controller::GetMode +void MSIMotherboard112Controller::GetMode ( MSI_ZONE zone, MSI_MODE &mode, @@ -422,7 +417,7 @@ void MSIMysticLight112Controller::GetMode color = ToRGBColor(zone_data->color.R, zone_data->color.G, zone_data->color.B); } -void MSIMysticLight112Controller::SetDirectMode +void MSIMotherboard112Controller::SetDirectMode ( bool mode ) @@ -430,7 +425,7 @@ void MSIMysticLight112Controller::SetDirectMode direct_mode = mode; } -size_t MSIMysticLight112Controller::GetMaxOnboardLeds() +size_t MSIMotherboard112Controller::GetMaxOnboardLeds() { return numof_onboard_leds; } diff --git a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.h b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.h similarity index 94% rename from Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.h rename to Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.h index 5fa697b43..66a29df84 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/MSIMysticLight112Controller.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/MSIMotherboard112Controller.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight112Controller.h | +| MSIMotherboard112Controller.h | | | | Driver for MSI Mystic Light 112-byte motherboard | | | @@ -14,20 +14,20 @@ #include #include #include -#include "MSIMysticLightCommon.h" +#include "MSIMotherboardCommon.h" #include "RGBController.h" -class MSIMysticLight112Controller +class MSIMotherboard112Controller { public: - MSIMysticLight112Controller + MSIMotherboard112Controller ( hid_device* handle, const char* path, std::string dev_name ); - ~MSIMysticLight112Controller(); + ~MSIMotherboard112Controller(); void SetMode ( diff --git a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.cpp b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.cpp similarity index 86% rename from Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.cpp index 814819b87..95805f76e 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight112.cpp | +| RGBController_MSIMotherboard112.cpp | | | | RGBController for MSI Mystic Light 112-byte motherboard | | | @@ -9,7 +9,7 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "RGBController_MSIMysticLight112.h" +#include "RGBController_MSIMotherboard112.h" struct ZoneDescription { @@ -36,14 +36,11 @@ static std::vector zone_description; @save :robot: @direct :white_check_mark: @effects :white_check_mark: - @detectors DetectMSIMysticLightControllers + @detectors DetectMSIMotherboardControllers @comment \*-------------------------------------------------------------------*/ -RGBController_MSIMysticLight112::RGBController_MSIMysticLight112 - ( - MSIMysticLight112Controller* controller_ptr - ) +RGBController_MSIMotherboard112::RGBController_MSIMotherboard112(MSIMotherboard112Controller* controller_ptr) { controller = controller_ptr; @@ -76,7 +73,7 @@ RGBController_MSIMysticLight112::RGBController_MSIMysticLight112 GetDeviceConfig(); } -RGBController_MSIMysticLight112::~RGBController_MSIMysticLight112() +RGBController_MSIMotherboard112::~RGBController_MSIMotherboard112() { Shutdown(); @@ -84,7 +81,7 @@ RGBController_MSIMysticLight112::~RGBController_MSIMysticLight112() delete controller; } -int RGBController_MSIMysticLight112::GetDeviceMode() +int RGBController_MSIMotherboard112::GetDeviceMode() { MSI_MODE mode = controller->GetMode(); @@ -99,11 +96,11 @@ int RGBController_MSIMysticLight112::GetDeviceMode() return 0; } -void RGBController_MSIMysticLight112::SetupZones() +void RGBController_MSIMotherboard112::SetupZones() { - /*---------------------------------------------------------*\ - | Set up zones | - \*---------------------------------------------------------*/ + /*-----------------------------------------------------*\ + | Set up zones | + \*-----------------------------------------------------*/ for(std::size_t zone_idx = 0; zone_idx < zone_description.size(); ++zone_idx) { const ZoneDescription* zd = zone_description[zone_idx]; @@ -143,9 +140,9 @@ void RGBController_MSIMysticLight112::SetupZones() zones.push_back(new_zone); } - /*---------------------------------------------------------*\ - | Set up LEDs | - \*---------------------------------------------------------*/ + /*-----------------------------------------------------*\ + | Set up LEDs | + \*-----------------------------------------------------*/ for(std::size_t zone_idx = 0; zone_idx < zone_description.size(); ++zone_idx) { for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; ++led_idx) @@ -165,7 +162,7 @@ void RGBController_MSIMysticLight112::SetupZones() } } -void RGBController_MSIMysticLight112::DeviceUpdateLEDs() +void RGBController_MSIMotherboard112::DeviceUpdateLEDs() { for(std::size_t zone_idx = 0; zone_idx < zones.size(); ++zone_idx) { @@ -177,7 +174,7 @@ void RGBController_MSIMysticLight112::DeviceUpdateLEDs() controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight112::DeviceUpdateZoneLEDs +void RGBController_MSIMotherboard112::DeviceUpdateZoneLEDs ( int zone ) @@ -189,7 +186,7 @@ void RGBController_MSIMysticLight112::DeviceUpdateZoneLEDs controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight112::DeviceUpdateSingleLED +void RGBController_MSIMotherboard112::DeviceUpdateSingleLED ( int led ) @@ -198,7 +195,7 @@ void RGBController_MSIMysticLight112::DeviceUpdateSingleLED controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight112::DeviceUpdateMode() +void RGBController_MSIMotherboard112::DeviceUpdateMode() { if(modes[active_mode].value == MSI_MODE_DIRECT_DUMMY) { @@ -211,12 +208,12 @@ void RGBController_MSIMysticLight112::DeviceUpdateMode() } } -void RGBController_MSIMysticLight112::DeviceSaveMode() +void RGBController_MSIMotherboard112::DeviceSaveMode() { controller->Update(true); } -void RGBController_MSIMysticLight112::SetupModes() +void RGBController_MSIMotherboard112::SetupModes() { constexpr unsigned int PER_LED_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; constexpr unsigned int RANDOM_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE; @@ -246,7 +243,7 @@ void RGBController_MSIMysticLight112::SetupModes() SetupMode("Rainbow double flashing", MSI_MODE_RAINBOW_DOUBLE_FLASHING, RANDOM_ONLY); } -void RGBController_MSIMysticLight112::UpdateLed +void RGBController_MSIMotherboard112::UpdateLed ( int zone, int led @@ -272,7 +269,7 @@ void RGBController_MSIMysticLight112::UpdateLed } } -void RGBController_MSIMysticLight112::SetupMode +void RGBController_MSIMotherboard112::SetupMode ( const char *name, MSI_MODE mod, @@ -301,11 +298,12 @@ void RGBController_MSIMysticLight112::SetupMode } else { - /*---------------------------------------------------------*\ - | For modes without speed this needs to be set to avoid | - | bad values in the saved profile which in turn corrupts | - | the brightness calculation when loading the profile | - \*---------------------------------------------------------*/ + /*-------------------------------------------------*\ + | For modes without speed this needs to be set to | + | avoid bad values in the saved profile which in | + | turn corrupts the brightness calculation when | + | loading the profile | + \*-------------------------------------------------*/ Mode.speed = 0; Mode.speed_max = 0; Mode.speed_min = 0; @@ -327,7 +325,7 @@ void RGBController_MSIMysticLight112::SetupMode modes.push_back(Mode); } -void RGBController_MSIMysticLight112::GetDeviceConfig() +void RGBController_MSIMotherboard112::GetDeviceConfig() { MSI_MODE mode; MSI_SPEED speed; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.h b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.h similarity index 80% rename from Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.h rename to Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.h index fe4149f26..eff383248 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight112Controller/RGBController_MSIMysticLight112.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard112Controller/RGBController_MSIMotherboard112.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight112.h | +| RGBController_MSIMotherboard112.h | | | | RGBController for MSI Mystic Light 112-byte motherboard | | | @@ -12,13 +12,13 @@ #pragma once #include "RGBController.h" -#include "MSIMysticLight112Controller.h" +#include "MSIMotherboard112Controller.h" -class RGBController_MSIMysticLight112: public RGBController +class RGBController_MSIMotherboard112: public RGBController { public: - RGBController_MSIMysticLight112(MSIMysticLight112Controller* controller_ptr); - ~RGBController_MSIMysticLight112(); + RGBController_MSIMotherboard112(MSIMotherboard112Controller* controller_ptr); + ~RGBController_MSIMotherboard112(); void SetupZones(); @@ -30,7 +30,7 @@ public: void DeviceSaveMode(); private: - MSIMysticLight112Controller* controller; + MSIMotherboard112Controller* controller; void SetupModes(); void UpdateLed diff --git a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.cpp b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.cpp similarity index 91% rename from Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.cpp index ce9b958d1..c13c05637 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight162Controller.cpp | +| MSIMotherboard162Controller.cpp | | | | Driver for MSI Mystic Light 162-byte motherboard | | | @@ -13,7 +13,7 @@ #include #include #include -#include "MSIMysticLight162Controller.h" +#include "MSIMotherboard162Controller.h" #include "StringUtils.h" #define BITSET(val, bit, pos) ((unsigned char)std::bitset<8>(val).set((pos), (bit)).to_ulong()) @@ -60,7 +60,7 @@ const std::vector zones_set3 = /*-----------------------------------------------------------------------------------------------------------------------------*\ | Definition of the board sepcific configurations (number of onboard LEDs and supported zones). | | | -| Only tested boards are listed here (refer to MSIMysticLightControllerDetect.cpp). If more boards | +| Only tested boards are listed here (refer to MSIMotherboardControllerDetect.cpp). If more boards | | are tested the list must be extended here. Otherwise the default settings will be used (7 onboard LEDs, all zones supported). | | Boards with yet unknown supported zones are configured to support all zones. | \*-----------------------------------------------------------------------------------------------------------------------------*/ @@ -79,14 +79,7 @@ static const mystic_light_162_config board_configs[] = { 0xB926, 3, &zones_set3 }, // MPG B460 TRIDENT AS }; - -MSIMysticLight162Controller::MSIMysticLight162Controller - ( - hid_device* handle, - const char* path, - unsigned short pid, - std::string dev_name - ) +MSIMotherboard162Controller::MSIMotherboard162Controller(hid_device* handle, const char* path, unsigned short pid, std::string dev_name) { dev = handle; location = path; @@ -98,15 +91,15 @@ MSIMysticLight162Controller::MSIMysticLight162Controller ReadSettings(); } - /*-----------------------------------------*\ - | Initialize save flag | - \*-----------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize save flag | + \*-----------------------------------------------------*/ data.save_data = 0; data.on_board_led.colorFlags = 0x81; // force MS bit of color flags to 1 to have expectd zone control - /*-----------------------------------------*\ - | Initialize zone based per LED data | - \*-----------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize zone based per LED data | + \*-----------------------------------------------------*/ const mystic_light_162_config* board_config = nullptr; for(std::size_t i = 0; i < NUMOF_CONFIGS; ++i) @@ -128,15 +121,14 @@ MSIMysticLight162Controller::MSIMysticLight162Controller numof_onboard_leds = 10; supported_zones = &zones_set0; } - } -MSIMysticLight162Controller::~MSIMysticLight162Controller() +MSIMotherboard162Controller::~MSIMotherboard162Controller() { hid_close(dev); } -void MSIMysticLight162Controller::SetMode +void MSIMotherboard162Controller::SetMode ( MSI_ZONE zone, MSI_MODE mode, @@ -185,24 +177,24 @@ void MSIMysticLight162Controller::SetMode } } -std::string MSIMysticLight162Controller::GetDeviceName() +std::string MSIMotherboard162Controller::GetDeviceName() { return name; } -std::string MSIMysticLight162Controller::GetFWVersion() +std::string MSIMotherboard162Controller::GetFWVersion() { std::string firmware_version; firmware_version = "APROM: " + version_APROM + ", LDROM: " + version_LDROM; return firmware_version; } -std::string MSIMysticLight162Controller::GetDeviceLocation() +std::string MSIMotherboard162Controller::GetDeviceLocation() { return("HID: " + location); } -std::string MSIMysticLight162Controller::GetSerial() +std::string MSIMotherboard162Controller::GetSerial() { wchar_t serial_string[128]; int ret = hid_get_serial_number_string(dev, serial_string, 128); @@ -215,7 +207,7 @@ std::string MSIMysticLight162Controller::GetSerial() return(StringUtils::wstring_to_string(serial_string)); } -bool MSIMysticLight162Controller::ReadSettings() +bool MSIMotherboard162Controller::ReadSettings() { /*-----------------------------------------------------*\ | Read packet from hardware, return true if successful | @@ -223,7 +215,7 @@ bool MSIMysticLight162Controller::ReadSettings() return(hid_get_feature_report(dev, (unsigned char*)&data, sizeof(data)) == sizeof data); } -bool MSIMysticLight162Controller::Update +bool MSIMotherboard162Controller::Update ( bool save ) @@ -235,7 +227,7 @@ bool MSIMysticLight162Controller::Update return (hid_send_feature_report(dev, (unsigned char*)&data, sizeof(data)) == sizeof(data)); } -void MSIMysticLight162Controller::SetZoneColor +void MSIMotherboard162Controller::SetZoneColor ( MSI_ZONE zone, unsigned char red1, @@ -279,7 +271,7 @@ void MSIMysticLight162Controller::SetZoneColor } } -ZoneData *MSIMysticLight162Controller::GetZoneData +ZoneData *MSIMotherboard162Controller::GetZoneData ( FeaturePacket_162& data_packet, MSI_ZONE zone @@ -326,7 +318,7 @@ ZoneData *MSIMysticLight162Controller::GetZoneData return nullptr; } -bool MSIMysticLight162Controller::ReadFwVersion() +bool MSIMotherboard162Controller::ReadFwVersion() { unsigned char request[64]; unsigned char response[64]; @@ -408,12 +400,12 @@ bool MSIMysticLight162Controller::ReadFwVersion() return(ret_val > 0); } -MSI_MODE MSIMysticLight162Controller::GetMode() +MSI_MODE MSIMotherboard162Controller::GetMode() { return (MSI_MODE)data.on_board_led.effect; } -void MSIMysticLight162Controller::GetMode +void MSIMotherboard162Controller::GetMode ( MSI_ZONE zone, MSI_MODE &mode, @@ -446,7 +438,7 @@ void MSIMysticLight162Controller::GetMode color = ToRGBColor(zone_data->color.R, zone_data->color.G, zone_data->color.B); } -size_t MSIMysticLight162Controller::GetMaxOnboardLeds() +size_t MSIMotherboard162Controller::GetMaxOnboardLeds() { return numof_onboard_leds; } diff --git a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.h b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.h similarity index 94% rename from Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.h rename to Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.h index 674ab3dcf..fdb8f365a 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/MSIMysticLight162Controller.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/MSIMotherboard162Controller.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight162Controller.h | +| MSIMotherboard162Controller.h | | | | Driver for MSI Mystic Light 162-byte motherboard | | | @@ -15,13 +15,13 @@ #include #include #include -#include "MSIMysticLightCommon.h" +#include "MSIMotherboardCommon.h" #include "RGBController.h" -class MSIMysticLight162Controller +class MSIMotherboard162Controller { public: - MSIMysticLight162Controller + MSIMotherboard162Controller ( hid_device* handle, const char* path, @@ -29,7 +29,7 @@ public: std::string dev_name ); - ~MSIMysticLight162Controller(); + ~MSIMotherboard162Controller(); void SetMode ( diff --git a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.cpp b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.cpp similarity index 88% rename from Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.cpp index 5d7391c5f..0663694de 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight162.cpp | +| RGBController_MSIMotherboard162.cpp | | | | RGBController for MSI Mystic Light 162-byte motherboard | | | @@ -10,7 +10,7 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "RGBController_MSIMysticLight162.h" +#include "RGBController_MSIMotherboard162.h" struct ZoneDescription { @@ -39,14 +39,11 @@ static std::vector zone_description; @save :robot: @direct :white_check_mark: @effects :white_check_mark: - @detectors DetectMSIMysticLightControllers + @detectors DetectMSIMotherboardControllers @comment \*-------------------------------------------------------------------*/ -RGBController_MSIMysticLight162::RGBController_MSIMysticLight162 - ( - MSIMysticLight162Controller* controller_ptr - ) +RGBController_MSIMotherboard162::RGBController_MSIMotherboard162(MSIMotherboard162Controller* controller_ptr) { controller = controller_ptr; @@ -79,7 +76,7 @@ RGBController_MSIMysticLight162::RGBController_MSIMysticLight162 GetDeviceConfig(); } -RGBController_MSIMysticLight162::~RGBController_MSIMysticLight162() +RGBController_MSIMotherboard162::~RGBController_MSIMotherboard162() { Shutdown(); @@ -87,7 +84,7 @@ RGBController_MSIMysticLight162::~RGBController_MSIMysticLight162() delete controller; } -int RGBController_MSIMysticLight162::GetDeviceMode() +int RGBController_MSIMotherboard162::GetDeviceMode() { MSI_MODE mode = controller->GetMode(); @@ -102,11 +99,11 @@ int RGBController_MSIMysticLight162::GetDeviceMode() return 0; } -void RGBController_MSIMysticLight162::SetupZones() +void RGBController_MSIMotherboard162::SetupZones() { - /*---------------------------------------------------------*\ - | Set up zones | - \*---------------------------------------------------------*/ + /*-----------------------------------------------------*\ + | Set up zones | + \*-----------------------------------------------------*/ for(std::size_t zone_idx = 0; zone_idx < zone_description.size(); ++zone_idx) { const ZoneDescription* zd = zone_description[zone_idx]; @@ -146,9 +143,9 @@ void RGBController_MSIMysticLight162::SetupZones() zones.push_back(new_zone); } - /*---------------------------------------------------------*\ - | Set up LEDs | - \*---------------------------------------------------------*/ + /*-----------------------------------------------------*\ + | Set up LEDs | + \*-----------------------------------------------------*/ for(std::size_t zone_idx = 0; zone_idx < zone_description.size(); ++zone_idx) { for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; ++led_idx) @@ -168,7 +165,7 @@ void RGBController_MSIMysticLight162::SetupZones() } } -void RGBController_MSIMysticLight162::DeviceUpdateLEDs() +void RGBController_MSIMotherboard162::DeviceUpdateLEDs() { for(std::size_t zone_idx = 0; zone_idx < zones.size(); ++zone_idx) { @@ -180,7 +177,7 @@ void RGBController_MSIMysticLight162::DeviceUpdateLEDs() controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight162::DeviceUpdateZoneLEDs +void RGBController_MSIMotherboard162::DeviceUpdateZoneLEDs ( int zone ) @@ -192,7 +189,7 @@ void RGBController_MSIMysticLight162::DeviceUpdateZoneLEDs controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight162::DeviceUpdateSingleLED +void RGBController_MSIMotherboard162::DeviceUpdateSingleLED ( int led ) @@ -201,17 +198,17 @@ void RGBController_MSIMysticLight162::DeviceUpdateSingleLED controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight162::DeviceUpdateMode() +void RGBController_MSIMotherboard162::DeviceUpdateMode() { DeviceUpdateLEDs(); } -void RGBController_MSIMysticLight162::DeviceSaveMode() +void RGBController_MSIMotherboard162::DeviceSaveMode() { controller->Update(true); } -void RGBController_MSIMysticLight162::SetupModes() +void RGBController_MSIMotherboard162::SetupModes() { constexpr unsigned int PER_LED_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; constexpr unsigned int RANDOM_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE; @@ -259,7 +256,7 @@ void RGBController_MSIMysticLight162::SetupModes() // SetupMode("Lava", MSI_MODE_LAVA, COMMON); } -void RGBController_MSIMysticLight162::UpdateLed +void RGBController_MSIMotherboard162::UpdateLed ( int zone, int led @@ -278,7 +275,7 @@ void RGBController_MSIMysticLight162::UpdateLed controller->SetZoneColor((MSI_ZONE)zones[zone].leds[led].value, red, grn, blu, red, grn, blu); } -void RGBController_MSIMysticLight162::SetupMode +void RGBController_MSIMotherboard162::SetupMode ( const char *name, MSI_MODE mod, @@ -307,11 +304,12 @@ void RGBController_MSIMysticLight162::SetupMode } else { - /*---------------------------------------------------------*\ - | For modes without speed this needs to be set to avoid | - | bad values in the saved profile which in turn corrupts | - | the brightness calculation when loading the profile | - \*---------------------------------------------------------*/ + /*-------------------------------------------------*\ + | For modes without speed this needs to be set to | + | avoid bad values in the saved profile which in | + | turn corrupts the brightness calculation when | + | loading the profile | + \*-------------------------------------------------*/ Mode.speed = 0; Mode.speed_max = 0; Mode.speed_min = 0; @@ -333,7 +331,7 @@ void RGBController_MSIMysticLight162::SetupMode modes.push_back(Mode); } -void RGBController_MSIMysticLight162::GetDeviceConfig() +void RGBController_MSIMotherboard162::GetDeviceConfig() { MSI_MODE mode; MSI_SPEED speed; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.h b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.h similarity index 81% rename from Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.h rename to Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.h index bef68852b..f9e70a800 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight162Controller/RGBController_MSIMysticLight162.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard162Controller/RGBController_MSIMotherboard162.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight162.h | +| RGBController_MSIMotherboard162.h | | | | RGBController for MSI Mystic Light 162-byte motherboard | | | @@ -14,13 +14,13 @@ #include #include "RGBController.h" -#include "MSIMysticLight162Controller.h" +#include "MSIMotherboard162Controller.h" -class RGBController_MSIMysticLight162: public RGBController +class RGBController_MSIMotherboard162: public RGBController { public: - RGBController_MSIMysticLight162(MSIMysticLight162Controller* controller_ptr); - ~RGBController_MSIMysticLight162(); + RGBController_MSIMotherboard162(MSIMotherboard162Controller* controller_ptr); + ~RGBController_MSIMotherboard162(); void SetupZones(); @@ -47,5 +47,5 @@ private: int GetDeviceMode(); void GetDeviceConfig(); - MSIMysticLight162Controller* controller; + MSIMotherboard162Controller* controller; }; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp similarity index 72% rename from Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp index 9c143bb0f..1e3a8d272 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight185Controller.cpp | +| MSIMotherboard185Controller.cpp | | | | Driver for MSI Mystic Light 185-byte motherboard | | | @@ -18,7 +18,7 @@ #include #include #include -#include "MSIMysticLight185Controller.h" +#include "MSIMotherboard185Controller.h" #include "StringUtils.h" using namespace std::chrono_literals; @@ -44,7 +44,7 @@ struct mystic_light_185_config int numof_pipe2_leds; // number of pipe 2 leds (used in per LED mode only) int numof_JRGBs; // number of supported JRGB headers (used in per LED mode only) const std::vector* supported_zones; // pointer to vector of supported zones - MSIMysticLight185Controller::DIRECT_MODE per_led_mode; // type of direct mode support + MSIMotherboard185Controller::DIRECT_MODE per_led_mode; // type of direct mode support }; const std::vector all_zones = @@ -248,7 +248,7 @@ const std::vector zones_set21 = /*---------------------------------------------------------------------------------------------------------------------------------*\ | Definition of the board sepcific configurations (number of onboard LEDs and supported zones). | | | -| Only tested boards are listed here (refer to MSIMysticLightControllerDetect.cpp). If more boards | +| Only tested boards are listed here (refer to MSIMotherboardControllerDetect.cpp). If more boards | | are tested the list must be extended here. Otherwise the default settings will be used (6 onboard LEDs, 2 JRGB, no direct mode). | | Boards with yet unknown supported zones are configured to support all zones. | \*---------------------------------------------------------------------------------------------------------------------------------*/ @@ -257,101 +257,101 @@ const std::vector zones_set21 = static const mystic_light_185_config board_configs[] = { - { 0x7B93, 6, 1, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MPG X570 GAMING PRO CARBON WIFI - { 0x7C34, 0, 1, 1, 1, &zones_set8, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MEG X570 GODLIKE - { 0x7C35, 0, 1, 0, 1, &zones_set9, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MEG X570 ACE - { 0x7C36, 6, 1, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // PRESTIGE X570 CREATION - { 0x7C37, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MPG X570 GAMING PLUS - { 0x7C56, 6, 0, 0, 1, &zones_set2, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B550 GAMING PLUS - { 0x7C59, 0, 8, 0, 1, &zones_set9, MSIMysticLight185Controller::DIRECT_MODE_DISABLED }, // CREATOR TRX40 - { 0x7C60, 6, 0, 0, 1, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // TRX40-A PRO - { 0x7C67, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B365M MORTAR - { 0x7C71, 6, 6, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z490 ACE - { 0x7C73, 6, 4, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING CARBON WIFI - { 0x7C75, 6, 0, 0, 1, &zones_set2, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING PLUS - { 0x7C76, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_DISABLED }, // MPG Z490M GAMING EDGE - { 0x7C77, 0, 0, 0, 0, &zones_set14, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z490I UNIFY - { 0x7C79, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING EDGE WIFI - { 0x7C80, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG Z490 TOMAHAWK - { 0x7C02, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B450 TOMAHAWK MAX - { 0x7C81, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B460 TOMAHAWK - { 0x7C82, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B460M MORTAR WIFI - { 0x7C83, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_DISABLED }, // B460M PRO-VDH WIFI - { 0x7C84, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MAG X570 TOMAHAWK WIFI - { 0x7C86, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_DISABLED }, // MPG B460I GAMING EDGE - { 0x7C87, 6, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B450M BAZOOKA MAX WIFI - { 0x7C90, 6, 4, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B550 GAMING CARBON WIFI - { 0x7C91, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B550 TOMAHAWK - { 0x7C92, 6, 0, 0, 0, &zones_set6, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B550I GAMING EDGE WIFI - { 0x7C94, 6, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B550M MORTAR - { 0x7C95, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B550M PRO-VDH WIFI - { 0x7C98, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // Z490 PLUS - { 0x7D03, 0, 15, 18, 1, &zones_set8, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GODLIKE - { 0x7D06, 4, 4, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GAMING FORCE - { 0x7D07, 4, 5, 0, 2, &zones_set7, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GAMING EDGE WIFI - { 0x7D08, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG Z590 TOMAHAWK - { 0x7D09, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // Z590-A PRO WIFI - { 0x7D13, 6, 0, 0, 1, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG B550 UNIFY - { 0x7D14, 6, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // A520M PRO - { 0x7D15, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B560 TOMAHAWK WIFI - { 0x7D17, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B560M MORTAR - { 0x7D18, 6, 0, 0, 2, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B560M PRO-VDH - { 0x7D19, 6, 0, 0, 2, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B560I GAMIING EDGE WIFI - { 0x7D20, 6, 0, 0, 2, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B560M PRO - { 0x7D25, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO Z690-A WIFI DDR4 - { 0x7D27, 6, 0, 0, 2, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z690 ACE - { 0x7D28, 6, 0, 0, 1, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z690 UNIFY-X - { 0x7D29, 6, 0, 0, 0, &zones_set6, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z690I UNIFY - { 0x7D30, 6, 6, 0, 2, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z690 CARBON WIFI - { 0x7D31, 4, 8, 0, 2, &zones_set12, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG EDGE WIFI DDR4 - { 0x7D32, 1, 0, 0, 1, &zones_set10, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG Z690 TOMAHAWK WIFI DDR4 - { 0x7D33, 6, 0, 0, 2, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-VC WIFI - { 0x7D36, 6, 0, 0, 2, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO Z690-P DDR4 - { 0x7D37, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B760M-VC WIFI (MS-7D37) - fans on JRAINBOW2 - { 0x7D38, 0, 0, 0, 1, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z590 UNIFY-X - { 0x7D40, 0, 0, 0, 1, &zones_set5, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B760i EDGE WIFI DDR4 - { 0x7D41, 6, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B660M TOMAHAWK WIFI DDR4 - { 0x7D42, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B660 MORTAR WIFI DDR4 - { 0x7D43, 0, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B660M-A WIFI DDR4 - { 0x7D46, 0, 1, 1, 0, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO H610M-G DDR4 - { 0x7D50, 6, 12, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG X570S ACE MAX - { 0x7D51, 6, 0, 0, 2, &zones_set1, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG X570S UNIFY-X MAX - { 0x7D52, 6, 14, 0, 1, &zones_set3, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG X570S CARBON EK X - { 0x7D53, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG X570S EDGE MAX WIFI - { 0x7D54, 6, 0, 0, 2, &zones_set0, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG X570S TOMAHAWK MAX WIFI - { 0x7D59, 0, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B660-A DDR4 - { 0x7D67, 0, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO X670-P WIFI - { 0x7D69, 9, 2, 4, 1, &zones_set15, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG X670E ACE - { 0x7D70, 0, 6, 0, 1, &zones_set4, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG X670E Carbon WIFI - { 0x7D73, 1, 0, 0, 0, &zones_set6, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B650I EDGE WIFI - { 0x7D74, 0, 6, 0, 1, &zones_set18, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B650 CARBON WIFI - { 0x7D75, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B650 TOMAHAWK WIFI - { 0x7D76, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B650M MORTAR WIFI - { 0x7D77, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B650M-A WIFI - { 0x7D78, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B650-P WIFI - { 0x7D86, 0, 18, 4, 1, &zones_set16, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MEG Z790 ACE - { 0x7D88, 0, 0, 0, 1, &zones_set20, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z790-S WIFI - { 0x7D89, 0, 6, 0, 1, &zones_set18, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z790 CARBON WIFI - { 0x7D90, 0, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B760M BOMBER DDR4 - { 0x7D91, 1, 0, 0, 1, &zones_set10, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG Z790 TOMAHAWK WIFI - { 0x7D93, 6, 0, 0, 1, &zones_set2, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // Z790 GAMING PRO WIFI - { 0x7D96, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B760 TOMAHAWK WIFI DDR5 - { 0x7D97, 6, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B660 MORTAR MAX WIFI DDR4 - { 0x7D98, 0, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B760-P WIFI DDR4 - { 0x7D99, 6, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B760M-A WIFI DDR4 - { 0x7E01, 0, 0, 0, 1, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG B760M MORTAR MAX - { 0x7E03, 6, 0, 0, 0, &zones_set6, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG Z790I EDGE WIFI - { 0x7E06, 0, 0, 0, 2, &zones_set11, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-P WIFI DDR4 - { 0x7E07, 0, 0, 0, 2, &zones_set10, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-A WIFI DDR4 - { 0x7E09, 0, 0, 0, 0, &zones_set19, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650M PROJECT ZERO - { 0x7E10, 0, 6, 0, 2, &zones_set17, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B650 EDGE WIFI - { 0x7E12, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI - { 0x0076, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI (Common PID) - { 0x7E16, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // X670E GAMING PLUS WIFI - { 0x7E24, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650M GAMING PLUS WIFI - { 0x7E26, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650 GAMING PLUS WIFI - { 0x7E27, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // PRO B650M-P - { 0x7E28, 6, 0, 0, 2, &zones_set21, MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO A620M-B (MS-7E28) + { 0x7B93, 6, 1, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MPG X570 GAMING PRO CARBON WIFI + { 0x7C34, 0, 1, 1, 1, &zones_set8, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MEG X570 GODLIKE + { 0x7C35, 0, 1, 0, 1, &zones_set9, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MEG X570 ACE + { 0x7C36, 6, 1, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // PRESTIGE X570 CREATION + { 0x7C37, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MPG X570 GAMING PLUS + { 0x7C56, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B550 GAMING PLUS + { 0x7C59, 0, 8, 0, 1, &zones_set9, MSIMotherboard185Controller::DIRECT_MODE_DISABLED }, // CREATOR TRX40 + { 0x7C60, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // TRX40-A PRO + { 0x7C67, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B365M MORTAR + { 0x7C71, 6, 6, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z490 ACE + { 0x7C73, 6, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING CARBON WIFI + { 0x7C75, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING PLUS + { 0x7C76, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_DISABLED }, // MPG Z490M GAMING EDGE + { 0x7C77, 0, 0, 0, 0, &zones_set14, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z490I UNIFY + { 0x7C79, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z490 GAMING EDGE WIFI + { 0x7C80, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG Z490 TOMAHAWK + { 0x7C02, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B450 TOMAHAWK MAX + { 0x7C81, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B460 TOMAHAWK + { 0x7C82, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B460M MORTAR WIFI + { 0x7C83, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_DISABLED }, // B460M PRO-VDH WIFI + { 0x7C84, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MAG X570 TOMAHAWK WIFI + { 0x7C86, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_DISABLED }, // MPG B460I GAMING EDGE + { 0x7C87, 6, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B450M BAZOOKA MAX WIFI + { 0x7C90, 6, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B550 GAMING CARBON WIFI + { 0x7C91, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B550 TOMAHAWK + { 0x7C92, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B550I GAMING EDGE WIFI + { 0x7C94, 6, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B550M MORTAR + { 0x7C95, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B550M PRO-VDH WIFI + { 0x7C98, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // Z490 PLUS + { 0x7D03, 0, 15, 18, 1, &zones_set8, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GODLIKE + { 0x7D06, 4, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GAMING FORCE + { 0x7D07, 4, 5, 0, 2, &zones_set7, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z590 GAMING EDGE WIFI + { 0x7D08, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG Z590 TOMAHAWK + { 0x7D09, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // Z590-A PRO WIFI + { 0x7D13, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG B550 UNIFY + { 0x7D14, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // A520M PRO + { 0x7D15, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B560 TOMAHAWK WIFI + { 0x7D17, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B560M MORTAR + { 0x7D18, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B560M PRO-VDH + { 0x7D19, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B560I GAMIING EDGE WIFI + { 0x7D20, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B560M PRO + { 0x7D25, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO Z690-A WIFI DDR4 + { 0x7D27, 6, 0, 0, 2, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z690 ACE + { 0x7D28, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z690 UNIFY-X + { 0x7D29, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z690I UNIFY + { 0x7D30, 6, 6, 0, 2, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z690 CARBON WIFI + { 0x7D31, 4, 8, 0, 2, &zones_set12, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG EDGE WIFI DDR4 + { 0x7D32, 1, 0, 0, 1, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG Z690 TOMAHAWK WIFI DDR4 + { 0x7D33, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-VC WIFI + { 0x7D36, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO Z690-P DDR4 + { 0x7D37, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B760M-VC WIFI (MS-7D37) - fans on JRAINBOW2 + { 0x7D38, 0, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z590 UNIFY-X + { 0x7D40, 0, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B760i EDGE WIFI DDR4 + { 0x7D41, 6, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B660M TOMAHAWK WIFI DDR4 + { 0x7D42, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B660 MORTAR WIFI DDR4 + { 0x7D43, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B660M-A WIFI DDR4 + { 0x7D46, 0, 1, 1, 0, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO H610M-G DDR4 + { 0x7D50, 6, 12, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG X570S ACE MAX + { 0x7D51, 6, 0, 0, 2, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG X570S UNIFY-X MAX + { 0x7D52, 6, 14, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG X570S CARBON EK X + { 0x7D53, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG X570S EDGE MAX WIFI + { 0x7D54, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG X570S TOMAHAWK MAX WIFI + { 0x7D59, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B660-A DDR4 + { 0x7D67, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO X670-P WIFI + { 0x7D69, 9, 2, 4, 1, &zones_set15, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG X670E ACE + { 0x7D70, 0, 6, 0, 1, &zones_set4, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG X670E Carbon WIFI + { 0x7D73, 1, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B650I EDGE WIFI + { 0x7D74, 0, 6, 0, 1, &zones_set18, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B650 CARBON WIFI + { 0x7D75, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B650 TOMAHAWK WIFI + { 0x7D76, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B650M MORTAR WIFI + { 0x7D77, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B650M-A WIFI + { 0x7D78, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B650-P WIFI + { 0x7D86, 0, 18, 4, 1, &zones_set16, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MEG Z790 ACE + { 0x7D88, 0, 0, 0, 1, &zones_set20, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z790-S WIFI + { 0x7D89, 0, 6, 0, 1, &zones_set18, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z790 CARBON WIFI + { 0x7D90, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B760M BOMBER DDR4 + { 0x7D91, 1, 0, 0, 1, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG Z790 TOMAHAWK WIFI + { 0x7D93, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // Z790 GAMING PRO WIFI + { 0x7D96, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B760 TOMAHAWK WIFI DDR5 + { 0x7D97, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B660 MORTAR MAX WIFI DDR4 + { 0x7D98, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B760-P WIFI DDR4 + { 0x7D99, 6, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B760M-A WIFI DDR4 + { 0x7E01, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG B760M MORTAR MAX + { 0x7E03, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG Z790I EDGE WIFI + { 0x7E06, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-P WIFI DDR4 + { 0x7E07, 0, 0, 0, 2, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO Z790-A WIFI DDR4 + { 0x7E09, 0, 0, 0, 0, &zones_set19, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B650M PROJECT ZERO + { 0x7E10, 0, 6, 0, 2, &zones_set17, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MPG B650 EDGE WIFI + { 0x7E12, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI + { 0x0076, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI (Common PID) + { 0x7E16, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // X670E GAMING PLUS WIFI + { 0x7E24, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B650M GAMING PLUS WIFI + { 0x7E26, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // B650 GAMING PLUS WIFI + { 0x7E27, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED }, // PRO B650M-P + { 0x7E28, 6, 0, 0, 2, &zones_set21, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO A620M-B (MS-7E28) }; @@ -365,13 +365,7 @@ Color* per_led_jrainbow1_sync; Color* per_led_jrainbow2_sync; Color* per_led_jcorsair_sync; -MSIMysticLight185Controller::MSIMysticLight185Controller - ( - hid_device* handle, - const char* path, - unsigned short pid, - std::string dev_name - ) +MSIMotherboard185Controller::MSIMotherboard185Controller(hid_device* handle, const char* path, unsigned short pid, std::string dev_name) { dev = handle; location = path; @@ -396,9 +390,9 @@ MSIMysticLight185Controller::MSIMysticLight185Controller mixed_mode_support = true; } - /*---------------------------------------------*\ - | Initialize save flag and some static settings | - \*---------------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize save flag and some static settings | + \*-----------------------------------------------------*/ data.save_data = 0; data.on_board_led.colorFlags = 0x80 | SYNC_SETTING_ONBOARD; // always enable onboard sync flag to have expected zone control @@ -432,9 +426,9 @@ MSIMysticLight185Controller::MSIMysticLight185Controller per_led_mode = DIRECT_MODE_DISABLED; } - /*-----------------------------------------*\ - | Initialize per-LED data | - \*-----------------------------------------*/ + /*-----------------------------------------------------*\ + | Initialize per-LED data | + \*-----------------------------------------------------*/ std::memset(per_led_data_onboard_and_sync.leds, 0, sizeof(Color) * NUMOF_PER_LED_MODE_LEDS); std::memset(per_led_data_jrainbow1.leds, 0, sizeof(Color) * NUMOF_PER_LED_MODE_LEDS); per_led_data_jrainbow1.hdr1 = 4; @@ -483,99 +477,99 @@ MSIMysticLight185Controller::MSIMysticLight185Controller } } - /*---------------------------------------------------------------------------------------------------------*\ - | Set up per-LED switching message for synchronized mode. | - | Static initialization made problems with some compilers. Therefore this is done programmatically here. | - \*---------------------------------------------------------------------------------------------------------*/ - enable_per_led_msg.j_rgb_1.speedAndBrightnessFlags = 0x08; - enable_per_led_msg.j_rgb_1.colorFlags = 0x80; - enable_per_led_msg.j_pipe_1.speedAndBrightnessFlags = 0x2A; - enable_per_led_msg.j_pipe_1.colorFlags = 0x80; - enable_per_led_msg.j_pipe_2.speedAndBrightnessFlags = 0x2A; - enable_per_led_msg.j_pipe_2.colorFlags = 0x80; - enable_per_led_msg.j_rainbow_1.speedAndBrightnessFlags = 0x29; - enable_per_led_msg.j_rainbow_1.colorFlags = 0x80; - enable_per_led_msg.j_rainbow_1.cycle_or_led_num = 0x28; - enable_per_led_msg.j_rainbow_2.speedAndBrightnessFlags = 0x29; - enable_per_led_msg.j_rainbow_2.colorFlags = 0x80; - enable_per_led_msg.j_rainbow_2.cycle_or_led_num = 0x28; - enable_per_led_msg.j_corsair.fan_flags = 0x29; - enable_per_led_msg.j_corsair.corsair_quantity = 0x00; - enable_per_led_msg.j_corsair.padding[2] = 0x82; - enable_per_led_msg.j_corsair.is_individual = 0x78; + /*-----------------------------------------------------*\ + | Set up per-LED switching message for synchronized | + | mode. | + \*-----------------------------------------------------*/ + enable_per_led_msg.j_rgb_1.speedAndBrightnessFlags = 0x08; + enable_per_led_msg.j_rgb_1.colorFlags = 0x80; + enable_per_led_msg.j_pipe_1.speedAndBrightnessFlags = 0x2A; + enable_per_led_msg.j_pipe_1.colorFlags = 0x80; + enable_per_led_msg.j_pipe_2.speedAndBrightnessFlags = 0x2A; + enable_per_led_msg.j_pipe_2.colorFlags = 0x80; + enable_per_led_msg.j_rainbow_1.speedAndBrightnessFlags = 0x29; + enable_per_led_msg.j_rainbow_1.colorFlags = 0x80; + enable_per_led_msg.j_rainbow_1.cycle_or_led_num = 0x28; + enable_per_led_msg.j_rainbow_2.speedAndBrightnessFlags = 0x29; + enable_per_led_msg.j_rainbow_2.colorFlags = 0x80; + enable_per_led_msg.j_rainbow_2.cycle_or_led_num = 0x28; + enable_per_led_msg.j_corsair.fan_flags = 0x29; + enable_per_led_msg.j_corsair.corsair_quantity = 0x00; + enable_per_led_msg.j_corsair.padding[2] = 0x82; + enable_per_led_msg.j_corsair.is_individual = 0x78; enable_per_led_msg.j_corsair_outerll120.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.j_corsair_outerll120.colorFlags = 0x80; - enable_per_led_msg.on_board_led.effect = MSI_DIRECT_MODE; - enable_per_led_msg.on_board_led.speedAndBrightnessFlags = 0x29 | SYNC_SETTING_JRGB; - enable_per_led_msg.on_board_led.colorFlags = PER_LED_FULL_SYNC_MODE; - enable_per_led_msg.on_board_led_1.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_1.colorFlags = 0x80; - enable_per_led_msg.on_board_led_2.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_2.colorFlags = 0x80; - enable_per_led_msg.on_board_led_3.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_3.colorFlags = 0x80; - enable_per_led_msg.on_board_led_4.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_4.colorFlags = 0x80; - enable_per_led_msg.on_board_led_5.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_5.colorFlags = 0x80; - enable_per_led_msg.on_board_led_6.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_6.colorFlags = 0x80; - enable_per_led_msg.on_board_led_7.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_7.colorFlags = 0x80; - enable_per_led_msg.on_board_led_8.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_8.colorFlags = 0x80; - enable_per_led_msg.on_board_led_9.speedAndBrightnessFlags = 0x28; - enable_per_led_msg.on_board_led_9.colorFlags = 0x80; - enable_per_led_msg.j_rgb_2.speedAndBrightnessFlags = 0x2A; - enable_per_led_msg.j_rgb_2.colorFlags = 0x80; + enable_per_led_msg.j_corsair_outerll120.colorFlags = 0x80; + enable_per_led_msg.on_board_led.effect = MSI_DIRECT_MODE; + enable_per_led_msg.on_board_led.speedAndBrightnessFlags = 0x29 | SYNC_SETTING_JRGB; + enable_per_led_msg.on_board_led.colorFlags = PER_LED_FULL_SYNC_MODE; + enable_per_led_msg.on_board_led_1.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_1.colorFlags = 0x80; + enable_per_led_msg.on_board_led_2.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_2.colorFlags = 0x80; + enable_per_led_msg.on_board_led_3.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_3.colorFlags = 0x80; + enable_per_led_msg.on_board_led_4.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_4.colorFlags = 0x80; + enable_per_led_msg.on_board_led_5.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_5.colorFlags = 0x80; + enable_per_led_msg.on_board_led_6.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_6.colorFlags = 0x80; + enable_per_led_msg.on_board_led_7.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_7.colorFlags = 0x80; + enable_per_led_msg.on_board_led_8.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_8.colorFlags = 0x80; + enable_per_led_msg.on_board_led_9.speedAndBrightnessFlags = 0x28; + enable_per_led_msg.on_board_led_9.colorFlags = 0x80; + enable_per_led_msg.j_rgb_2.speedAndBrightnessFlags = 0x2A; + enable_per_led_msg.j_rgb_2.colorFlags = 0x80; - /*-----------------------------------------*\ - | Initialize zone based per LED data | - \*-----------------------------------------*/ - zone_based_per_led_data.j_rgb_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_rgb_1.colorFlags = BITSET(zone_based_per_led_data.j_rgb_1.colorFlags, true, 7u); - zone_based_per_led_data.j_pipe_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_pipe_1.colorFlags = BITSET(zone_based_per_led_data.j_pipe_1.colorFlags, true, 7u); - zone_based_per_led_data.j_pipe_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_pipe_2.colorFlags = BITSET(zone_based_per_led_data.j_pipe_2.colorFlags, true, 7u); - zone_based_per_led_data.j_rainbow_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_rainbow_1.colorFlags = BITSET(zone_based_per_led_data.j_rainbow_1.colorFlags, true, 7u); - zone_based_per_led_data.j_rainbow_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_rainbow_2.colorFlags = BITSET(zone_based_per_led_data.j_rainbow_2.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led.colorFlags = BITSET(zone_based_per_led_data.on_board_led.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_1.colorFlags = BITSET(zone_based_per_led_data.on_board_led_1.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_2.colorFlags = BITSET(zone_based_per_led_data.on_board_led_2.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_3.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_3.colorFlags = BITSET(zone_based_per_led_data.on_board_led_3.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_4.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_4.colorFlags = BITSET(zone_based_per_led_data.on_board_led_4.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_5.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_5.colorFlags = BITSET(zone_based_per_led_data.on_board_led_5.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_6.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2 << 2; - zone_based_per_led_data.on_board_led_6.colorFlags = BITSET(zone_based_per_led_data.on_board_led_6.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_7.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100; - zone_based_per_led_data.on_board_led_7.colorFlags = BITSET(zone_based_per_led_data.on_board_led_7.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_8.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_8.colorFlags = BITSET(zone_based_per_led_data.on_board_led_8.colorFlags, true, 7u); - zone_based_per_led_data.on_board_led_9.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.on_board_led_9.colorFlags = BITSET(zone_based_per_led_data.on_board_led_9.colorFlags, true, 7u); - zone_based_per_led_data.j_rgb_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; - zone_based_per_led_data.j_rgb_2.colorFlags = BITSET(zone_based_per_led_data.j_rgb_2.colorFlags, true, 7u); - zone_based_per_led_data.save_data = 0; + /*-----------------------------------------------------*\ + | Initialize zone based per LED data | + \*-----------------------------------------------------*/ + zone_based_per_led_data.j_rgb_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_rgb_1.colorFlags = BITSET(zone_based_per_led_data.j_rgb_1.colorFlags, true, 7u); + zone_based_per_led_data.j_pipe_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_pipe_1.colorFlags = BITSET(zone_based_per_led_data.j_pipe_1.colorFlags, true, 7u); + zone_based_per_led_data.j_pipe_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_pipe_2.colorFlags = BITSET(zone_based_per_led_data.j_pipe_2.colorFlags, true, 7u); + zone_based_per_led_data.j_rainbow_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_rainbow_1.colorFlags = BITSET(zone_based_per_led_data.j_rainbow_1.colorFlags, true, 7u); + zone_based_per_led_data.j_rainbow_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_rainbow_2.colorFlags = BITSET(zone_based_per_led_data.j_rainbow_2.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led.colorFlags = BITSET(zone_based_per_led_data.on_board_led.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_1.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_1.colorFlags = BITSET(zone_based_per_led_data.on_board_led_1.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_2.colorFlags = BITSET(zone_based_per_led_data.on_board_led_2.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_3.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_3.colorFlags = BITSET(zone_based_per_led_data.on_board_led_3.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_4.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_4.colorFlags = BITSET(zone_based_per_led_data.on_board_led_4.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_5.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_5.colorFlags = BITSET(zone_based_per_led_data.on_board_led_5.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_6.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2 << 2; + zone_based_per_led_data.on_board_led_6.colorFlags = BITSET(zone_based_per_led_data.on_board_led_6.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_7.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100; + zone_based_per_led_data.on_board_led_7.colorFlags = BITSET(zone_based_per_led_data.on_board_led_7.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_8.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_8.colorFlags = BITSET(zone_based_per_led_data.on_board_led_8.colorFlags, true, 7u); + zone_based_per_led_data.on_board_led_9.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.on_board_led_9.colorFlags = BITSET(zone_based_per_led_data.on_board_led_9.colorFlags, true, 7u); + zone_based_per_led_data.j_rgb_2.speedAndBrightnessFlags = MSI_BRIGHTNESS_LEVEL_100 << 2; + zone_based_per_led_data.j_rgb_2.colorFlags = BITSET(zone_based_per_led_data.j_rgb_2.colorFlags, true, 7u); + zone_based_per_led_data.save_data = 0; - direct_mode = false; - sync_direct_mode = true; + direct_mode = false; + sync_direct_mode = true; } -MSIMysticLight185Controller::~MSIMysticLight185Controller() +MSIMotherboard185Controller::~MSIMotherboard185Controller() { hid_close(dev); } -void MSIMysticLight185Controller::SetMode +void MSIMotherboard185Controller::SetMode ( MSI_ZONE zone, MSI_MODE mode, @@ -640,22 +634,22 @@ void MSIMysticLight185Controller::SetMode } } -std::string MSIMysticLight185Controller::GetDeviceName() +std::string MSIMotherboard185Controller::GetDeviceName() { return name; } -std::string MSIMysticLight185Controller::GetFWVersion() +std::string MSIMotherboard185Controller::GetFWVersion() { return std::string("AP/LD ").append(version_APROM).append(" / ").append(version_LDROM); } -std::string MSIMysticLight185Controller::GetDeviceLocation() +std::string MSIMotherboard185Controller::GetDeviceLocation() { return("HID: " + location); } -std::string MSIMysticLight185Controller::GetSerial() +std::string MSIMotherboard185Controller::GetSerial() { wchar_t serial_string[128]; int ret = hid_get_serial_number_string(dev, serial_string, 128); @@ -668,7 +662,7 @@ std::string MSIMysticLight185Controller::GetSerial() return(StringUtils::wstring_to_string(serial_string)); } -bool MSIMysticLight185Controller::ReadSettings() +bool MSIMotherboard185Controller::ReadSettings() { /*-----------------------------------------------------*\ | Read packet from hardware, return true if successful | @@ -676,7 +670,7 @@ bool MSIMysticLight185Controller::ReadSettings() return (hid_get_feature_report(dev, (unsigned char*)&data, sizeof(data)) == sizeof data); } -bool MSIMysticLight185Controller::Update +bool MSIMotherboard185Controller::Update ( bool save ) @@ -719,11 +713,12 @@ bool MSIMysticLight185Controller::Update } else { - /*-----------------------------------------------------*\ - | Save new state, read current state from board, | - | send old state first, then new state. | - | Windows Mystic Light sends two consecutive reports. | - \*-----------------------------------------------------*/ + /*-------------------------------------------------*\ + | Save new state, read current state from board, | + | send old state first, then new state. | + | Windows Mystic Light sends two consecutive | + | reports. | + \*-------------------------------------------------*/ FeaturePacket_185 new_data = data; memcpy((unsigned char*)&new_data, (unsigned char*)&data, sizeof(data)); @@ -737,7 +732,7 @@ bool MSIMysticLight185Controller::Update } } -void MSIMysticLight185Controller::SetZoneColor +void MSIMotherboard185Controller::SetZoneColor ( MSI_ZONE zone, unsigned char red1, @@ -798,7 +793,7 @@ void MSIMysticLight185Controller::SetZoneColor } } -void MSIMysticLight185Controller::SetLedColor +void MSIMotherboard185Controller::SetLedColor ( MSI_ZONE zone, int index, @@ -870,7 +865,7 @@ void MSIMysticLight185Controller::SetLedColor } } -ZoneData *MSIMysticLight185Controller::GetZoneData +ZoneData *MSIMotherboard185Controller::GetZoneData ( FeaturePacket_185& data_packet, MSI_ZONE zone @@ -937,7 +932,7 @@ ZoneData *MSIMysticLight185Controller::GetZoneData return nullptr; } -Color *MSIMysticLight185Controller::GetPerLedZoneData +Color *MSIMotherboard185Controller::GetPerLedZoneData ( MSI_ZONE zone ) @@ -989,7 +984,7 @@ Color *MSIMysticLight185Controller::GetPerLedZoneData return nullptr; } -RainbowZoneData *MSIMysticLight185Controller::GetRainbowZoneData +RainbowZoneData *MSIMotherboard185Controller::GetRainbowZoneData ( MSI_ZONE zone ) @@ -1008,7 +1003,7 @@ RainbowZoneData *MSIMysticLight185Controller::GetRainbowZoneData } } -bool MSIMysticLight185Controller::ReadFwVersion() +bool MSIMotherboard185Controller::ReadFwVersion() { unsigned char request[64]; unsigned char response[64]; @@ -1090,7 +1085,7 @@ bool MSIMysticLight185Controller::ReadFwVersion() return (ret_val > 0); } -MSI_MODE MSIMysticLight185Controller::GetMode() +MSI_MODE MSIMotherboard185Controller::GetMode() { if(data.on_board_led.effect == MSI_DIRECT_MODE) { @@ -1103,7 +1098,7 @@ MSI_MODE MSIMysticLight185Controller::GetMode() } } -void MSIMysticLight185Controller::GetMode +void MSIMotherboard185Controller::GetMode ( MSI_ZONE zone, MSI_MODE &mode, @@ -1136,7 +1131,7 @@ void MSIMysticLight185Controller::GetMode color = ToRGBColor(zone_data->color.R, zone_data->color.G, zone_data->color.B); } -void MSIMysticLight185Controller::SetCycleCount +void MSIMotherboard185Controller::SetCycleCount ( MSI_ZONE zone, unsigned char cycle_num @@ -1153,7 +1148,7 @@ void MSIMysticLight185Controller::SetCycleCount SelectPerLedProtocol(); } -void MSIMysticLight185Controller::SetDirectMode +void MSIMotherboard185Controller::SetDirectMode ( bool mode ) @@ -1162,7 +1157,7 @@ void MSIMysticLight185Controller::SetDirectMode SelectPerLedProtocol(); } -size_t MSIMysticLight185Controller::GetMaxDirectLeds +size_t MSIMotherboard185Controller::GetMaxDirectLeds ( MSI_ZONE zone ) @@ -1217,7 +1212,7 @@ size_t MSIMysticLight185Controller::GetMaxDirectLeds } } -void MSIMysticLight185Controller::SelectPerLedProtocol() +void MSIMotherboard185Controller::SelectPerLedProtocol() { unsigned char jrainbow1_size = 0; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.h b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h similarity index 96% rename from Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.h rename to Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h index 5d5bb7dae..54879b9f5 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight185Controller.h | +| MSIMotherboard185Controller.h | | | | Driver for MSI Mystic Light 185-byte motherboard | | | @@ -20,13 +20,13 @@ #include #include #include -#include "MSIMysticLightCommon.h" +#include "MSIMotherboardCommon.h" #include "RGBController.h" -class MSIMysticLight185Controller +class MSIMotherboard185Controller { public: - MSIMysticLight185Controller + MSIMotherboard185Controller ( hid_device* handle, const char* path, @@ -34,7 +34,7 @@ public: std::string dev_name ); - ~MSIMysticLight185Controller(); + ~MSIMotherboard185Controller(); void SetMode ( diff --git a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.cpp b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.cpp similarity index 92% rename from Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.cpp index d465de1ab..4e70ae452 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight185.cpp | +| RGBController_MSIMotherboard185.cpp | | | | RGBController for MSI Mystic Light 185-byte motherboard | | | @@ -10,7 +10,7 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "RGBController_MSIMysticLight185.h" +#include "RGBController_MSIMotherboard185.h" #include "LogManager.h" struct ZoneDescription @@ -60,14 +60,11 @@ static int IndexOfZoneForType(MSI_ZONE zone_type) @save :robot: @direct :white_check_mark: @effects :white_check_mark: - @detectors DetectMSIMysticLightControllers + @detectors DetectMSIMotherboardControllers @comment \*-------------------------------------------------------------------*/ -RGBController_MSIMysticLight185::RGBController_MSIMysticLight185 - ( - MSIMysticLight185Controller* controller_ptr - ) +RGBController_MSIMotherboard185::RGBController_MSIMotherboard185(MSIMotherboard185Controller* controller_ptr) { controller = controller_ptr; @@ -99,7 +96,7 @@ RGBController_MSIMysticLight185::RGBController_MSIMysticLight185 active_mode = GetDeviceMode(); } -RGBController_MSIMysticLight185::~RGBController_MSIMysticLight185() +RGBController_MSIMotherboard185::~RGBController_MSIMotherboard185() { Shutdown(); @@ -107,7 +104,7 @@ RGBController_MSIMysticLight185::~RGBController_MSIMysticLight185() delete controller; } -int RGBController_MSIMysticLight185::GetDeviceMode() +int RGBController_MSIMotherboard185::GetDeviceMode() { MSI_MODE mode = controller->GetMode(); @@ -122,7 +119,7 @@ int RGBController_MSIMysticLight185::GetDeviceMode() return 0; } -void RGBController_MSIMysticLight185::SetupZones() +void RGBController_MSIMotherboard185::SetupZones() { /*-----------------------------------------------------*\ | Only set LED count on the first run | @@ -168,7 +165,7 @@ void RGBController_MSIMysticLight185::SetupZones() | This is a resizable zone on a board that does not | | support per-LED direct mode | \*-------------------------------------------------*/ - else if(controller->GetSupportedDirectMode() == MSIMysticLight185Controller::DIRECT_MODE_ZONE_BASED) + else if(controller->GetSupportedDirectMode() == MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED) { zones[zone_idx].name = zd->name; zones[zone_idx].type = ZONE_TYPE_SINGLE; @@ -254,7 +251,7 @@ void RGBController_MSIMysticLight185::SetupZones() SetupColors(); } -void RGBController_MSIMysticLight185::DeviceConfigureZone(int zone_idx) +void RGBController_MSIMotherboard185::DeviceConfigureZone(int zone_idx) { if((size_t)zone_idx < zones.size()) { @@ -268,7 +265,7 @@ void RGBController_MSIMysticLight185::DeviceConfigureZone(int zone_idx) } } -void RGBController_MSIMysticLight185::DeviceUpdateLEDs() +void RGBController_MSIMotherboard185::DeviceUpdateLEDs() { for(std::size_t zone_idx = 0; zone_idx < zones.size(); ++zone_idx) { @@ -280,7 +277,7 @@ void RGBController_MSIMysticLight185::DeviceUpdateLEDs() controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight185::DeviceUpdateZoneLEDs(int zone) +void RGBController_MSIMotherboard185::DeviceUpdateZoneLEDs(int zone) { for(int led_idx = zones[zone].leds_count - 1; led_idx >= 0; led_idx--) { @@ -289,7 +286,7 @@ void RGBController_MSIMysticLight185::DeviceUpdateZoneLEDs(int zone) controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight185::DeviceUpdateSingleLED +void RGBController_MSIMotherboard185::DeviceUpdateSingleLED ( int led ) @@ -307,7 +304,7 @@ void RGBController_MSIMysticLight185::DeviceUpdateSingleLED controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight185::DeviceUpdateMode() +void RGBController_MSIMotherboard185::DeviceUpdateMode() { if(modes[active_mode].value == MSI_MODE_DIRECT_DUMMY) { @@ -320,18 +317,18 @@ void RGBController_MSIMysticLight185::DeviceUpdateMode() } } -void RGBController_MSIMysticLight185::DeviceSaveMode() +void RGBController_MSIMotherboard185::DeviceSaveMode() { controller->Update(true); } -void RGBController_MSIMysticLight185::SetupModes() +void RGBController_MSIMotherboard185::SetupModes() { constexpr unsigned int PER_LED_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; constexpr unsigned int RANDOM_ONLY = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE; constexpr unsigned int COMMON = RANDOM_ONLY | MODE_FLAG_HAS_PER_LED_COLOR; - if(controller->GetSupportedDirectMode() != MSIMysticLight185Controller::DIRECT_MODE_DISABLED) + if(controller->GetSupportedDirectMode() != MSIMotherboard185Controller::DIRECT_MODE_DISABLED) { SetupMode("Direct", MSI_MODE_DIRECT_DUMMY, MODE_FLAG_HAS_PER_LED_COLOR); } @@ -378,7 +375,7 @@ void RGBController_MSIMysticLight185::SetupModes() // SetupMode("Lava", MSI_MODE_LAVA, COMMON); } -void RGBController_MSIMysticLight185::UpdateLed +void RGBController_MSIMotherboard185::UpdateLed ( int zone, int led @@ -407,7 +404,7 @@ void RGBController_MSIMysticLight185::UpdateLed } } -void RGBController_MSIMysticLight185::SetupMode +void RGBController_MSIMotherboard185::SetupMode ( const char *name, MSI_MODE mod, @@ -436,11 +433,12 @@ void RGBController_MSIMysticLight185::SetupMode } else { - /*---------------------------------------------------------*\ - | For modes without speed this needs to be set to avoid | - | bad values in the saved profile which in turn corrupts | - | the brightness calculation when loading the profile | - \*---------------------------------------------------------*/ + /*-------------------------------------------------*\ + | For modes without speed this needs to be set to | + | avoid bad values in the saved profile which in | + | turn corrupts the brightness calculation when | + | loading the profile | + \*-------------------------------------------------*/ Mode.speed = 0; Mode.speed_max = 0; Mode.speed_min = 0; @@ -462,7 +460,7 @@ void RGBController_MSIMysticLight185::SetupMode modes.push_back(Mode); } -void RGBController_MSIMysticLight185::GetDeviceConfig() +void RGBController_MSIMotherboard185::GetDeviceConfig() { if(controller->GetMode() != MSI_MODE_DIRECT_DUMMY) { diff --git a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.h b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.h similarity index 82% rename from Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.h rename to Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.h index d5f38c51d..88493407d 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/RGBController_MSIMysticLight185.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/RGBController_MSIMotherboard185.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight185.h | +| RGBController_MSIMotherboard185.h | | | | RGBController for MSI Mystic Light 185-byte motherboard | | | @@ -14,13 +14,13 @@ #include #include "RGBController.h" -#include "MSIMysticLight185Controller.h" +#include "MSIMotherboard185Controller.h" -class RGBController_MSIMysticLight185: public RGBController +class RGBController_MSIMotherboard185: public RGBController { public: - RGBController_MSIMysticLight185(MSIMysticLight185Controller* controller_ptr); - ~RGBController_MSIMysticLight185(); + RGBController_MSIMotherboard185(MSIMotherboard185Controller* controller_ptr); + ~RGBController_MSIMotherboard185(); void SetupZones(); void DeviceConfigureZone(int zone_idx); @@ -48,6 +48,6 @@ private: int GetDeviceMode(); void GetDeviceConfig(); - MSIMysticLight185Controller* controller; + MSIMotherboard185Controller* controller; MSI_ZONE last_resizable_zone; }; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.cpp b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.cpp similarity index 75% rename from Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.cpp index 0f37e1afa..d39684764 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight761Controller.cpp | +| MSIMotherboard761Controller.cpp | | | | Driver for MSI Mystic Light 761-byte motherboard | | | @@ -15,7 +15,7 @@ #include #include "LogManager.h" -#include "MSIMysticLight761Controller.h" +#include "MSIMotherboard761Controller.h" #include "StringUtils.h" #define NUM_CONFS sizeof(board_configs) / sizeof(mystic_light_761_config) @@ -34,7 +34,7 @@ struct mystic_light_761_config int numof_pipe2_leds; // number of pipe 2 leds (used in per LED mode only) int numof_JRGBs; // number of supported JRGB headers (used in per LED mode only) const std::vector* supported_zones; // pointer to vector of supported zones - MSIMysticLight761Controller::DIRECT_MODE per_led_mode; // type of direct mode support + MSIMotherboard761Controller::DIRECT_MODE per_led_mode; // type of direct mode support }; static const std::vector zone_set1 = @@ -79,34 +79,34 @@ static const std::string board_names[] = static const mystic_light_761_config board_configs[] = { - { &(board_names[0]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870 TOMAHAWK WIFI - { &(board_names[1]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850M MORTAR WIFI - { &(board_names[2]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG B850I EDGE TI WIFI - { &(board_names[3]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870 GAMING PLUS WIFI - { &(board_names[4]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI6E - { &(board_names[5]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850M GAMING PLUS WIFI6E - { &(board_names[6]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870E CARBON WIFI - { &(board_names[7]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI Z890 GAMING PLUS WIFI - { &(board_names[8]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870E GAMING PLUS WIFI - { &(board_names[9]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG X870E TOMAHAWK WIFI - { &(board_names[10]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850-P WIFI (MS-7E56) - { &(board_names[11]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850M GAMING PLUS WIFI - { &(board_names[12]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870E-P WIFI - { &(board_names[13]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870I EDGE TI EVO WIFI (MS-7E50) - { &(board_names[14]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI (MS-7E56) - { &(board_names[15]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870-P WIFI - { &(board_names[16]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870E EDGE TI WIFI - { &(board_names[17]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850 TOMAHAWK MAX WIFI - { &(board_names[18]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850M-P WIFI (MS-7E71) - { &(board_names[19]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG Z890 TOMAHAWK WIFI (MS-7E32) - { &(board_names[20]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG B850 EDGE TI WIFI (MS-7E62) - { &(board_names[21]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850M-VC WIFI6E (MS-7E71) - { &(board_names[22]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850 TOMAHAWK WIFI (MS-7E53) - { &(board_names[23]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MEG Z890 UNIFY-X (MS-7E20) - { &(board_names[24]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870E-S EVO WIFI (MS-7E86) - { &(board_names[25]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO Z890-P WIFI (MS-7E34) - { &(board_names[26]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI PZ (MS-7E75) - { &(board_names[27]), 0, 0, 0, 1, &zone_set1, MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG X870E TOMAHAWK MAX WIFI PZ (MS-7E84) + { &(board_names[0]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870 TOMAHAWK WIFI + { &(board_names[1]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850M MORTAR WIFI + { &(board_names[2]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG B850I EDGE TI WIFI + { &(board_names[3]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870 GAMING PLUS WIFI + { &(board_names[4]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI6E + { &(board_names[5]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850M GAMING PLUS WIFI6E + { &(board_names[6]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870E CARBON WIFI + { &(board_names[7]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI Z890 GAMING PLUS WIFI + { &(board_names[8]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI X870E GAMING PLUS WIFI + { &(board_names[9]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG X870E TOMAHAWK WIFI + { &(board_names[10]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850-P WIFI (MS-7E56) + { &(board_names[11]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850M GAMING PLUS WIFI + { &(board_names[12]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870E-P WIFI + { &(board_names[13]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870I EDGE TI EVO WIFI (MS-7E50) + { &(board_names[14]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI (MS-7E56) + { &(board_names[15]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870-P WIFI + { &(board_names[16]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG X870E EDGE TI WIFI + { &(board_names[17]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850 TOMAHAWK MAX WIFI + { &(board_names[18]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850M-P WIFI (MS-7E71) + { &(board_names[19]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG Z890 TOMAHAWK WIFI (MS-7E32) + { &(board_names[20]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MPG B850 EDGE TI WIFI (MS-7E62) + { &(board_names[21]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO B850M-VC WIFI6E (MS-7E71) + { &(board_names[22]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG B850 TOMAHAWK WIFI (MS-7E53) + { &(board_names[23]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MEG Z890 UNIFY-X (MS-7E20) + { &(board_names[24]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO X870E-S EVO WIFI (MS-7E86) + { &(board_names[25]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI PRO Z890-P WIFI (MS-7E34) + { &(board_names[26]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI B850 GAMING PLUS WIFI PZ (MS-7E75) + { &(board_names[27]), 0, 0, 0, 1, &zone_set1, MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED }, // MSI MAG X870E TOMAHAWK MAX WIFI PZ (MS-7E84) }; enum MSI_ZONE setup_map [] = @@ -194,12 +194,7 @@ void init_packet(FeaturePacket_Zone_761 * packet) } -MSIMysticLight761Controller::MSIMysticLight761Controller - ( - hid_device* handle, - const char* path, - std::string dev_name - ) +MSIMotherboard761Controller::MSIMotherboard761Controller(hid_device* handle, const char* path, std::string dev_name) { dev = handle; location = path; @@ -230,10 +225,14 @@ MSIMysticLight761Controller::MSIMysticLight761Controller } } - // Need to send configuration to board + /*-------------------------------------------------*\ + | Need to send configuration to board | + \*-------------------------------------------------*/ unsigned char * conf_arr = initializer_array(); - // First set everything off + /*-------------------------------------------------*\ + | First set everything off | + \*-------------------------------------------------*/ for(int i = 4; i < 17; i++) { conf_arr[ARRAY_ROW_RAW(i, 1)] = 0x00; @@ -252,7 +251,10 @@ MSIMysticLight761Controller::MSIMysticLight761Controller MSI_ZONE supp_zone = (*supported_zones)[i]; ZoneConfig conf; conf.msi_zone = supp_zone; - // Turn on relevant zones (0-3 are always active) + /*---------------------------------------------*\ + | Turn on relevant zones (0-3 are always | + | active) | + \*---------------------------------------------*/ if(get_zone_setup_index(supp_zone) > 3) { conf_arr[ARRAY_ROW(supp_zone,1 )] = 0x09; @@ -272,13 +274,13 @@ MSIMysticLight761Controller::MSIMysticLight761Controller if(dev) { - location = path; - ReadName(); ReadFwVersion(); ReadSettings(); - // Push config so setting colors works + /*---------------------------------------------*\ + | Push config so setting colors works | + \*---------------------------------------------*/ int res = hid_send_feature_report(dev, conf_arr, SETUP_ARRAY_SIZE); LOG_INFO("Sending configuration resulted in %i\n", res); @@ -314,7 +316,7 @@ MSIMysticLight761Controller::MSIMysticLight761Controller } -MSIMysticLight761Controller::~MSIMysticLight761Controller() +MSIMotherboard761Controller::~MSIMotherboard761Controller() { hid_close(dev); @@ -335,7 +337,7 @@ MSIMysticLight761Controller::~MSIMysticLight761Controller() zone_configs.clear(); } -void MSIMysticLight761Controller::SetMode +void MSIMotherboard761Controller::SetMode ( MSI_ZONE /*zone*/, MSI_MODE /*mode*/, @@ -347,22 +349,22 @@ void MSIMysticLight761Controller::SetMode return; // Only supporting direct for now } -std::string MSIMysticLight761Controller::GetDeviceName() +std::string MSIMotherboard761Controller::GetDeviceName() { return name; } -std::string MSIMysticLight761Controller::GetFWVersion() +std::string MSIMotherboard761Controller::GetFWVersion() { return std::string("AP/LD ").append(version_aprom).append(" / ").append(version_ldrom); } -std::string MSIMysticLight761Controller::GetDeviceLocation() +std::string MSIMotherboard761Controller::GetDeviceLocation() { return("HID: " + location); } -std::string MSIMysticLight761Controller::GetSerial() +std::string MSIMotherboard761Controller::GetSerial() { wchar_t serial_string[128]; int ret = hid_get_serial_number_string(dev, serial_string, 128); @@ -375,7 +377,7 @@ std::string MSIMysticLight761Controller::GetSerial() return(StringUtils::wstring_to_string(serial_string)); } -bool MSIMysticLight761Controller::ReadSettings() +bool MSIMotherboard761Controller::ReadSettings() { /*-----------------------------------------------------*\ | Read packet from hardware, return true if successful | @@ -385,7 +387,7 @@ bool MSIMysticLight761Controller::ReadSettings() return (hid_get_feature_report(dev, buffer, 500)) > 0 ; } -bool MSIMysticLight761Controller::Update +bool MSIMotherboard761Controller::Update ( bool /*save*/ ) @@ -416,7 +418,7 @@ bool MSIMysticLight761Controller::Update return flag; } -void MSIMysticLight761Controller::SetZoneColor +void MSIMotherboard761Controller::SetZoneColor ( MSI_ZONE zone, unsigned char red1, @@ -441,7 +443,7 @@ void MSIMysticLight761Controller::SetZoneColor } } -void set_data_color(FeaturePacket_Zone_761 * packet, std::size_t index, unsigned char color_val ) +void set_data_color(FeaturePacket_Zone_761 * packet, std::size_t index, unsigned char color_val) { if(packet == nullptr) { @@ -450,7 +452,7 @@ void set_data_color(FeaturePacket_Zone_761 * packet, std::size_t index, unsigned packet->packet.colors[index] = color_val; } -void MSIMysticLight761Controller::SetLedColor +void MSIMotherboard761Controller::SetLedColor ( MSI_ZONE zone, std::size_t index, @@ -488,7 +490,7 @@ void MSIMysticLight761Controller::SetLedColor } } -ZoneData *MSIMysticLight761Controller::GetZoneData +ZoneData *MSIMotherboard761Controller::GetZoneData ( FeaturePacket_761& /*data_packet*/, MSI_ZONE zone @@ -505,7 +507,7 @@ ZoneData *MSIMysticLight761Controller::GetZoneData return nullptr; } -Color *MSIMysticLight761Controller::GetPerLedZoneData +Color *MSIMotherboard761Controller::GetPerLedZoneData ( MSI_ZONE zone ) @@ -513,7 +515,7 @@ Color *MSIMysticLight761Controller::GetPerLedZoneData return &(GetZoneData(*data, zone)->color); } -RainbowZoneData *MSIMysticLight761Controller::GetRainbowZoneData +RainbowZoneData *MSIMotherboard761Controller::GetRainbowZoneData ( MSI_ZONE /*zone*/ ) @@ -521,11 +523,11 @@ RainbowZoneData *MSIMysticLight761Controller::GetRainbowZoneData return nullptr; } -bool MSIMysticLight761Controller::ReadFwVersion() +bool MSIMotherboard761Controller::ReadFwVersion() { return true; } -void MSIMysticLight761Controller::ReadName() +void MSIMotherboard761Controller::ReadName() { wchar_t tname[256]; @@ -550,12 +552,12 @@ void MSIMysticLight761Controller::ReadName() name.append(" ").append(StringUtils::wstring_to_string(tname)); } -MSI_MODE MSIMysticLight761Controller::GetMode() +MSI_MODE MSIMotherboard761Controller::GetMode() { return MSI_MODE_DIRECT_DUMMY; } -void MSIMysticLight761Controller::GetMode +void MSIMotherboard761Controller::GetMode ( MSI_ZONE zone, MSI_MODE & mode, @@ -581,7 +583,6 @@ void MSIMysticLight761Controller::GetMode /*-----------------------------------------------------*\ | Update pointers with data | \*-----------------------------------------------------*/ - // Actual support of non direct modes needs to be further investigated mode = (MSI_MODE)zone_data->effect; speed = (MSI_SPEED)(zone_data->speedAndBrightnessFlags & 0x03); @@ -590,7 +591,7 @@ void MSIMysticLight761Controller::GetMode color = ToRGBColor(zone_data->color.R, zone_data->color.G, zone_data->color.B); } -void MSIMysticLight761Controller::SetCycleCount +void MSIMotherboard761Controller::SetCycleCount ( MSI_ZONE /*zone*/, unsigned char /*cycle_num*/ @@ -599,7 +600,7 @@ void MSIMysticLight761Controller::SetCycleCount return; } -void MSIMysticLight761Controller::SetDirectMode +void MSIMotherboard761Controller::SetDirectMode ( bool /*mode*/ ) @@ -607,12 +608,12 @@ void MSIMysticLight761Controller::SetDirectMode SelectPerLedProtocol(); } -bool MSIMysticLight761Controller::IsDirectModeActive() +bool MSIMotherboard761Controller::IsDirectModeActive() { return true; } -size_t MSIMysticLight761Controller::GetMaxDirectLeds +size_t MSIMotherboard761Controller::GetMaxDirectLeds ( MSI_ZONE zone ) @@ -630,8 +631,7 @@ size_t MSIMysticLight761Controller::GetMaxDirectLeds } } - -void MSIMysticLight761Controller::SelectPerLedProtocol() +void MSIMotherboard761Controller::SelectPerLedProtocol() { return; } diff --git a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.h b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.h similarity index 94% rename from Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.h rename to Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.h index c9eab05d2..c7db9e361 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/MSIMysticLight761Controller.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/MSIMotherboard761Controller.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLight761Controller.h | +| MSIMotherboard761Controller.h | | | | Driver for MSI Mystic Light 761-byte motherboard | | | @@ -17,22 +17,22 @@ #include #include -#include "MSIMysticLightCommon.h" +#include "MSIMotherboardCommon.h" #include "RGBController.h" inline constexpr const char * BOARD_UNSUPPORTED_ERROR = "No Config Found For Board"; -class MSIMysticLight761Controller +class MSIMotherboard761Controller { public: - MSIMysticLight761Controller + MSIMotherboard761Controller ( hid_device* handle, const char* path, std::string dev_name ); - ~MSIMysticLight761Controller(); + ~MSIMotherboard761Controller(); void SetMode ( @@ -129,7 +129,7 @@ public: private: std::string name; - std::vector zone_configs; + std::vector zone_configs; const std::vector* supported_zones; hid_device* dev; std::string location; diff --git a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.cpp b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.cpp similarity index 92% rename from Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.cpp rename to Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.cpp index cab704aa3..c373a7da3 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight761.cpp | +| RGBController_MSIMotherboard761.cpp | | | | RGBController for MSI Mystic Light 761-byte motherboard | | | @@ -10,7 +10,7 @@ | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ -#include "RGBController_MSIMysticLight761.h" +#include "RGBController_MSIMotherboard761.h" #include "LogManager.h" struct ZoneDescription @@ -44,9 +44,9 @@ static int IndexOfZoneForType(MSI_ZONE zone_type) return -1; } -RGBController_MSIMysticLight761::RGBController_MSIMysticLight761 +RGBController_MSIMotherboard761::RGBController_MSIMotherboard761 ( - MSIMysticLight761Controller* controller_ptr + MSIMotherboard761Controller* controller_ptr ) { controller = controller_ptr; @@ -79,7 +79,7 @@ RGBController_MSIMysticLight761::RGBController_MSIMysticLight761 active_mode = GetDeviceMode(); } -RGBController_MSIMysticLight761::~RGBController_MSIMysticLight761() +RGBController_MSIMotherboard761::~RGBController_MSIMotherboard761() { Shutdown(); @@ -87,7 +87,7 @@ RGBController_MSIMysticLight761::~RGBController_MSIMysticLight761() delete controller; } -int RGBController_MSIMysticLight761::GetDeviceMode() +int RGBController_MSIMotherboard761::GetDeviceMode() { MSI_MODE mode = controller->GetMode(); @@ -102,7 +102,7 @@ int RGBController_MSIMysticLight761::GetDeviceMode() return 0; } -void RGBController_MSIMysticLight761::SetupZones() +void RGBController_MSIMotherboard761::SetupZones() { /*-----------------------------------------------------*\ | Only set LED count on the first run | @@ -148,7 +148,7 @@ void RGBController_MSIMysticLight761::SetupZones() | This is a resizable zone on a board that does not | | support per-LED direct mode | \*-------------------------------------------------*/ - else if(controller->GetSupportedDirectMode() == MSIMysticLight761Controller::DIRECT_MODE_ZONE_BASED) + else if(controller->GetSupportedDirectMode() == MSIMotherboard761Controller::DIRECT_MODE_ZONE_BASED) { zones[zone_idx].name = zd->name; zones[zone_idx].type = ZONE_TYPE_SINGLE; @@ -235,7 +235,7 @@ void RGBController_MSIMysticLight761::SetupZones() } -void RGBController_MSIMysticLight761::DeviceConfigureZone(int zone_idx) +void RGBController_MSIMotherboard761::DeviceConfigureZone(int zone_idx) { if((std::size_t)zone_idx < zones.size()) { @@ -249,7 +249,7 @@ void RGBController_MSIMysticLight761::DeviceConfigureZone(int zone_idx) } } -void RGBController_MSIMysticLight761::DeviceUpdateLEDs() +void RGBController_MSIMotherboard761::DeviceUpdateLEDs() { for(std::size_t zone_idx = 0; zone_idx < zones.size(); ++zone_idx) { @@ -261,7 +261,7 @@ void RGBController_MSIMysticLight761::DeviceUpdateLEDs() controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight761::DeviceUpdateZoneLEDs(int zone) +void RGBController_MSIMotherboard761::DeviceUpdateZoneLEDs(int zone) { for(int led_idx = zones[zone].leds_count - 1; led_idx >= 0; led_idx--) { @@ -270,7 +270,7 @@ void RGBController_MSIMysticLight761::DeviceUpdateZoneLEDs(int zone) controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight761::DeviceUpdateSingleLED +void RGBController_MSIMotherboard761::DeviceUpdateSingleLED ( int led ) @@ -288,7 +288,7 @@ void RGBController_MSIMysticLight761::DeviceUpdateSingleLED controller->Update((modes[active_mode].flags & MODE_FLAG_AUTOMATIC_SAVE) != 0); } -void RGBController_MSIMysticLight761::DeviceUpdateMode() +void RGBController_MSIMotherboard761::DeviceUpdateMode() { if(modes[active_mode].value == MSI_MODE_DIRECT_DUMMY) { @@ -301,20 +301,20 @@ void RGBController_MSIMysticLight761::DeviceUpdateMode() } } -void RGBController_MSIMysticLight761::DeviceSaveMode() +void RGBController_MSIMotherboard761::DeviceSaveMode() { controller->Update(true); } -void RGBController_MSIMysticLight761::SetupModes() +void RGBController_MSIMotherboard761::SetupModes() { - if(controller->GetSupportedDirectMode() != MSIMysticLight761Controller::DIRECT_MODE_DISABLED) + if(controller->GetSupportedDirectMode() != MSIMotherboard761Controller::DIRECT_MODE_DISABLED) { SetupMode("Direct", MSI_MODE_DIRECT_DUMMY, MODE_FLAG_HAS_PER_LED_COLOR); } } -void RGBController_MSIMysticLight761::UpdateLed +void RGBController_MSIMotherboard761::UpdateLed ( int zone, int led @@ -343,7 +343,7 @@ void RGBController_MSIMysticLight761::UpdateLed } } -void RGBController_MSIMysticLight761::SetupMode +void RGBController_MSIMotherboard761::SetupMode ( const char *name, MSI_MODE mod, @@ -398,7 +398,7 @@ void RGBController_MSIMysticLight761::SetupMode modes.push_back(Mode); } -void RGBController_MSIMysticLight761::GetDeviceConfig() +void RGBController_MSIMotherboard761::GetDeviceConfig() { if(controller->GetMode() != MSI_MODE_DIRECT_DUMMY) { diff --git a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.h b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.h similarity index 81% rename from Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.h rename to Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.h index bbd50985f..b7dcf1dea 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight761Controller/RGBController_MSIMysticLight761.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard761Controller/RGBController_MSIMotherboard761.h @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| RGBController_MSIMysticLight761.h | +| RGBController_MSIMotherboard761.h | | | | RGBController for MSI Mystic Light 761-byte motherboard | | | @@ -13,13 +13,13 @@ #pragma once #include "RGBController.h" -#include "MSIMysticLight761Controller.h" +#include "MSIMotherboard761Controller.h" -class RGBController_MSIMysticLight761: public RGBController +class RGBController_MSIMotherboard761: public RGBController { public: - RGBController_MSIMysticLight761(MSIMysticLight761Controller* controller_ptr); - ~RGBController_MSIMysticLight761(); + RGBController_MSIMotherboard761(MSIMotherboard761Controller* controller_ptr); + ~RGBController_MSIMotherboard761(); void SetupZones(); void DeviceConfigureZone(int zone_idx); @@ -47,6 +47,6 @@ private: int GetDeviceMode(); void GetDeviceConfig(); - MSIMysticLight761Controller* controller; + MSIMotherboard761Controller* controller; MSI_ZONE last_resizable_zone; }; diff --git a/Controllers/MSIMotherboardController/MSIMotherboardCommon.h b/Controllers/MSIMotherboardController/MSIMotherboardCommon.h new file mode 100644 index 000000000..1d2ef9256 --- /dev/null +++ b/Controllers/MSIMotherboardController/MSIMotherboardCommon.h @@ -0,0 +1,264 @@ +/*---------------------------------------------------------*\ +| MSIMotherboardCommon.h | +| | +| Common definitions for MSI Mystic Light motherboards | +| | +| Adam Honse 06 Mar 2021 | +| | +| This file is part of the OpenRGB project | +| SPDX-License-Identifier: GPL-2.0-or-later | +\*---------------------------------------------------------*/ + +#pragma once + +#include + +enum MSI_ZONE +{ + MSI_ZONE_NONE = 0, + MSI_ZONE_J_RGB_1 = 1, + MSI_ZONE_J_RGB_2 = 2, + MSI_ZONE_J_PIPE_1 = 3, + MSI_ZONE_J_PIPE_2 = 4, + MSI_ZONE_J_PIPE_3 = 5, + MSI_ZONE_J_PIPE_4 = 6, + MSI_ZONE_J_PIPE_5 = 7, + MSI_ZONE_J_RAINBOW_1 = 8, + MSI_ZONE_J_RAINBOW_2 = 9, + MSI_ZONE_J_RAINBOW_3 = 10, + MSI_ZONE_J_CORSAIR = 11, + MSI_ZONE_J_CORSAIR_OUTERLL120 = 12, + MSI_ZONE_ON_BOARD_LED_0 = 13, + MSI_ZONE_ON_BOARD_LED_1 = 14, + MSI_ZONE_ON_BOARD_LED_2 = 15, + MSI_ZONE_ON_BOARD_LED_3 = 16, + MSI_ZONE_ON_BOARD_LED_4 = 17, + MSI_ZONE_ON_BOARD_LED_5 = 18, + MSI_ZONE_ON_BOARD_LED_6 = 19, + MSI_ZONE_ON_BOARD_LED_7 = 20, + MSI_ZONE_ON_BOARD_LED_8 = 21, + MSI_ZONE_ON_BOARD_LED_9 = 22, + MSI_ZONE_ON_BOARD_LED_10 = 23, + MSI_ZONE_JAF = 24, + MSI_ZONE_JARGB_1 = 25, + MSI_ZONE_JARGB_2 = 26, + MSI_ZONE_JARGB_3 = 27, +}; + +enum MSI_MODE +{ + MSI_MODE_DISABLE = 0, + MSI_MODE_STATIC = 1, + MSI_MODE_BREATHING = 2, + MSI_MODE_FLASHING = 3, + MSI_MODE_DOUBLE_FLASHING = 4, + MSI_MODE_LIGHTNING = 5, + MSI_MODE_MSI_MARQUEE = 6, + MSI_MODE_METEOR = 7, + MSI_MODE_WATER_DROP = 8, + MSI_MODE_MSI_RAINBOW = 9, + MSI_MODE_POP = 10, + MSI_MODE_RAP = 11, + MSI_MODE_JAZZ = 12, + MSI_MODE_PLAY = 13, + MSI_MODE_MOVIE = 14, + MSI_MODE_COLOR_RING = 15, + MSI_MODE_PLANETARY = 16, + MSI_MODE_DOUBLE_METEOR = 17, + MSI_MODE_ENERGY = 18, + MSI_MODE_BLINK = 19, + MSI_MODE_CLOCK = 20, + MSI_MODE_COLOR_PULSE = 21, + MSI_MODE_COLOR_SHIFT = 22, + MSI_MODE_COLOR_WAVE = 23, + MSI_MODE_MARQUEE = 24, + MSI_MODE_RAINBOW = 25, + MSI_MODE_RAINBOW_WAVE = 26, + MSI_MODE_VISOR = 27, + MSI_MODE_JRAINBOW = 28, + MSI_MODE_RAINBOW_FLASHING = 29, + MSI_MODE_RAINBOW_DOUBLE_FLASHING = 30, + MSI_MODE_RANDOM = 31, + MSI_MODE_FAN_CONTROL = 32, + MSI_MODE_DISABLE_2 = 33, + MSI_MODE_COLOR_RING_FLASHING = 34, + MSI_MODE_COLOR_RING_DOUBLE_FLASHING = 35, + MSI_MODE_STACK = 36, + MSI_MODE_CORSAIR_QUE = 37, + MSI_MODE_FIRE = 38, + MSI_MODE_LAVA = 39, + MSI_MODE_DIRECT_DUMMY = 100 +}; + +enum MSI_SPEED +{ + MSI_SPEED_LOW = 0, + MSI_SPEED_MEDIUM = 1, + MSI_SPEED_HIGH = 2, +}; + +enum MSI_FAN_TYPE +{ + MSI_FAN_TYPE_SP = 0, + MSI_FAN_TYPE_HD = 1, + MSI_FAN_TYPE_LL = 2, +}; + +enum MSI_BRIGHTNESS +{ + MSI_BRIGHTNESS_OFF = 0, + MSI_BRIGHTNESS_LEVEL_10 = 1, + MSI_BRIGHTNESS_LEVEL_20 = 2, + MSI_BRIGHTNESS_LEVEL_30 = 3, + MSI_BRIGHTNESS_LEVEL_40 = 4, + MSI_BRIGHTNESS_LEVEL_50 = 5, + MSI_BRIGHTNESS_LEVEL_60 = 6, + MSI_BRIGHTNESS_LEVEL_70 = 7, + MSI_BRIGHTNESS_LEVEL_80 = 8, + MSI_BRIGHTNESS_LEVEL_90 = 9, + MSI_BRIGHTNESS_LEVEL_100 = 10, +}; + +#define NUMOF_PER_LED_MODE_LEDS 240 +#define NUM_LEDS_761 720 + +#define SYNC_SETTING_ONBOARD 0x01 +#define SYNC_SETTING_JRAINBOW1 0x02 +#define SYNC_SETTING_JRAINBOW2 0x04 +#define SYNC_SETTING_JCORSAIR 0x08 +#define SYNC_SETTING_JPIPE1 0x10 +#define SYNC_SETTING_JPIPE2 0x20 +#define SYNC_SETTING_JRGB 0x80 + +struct Color +{ + unsigned char R; + unsigned char G; + unsigned char B; +}; + +struct CorsairZoneData +{ + unsigned char effect = MSI_MODE_STATIC; + Color color { 0, 0, 0 }; + unsigned char fan_flags = 40; + unsigned char corsair_quantity = 0; + unsigned char padding[4] = { 0, 0, 0, 0 }; + unsigned char is_individual = 0; +}; + +struct ZoneData +{ + unsigned char effect = MSI_MODE_STATIC; + Color color { 0, 0, 0 }; + unsigned char speedAndBrightnessFlags = 0; + Color color2 { 0, 0, 0 }; + unsigned char colorFlags = 0; + unsigned char padding = 0; +}; + +struct RainbowZoneData : ZoneData +{ + unsigned char cycle_or_led_num = 100; +}; + +struct FeaturePacket_112 +{ + const unsigned char report_id = 0x52; // Report ID + ZoneData j_rgb_1; // 1 + ZoneData j_rainbow_1; // 11 + ZoneData j_corsair_1; // 21 + ZoneData j_corsair_outerll120; // 31 + ZoneData on_board_led; // 41 + ZoneData on_board_led_1; // 51 + ZoneData on_board_led_2; // 61 + ZoneData on_board_led_3; // 71 + ZoneData on_board_led_4; // 81 + ZoneData on_board_led_5; // 91 + ZoneData on_board_led_6; // 101 + unsigned char save_data = 0; // 111 +}; + +struct FeaturePacket_162 +{ + const unsigned char report_id = 0x52; // Report ID + ZoneData j_rgb_1; // 1 + ZoneData j_rainbow_1; // 11 + ZoneData j_corsair_1; // 21 + ZoneData j_corsair_outerll120; // 31 + ZoneData on_board_led; // 41 + ZoneData on_board_led_1; // 51 + ZoneData on_board_led_2; // 61 + ZoneData on_board_led_3; // 71 + ZoneData on_board_led_4; // 81 + ZoneData on_board_led_5; // 91 + ZoneData on_board_led_6; // 101 + ZoneData on_board_led_7; // 111 + ZoneData on_board_led_8; // 121 + ZoneData on_board_led_9; // 131 + ZoneData on_board_led_10; // 141 + ZoneData j_rgb_2; // 151 + unsigned char save_data = 0; // 161 +}; + +struct FeaturePacket_185 +{ + const unsigned char report_id = 0x52; // Report ID + ZoneData j_rgb_1; // 1 + ZoneData j_pipe_1; // 11 + ZoneData j_pipe_2; // 21 + RainbowZoneData j_rainbow_1; // 31 + RainbowZoneData j_rainbow_2; // 42 + CorsairZoneData j_corsair; // 53 + ZoneData j_corsair_outerll120; // 64 + ZoneData on_board_led; // 74 + ZoneData on_board_led_1; // 84 + ZoneData on_board_led_2; // 94 + ZoneData on_board_led_3; // 104 + ZoneData on_board_led_4; // 114 + ZoneData on_board_led_5; // 124 + ZoneData on_board_led_6; // 134 + ZoneData on_board_led_7; // 144 + ZoneData on_board_led_8; // 154 + ZoneData on_board_led_9; // 164 + ZoneData j_rgb_2; // 174 + unsigned char save_data = 0; // 184 +}; + +struct FeaturePacket_PerLED_185 +{ + unsigned char report_id = 0x53; // Report ID + unsigned char hdr0 = 0x25; // header byte 0 + unsigned char hdr1 = 0x06; // header byte 1 + unsigned char hdr2 = 0x00; // header byte 2 + unsigned char hdr3 = 0x00; // header byte 3 + Color leds[NUMOF_PER_LED_MODE_LEDS]; +}; + +struct FeaturePacket_PerLED_761 +{ + unsigned char report_id = 0x51; // Report ID + unsigned char fixed1 = 0x09; // Always 9? + unsigned char hdr0; // 0x08 for ez 0x04 for ARGB 0x06 for LED + unsigned char hdr1; // 0 for LED/EZ and argb num for ARGB? + unsigned char fixed2 = 0x00; // IDK what this is + unsigned char fixed3 = 0x00; // IDK what this is + unsigned char hdr2; // Led Count + unsigned char colors [NUM_LEDS_761]; +}; + +struct FeaturePacket_Zone_761 +{ + MSI_ZONE zone; + FeaturePacket_PerLED_761 packet; +}; + +struct FeaturePacket_761 +{ + FeaturePacket_Zone_761 jargb1; + FeaturePacket_Zone_761 jargb2; + FeaturePacket_Zone_761 jargb3; + FeaturePacket_Zone_761 jaf; +}; + +#define MSI_USB_PID_COMMON 0x0076 // Common PID for a certain set of 185-byte boards diff --git a/Controllers/MSIMysticLightController/MSIMysticLightControllerDetect.cpp b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp similarity index 53% rename from Controllers/MSIMysticLightController/MSIMysticLightControllerDetect.cpp rename to Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp index 0b62ea64a..e4d2189ff 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLightControllerDetect.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp @@ -1,5 +1,5 @@ /*---------------------------------------------------------*\ -| MSIMysticLightControllerDetect.cpp | +| MSIMotherboardControllerDetect.cpp | | | | Detector for MSI Mystic Light motherboards | | | @@ -10,19 +10,20 @@ #include "DetectionManager.h" #include "dmiinfo.h" #include "LogManager.h" -#include "MSIMysticLight64Controller.h" -#include "MSIMysticLight112Controller.h" -#include "MSIMysticLight162Controller.h" -#include "MSIMysticLight185Controller.h" -#include "MSIMysticLight761Controller.h" -#include "RGBController_MSIMysticLight64.h" -#include "RGBController_MSIMysticLight112.h" -#include "RGBController_MSIMysticLight162.h" -#include "RGBController_MSIMysticLight185.h" -#include "RGBController_MSIMysticLight761.h" +#include "MSIMotherboard112Controller.h" +#include "MSIMotherboard162Controller.h" +#include "MSIMotherboard185Controller.h" +#include "MSIMotherboard761Controller.h" +#include "RGBController_MSIMotherboard112.h" +#include "RGBController_MSIMotherboard162.h" +#include "RGBController_MSIMotherboard185.h" +#include "RGBController_MSIMotherboard761.h" -#define MSI_USB_VID 0x1462 -#define MSI_USB_VID_COMMON 0x0DB0 +/*---------------------------------------------------------*\ +| USB IDs | +\*---------------------------------------------------------*/ +#define MSI_USB_VID 0x1462 +#define MSI_USB_VID_COMMON 0x0DB0 /*---------------------------------------------------------------------------------*\ | WARNING! | @@ -33,7 +34,7 @@ \*---------------------------------------------------------------------------------*/ //#define ENABLE_UNTESTED_MYSTIC_LIGHT -DetectedControllers DetectMSIMysticLightControllers(hid_device_info* info, const std::string& /*name*/) +DetectedControllers DetectMSIMotherboardControllers(hid_device_info* info, const std::string& /*name*/) { DetectedControllers detected_controllers; hid_device* dev; @@ -52,22 +53,22 @@ DetectedControllers DetectMSIMysticLightControllers(hid_device_info* info, const if((packet_length >= sizeof(FeaturePacket_185)) && (packet_length <= (sizeof(FeaturePacket_185) + 1))) //WHY r we doing this ? why not == { - MSIMysticLight185Controller* controller = new MSIMysticLight185Controller(dev, info->path, info->product_id, dmi_name); - RGBController_MSIMysticLight185* rgb_controller = new RGBController_MSIMysticLight185(controller); + MSIMotherboard185Controller* controller = new MSIMotherboard185Controller(dev, info->path, info->product_id, dmi_name); + RGBController_MSIMotherboard185* rgb_controller = new RGBController_MSIMotherboard185(controller); detected_controllers.push_back(rgb_controller); } else if((packet_length >= sizeof(FeaturePacket_162)) && (packet_length <= (sizeof(FeaturePacket_162) + 1))) { - MSIMysticLight162Controller* controller = new MSIMysticLight162Controller(dev, info->path, info->product_id, dmi_name); - RGBController_MSIMysticLight162* rgb_controller = new RGBController_MSIMysticLight162(controller); + MSIMotherboard162Controller* controller = new MSIMotherboard162Controller(dev, info->path, info->product_id, dmi_name); + RGBController_MSIMotherboard162* rgb_controller = new RGBController_MSIMotherboard162(controller); detected_controllers.push_back(rgb_controller); } else if((packet_length >= sizeof(FeaturePacket_112)) && (packet_length <= (sizeof(FeaturePacket_112) + 1))) { - MSIMysticLight112Controller* controller = new MSIMysticLight112Controller(dev, info->path, dmi_name); - RGBController_MSIMysticLight112* rgb_controller = new RGBController_MSIMysticLight112(controller); + MSIMotherboard112Controller* controller = new MSIMotherboard112Controller(dev, info->path, dmi_name); + RGBController_MSIMotherboard112* rgb_controller = new RGBController_MSIMotherboard112(controller); detected_controllers.push_back(rgb_controller); } @@ -93,8 +94,8 @@ DetectedControllers DetectMSIMysticLightControllers(hid_device_info* info, const { try { - MSIMysticLight761Controller* controller = new MSIMysticLight761Controller(dev, (const char *) info->path, dmi_name); - RGBController_MSIMysticLight761* rgb_controller = new RGBController_MSIMysticLight761(controller); + MSIMotherboard761Controller* controller = new MSIMotherboard761Controller(dev, (const char *) info->path, dmi_name); + RGBController_MSIMotherboard761* rgb_controller = new RGBController_MSIMotherboard761(controller); detected_controllers.push_back(rgb_controller); } @@ -120,158 +121,137 @@ DetectedControllers DetectMSIMysticLightControllers(hid_device_info* info, const return(detected_controllers); } -DetectedControllers DetectMSIMysticLight64Controllers(hid_device_info* info, const std::string& /*name*/) -{ - DetectedControllers detected_controllers; - hid_device* dev; - - dev = hid_open_path(info->path); - - if(dev != nullptr) - { - MSIMysticLight64Controller* controller = new MSIMysticLight64Controller(dev, info->path); - RGBController_MSIMysticLight64* rgb_controller = new RGBController_MSIMysticLight64(controller); - - detected_controllers.push_back(rgb_controller); - } - - return(detected_controllers); -} - -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1562", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1562, 0x00FF, 0x01); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1563", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1563, 0x00FF, 0x01); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1564", DetectMSIMysticLight64Controllers, MSI_USB_VID, 0x1564, 0x00FF, 0x01); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1720", DetectMSIMysticLightControllers, MSI_USB_VID, 0x1720, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B12", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B12, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B16", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B16, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B17", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B17, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B18", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B18, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B50", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B50, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B85", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B85, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B92", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B92, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B93", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B93, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C02", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C02, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C34", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C34, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C35", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C35, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C36", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C36, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C37", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C37, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C56", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C56, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C59", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C59, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C60", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C60, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C67", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C67, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C71", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C71, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C73", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C73, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C75", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C75, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C76", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C76, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C77", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C77, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C79", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C79, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C80", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C80, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C81", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C81, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C82", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C82, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C83", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C83, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C84", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C84, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C86", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C86, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C87", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C87, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C90", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C90, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C91", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C91, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C92", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C92, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C94", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C94, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C95", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C95, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C98", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C98, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D03", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D03, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D04", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D04, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D06", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D06, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D07", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D07, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D08", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D08, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D09", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D09, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D13", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D13, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D14", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D14, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D15", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D15, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D17", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D17, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D18", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D18, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D19", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D19, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D20", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D20, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D25", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D25, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D27", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D27, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D28", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D28, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D29", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D29, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D30", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D30, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D31", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D31, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D32", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D32, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D33", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D33, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D36", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D36, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D37", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D37, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D38", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D38, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D40", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D40, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D41", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D41, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D42", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D42, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D43", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D43, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D46", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D46, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D50", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D50, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D51", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D51, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D52", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D52, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D53", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D53, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D54", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D54, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D59", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D59, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D67", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D67, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D69", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D69, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D70", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D70, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D73", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D73, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D74", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D74, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D75", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D75, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D76", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D76, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D77", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D77, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D78", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D78, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D86", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D86, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D88", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D88, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D89", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D89, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D90", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D90, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D91", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D91, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D93", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D93, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D96", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D96, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D97", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D97, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D98", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D98, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D99", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7D99, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E01", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E01, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E03", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E03, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E06", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E06, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E07", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E07, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E09", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E09, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E10", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E10, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_B926", DetectMSIMysticLightControllers, MSI_USB_VID, 0xB926, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E70", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E70, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E59", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E59, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E80", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E80, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E81", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E81, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E34", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E34, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E32", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E32, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E20", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7E20, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_1720", DetectMSIMotherboardControllers, MSI_USB_VID, 0x1720, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B12", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B12, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B16", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B16, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B17", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B17, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B18", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B18, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B50", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B50, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B85", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B85, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B92", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B92, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B93", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B93, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C02", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C02, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C34", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C34, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C35", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C35, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C36", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C36, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C37", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C37, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C56", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C56, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C59", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C59, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C60", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C60, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C67", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C67, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C71", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C71, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C73", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C73, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C75", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C75, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C76", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C76, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C77", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C77, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C79", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C79, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C80", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C80, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C81", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C81, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C82", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C82, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C83", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C83, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C84", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C84, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C86", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C86, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C87", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C87, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C90", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C90, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C91", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C91, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C92", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C92, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C94", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C94, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C95", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C95, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C98", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C98, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D03", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D03, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D04", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D04, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D06", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D06, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D07", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D07, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D08", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D08, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D09", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D09, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D13", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D13, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D14", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D14, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D15", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D15, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D17", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D17, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D18", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D18, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D19", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D19, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D20", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D20, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D25", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D25, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D27", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D27, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D28", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D28, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D29", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D29, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D30", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D30, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D31", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D31, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D32", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D32, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D33", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D33, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D36", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D36, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D37", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D37, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D38", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D38, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D40", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D40, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D41", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D41, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D42", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D42, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D43", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D43, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D46", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D46, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D50", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D50, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D51", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D51, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D52", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D52, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D53", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D53, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D54", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D54, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D59", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D59, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D67", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D67, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D69", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D69, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D70", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D70, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D73", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D73, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D74", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D74, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D75", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D75, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D76", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D76, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D77", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D77, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D78", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D78, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D86", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D86, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D88", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D88, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D89", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D89, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D90", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D90, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D91", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D91, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D93", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D93, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D96", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D96, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D97", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D97, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D98", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D98, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7D99", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7D99, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E01", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E01, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E03", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E03, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E06", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E06, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E07", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E07, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E09", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E09, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E10", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E10, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_B926", DetectMSIMotherboardControllers, MSI_USB_VID, 0xB926, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E70", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E70, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E59", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E59, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E80", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E80, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E81", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E81, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E34", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E34, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E32", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E32, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7E20", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7E20, 0x0001, 0x00); // Detector for the set of common boards -REGISTER_HID_DETECTOR_PU("MSI Mystic Light Common", DetectMSIMysticLightControllers, MSI_USB_VID_COMMON, MSI_USB_PID_COMMON, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light X870", DetectMSIMysticLightControllers, MSI_USB_VID_COMMON, MSI_USB_PID_COMMON, 0xFF00, 0x01); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light Common", DetectMSIMotherboardControllers, MSI_USB_VID_COMMON, MSI_USB_PID_COMMON, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light X870", DetectMSIMotherboardControllers, MSI_USB_VID_COMMON, MSI_USB_PID_COMMON, 0xFF00, 0x01); /*---------------------------------------------------------------------------------------------------------*\ | Dummy entries for boards using common VID and PID | | | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E12", DetectMSIMysticLightControllers, 0x1462, 0x7E12 ) | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E16", DetectMSIMysticLightControllers, 0x1462, 0x7E16 ) | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E24", DetectMSIMysticLightControllers, 0x1462, 0x7E24 ) | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E26", DetectMSIMysticLightControllers, 0x1462, 0x7E26 ) | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E27", DetectMSIMysticLightControllers, 0x1462, 0x7E27 ) | -| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E49", DetectMSIMysticLightControllers, 0x1462, 0x7E49 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E12", DetectMSIMotherboardControllers, 0x1462, 0x7E12 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E16", DetectMSIMotherboardControllers, 0x1462, 0x7E16 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E24", DetectMSIMotherboardControllers, 0x1462, 0x7E24 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E26", DetectMSIMotherboardControllers, 0x1462, 0x7E26 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E27", DetectMSIMotherboardControllers, 0x1462, 0x7E27 ) | +| DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E49", DetectMSIMotherboardControllers, 0x1462, 0x7E49 ) | \*---------------------------------------------------------------------------------------------------------*/ #ifdef ENABLE_UNTESTED_MYSTIC_LIGHT -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_3EA4", DetectMSIMysticLightControllers, MSI_USB_VID, 0x3EA4, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_4459", DetectMSIMysticLightControllers, MSI_USB_VID, 0x4459, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B10", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B10, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B94", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B94, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B96", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7B96, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C42", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C42, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C70", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C70, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C85", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C85, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C88", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C88, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C89", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C89, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C96", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C96, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C99", DetectMSIMysticLightControllers, MSI_USB_VID, 0x7C99, 0x0001, 0x00); -REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_905D", DetectMSIMysticLightControllers, MSI_USB_VID, 0x905D, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_3EA4", DetectMSIMotherboardControllers, MSI_USB_VID, 0x3EA4, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_4459", DetectMSIMotherboardControllers, MSI_USB_VID, 0x4459, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B10", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B10, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B94", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B94, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7B96", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7B96, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C42", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C42, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C70", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C70, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C85", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C85, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C88", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C88, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C89", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C89, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C96", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C96, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_7C99", DetectMSIMotherboardControllers, MSI_USB_VID, 0x7C99, 0x0001, 0x00); +REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_905D", DetectMSIMotherboardControllers, MSI_USB_VID, 0x905D, 0x0001, 0x00); #endif diff --git a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.h b/Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.h deleted file mode 100644 index cd819967f..000000000 --- a/Controllers/MSIMysticLightController/MSIMysticLight64Controller/MSIMysticLight64Controller.h +++ /dev/null @@ -1,62 +0,0 @@ -/*---------------------------------------------------------*\ -| MSIMysticLight64Controller.h | -| | -| Driver for MSI Mystic Light 64-byte motherboard | -| | -| T-bond 03 Apr 2020 | -| Adam Honse 06 Mar 2021 | -| Elchanan Haas 23 Aug 2022 | -| | -| This file is part of the OpenRGB project | -| SPDX-License-Identifier: GPL-2.0-or-later | -\*---------------------------------------------------------*/ - -#pragma once - -#include -#include -#include -#include "MSIMysticLightCommon.h" -#include "RGBController.h" - -enum MSI_64_MODE -{ - MSI_64_OFF = 0, - MSI_64_STEADY = 1, - MSI_64_BREATHING = 2, - MSI_64_PULSE = 3, - MSI_64_DOUBLE_PULSE = 4, - MSI_64_CYCLE = 5, - MSI_64_SMOOTH_CYCLE = 6, -}; - -class MSIMysticLight64Controller -{ -public: - MSIMysticLight64Controller - ( - hid_device* handle, - const char *path - ); - ~MSIMysticLight64Controller(); - - void SetMode - ( - MSI_64_MODE mode, - MSI_SPEED speed, - MSI_BRIGHTNESS brightness, - unsigned int num_colors, - Color colors[] - ); - - - std::string GetDeviceName(); - std::string GetDeviceLocation(); - std::string GetFWVersion(); - std::string GetSerial(); - -private: - - hid_device* dev; - std::string location; -}; diff --git a/Controllers/MSIMysticLightController/MSIMysticLightCommon.h b/Controllers/MSIMysticLightController/MSIMysticLightCommon.h deleted file mode 100644 index 18563fc06..000000000 --- a/Controllers/MSIMysticLightController/MSIMysticLightCommon.h +++ /dev/null @@ -1,278 +0,0 @@ -/*---------------------------------------------------------*\ -| MSIMysticLightCommon.h | -| | -| Common definitions for MSI Mystic Light motherboards | -| | -| Adam Honse 06 Mar 2021 | -| | -| This file is part of the OpenRGB project | -| SPDX-License-Identifier: GPL-2.0-or-later | -\*---------------------------------------------------------*/ - -#pragma once - -#include - -enum MSI_ZONE -{ - MSI_ZONE_NONE = 0, - MSI_ZONE_J_RGB_1 = 1, - MSI_ZONE_J_RGB_2 = 2, - MSI_ZONE_J_PIPE_1 = 3, - MSI_ZONE_J_PIPE_2 = 4, - MSI_ZONE_J_PIPE_3 = 5, - MSI_ZONE_J_PIPE_4 = 6, - MSI_ZONE_J_PIPE_5 = 7, - MSI_ZONE_J_RAINBOW_1 = 8, - MSI_ZONE_J_RAINBOW_2 = 9, - MSI_ZONE_J_RAINBOW_3 = 10, - MSI_ZONE_J_CORSAIR = 11, - MSI_ZONE_J_CORSAIR_OUTERLL120 = 12, - MSI_ZONE_ON_BOARD_LED_0 = 13, - MSI_ZONE_ON_BOARD_LED_1 = 14, - MSI_ZONE_ON_BOARD_LED_2 = 15, - MSI_ZONE_ON_BOARD_LED_3 = 16, - MSI_ZONE_ON_BOARD_LED_4 = 17, - MSI_ZONE_ON_BOARD_LED_5 = 18, - MSI_ZONE_ON_BOARD_LED_6 = 19, - MSI_ZONE_ON_BOARD_LED_7 = 20, - MSI_ZONE_ON_BOARD_LED_8 = 21, - MSI_ZONE_ON_BOARD_LED_9 = 22, - MSI_ZONE_ON_BOARD_LED_10 = 23, - MSI_ZONE_JAF = 24, - MSI_ZONE_JARGB_1 = 25, - MSI_ZONE_JARGB_2 = 26, - MSI_ZONE_JARGB_3 = 27, -}; - -enum MSI_MODE -{ - MSI_MODE_DISABLE = 0, - MSI_MODE_STATIC = 1, - MSI_MODE_BREATHING = 2, - MSI_MODE_FLASHING = 3, - MSI_MODE_DOUBLE_FLASHING = 4, - MSI_MODE_LIGHTNING = 5, - MSI_MODE_MSI_MARQUEE = 6, - MSI_MODE_METEOR = 7, - MSI_MODE_WATER_DROP = 8, - MSI_MODE_MSI_RAINBOW = 9, - MSI_MODE_POP = 10, - MSI_MODE_RAP = 11, - MSI_MODE_JAZZ = 12, - MSI_MODE_PLAY = 13, - MSI_MODE_MOVIE = 14, - MSI_MODE_COLOR_RING = 15, - MSI_MODE_PLANETARY = 16, - MSI_MODE_DOUBLE_METEOR = 17, - MSI_MODE_ENERGY = 18, - MSI_MODE_BLINK = 19, - MSI_MODE_CLOCK = 20, - MSI_MODE_COLOR_PULSE = 21, - MSI_MODE_COLOR_SHIFT = 22, - MSI_MODE_COLOR_WAVE = 23, - MSI_MODE_MARQUEE = 24, - MSI_MODE_RAINBOW = 25, - MSI_MODE_RAINBOW_WAVE = 26, - MSI_MODE_VISOR = 27, - MSI_MODE_JRAINBOW = 28, - MSI_MODE_RAINBOW_FLASHING = 29, - MSI_MODE_RAINBOW_DOUBLE_FLASHING = 30, - MSI_MODE_RANDOM = 31, - MSI_MODE_FAN_CONTROL = 32, - MSI_MODE_DISABLE_2 = 33, - MSI_MODE_COLOR_RING_FLASHING = 34, - MSI_MODE_COLOR_RING_DOUBLE_FLASHING = 35, - MSI_MODE_STACK = 36, - MSI_MODE_CORSAIR_QUE = 37, - MSI_MODE_FIRE = 38, - MSI_MODE_LAVA = 39, - MSI_MODE_DIRECT_DUMMY = 100 -}; - -enum MSI_SPEED -{ - MSI_SPEED_LOW = 0, - MSI_SPEED_MEDIUM = 1, - MSI_SPEED_HIGH = 2, -}; - -enum MSI_FAN_TYPE -{ - MSI_FAN_TYPE_SP = 0, - MSI_FAN_TYPE_HD = 1, - MSI_FAN_TYPE_LL = 2, -}; - -enum MSI_BRIGHTNESS -{ - MSI_BRIGHTNESS_OFF = 0, - MSI_BRIGHTNESS_LEVEL_10 = 1, - MSI_BRIGHTNESS_LEVEL_20 = 2, - MSI_BRIGHTNESS_LEVEL_30 = 3, - MSI_BRIGHTNESS_LEVEL_40 = 4, - MSI_BRIGHTNESS_LEVEL_50 = 5, - MSI_BRIGHTNESS_LEVEL_60 = 6, - MSI_BRIGHTNESS_LEVEL_70 = 7, - MSI_BRIGHTNESS_LEVEL_80 = 8, - MSI_BRIGHTNESS_LEVEL_90 = 9, - MSI_BRIGHTNESS_LEVEL_100 = 10, -}; - -#define NUMOF_PER_LED_MODE_LEDS 240 -#define NUM_LEDS_761 720 - -#define SYNC_SETTING_ONBOARD 0x01 -#define SYNC_SETTING_JRAINBOW1 0x02 -#define SYNC_SETTING_JRAINBOW2 0x04 -#define SYNC_SETTING_JCORSAIR 0x08 -#define SYNC_SETTING_JPIPE1 0x10 -#define SYNC_SETTING_JPIPE2 0x20 -#define SYNC_SETTING_JRGB 0x80 - -#define MSI_64_MAX_COLORS 7 - -struct Color -{ - unsigned char R; - unsigned char G; - unsigned char B; -}; - -struct CorsairZoneData -{ - unsigned char effect = MSI_MODE_STATIC; - Color color { 0, 0, 0 }; - unsigned char fan_flags = 40; - unsigned char corsair_quantity = 0; - unsigned char padding[4] = { 0, 0, 0, 0 }; - unsigned char is_individual = 0; -}; - -struct ZoneData -{ - unsigned char effect = MSI_MODE_STATIC; - Color color { 0, 0, 0 }; - unsigned char speedAndBrightnessFlags = 0; - Color color2 { 0, 0, 0 }; - unsigned char colorFlags = 0; - unsigned char padding = 0; -}; - -struct RainbowZoneData : ZoneData -{ - unsigned char cycle_or_led_num = 100; -}; - -struct FeaturePacket_64 -{ - const unsigned char report_id = 0x02; // Report ID - const unsigned char second_byte = 0x00; - unsigned char mode = 0x00; - unsigned char speed = 0x00; - unsigned char brightness = 0x00; - unsigned char num_colors = 0x00; - Color colors[MSI_64_MAX_COLORS] = {}; - const unsigned char padding[37] = {}; //pad to make the packet size 64 bytes -}; - -struct FeaturePacket_112 -{ - const unsigned char report_id = 0x52; // Report ID - ZoneData j_rgb_1; // 1 - ZoneData j_rainbow_1; // 11 - ZoneData j_corsair_1; // 21 - ZoneData j_corsair_outerll120; // 31 - ZoneData on_board_led; // 41 - ZoneData on_board_led_1; // 51 - ZoneData on_board_led_2; // 61 - ZoneData on_board_led_3; // 71 - ZoneData on_board_led_4; // 81 - ZoneData on_board_led_5; // 91 - ZoneData on_board_led_6; // 101 - unsigned char save_data = 0; // 111 -}; - -struct FeaturePacket_162 -{ - const unsigned char report_id = 0x52; // Report ID - ZoneData j_rgb_1; // 1 - ZoneData j_rainbow_1; // 11 - ZoneData j_corsair_1; // 21 - ZoneData j_corsair_outerll120; // 31 - ZoneData on_board_led; // 41 - ZoneData on_board_led_1; // 51 - ZoneData on_board_led_2; // 61 - ZoneData on_board_led_3; // 71 - ZoneData on_board_led_4; // 81 - ZoneData on_board_led_5; // 91 - ZoneData on_board_led_6; // 101 - ZoneData on_board_led_7; // 111 - ZoneData on_board_led_8; // 121 - ZoneData on_board_led_9; // 131 - ZoneData on_board_led_10; // 141 - ZoneData j_rgb_2; // 151 - unsigned char save_data = 0; // 161 -}; - -struct FeaturePacket_185 -{ - const unsigned char report_id = 0x52; // Report ID - ZoneData j_rgb_1; // 1 - ZoneData j_pipe_1; // 11 - ZoneData j_pipe_2; // 21 - RainbowZoneData j_rainbow_1; // 31 - RainbowZoneData j_rainbow_2; // 42 - CorsairZoneData j_corsair; // 53 - ZoneData j_corsair_outerll120; // 64 - ZoneData on_board_led; // 74 - ZoneData on_board_led_1; // 84 - ZoneData on_board_led_2; // 94 - ZoneData on_board_led_3; // 104 - ZoneData on_board_led_4; // 114 - ZoneData on_board_led_5; // 124 - ZoneData on_board_led_6; // 134 - ZoneData on_board_led_7; // 144 - ZoneData on_board_led_8; // 154 - ZoneData on_board_led_9; // 164 - ZoneData j_rgb_2; // 174 - unsigned char save_data = 0; // 184 -}; - -struct FeaturePacket_PerLED_185 -{ - unsigned char report_id = 0x53; // Report ID - unsigned char hdr0 = 0x25; // header byte 0 - unsigned char hdr1 = 0x06; // header byte 1 - unsigned char hdr2 = 0x00; // header byte 2 - unsigned char hdr3 = 0x00; // header byte 3 - Color leds[NUMOF_PER_LED_MODE_LEDS]; -}; - -struct FeaturePacket_PerLED_761 -{ - unsigned char report_id = 0x51; // Report ID - unsigned char fixed1 = 0x09; // Always 9? - unsigned char hdr0; // 0x08 for ez 0x04 for ARGB 0x06 for LED - unsigned char hdr1; // 0 for LED/EZ and argb num for ARGB? - unsigned char fixed2 = 0x00; // IDK what this is - unsigned char fixed3 = 0x00; // IDK what this is - unsigned char hdr2; // Led Count - unsigned char colors [NUM_LEDS_761]; -}; - -struct FeaturePacket_Zone_761 -{ - MSI_ZONE zone; - FeaturePacket_PerLED_761 packet; -}; - -struct FeaturePacket_761 -{ - FeaturePacket_Zone_761 jargb1; - FeaturePacket_Zone_761 jargb2; - FeaturePacket_Zone_761 jargb3; - FeaturePacket_Zone_761 jaf; -}; - -#define MSI_USB_PID_COMMON 0x0076 // Common PID for a certain set of 185-byte boards