diff --git a/Controllers/DebugController/DebugControllerDetect.cpp b/Controllers/DebugController/DebugControllerDetect.cpp index afcaeddf..5caf74ff 100644 --- a/Controllers/DebugController/DebugControllerDetect.cpp +++ b/Controllers/DebugController/DebugControllerDetect.cpp @@ -1,6 +1,7 @@ #include "Detector.h" #include "RGBController.h" #include "RGBController_Dummy.h" +#include "SettingsManager.h" #include #include #include @@ -11,18 +12,6 @@ #include #include -#ifndef WIN32 -#include -#include -#else -#include -#endif - -#ifndef WIN32 -#define LPSTR char * -#define strtok_s strtok_r -#endif - //0xFFFFFFFF indicates an unused entry in matrix #define NA 0xFFFFFFFF @@ -178,338 +167,329 @@ static const char *led_names[] = void DetectDebugControllers(std::vector &rgb_controllers) { - std::ifstream infile; + json debug_settings; - //Open settings file - infile.open("debug.txt"); + /*-------------------------------------------------*\ + | Get Debug Device settings from settings manager | + \*-------------------------------------------------*/ + debug_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("Setting_DebugDevices"); - if (infile.good()) + /*-------------------------------------------------*\ + | If the Debug settings contains devices, process | + \*-------------------------------------------------*/ + if(debug_settings.contains("devices")) { - for (std::string line; std::getline(infile, line); ) + for(unsigned int device_idx = 0; device_idx < debug_settings["devices"].size(); device_idx++) { - if (line == "") + std::string type = ""; + + if(debug_settings["devices"][device_idx].contains("type")) { - continue; + type = debug_settings["devices"][device_idx]["type"]; } - if ((line[0] != ';') && (line[0] != '#') && (line[0] != '/')) + if(type == "motherboard") { - char * argument; - char * value; + /*---------------------------------------------------------*\ + | Create a dummy motherboard | + \*---------------------------------------------------------*/ + RGBController_Dummy* dummy_motherboard = new RGBController_Dummy(); - value = (char *)line.c_str(); + dummy_motherboard->name = "Debug Motherboard"; + dummy_motherboard->type = DEVICE_TYPE_MOTHERBOARD; + dummy_motherboard->description = "Debug Motherboard Device"; + dummy_motherboard->location = "Debug Motherboard Location"; + dummy_motherboard->version = "Debug Motherboard Version"; + dummy_motherboard->serial = "Debug Motherboard Serial"; - argument = strtok_s(value, "=", &value); + /*---------------------------------------------------------*\ + | Create a direct mode for the dummy motherboard | + \*---------------------------------------------------------*/ + mode dummy_motherboard_direct_mode; - //Strip off new line characters if present - argument = strtok(argument, "\r\n"); - value = strtok(value, "\r\n"); + dummy_motherboard_direct_mode.name = "Direct"; + dummy_motherboard_direct_mode.value = 0; + dummy_motherboard_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; + dummy_motherboard_direct_mode.color_mode = MODE_COLORS_PER_LED; - if(argument) + dummy_motherboard->modes.push_back(dummy_motherboard_direct_mode); + + /*---------------------------------------------------------*\ + | Create a single zone/LED for the dummy motherboard | + \*---------------------------------------------------------*/ + zone dummy_motherboard_single_zone; + + dummy_motherboard_single_zone.name = "Single Zone"; + dummy_motherboard_single_zone.type = ZONE_TYPE_SINGLE; + dummy_motherboard_single_zone.leds_min = 1; + dummy_motherboard_single_zone.leds_max = 1; + dummy_motherboard_single_zone.leds_count = 1; + dummy_motherboard_single_zone.matrix_map = NULL; + + dummy_motherboard->zones.push_back(dummy_motherboard_single_zone); + + led dummy_motherboard_single_led; + + dummy_motherboard_single_led.name = "Single LED"; + + dummy_motherboard->leds.push_back(dummy_motherboard_single_led); + + /*---------------------------------------------------------*\ + | Create a linear zone for the dummy motherboard | + \*---------------------------------------------------------*/ + zone dummy_motherboard_linear_zone; + + dummy_motherboard_linear_zone.name = "Linear Zone"; + dummy_motherboard_linear_zone.type = ZONE_TYPE_LINEAR; + dummy_motherboard_linear_zone.leds_min = 10; + dummy_motherboard_linear_zone.leds_max = 10; + dummy_motherboard_linear_zone.leds_count = 10; + dummy_motherboard_linear_zone.matrix_map = NULL; + + dummy_motherboard->zones.push_back(dummy_motherboard_linear_zone); + + for(std::size_t led_idx = 0; led_idx < 10; led_idx++) { - if (strcmp(argument, "debug_motherboard") == 0) - { - /*---------------------------------------------------------*\ - | Create a dummy motherboard | - \*---------------------------------------------------------*/ - RGBController_Dummy* dummy_motherboard = new RGBController_Dummy(); + led dummy_motherboard_linear_led; - dummy_motherboard->name = "Debug Motherboard"; - dummy_motherboard->type = DEVICE_TYPE_MOTHERBOARD; - dummy_motherboard->description = "Debug Motherboard Device"; - dummy_motherboard->location = "Debug Motherboard Location"; - dummy_motherboard->version = "Debug Motherboard Version"; - dummy_motherboard->serial = "Debug Motherboard Serial"; + dummy_motherboard_linear_led.name = "Linear LED " + std::to_string(led_idx); - /*---------------------------------------------------------*\ - | Create a direct mode for the dummy motherboard | - \*---------------------------------------------------------*/ - mode dummy_motherboard_direct_mode; - - dummy_motherboard_direct_mode.name = "Direct"; - dummy_motherboard_direct_mode.value = 0; - dummy_motherboard_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; - dummy_motherboard_direct_mode.color_mode = MODE_COLORS_PER_LED; - - dummy_motherboard->modes.push_back(dummy_motherboard_direct_mode); - - /*---------------------------------------------------------*\ - | Create a single zone/LED for the dummy motherboard | - \*---------------------------------------------------------*/ - zone dummy_motherboard_single_zone; - - dummy_motherboard_single_zone.name = "Single Zone"; - dummy_motherboard_single_zone.type = ZONE_TYPE_SINGLE; - dummy_motherboard_single_zone.leds_min = 1; - dummy_motherboard_single_zone.leds_max = 1; - dummy_motherboard_single_zone.leds_count = 1; - dummy_motherboard_single_zone.matrix_map = NULL; - - dummy_motherboard->zones.push_back(dummy_motherboard_single_zone); - - led dummy_motherboard_single_led; - - dummy_motherboard_single_led.name = "Single LED"; - - dummy_motherboard->leds.push_back(dummy_motherboard_single_led); - - /*---------------------------------------------------------*\ - | Create a linear zone for the dummy motherboard | - \*---------------------------------------------------------*/ - zone dummy_motherboard_linear_zone; - - dummy_motherboard_linear_zone.name = "Linear Zone"; - dummy_motherboard_linear_zone.type = ZONE_TYPE_LINEAR; - dummy_motherboard_linear_zone.leds_min = 10; - dummy_motherboard_linear_zone.leds_max = 10; - dummy_motherboard_linear_zone.leds_count = 10; - dummy_motherboard_linear_zone.matrix_map = NULL; - - dummy_motherboard->zones.push_back(dummy_motherboard_linear_zone); - - for(std::size_t led_idx = 0; led_idx < 10; led_idx++) - { - led dummy_motherboard_linear_led; - - dummy_motherboard_linear_led.name = "Linear LED " + std::to_string(led_idx); - - dummy_motherboard->leds.push_back(dummy_motherboard_linear_led); - } - - dummy_motherboard->SetupColors(); - - /*---------------------------------------------------------*\ - | Push the dummy motherboard onto the controller list | - \*---------------------------------------------------------*/ - rgb_controllers.push_back(dummy_motherboard); - } - else if(strcmp(argument, "debug_dram") == 0) - { - /*---------------------------------------------------------*\ - | Create a dummy DRAM | - \*---------------------------------------------------------*/ - RGBController_Dummy* dummy_dram = new RGBController_Dummy(); - - dummy_dram->name = "Debug DRAM"; - dummy_dram->type = DEVICE_TYPE_DRAM; - dummy_dram->description = "Debug DRAM Device"; - dummy_dram->location = "Debug DRAM Location"; - dummy_dram->version = "Debug DRAM Version"; - dummy_dram->serial = "Debug DRAM Serial"; - - /*---------------------------------------------------------*\ - | Create a direct mode for the dummy DRAM | - \*---------------------------------------------------------*/ - mode dummy_dram_direct_mode; - - dummy_dram_direct_mode.name = "Direct"; - dummy_dram_direct_mode.value = 0; - dummy_dram_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; - dummy_dram_direct_mode.color_mode = MODE_COLORS_PER_LED; - - dummy_dram->modes.push_back(dummy_dram_direct_mode); - - /*---------------------------------------------------------*\ - | Create a single zone/LED for the dummy DRAM | - \*---------------------------------------------------------*/ - zone dummy_dram_single_zone; - - dummy_dram_single_zone.name = "Single Zone"; - dummy_dram_single_zone.type = ZONE_TYPE_SINGLE; - dummy_dram_single_zone.leds_min = 1; - dummy_dram_single_zone.leds_max = 1; - dummy_dram_single_zone.leds_count = 1; - dummy_dram_single_zone.matrix_map = NULL; - - dummy_dram->zones.push_back(dummy_dram_single_zone); - - led dummy_dram_single_led; - - dummy_dram_single_led.name = "Single LED"; - - dummy_dram->leds.push_back(dummy_dram_single_led); - - /*---------------------------------------------------------*\ - | Create a linear zone for the dummy DRAM | - \*---------------------------------------------------------*/ - zone dummy_dram_linear_zone; - - dummy_dram_linear_zone.name = "Linear Zone"; - dummy_dram_linear_zone.type = ZONE_TYPE_LINEAR; - dummy_dram_linear_zone.leds_min = 5; - dummy_dram_linear_zone.leds_max = 5; - dummy_dram_linear_zone.leds_count = 5; - dummy_dram_linear_zone.matrix_map = NULL; - - dummy_dram->zones.push_back(dummy_dram_linear_zone); - - for(std::size_t led_idx = 0; led_idx < 5; led_idx++) - { - led dummy_dram_linear_led; - - dummy_dram_linear_led.name = "Linear LED " + std::to_string(led_idx); - - dummy_dram->leds.push_back(dummy_dram_linear_led); - } - - dummy_dram->SetupColors(); - - /*---------------------------------------------------------*\ - | Push the dummy DRAM onto the controller list | - \*---------------------------------------------------------*/ - rgb_controllers.push_back(dummy_dram); - } - else if(strcmp(argument, "debug_gpu") == 0) - { - /*---------------------------------------------------------*\ - | Create a dummy GPU | - \*---------------------------------------------------------*/ - RGBController_Dummy* dummy_gpu = new RGBController_Dummy(); - - dummy_gpu->name = "Debug GPU"; - dummy_gpu->type = DEVICE_TYPE_GPU; - dummy_gpu->description = "Debug GPU Device"; - dummy_gpu->location = "Debug GPU Location"; - dummy_gpu->version = "Debug GPU Version"; - dummy_gpu->serial = "Debug GPU Serial"; - - /*---------------------------------------------------------*\ - | Create a direct mode for the dummy GPU | - \*---------------------------------------------------------*/ - mode dummy_gpu_direct_mode; - - dummy_gpu_direct_mode.name = "Direct"; - dummy_gpu_direct_mode.value = 0; - dummy_gpu_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; - dummy_gpu_direct_mode.color_mode = MODE_COLORS_PER_LED; - - dummy_gpu->modes.push_back(dummy_gpu_direct_mode); - - /*---------------------------------------------------------*\ - | Create a single zone/LED for the dummy GPU | - \*---------------------------------------------------------*/ - zone dummy_gpu_single_zone; - - dummy_gpu_single_zone.name = "Single Zone"; - dummy_gpu_single_zone.type = ZONE_TYPE_SINGLE; - dummy_gpu_single_zone.leds_min = 1; - dummy_gpu_single_zone.leds_max = 1; - dummy_gpu_single_zone.leds_count = 1; - dummy_gpu_single_zone.matrix_map = NULL; - - dummy_gpu->zones.push_back(dummy_gpu_single_zone); - - led dummy_gpu_single_led; - - dummy_gpu_single_led.name = "Single LED"; - - dummy_gpu->leds.push_back(dummy_gpu_single_led); - - /*---------------------------------------------------------*\ - | Create a linear zone for the dummy GPU | - \*---------------------------------------------------------*/ - zone dummy_gpu_linear_zone; - - dummy_gpu_linear_zone.name = "Linear Zone"; - dummy_gpu_linear_zone.type = ZONE_TYPE_LINEAR; - dummy_gpu_linear_zone.leds_min = 15; - dummy_gpu_linear_zone.leds_max = 15; - dummy_gpu_linear_zone.leds_count = 15; - dummy_gpu_linear_zone.matrix_map = NULL; - - dummy_gpu->zones.push_back(dummy_gpu_linear_zone); - - for(std::size_t led_idx = 0; led_idx < 15; led_idx++) - { - led dummy_gpu_linear_led; - - dummy_gpu_linear_led.name = "Linear LED " + std::to_string(led_idx); - - dummy_gpu->leds.push_back(dummy_gpu_linear_led); - } - - dummy_gpu->SetupColors(); - - /*---------------------------------------------------------*\ - | Push the dummy GPU onto the controller list | - \*---------------------------------------------------------*/ - rgb_controllers.push_back(dummy_gpu); - } - else if(strcmp(argument, "debug_keyboard") == 0) - { - /*---------------------------------------------------------*\ - | Create a dummy Keyboard | - \*---------------------------------------------------------*/ - RGBController_Dummy* dummy_keyboard = new RGBController_Dummy(); - - dummy_keyboard->name = "Debug Keyboard"; - dummy_keyboard->type = DEVICE_TYPE_KEYBOARD; - dummy_keyboard->description = "Debug Keyboard Device"; - dummy_keyboard->location = "Debug Keyboard Location"; - dummy_keyboard->version = "Debug Keyboard Version"; - dummy_keyboard->serial = "Debug Keyboard Serial"; - - /*---------------------------------------------------------*\ - | Create a direct mode for the dummy GPU | - \*---------------------------------------------------------*/ - mode dummy_gpu_direct_mode; - - dummy_gpu_direct_mode.name = "Direct"; - dummy_gpu_direct_mode.value = 0; - dummy_gpu_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; - dummy_gpu_direct_mode.color_mode = MODE_COLORS_PER_LED; - - dummy_keyboard->modes.push_back(dummy_gpu_direct_mode); - - /*---------------------------------------------------------*\ - | Create a matrix zone for the debug Keyboard | - \*---------------------------------------------------------*/ - zone dummy_keyboard_matrix_zone; - - dummy_keyboard_matrix_zone.name = "Keyboard Matrix Zone"; - dummy_keyboard_matrix_zone.type = ZONE_TYPE_MATRIX; - dummy_keyboard_matrix_zone.leds_min = 106; - dummy_keyboard_matrix_zone.leds_max = 106; - dummy_keyboard_matrix_zone.leds_count = 106; - dummy_keyboard_matrix_zone.matrix_map = new matrix_map_type; - dummy_keyboard_matrix_zone.matrix_map->height = 6; - dummy_keyboard_matrix_zone.matrix_map->width = 23; - dummy_keyboard_matrix_zone.matrix_map->map = (unsigned int*)&debug_keyboard_matrix_map; - - dummy_keyboard->zones.push_back(dummy_keyboard_matrix_zone); - - /*---------------------------------------------------------*\ - | Create a linear zone for the dummy GPU | - \*---------------------------------------------------------*/ - zone dummy_keyboard_linear_zone; - - dummy_keyboard_linear_zone.name = "Linear Zone"; - dummy_keyboard_linear_zone.type = ZONE_TYPE_LINEAR; - dummy_keyboard_linear_zone.leds_min = 18; - dummy_keyboard_linear_zone.leds_max = 18; - dummy_keyboard_linear_zone.leds_count = 18; - dummy_keyboard_linear_zone.matrix_map = NULL; - - dummy_keyboard->zones.push_back(dummy_keyboard_linear_zone); - - for(std::size_t led_idx = 0; led_idx < 124; led_idx++) - { - led dummy_keyboard_led; - dummy_keyboard_led.name = led_names[led_idx]; - dummy_keyboard->leds.push_back(dummy_keyboard_led); - } - - dummy_keyboard->SetupColors(); - - /*---------------------------------------------------------*\ - | Push the dummy Keyboard onto the controller list | - \*---------------------------------------------------------*/ - rgb_controllers.push_back(dummy_keyboard); - } + dummy_motherboard->leds.push_back(dummy_motherboard_linear_led); } + + dummy_motherboard->SetupColors(); + + /*---------------------------------------------------------*\ + | Push the dummy motherboard onto the controller list | + \*---------------------------------------------------------*/ + rgb_controllers.push_back(dummy_motherboard); + } + else if(type == "dram") + { + /*---------------------------------------------------------*\ + | Create a dummy DRAM | + \*---------------------------------------------------------*/ + RGBController_Dummy* dummy_dram = new RGBController_Dummy(); + + dummy_dram->name = "Debug DRAM"; + dummy_dram->type = DEVICE_TYPE_DRAM; + dummy_dram->description = "Debug DRAM Device"; + dummy_dram->location = "Debug DRAM Location"; + dummy_dram->version = "Debug DRAM Version"; + dummy_dram->serial = "Debug DRAM Serial"; + + /*---------------------------------------------------------*\ + | Create a direct mode for the dummy DRAM | + \*---------------------------------------------------------*/ + mode dummy_dram_direct_mode; + + dummy_dram_direct_mode.name = "Direct"; + dummy_dram_direct_mode.value = 0; + dummy_dram_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; + dummy_dram_direct_mode.color_mode = MODE_COLORS_PER_LED; + + dummy_dram->modes.push_back(dummy_dram_direct_mode); + + /*---------------------------------------------------------*\ + | Create a single zone/LED for the dummy DRAM | + \*---------------------------------------------------------*/ + zone dummy_dram_single_zone; + + dummy_dram_single_zone.name = "Single Zone"; + dummy_dram_single_zone.type = ZONE_TYPE_SINGLE; + dummy_dram_single_zone.leds_min = 1; + dummy_dram_single_zone.leds_max = 1; + dummy_dram_single_zone.leds_count = 1; + dummy_dram_single_zone.matrix_map = NULL; + + dummy_dram->zones.push_back(dummy_dram_single_zone); + + led dummy_dram_single_led; + + dummy_dram_single_led.name = "Single LED"; + + dummy_dram->leds.push_back(dummy_dram_single_led); + + /*---------------------------------------------------------*\ + | Create a linear zone for the dummy DRAM | + \*---------------------------------------------------------*/ + zone dummy_dram_linear_zone; + + dummy_dram_linear_zone.name = "Linear Zone"; + dummy_dram_linear_zone.type = ZONE_TYPE_LINEAR; + dummy_dram_linear_zone.leds_min = 5; + dummy_dram_linear_zone.leds_max = 5; + dummy_dram_linear_zone.leds_count = 5; + dummy_dram_linear_zone.matrix_map = NULL; + + dummy_dram->zones.push_back(dummy_dram_linear_zone); + + for(std::size_t led_idx = 0; led_idx < 5; led_idx++) + { + led dummy_dram_linear_led; + + dummy_dram_linear_led.name = "Linear LED " + std::to_string(led_idx); + + dummy_dram->leds.push_back(dummy_dram_linear_led); + } + + dummy_dram->SetupColors(); + + /*---------------------------------------------------------*\ + | Push the dummy DRAM onto the controller list | + \*---------------------------------------------------------*/ + rgb_controllers.push_back(dummy_dram); + } + else if(type == "gpu") + { + /*---------------------------------------------------------*\ + | Create a dummy GPU | + \*---------------------------------------------------------*/ + RGBController_Dummy* dummy_gpu = new RGBController_Dummy(); + + dummy_gpu->name = "Debug GPU"; + dummy_gpu->type = DEVICE_TYPE_GPU; + dummy_gpu->description = "Debug GPU Device"; + dummy_gpu->location = "Debug GPU Location"; + dummy_gpu->version = "Debug GPU Version"; + dummy_gpu->serial = "Debug GPU Serial"; + + /*---------------------------------------------------------*\ + | Create a direct mode for the dummy GPU | + \*---------------------------------------------------------*/ + mode dummy_gpu_direct_mode; + + dummy_gpu_direct_mode.name = "Direct"; + dummy_gpu_direct_mode.value = 0; + dummy_gpu_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; + dummy_gpu_direct_mode.color_mode = MODE_COLORS_PER_LED; + + dummy_gpu->modes.push_back(dummy_gpu_direct_mode); + + /*---------------------------------------------------------*\ + | Create a single zone/LED for the dummy GPU | + \*---------------------------------------------------------*/ + zone dummy_gpu_single_zone; + + dummy_gpu_single_zone.name = "Single Zone"; + dummy_gpu_single_zone.type = ZONE_TYPE_SINGLE; + dummy_gpu_single_zone.leds_min = 1; + dummy_gpu_single_zone.leds_max = 1; + dummy_gpu_single_zone.leds_count = 1; + dummy_gpu_single_zone.matrix_map = NULL; + + dummy_gpu->zones.push_back(dummy_gpu_single_zone); + + led dummy_gpu_single_led; + + dummy_gpu_single_led.name = "Single LED"; + + dummy_gpu->leds.push_back(dummy_gpu_single_led); + + /*---------------------------------------------------------*\ + | Create a linear zone for the dummy GPU | + \*---------------------------------------------------------*/ + zone dummy_gpu_linear_zone; + + dummy_gpu_linear_zone.name = "Linear Zone"; + dummy_gpu_linear_zone.type = ZONE_TYPE_LINEAR; + dummy_gpu_linear_zone.leds_min = 15; + dummy_gpu_linear_zone.leds_max = 15; + dummy_gpu_linear_zone.leds_count = 15; + dummy_gpu_linear_zone.matrix_map = NULL; + + dummy_gpu->zones.push_back(dummy_gpu_linear_zone); + + for(std::size_t led_idx = 0; led_idx < 15; led_idx++) + { + led dummy_gpu_linear_led; + + dummy_gpu_linear_led.name = "Linear LED " + std::to_string(led_idx); + + dummy_gpu->leds.push_back(dummy_gpu_linear_led); + } + + dummy_gpu->SetupColors(); + + /*---------------------------------------------------------*\ + | Push the dummy GPU onto the controller list | + \*---------------------------------------------------------*/ + rgb_controllers.push_back(dummy_gpu); + } + else if(type == "keyboard") + { + /*---------------------------------------------------------*\ + | Create a dummy Keyboard | + \*---------------------------------------------------------*/ + RGBController_Dummy* dummy_keyboard = new RGBController_Dummy(); + + dummy_keyboard->name = "Debug Keyboard"; + dummy_keyboard->type = DEVICE_TYPE_KEYBOARD; + dummy_keyboard->description = "Debug Keyboard Device"; + dummy_keyboard->location = "Debug Keyboard Location"; + dummy_keyboard->version = "Debug Keyboard Version"; + dummy_keyboard->serial = "Debug Keyboard Serial"; + + /*---------------------------------------------------------*\ + | Create a direct mode for the dummy GPU | + \*---------------------------------------------------------*/ + mode dummy_gpu_direct_mode; + + dummy_gpu_direct_mode.name = "Direct"; + dummy_gpu_direct_mode.value = 0; + dummy_gpu_direct_mode.flags = MODE_FLAG_HAS_PER_LED_COLOR; + dummy_gpu_direct_mode.color_mode = MODE_COLORS_PER_LED; + + dummy_keyboard->modes.push_back(dummy_gpu_direct_mode); + + /*---------------------------------------------------------*\ + | Create a matrix zone for the debug Keyboard | + \*---------------------------------------------------------*/ + zone dummy_keyboard_matrix_zone; + + dummy_keyboard_matrix_zone.name = "Keyboard Matrix Zone"; + dummy_keyboard_matrix_zone.type = ZONE_TYPE_MATRIX; + dummy_keyboard_matrix_zone.leds_min = 106; + dummy_keyboard_matrix_zone.leds_max = 106; + dummy_keyboard_matrix_zone.leds_count = 106; + dummy_keyboard_matrix_zone.matrix_map = new matrix_map_type; + dummy_keyboard_matrix_zone.matrix_map->height = 6; + dummy_keyboard_matrix_zone.matrix_map->width = 23; + dummy_keyboard_matrix_zone.matrix_map->map = (unsigned int*)&debug_keyboard_matrix_map; + + dummy_keyboard->zones.push_back(dummy_keyboard_matrix_zone); + + /*---------------------------------------------------------*\ + | Create a linear zone for the dummy GPU | + \*---------------------------------------------------------*/ + zone dummy_keyboard_linear_zone; + + dummy_keyboard_linear_zone.name = "Linear Zone"; + dummy_keyboard_linear_zone.type = ZONE_TYPE_LINEAR; + dummy_keyboard_linear_zone.leds_min = 18; + dummy_keyboard_linear_zone.leds_max = 18; + dummy_keyboard_linear_zone.leds_count = 18; + dummy_keyboard_linear_zone.matrix_map = NULL; + + dummy_keyboard->zones.push_back(dummy_keyboard_linear_zone); + + for(std::size_t led_idx = 0; led_idx < 124; led_idx++) + { + led dummy_keyboard_led; + dummy_keyboard_led.name = led_names[led_idx]; + dummy_keyboard->leds.push_back(dummy_keyboard_led); + } + + dummy_keyboard->SetupColors(); + + /*---------------------------------------------------------*\ + | Push the dummy Keyboard onto the controller list | + \*---------------------------------------------------------*/ + rgb_controllers.push_back(dummy_keyboard); } } } + } /* DetectDebugControllers() */ REGISTER_DETECTOR("Debug Controllers", DetectDebugControllers);