From 4d9d588db5a66901a7dbc728aa0ccfbb5b8712d6 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Thu, 24 Oct 2019 19:16:51 -0500 Subject: [PATCH] Fix LED zone mapping --- RGBController/RGBController_E131.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/RGBController/RGBController_E131.cpp b/RGBController/RGBController_E131.cpp index 7ae836bb1..508a1e66f 100644 --- a/RGBController/RGBController_E131.cpp +++ b/RGBController/RGBController_E131.cpp @@ -17,6 +17,7 @@ RGBController_E131::RGBController_E131(std::vector device_list) devices = device_list; + unsigned int led_zone_idx = 0; mode led_mode; led_mode.name = "Custom"; modes.push_back(led_mode); @@ -32,7 +33,7 @@ RGBController_E131::RGBController_E131(std::vector device_list) { colors.push_back(0x00000000); led new_led; - new_led.name = "E1.31 LED"; + new_led.name = devices[i].name + " LED"; leds.push_back(new_led); } @@ -45,7 +46,8 @@ RGBController_E131::RGBController_E131(std::vector device_list) std::vector led_zone_map; for (int led_idx = 0; led_idx < devices[i].num_leds; led_idx++) { - led_zone_map.push_back(led_idx); + led_zone_map.push_back(led_zone_idx); + led_zone_idx++; } led_zone.map.push_back(led_zone_map); zones.push_back(led_zone); @@ -111,9 +113,12 @@ void RGBController_E131::SetAllLEDs(RGBColor color) void RGBController_E131::SetAllZoneLEDs(int zone, RGBColor color) { - for (int i = 0; i < colors.size(); i++) + for (int x = 0; x < zones[zone].map.size(); x++) { - colors[i] = color; + for (int y = 0; y < zones[zone].map[x].size(); y++) + { + colors[zones[zone].map[x][y]] = color; + } } UpdateLEDs(); @@ -128,6 +133,8 @@ void RGBController_E131::SetLED(int led, RGBColor color) void RGBController_E131::UpdateLEDs() { + int color_idx = 0; + for(int device_idx = 0; device_idx < devices.size(); device_idx++) { unsigned int total_universes = ceil( ( ( devices[device_idx].num_leds * 3 ) + devices[device_idx].start_channel ) / 512.0f ); @@ -149,17 +156,18 @@ void RGBController_E131::UpdateLEDs() switch(rgb_idx) { case 0: - packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetRValue( colors[led_idx] ); + packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetRValue( colors[color_idx] ); rgb_idx = 1; break; case 1: - packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetGValue( colors[led_idx] ); + packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetGValue( colors[color_idx] ); rgb_idx = 2; break; case 2: - packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetBValue( colors[led_idx] ); + packets[packet_idx].dmp.prop_val[channel_idx] = RGBGetBValue( colors[color_idx] ); rgb_idx = 0; led_idx++; + color_idx++; break; }