diff --git a/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp index df6ce6783..27927d814 100644 --- a/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.cpp @@ -38,13 +38,14 @@ using namespace std::chrono_literals; struct mystic_light_185_config { - unsigned short pid; // PID of the board - int numof_onboard_leds; // number of onboard leds - int numof_pipe1_leds; // number of pipe 1 leds (used in per LED mode only) - 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 - MSIMotherboard185Controller::DIRECT_MODE per_led_mode; // type of direct mode support + unsigned short pid; // PID of the board + int numof_onboard_leds; // number of onboard leds + int numof_pipe1_leds; // number of pipe 1 leds (used in per LED mode only) + 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 + MSIMotherboard185Controller::DIRECT_MODE per_led_mode; // type of direct mode support + unsigned char minimum_firmware_version; // minimum required firmware version for this config (0 = all versions acceptable) }; const std::vector all_zones = @@ -257,104 +258,103 @@ const std::vector zones_set21 = static const mystic_light_185_config board_configs[] = { - { 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_set9, 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) + { 0x7B93, 6, 1, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MPG X570 GAMING PRO CARBON WIFI + { 0x7C34, 0, 1, 1, 1, &zones_set8, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MEG X570 GODLIKE + { 0x7C35, 0, 1, 0, 1, &zones_set9, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MEG X570 ACE + { 0x7C36, 6, 1, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // PRESTIGE X570 CREATION + { 0x7C37, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MPG X570 GAMING PLUS + { 0x7C56, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 6 }, // MPG B550 GAMING PLUS + { 0x7C59, 0, 8, 0, 1, &zones_set9, MSIMotherboard185Controller::DIRECT_MODE_DISABLED, 0 }, // CREATOR TRX40 + { 0x7C60, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // TRX40-A PRO + { 0x7C67, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B365M MORTAR + { 0x7C71, 6, 6, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z490 ACE + { 0x7C73, 6, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z490 GAMING CARBON WIFI + { 0x7C75, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z490 GAMING PLUS + { 0x7C76, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_DISABLED, 0 }, // MPG Z490M GAMING EDGE + { 0x7C77, 0, 0, 0, 0, &zones_set14, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z490I UNIFY + { 0x7C79, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z490 GAMING EDGE WIFI + { 0x7C80, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG Z490 TOMAHAWK + { 0x7C02, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B450 TOMAHAWK MAX + { 0x7C81, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B460 TOMAHAWK + { 0x7C82, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B460M MORTAR WIFI + { 0x7C83, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_DISABLED, 0 }, // B460M PRO-VDH WIFI + { 0x7C84, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MAG X570 TOMAHAWK WIFI + { 0x7C86, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_DISABLED, 0 }, // MPG B460I GAMING EDGE + { 0x7C87, 6, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B450M BAZOOKA MAX WIFI + { 0x7C90, 6, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B550 GAMING CARBON WIFI + { 0x7C91, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B550 TOMAHAWK + { 0x7C92, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B550I GAMING EDGE WIFI + { 0x7C94, 6, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B550M MORTAR + { 0x7C95, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B550M PRO-VDH WIFI + { 0x7C98, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // Z490 PLUS + { 0x7D03, 0, 15, 18, 1, &zones_set8, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z590 GODLIKE + { 0x7D06, 4, 4, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z590 GAMING FORCE + { 0x7D07, 4, 5, 0, 2, &zones_set7, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z590 GAMING EDGE WIFI + { 0x7D08, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG Z590 TOMAHAWK + { 0x7D09, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // Z590-A PRO WIFI + { 0x7D13, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG B550 UNIFY + { 0x7D14, 6, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // A520M PRO + { 0x7D15, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B560 TOMAHAWK WIFI + { 0x7D17, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B560M MORTAR + { 0x7D18, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B560M PRO-VDH + { 0x7D19, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B560I GAMIING EDGE WIFI + { 0x7D20, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B560M PRO + { 0x7D25, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO Z690-A WIFI DDR4 + { 0x7D27, 6, 0, 0, 2, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z690 ACE + { 0x7D28, 6, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z690 UNIFY-X + { 0x7D29, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z690I UNIFY + { 0x7D30, 6, 6, 0, 2, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z690 CARBON WIFI + { 0x7D31, 4, 8, 0, 2, &zones_set12, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG EDGE WIFI DDR4 + { 0x7D32, 1, 0, 0, 1, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG Z690 TOMAHAWK WIFI DDR4 + { 0x7D33, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO Z790-VC WIFI + { 0x7D36, 6, 0, 0, 2, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO Z690-P DDR4 + { 0x7D37, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B760M-VC WIFI (MS-7D37) - fans on JRAINBOW2 + { 0x7D38, 0, 0, 0, 1, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z590 UNIFY-X + { 0x7D40, 0, 0, 0, 1, &zones_set5, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B760i EDGE WIFI DDR4 + { 0x7D41, 6, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B660M TOMAHAWK WIFI DDR4 + { 0x7D42, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B660 MORTAR WIFI DDR4 + { 0x7D43, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B660M-A WIFI DDR4 + { 0x7D46, 0, 1, 1, 0, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO H610M-G DDR4 + { 0x7D50, 6, 12, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG X570S ACE MAX + { 0x7D51, 6, 0, 0, 2, &zones_set1, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG X570S UNIFY-X MAX + { 0x7D52, 6, 14, 0, 1, &zones_set3, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG X570S CARBON EK X + { 0x7D53, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG X570S EDGE MAX WIFI + { 0x7D54, 6, 0, 0, 2, &zones_set0, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG X570S TOMAHAWK MAX WIFI + { 0x7D59, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B660-A DDR4 + { 0x7D67, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO X670-P WIFI + { 0x7D69, 9, 2, 4, 1, &zones_set15, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG X670E ACE + { 0x7D70, 0, 6, 0, 1, &zones_set9, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG X670E Carbon WIFI + { 0x7D73, 1, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B650I EDGE WIFI + { 0x7D74, 0, 6, 0, 1, &zones_set18, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B650 CARBON WIFI + { 0x7D75, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B650 TOMAHAWK WIFI + { 0x7D76, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B650M MORTAR WIFI + { 0x7D77, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B650M-A WIFI + { 0x7D78, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B650-P WIFI + { 0x7D86, 0, 18, 4, 1, &zones_set16, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MEG Z790 ACE + { 0x7D88, 0, 0, 0, 1, &zones_set20, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z790-S WIFI + { 0x7D89, 0, 6, 0, 1, &zones_set18, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z790 CARBON WIFI + { 0x7D90, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B760M BOMBER DDR4 + { 0x7D91, 1, 0, 0, 1, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG Z790 TOMAHAWK WIFI + { 0x7D93, 6, 0, 0, 1, &zones_set2, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // Z790 GAMING PRO WIFI + { 0x7D96, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B760 TOMAHAWK WIFI DDR5 + { 0x7D97, 6, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B660 MORTAR MAX WIFI DDR4 + { 0x7D98, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B760-P WIFI DDR4 + { 0x7D99, 6, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B760M-A WIFI DDR4 + { 0x7E01, 0, 0, 0, 1, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG B760M MORTAR MAX + { 0x7E03, 6, 0, 0, 0, &zones_set6, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG Z790I EDGE WIFI + { 0x7E06, 0, 0, 0, 2, &zones_set11, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO Z790-P WIFI DDR4 + { 0x7E07, 0, 0, 0, 2, &zones_set10, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO Z790-A WIFI DDR4 + { 0x7E09, 0, 0, 0, 0, &zones_set19, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B650M PROJECT ZERO + { 0x7E10, 0, 6, 0, 2, &zones_set17, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MPG B650 EDGE WIFI + { 0x7E12, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG X670E TOMAHAWK WIFI + { 0x0076, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // MAG X670E TOMAHAWK WIFI (Common PID) + { 0x7E16, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // X670E GAMING PLUS WIFI + { 0x7E24, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B650M GAMING PLUS WIFI + { 0x7E26, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // B650 GAMING PLUS WIFI + { 0x7E27, 0, 0, 0, 2, &zones_set13, MSIMotherboard185Controller::DIRECT_MODE_PER_LED, 0 }, // PRO B650M-P + { 0x7E28, 6, 0, 0, 2, &zones_set21, MSIMotherboard185Controller::DIRECT_MODE_ZONE_BASED, 0 }, // MSI PRO A620M-B (MS-7E28) }; - FeaturePacket_185 enable_per_led_msg; Color* per_led_onboard_leds; @@ -367,17 +367,15 @@ Color* per_led_jcorsair_sync; MSIMotherboard185Controller::MSIMotherboard185Controller(hid_device* handle, const char* path, unsigned short pid, std::string dev_name) { - dev = handle; - location = path; - name = dev_name; + dev = handle; + location = path; + name = dev_name; + version_invalid = false; /*-----------------------------------------------------*\ - | Perform initial reads - get the controller's firmware | - | version and then read the controller's active | - | configuration data | + | Read the controller's firmware version | \*-----------------------------------------------------*/ ReadFwVersion(); - ReadSettings(); /*-----------------------------------------------------*\ | Common PID boards embed their virtual PID in the | @@ -425,6 +423,16 @@ MSIMotherboard185Controller::MSIMotherboard185Controller(hid_device* handle, con } } + /*-----------------------------------------------------*\ + | If the firmware version is below the minimum, set | + | invalid version flag and return | + \*-----------------------------------------------------*/ + if(version_APROM_val < board_config->minimum_firmware_version) + { + version_invalid = true; + return; + } + /*-----------------------------------------------------*\ | Fill in the number of each zone type based on the | | board configuration | @@ -448,6 +456,11 @@ MSIMotherboard185Controller::MSIMotherboard185Controller(hid_device* handle, con per_led_mode = DIRECT_MODE_DISABLED; } + /*-----------------------------------------------------*\ + | Read the controller's active configuration data | + \*-----------------------------------------------------*/ + ReadSettings(); + /*-----------------------------------------------------*\ | Initialize per-LED data | \*-----------------------------------------------------*/ @@ -592,6 +605,11 @@ MSIMotherboard185Controller::~MSIMotherboard185Controller() hid_close(dev); } +bool MSIMotherboard185Controller::GetFirmwareVersionInvalid() +{ + return(version_invalid); +} + void MSIMotherboard185Controller::SetMode ( MSI_ZONE zone, @@ -1163,6 +1181,8 @@ bool MSIMotherboard185Controller::ReadFwVersion() ret_val &= hid_write(dev, request, 64); ret_val &= hid_read(dev, response, 64); + version_APROM_val = response[2]; + /*-----------------------------------------------------*\ | Extract high and low values from response | \*-----------------------------------------------------*/ diff --git a/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h index 14f1719ef..0d5e2bd66 100644 --- a/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h +++ b/Controllers/MSIMotherboardController/MSIMotherboard185Controller/MSIMotherboard185Controller.h @@ -46,6 +46,7 @@ public: ); MSI_MODE GetMode(); + bool GetFirmwareVersionInvalid(); void GetMode ( @@ -119,6 +120,8 @@ private: std::string name; std::string location; std::string version_APROM; + unsigned char version_APROM_val; + bool version_invalid; std::string version_LDROM; FeaturePacket_185 data; diff --git a/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp index 0e3432eaf..c22a41ee7 100644 --- a/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp @@ -54,9 +54,17 @@ DetectedControllers DetectMSIMotherboardControllers(hid_device_info* info, const if((packet_length >= sizeof(FeaturePacket_185)) && (packet_length <= (sizeof(FeaturePacket_185) + 1))) //WHY r we doing this ? why not == { 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); + if(controller->GetFirmwareVersionInvalid()) + { + LOG_WARNING("[MSIMotherboard185] Controller firmware below minimum supported version, skipping"); + } + else + { + 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))) {