From 7e06b7f3a5fbd0b5ab53c65818b717b1e108aca2 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sat, 6 Mar 2021 23:45:36 -0600 Subject: [PATCH] Group pipe and onboard LEDs into zones --- .../RGBController_MSIMysticLight162.cpp | 2 - .../RGBController_MSIMysticLight185.cpp | 119 ++++++++++++------ 2 files changed, 82 insertions(+), 39 deletions(-) diff --git a/Controllers/MSIMysticLightController/RGBController_MSIMysticLight162.cpp b/Controllers/MSIMysticLightController/RGBController_MSIMysticLight162.cpp index 5c253babf..6cc999613 100644 --- a/Controllers/MSIMysticLightController/RGBController_MSIMysticLight162.cpp +++ b/Controllers/MSIMysticLightController/RGBController_MSIMysticLight162.cpp @@ -9,8 +9,6 @@ #include "RGBController_MSIMysticLight162.h" -#define NUM_LED_ZONES (sizeof(led_zones) / sizeof(ZoneDescription)) - struct ZoneDescription { std::string name; diff --git a/Controllers/MSIMysticLightController/RGBController_MSIMysticLight185.cpp b/Controllers/MSIMysticLightController/RGBController_MSIMysticLight185.cpp index 0d8ea41db..ad3ea88cf 100644 --- a/Controllers/MSIMysticLightController/RGBController_MSIMysticLight185.cpp +++ b/Controllers/MSIMysticLightController/RGBController_MSIMysticLight185.cpp @@ -10,33 +10,75 @@ #include "RGBController_MSIMysticLight185.h" -#define NUM_LED_ZONES (sizeof(led_zones) / sizeof(ZoneDescription)) - struct ZoneDescription { - std::string name; - MSI_ZONE value; + std::string name; + const MSI_ZONE* leds; }; +static const MSI_ZONE ZoneList_JRGB1[] = +{ + MSI_ZONE_J_RGB_1, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_JRGB2[] = +{ + MSI_ZONE_J_RGB_2, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_JRainbow1[] = +{ + MSI_ZONE_J_RAINBOW_1, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_JRainbow2[] = +{ + MSI_ZONE_J_RAINBOW_2, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_JCorsair[] = +{ + MSI_ZONE_J_CORSAIR, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_JPipe[] = +{ + MSI_ZONE_J_PIPE_1, + MSI_ZONE_J_PIPE_2, + MSI_ZONE_NONE +}; + +static const MSI_ZONE ZoneList_Onboard[] = +{ + MSI_ZONE_ON_BOARD_LED_0, + MSI_ZONE_ON_BOARD_LED_1, + MSI_ZONE_ON_BOARD_LED_2, + MSI_ZONE_ON_BOARD_LED_3, + MSI_ZONE_ON_BOARD_LED_4, + MSI_ZONE_ON_BOARD_LED_5, + MSI_ZONE_ON_BOARD_LED_6, + MSI_ZONE_ON_BOARD_LED_7, + MSI_ZONE_ON_BOARD_LED_8, + MSI_ZONE_ON_BOARD_LED_9, + MSI_ZONE_NONE +}; + +#define NUM_ZONES (sizeof(led_zones) / sizeof(led_zones[0])) + static const ZoneDescription led_zones[] = { - ZoneDescription{"JRGB1", MSI_ZONE_J_RGB_1}, - ZoneDescription{"JRGB2", MSI_ZONE_J_RGB_2}, - ZoneDescription{"JRAINBOW1", MSI_ZONE_J_RAINBOW_1}, - ZoneDescription{"JRAINBOW2", MSI_ZONE_J_RAINBOW_2}, - ZoneDescription{"JPIPE1", MSI_ZONE_J_PIPE_1}, - ZoneDescription{"JPIPE2", MSI_ZONE_J_PIPE_2}, - ZoneDescription{"JCORSAIR", MSI_ZONE_J_CORSAIR}, - ZoneDescription{"Onboard LED 0", MSI_ZONE_ON_BOARD_LED_0}, - ZoneDescription{"Onboard LED 1", MSI_ZONE_ON_BOARD_LED_1}, - ZoneDescription{"Onboard LED 2", MSI_ZONE_ON_BOARD_LED_2}, - ZoneDescription{"Onboard LED 3", MSI_ZONE_ON_BOARD_LED_3}, - ZoneDescription{"Onboard LED 4", MSI_ZONE_ON_BOARD_LED_4}, - ZoneDescription{"Onboard LED 5", MSI_ZONE_ON_BOARD_LED_5}, - ZoneDescription{"Onboard LED 6", MSI_ZONE_ON_BOARD_LED_6}, - ZoneDescription{"Onboard LED 7", MSI_ZONE_ON_BOARD_LED_7}, - ZoneDescription{"Onboard LED 8", MSI_ZONE_ON_BOARD_LED_8}, - ZoneDescription{"Onboard LED 9", MSI_ZONE_ON_BOARD_LED_9}, + ZoneDescription{"JRGB1", ZoneList_JRGB1 }, + ZoneDescription{"JRGB2", ZoneList_JRGB2 }, + ZoneDescription{"JRAINBOW1", ZoneList_JRainbow1 }, + ZoneDescription{"JRAINBOW2", ZoneList_JRainbow2 }, + ZoneDescription{"JCORSAIR", ZoneList_JCorsair }, + ZoneDescription{"Pipe LEDs", ZoneList_JPipe }, + ZoneDescription{"Onboard LEDs", ZoneList_Onboard }, }; RGBController_MSIMysticLight185::RGBController_MSIMysticLight185(MSIMysticLight185Controller* controller_ptr) @@ -66,16 +108,25 @@ void RGBController_MSIMysticLight185::SetupZones() /*---------------------------------------------------------*\ | Set up zones | \*---------------------------------------------------------*/ - for(std::size_t zone_idx = 0; zone_idx < NUM_LED_ZONES; zone_idx++) + for(std::size_t zone_idx = 0; zone_idx < NUM_ZONES; zone_idx++) { - ZoneDescription zd = led_zones[zone_idx]; + ZoneDescription zd = led_zones[zone_idx]; + zone new_zone; + + unsigned int led_count; + + while(zd.leds[led_count] != MSI_ZONE_NONE) + { + led_count++; + } + new_zone.name = zd.name; new_zone.type = ZONE_TYPE_LINEAR; - new_zone.leds_min = 1; - new_zone.leds_max = 1; - new_zone.leds_count = 1; + new_zone.leds_min = led_count; + new_zone.leds_max = led_count; + new_zone.leds_count = led_count; new_zone.matrix_map = NULL; zones.push_back(new_zone); @@ -92,7 +143,7 @@ void RGBController_MSIMysticLight185::SetupZones() new_led.name.append(std::to_string(led_idx + 1)); } - new_led.value = zone_idx; + new_led.value = zd.leds[led_idx]; leds.push_back(new_led); } @@ -192,17 +243,11 @@ void RGBController_MSIMysticLight185::UpdateLed(int zone, int led) unsigned char red = RGBGetRValue(zones[zone].colors[led]); unsigned char grn = RGBGetGValue(zones[zone].colors[led]); unsigned char blu = RGBGetBValue(zones[zone].colors[led]); - MSI_MODE mode = (MSI_MODE)(modes[active_mode].value); - MSI_SPEED speed = (MSI_SPEED)(modes[active_mode].speed); - MSI_ZONE zon = ZoneFromPos(zone); + MSI_MODE mode = (MSI_MODE)(modes[active_mode].value); + MSI_SPEED speed = (MSI_SPEED)(modes[active_mode].speed); - controller->SetMode(zon, mode, speed, MSI_BRIGHTNESS_LEVEL_100, random); - controller->SetZoneColor(zon, red, grn, blu, red, grn, blu); -} - -MSI_ZONE RGBController_MSIMysticLight185::ZoneFromPos(int zone) -{ - return led_zones[zone].value; + controller->SetMode((MSI_ZONE)zones[zone].leds[led].value, mode, speed, MSI_BRIGHTNESS_LEVEL_100, random); + controller->SetZoneColor((MSI_ZONE)zones[zone].leds[led].value, red, grn, blu, red, grn, blu); } void RGBController_MSIMysticLight185::SetupMode(const char *name, MSI_MODE mod, unsigned int flags)