From f76bf34d8d890e47a402a60dd28cae8049c1da6d Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Mon, 23 Dec 2019 12:35:42 -0600 Subject: [PATCH] HyperX zones per slot, set Hue Plus zones as linear type --- .../HyperXController/HyperXController.cpp | 15 ++++++ .../HyperXController/HyperXController.h | 1 + RGBController/RGBController_HuePlus.cpp | 1 + RGBController/RGBController_HyperX.cpp | 54 +++++++++++-------- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/Controllers/HyperXController/HyperXController.cpp b/Controllers/HyperXController/HyperXController.cpp index 1367d8be..5a57a0b8 100644 --- a/Controllers/HyperXController/HyperXController.cpp +++ b/Controllers/HyperXController/HyperXController.cpp @@ -56,6 +56,21 @@ unsigned int HyperXController::GetLEDCount() return(led_count); } +unsigned int HyperXController::GetSlotCount() +{ + unsigned int slot_count = 0; + + for(int slot = 0; slot < 4; slot++) + { + if((slots_valid & (1 << slot)) != 0) + { + slot_count++; + } + } + + return(slot_count); +} + unsigned int HyperXController::GetMode() { return(mode); diff --git a/Controllers/HyperXController/HyperXController.h b/Controllers/HyperXController/HyperXController.h index 9e73d8ce..9e86bf4f 100644 --- a/Controllers/HyperXController/HyperXController.h +++ b/Controllers/HyperXController/HyperXController.h @@ -163,6 +163,7 @@ public: std::string GetDeviceName(); std::string GetDeviceLocation(); unsigned int GetLEDCount(); + unsigned int GetSlotCount(); unsigned int GetMode(); void SetMode(unsigned char new_mode); diff --git a/RGBController/RGBController_HuePlus.cpp b/RGBController/RGBController_HuePlus.cpp index 3d99e548..ce4a100f 100644 --- a/RGBController/RGBController_HuePlus.cpp +++ b/RGBController/RGBController_HuePlus.cpp @@ -36,6 +36,7 @@ RGBController_HuePlus::RGBController_HuePlus(HuePlusController* hueplus_ptr) new_zone->name = "Hue+ Channel "; new_zone->name.append(ch_idx_string); + new_zone->type = ZONE_TYPE_LINEAR; std::vector *new_zone_map = new std::vector(); diff --git a/RGBController/RGBController_HyperX.cpp b/RGBController/RGBController_HyperX.cpp index 61b33f9f..233f3e49 100644 --- a/RGBController/RGBController_HyperX.cpp +++ b/RGBController/RGBController_HyperX.cpp @@ -110,29 +110,41 @@ RGBController_HyperX::RGBController_HyperX(HyperXController* hyperx_ptr) modes.push_back(hyperx_modes[i]); } - for (int i = 0; i < hyperx->GetLEDCount(); i++) + unsigned int led_idx = 0; + + for(int slot = 0; slot < hyperx->GetSlotCount(); slot++) { - led* new_led = new led(); + zone* new_zone = new zone; - new_led->name = "HyperX LED"; + char slot_idx_str[3]; + sprintf(slot_idx_str, "%d", slot); + new_zone->name = "HyperX Slot "; + new_zone->name.append(slot_idx_str); - leds.push_back(*new_led); - colors.push_back(0x00000000); + new_zone->type = ZONE_TYPE_LINEAR; + + std::vector *new_zone_map = new std::vector(); + + for(int led_slot_idx = 0; led_slot_idx < 5; led_slot_idx++) + { + colors.push_back(0x00000000); + + led* new_led = new led(); + + char led_idx_str[3]; + sprintf(led_idx_str, "%d", led_slot_idx); + new_led->name = "HyperX Slot "; + new_led->name.append(slot_idx_str); + new_led->name.append(", LED "); + new_led->name.append(led_idx_str); + + leds.push_back(*new_led); + + new_zone_map->push_back(led_idx); + led_idx++; + } + + new_zone->map.push_back(*new_zone_map); + zones.push_back(*new_zone); } - - zone new_zone; - - new_zone.name = "HyperX Zone"; - new_zone.type = ZONE_TYPE_SINGLE; - - std::vector zone_row; - - for (int i = 0; i < hyperx->GetLEDCount(); i++) - { - zone_row.push_back(i); - } - - new_zone.map.push_back(zone_row); - - zones.push_back(new_zone); }