diff --git a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.cpp b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.cpp index 73f06a3b..92b3b39f 100644 --- a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.cpp +++ b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.cpp @@ -16,33 +16,32 @@ @save :x: @direct :x: @effects :white_check_mark: - @detectors DetectSapphireGPUControllers + @detectors DetectSapphireV1Controllers @comment \*-------------------------------------------------------------------*/ -RGBController_SapphireNitroGlowV1::RGBController_SapphireNitroGlowV1(SapphireNitroGlowV1Controller* sapphire_ptr) +RGBController_SapphireNitroGlowV1::RGBController_SapphireNitroGlowV1(SapphireNitroGlowV1Controller* controller_ptr) { - sapphire = sapphire_ptr; + controller = controller_ptr; - name = "Sapphire Nitro Glow V1 Device"; - vendor = "Sapphire"; - description = "Sapphire Nitro Glow V1 Device"; - location = sapphire->GetDeviceLocation(); - - type = DEVICE_TYPE_GPU; + name = "Sapphire Nitro Glow V1 Device"; + vendor = "Sapphire"; + description = "Sapphire Nitro Glow V1 Device"; + location = controller->GetDeviceLocation(); + type = DEVICE_TYPE_GPU; mode Static; - Static.name = "Static"; - Static.value = 0x04; - Static.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Static.color_mode = MODE_COLORS_PER_LED; + Static.name = "Static"; + Static.value = 0x04; + Static.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Static.color_mode = MODE_COLORS_PER_LED; modes.push_back(Static); mode Rainbow; - Rainbow.name = "Rainbow"; - Rainbow.value = 0x01; - Rainbow.flags = 0; - Rainbow.color_mode = MODE_COLORS_NONE; + Rainbow.name = "Rainbow Wave"; + Rainbow.value = 0x01; + Rainbow.flags = 0; + Rainbow.color_mode = MODE_COLORS_NONE; modes.push_back(Rainbow); SetupZones(); @@ -52,7 +51,7 @@ RGBController_SapphireNitroGlowV1::RGBController_SapphireNitroGlowV1(SapphireNit RGBController_SapphireNitroGlowV1::~RGBController_SapphireNitroGlowV1() { - delete sapphire; + delete controller; } void RGBController_SapphireNitroGlowV1::SetupZones() @@ -85,12 +84,12 @@ void RGBController_SapphireNitroGlowV1::SetupZones() void RGBController_SapphireNitroGlowV1::ReadConfiguration() { colors[0] = ToRGBColor( - sapphire->GetRed(), - sapphire->GetGreen(), - sapphire->GetBlue() + controller->GetRed(), + controller->GetGreen(), + controller->GetBlue() ); - switch(sapphire->GetMode()) + switch(controller->GetMode()) { case SAPPHIRE_NITRO_GLOW_V1_MODE_CUSTOM: active_mode = 0; @@ -133,7 +132,7 @@ void RGBController_SapphireNitroGlowV1::DeviceUpdateLEDs() unsigned char grn = RGBGetGValue(color); unsigned char blu = RGBGetBValue(color); - sapphire->SetColor(red, grn, blu); + controller->SetColor(red, grn, blu); } void RGBController_SapphireNitroGlowV1::UpdateZoneLEDs(int /*zone*/) @@ -153,5 +152,5 @@ void RGBController_SapphireNitroGlowV1::SetCustomMode() void RGBController_SapphireNitroGlowV1::DeviceUpdateMode() { - sapphire->SetMode((unsigned char)modes[(unsigned int)active_mode].value); + controller->SetMode((unsigned char)modes[(unsigned int)active_mode].value); } diff --git a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.h b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.h index ab5bab00..21186a3d 100644 --- a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.h +++ b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV1.h @@ -15,7 +15,7 @@ class RGBController_SapphireNitroGlowV1 : public RGBController { public: - RGBController_SapphireNitroGlowV1(SapphireNitroGlowV1Controller* sapphire_ptr); + RGBController_SapphireNitroGlowV1(SapphireNitroGlowV1Controller* controller_ptr); ~RGBController_SapphireNitroGlowV1(); void SetupZones(); @@ -30,7 +30,7 @@ public: void DeviceUpdateMode(); private: - SapphireNitroGlowV1Controller* sapphire; + SapphireNitroGlowV1Controller* controller; void ReadConfiguration(); }; diff --git a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.cpp b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.cpp index 645763f5..cf9f556f 100644 --- a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.cpp +++ b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.cpp @@ -16,70 +16,69 @@ @save :x: @direct :x: @effects :white_check_mark: - @detectors DetectSapphireGPUControllers + @detectors DetectSapphireV3Controllers @comment \*-------------------------------------------------------------------*/ -RGBController_SapphireNitroGlowV3::RGBController_SapphireNitroGlowV3(SapphireNitroGlowV3Controller* sapphire_ptr) +RGBController_SapphireNitroGlowV3::RGBController_SapphireNitroGlowV3(SapphireNitroGlowV3Controller* controller_ptr) { - sapphire = sapphire_ptr; + controller = controller_ptr; - name = "Sapphire Nitro Glow V3 Device"; - vendor = "Sapphire"; - description = "Sapphire Nitro Glow V3 Device"; - location = sapphire->GetDeviceLocation(); - - type = DEVICE_TYPE_GPU; + name = "Sapphire Nitro Glow V3 Device"; + vendor = "Sapphire"; + description = "Sapphire Nitro Glow V3 Device"; + location = controller->GetDeviceLocation(); + type = DEVICE_TYPE_GPU; mode Static; - Static.name = "Static"; - Static.value = SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM; - Static.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Static.color_mode = MODE_COLORS_PER_LED; + Static.name = "Static"; + Static.value = SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM; + Static.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Static.color_mode = MODE_COLORS_PER_LED; modes.push_back(Static); mode Rainbow; - Rainbow.name = "Rainbow"; - Rainbow.value = SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW; - Rainbow.flags = MODE_FLAG_HAS_SPEED; - Rainbow.speed_min = 10; - Rainbow.speed_max = 250; - Rainbow.color_mode = MODE_COLORS_NONE; + Rainbow.name = "Rainbow Wave"; + Rainbow.value = SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW; + Rainbow.flags = MODE_FLAG_HAS_SPEED; + Rainbow.speed_min = 10; + Rainbow.speed_max = 250; + Rainbow.color_mode = MODE_COLORS_NONE; modes.push_back(Rainbow); mode Runway; - Runway.name = "Runway"; - Runway.value = SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY; - Runway.flags = MODE_FLAG_HAS_SPEED; - Runway.speed_min = 5; - Runway.speed_max = 50; - Runway.color_mode = MODE_COLORS_NONE; + Runway.name = "Runway"; + Runway.value = SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY; + Runway.flags = MODE_FLAG_HAS_SPEED; + Runway.speed_min = 5; + Runway.speed_max = 50; + Runway.color_mode = MODE_COLORS_NONE; modes.push_back(Runway); mode ColorCycle; - ColorCycle.name = "Color Cycle"; - ColorCycle.value = SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE; - ColorCycle.flags = MODE_FLAG_HAS_SPEED; - ColorCycle.speed_min = 30; - ColorCycle.speed_max = 1; - ColorCycle.color_mode = MODE_COLORS_NONE; + ColorCycle.name = "Spectrum Cycle"; + ColorCycle.value = SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE; + ColorCycle.flags = MODE_FLAG_HAS_SPEED; + ColorCycle.speed_min = 30; + ColorCycle.speed_max = 1; + ColorCycle.color_mode = MODE_COLORS_NONE; modes.push_back(ColorCycle); mode Serial; - Serial.name = "Serial"; - Serial.value = SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL; - Serial.flags = MODE_FLAG_HAS_SPEED; - Serial.speed_min = 255; - Serial.speed_max = 5; - Serial.color_mode = MODE_COLORS_NONE; + Serial.name = "Serial"; + Serial.value = SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL; + Serial.flags = MODE_FLAG_HAS_SPEED; + Serial.speed_min = 255; + Serial.speed_max = 5; + Serial.color_mode = MODE_COLORS_NONE; modes.push_back(Serial); - mode ExternalControl; - ExternalControl.name = "External Control"; - ExternalControl.value = SAPPHIRE_NITRO_GLOW_V3_MODE_EXTERNAL_CONTROL; - ExternalControl.flags = 0; - ExternalControl.color_mode = MODE_COLORS_NONE; - modes.push_back(ExternalControl); + mode External; + External.name = "External Control"; + External.value = SAPPHIRE_NITRO_GLOW_V3_MODE_EXTERNAL_CONTROL; + External.flags = 0; + External.color_mode = MODE_COLORS_NONE; + modes.push_back(External); SetupZones(); @@ -88,7 +87,7 @@ RGBController_SapphireNitroGlowV3::RGBController_SapphireNitroGlowV3(SapphireNit RGBController_SapphireNitroGlowV3::~RGBController_SapphireNitroGlowV3() { - delete sapphire; + delete controller; } void RGBController_SapphireNitroGlowV3::SetupZones() @@ -120,24 +119,24 @@ void RGBController_SapphireNitroGlowV3::SetupZones() void RGBController_SapphireNitroGlowV3::ReadConfiguration() { - modes[1].speed = sapphire->GetRainbowAnimationSpeed(); - modes[2].speed = sapphire->GetRunwayAnimationSpeed(); - modes[3].speed = sapphire->GetColorCycleAnimationSpeed(); - modes[4].speed = sapphire->GetSerialAnimationSpeed(); + modes[1].speed = controller->GetRainbowAnimationSpeed(); + modes[2].speed = controller->GetRunwayAnimationSpeed(); + modes[3].speed = controller->GetColorCycleAnimationSpeed(); + modes[4].speed = controller->GetSerialAnimationSpeed(); colors[0] = ToRGBColor( - sapphire->GetRed(), - sapphire->GetBlue(), - sapphire->GetGreen() + controller->GetRed(), + controller->GetBlue(), + controller->GetGreen() ); - if(sapphire->GetExternalControl()) + if(controller->GetExternalControl()) { active_mode = 5; return; } - switch(sapphire->GetMode()) + switch(controller->GetMode()) { case SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM: active_mode = 0; @@ -184,7 +183,7 @@ void RGBController_SapphireNitroGlowV3::DeviceUpdateLEDs() unsigned char grn = RGBGetGValue(color); unsigned char blu = RGBGetBValue(color); - sapphire->SetColor(red, grn, blu); + controller->SetColor(red, grn, blu); } void RGBController_SapphireNitroGlowV3::UpdateZoneLEDs(int /*zone*/) @@ -209,36 +208,36 @@ void RGBController_SapphireNitroGlowV3::DeviceUpdateMode() switch(mode.value) { case SAPPHIRE_NITRO_GLOW_V3_MODE_CUSTOM: - sapphire->SetExternalControl(false); - sapphire->SetMode(mode.value); + controller->SetExternalControl(false); + controller->SetMode(mode.value); break; case SAPPHIRE_NITRO_GLOW_V3_MODE_RAINBOW: - sapphire->SetExternalControl(false); - sapphire->SetRainbowAnimationSpeed(mode.speed); - sapphire->SetMode(mode.value); + controller->SetExternalControl(false); + controller->SetRainbowAnimationSpeed(mode.speed); + controller->SetMode(mode.value); break; case SAPPHIRE_NITRO_GLOW_V3_MODE_RUNWAY: - sapphire->SetExternalControl(false); - sapphire->SetRunwayAnimationSpeed(mode.speed); - sapphire->SetMode(mode.value); + controller->SetExternalControl(false); + controller->SetRunwayAnimationSpeed(mode.speed); + controller->SetMode(mode.value); break; case SAPPHIRE_NITRO_GLOW_V3_MODE_COLOR_CYCLE: - sapphire->SetExternalControl(false); - sapphire->SetColorCycleAnimationSpeed(mode.speed); - sapphire->SetMode(mode.value); + controller->SetExternalControl(false); + controller->SetColorCycleAnimationSpeed(mode.speed); + controller->SetMode(mode.value); break; case SAPPHIRE_NITRO_GLOW_V3_MODE_SERIAL: - sapphire->SetExternalControl(false); - sapphire->SetSerialAnimationSpeed(mode.speed); - sapphire->SetMode(mode.value); + controller->SetExternalControl(false); + controller->SetSerialAnimationSpeed(mode.speed); + controller->SetMode(mode.value); break; case SAPPHIRE_NITRO_GLOW_V3_MODE_EXTERNAL_CONTROL: - sapphire->SetExternalControl(true); + controller->SetExternalControl(true); break; } } diff --git a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.h b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.h index bbfdadaa..f0dd165b 100644 --- a/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.h +++ b/Controllers/SapphireGPUController/RGBController_SapphireNitroGlowV3.h @@ -15,7 +15,7 @@ class RGBController_SapphireNitroGlowV3 : public RGBController { public: - RGBController_SapphireNitroGlowV3(SapphireNitroGlowV3Controller* sapphire_ptr); + RGBController_SapphireNitroGlowV3(SapphireNitroGlowV3Controller* controller_ptr); ~RGBController_SapphireNitroGlowV3(); void SetupZones(); @@ -30,7 +30,7 @@ public: void DeviceUpdateMode(); private: - SapphireNitroGlowV3Controller* sapphire; + SapphireNitroGlowV3Controller* controller; void ReadConfiguration(); }; diff --git a/Controllers/SapphireGPUController/SapphireGPUControllerDetect.cpp b/Controllers/SapphireGPUController/SapphireGPUControllerDetect.cpp index 765969ff..d8653c00 100644 --- a/Controllers/SapphireGPUController/SapphireGPUControllerDetect.cpp +++ b/Controllers/SapphireGPUController/SapphireGPUControllerDetect.cpp @@ -51,46 +51,42 @@ bool TestForSapphireGPUController(i2c_smbus_interface* bus, unsigned char addres * * \******************************************************************************************/ -void DetectSapphireGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const std::string& name) +void DetectSapphireV1Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const std::string& name) { - switch(i2c_addr) + if(TestForSapphireGPUController(bus, i2c_addr)) { - case SAPPHIRE_NITRO_GLOW_V1_ADDR: - if(TestForSapphireGPUController(bus, i2c_addr)) - { - SapphireNitroGlowV1Controller* new_sapphire_gpu = new SapphireNitroGlowV1Controller(bus, i2c_addr); - RGBController_SapphireNitroGlowV1* new_controller = new RGBController_SapphireNitroGlowV1(new_sapphire_gpu); - new_controller->name = name; + SapphireNitroGlowV1Controller* new_sapphire_gpu = new SapphireNitroGlowV1Controller(bus, i2c_addr); + RGBController_SapphireNitroGlowV1* new_controller = new RGBController_SapphireNitroGlowV1(new_sapphire_gpu); + new_controller->name = name; - ResourceManager::get()->RegisterRGBController(new_controller); - } - break; - - case SAPPHIRE_NITRO_GLOW_V3_ADDR: - if(TestForSapphireGPUController(bus, i2c_addr)) - { - SapphireNitroGlowV3Controller* new_sapphire_gpu = new SapphireNitroGlowV3Controller(bus, i2c_addr); - RGBController_SapphireNitroGlowV3* new_controller = new RGBController_SapphireNitroGlowV3(new_sapphire_gpu); - new_controller->name = name; - - ResourceManager::get()->RegisterRGBController(new_controller); - } - break; + ResourceManager::get()->RegisterRGBController(new_controller); } -} /* DetectSapphireGPUControllers() */ +} /* DetectSapphireV1Controllers() */ -REGISTER_I2C_PCI_DETECTOR("RX 470/480 Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_LEGACY_SUB_VEN, SAPPHIRE_LEGACY_POLARIS_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V1_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 570/580/590 Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V1_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 570/580/590 Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V1_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 580 Nitro+ (2048SP)", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_POLARIS20XL_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V1_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX Vega 56/64 Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_VEGA10_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V1_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 5700 (XT) Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 5700 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 5700 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV3, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 5500 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI14_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI14_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6800 XT Nitro+ SE", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6800 XT/6900 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6800 Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV3, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6700 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI22_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI22_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6600 XT Nitro+", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI23_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI23_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); -REGISTER_I2C_PCI_DETECTOR("RX 6900 XT Toxic", DetectSapphireGPUControllers, AMD_GPU_VEN, AMD_NAVI21_DEV2, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_TOXIC_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); \ No newline at end of file +void DetectSapphireV3Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const std::string& name) +{ + if(TestForSapphireGPUController(bus, i2c_addr)) + { + SapphireNitroGlowV3Controller* new_sapphire_gpu = new SapphireNitroGlowV3Controller(bus, i2c_addr); + RGBController_SapphireNitroGlowV3* new_controller = new RGBController_SapphireNitroGlowV3(new_sapphire_gpu); + new_controller->name = name; + + ResourceManager::get()->RegisterRGBController(new_controller); + } +} /* DetectSapphireV3Controllers() */ + +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 470/480 Nitro+", DetectSapphireV1Controllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_LEGACY_SUB_VEN, SAPPHIRE_LEGACY_POLARIS_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V1_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 570/580/590 Nitro+", DetectSapphireV1Controllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V1_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 570/580/590 Nitro+", DetectSapphireV1Controllers, AMD_GPU_VEN, AMD_POLARIS_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V1_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 580 Nitro+ (2048SP)", DetectSapphireV1Controllers, AMD_GPU_VEN, AMD_POLARIS20XL_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_POLARIS_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V1_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX Vega 56/64 Nitro+", DetectSapphireV1Controllers, AMD_GPU_VEN, AMD_VEGA10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_VEGA10_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V1_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 5700 (XT) Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 5700 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 5700 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI10_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI10_NITRO_PLUS_SUB_DEV3, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 5500 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI14_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI14_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6800 XT Nitro+ SE", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV1, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6800 XT/6900 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV2, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6800 Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI21_DEV1, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_NITRO_PLUS_SUB_DEV3, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6700 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI22_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI22_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6600 XT Nitro+", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI23_DEV, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI23_NITRO_PLUS_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); +REGISTER_I2C_PCI_DETECTOR("Sapphire RX 6900 XT Toxic", DetectSapphireV3Controllers, AMD_GPU_VEN, AMD_NAVI21_DEV2, SAPPHIRE_SUB_VEN, SAPPHIRE_NAVI21_TOXIC_SUB_DEV, SAPPHIRE_NITRO_GLOW_V3_ADDR); diff --git a/ResourceManager.cpp b/ResourceManager.cpp index 0470cdcf..97b5c5b8 100644 --- a/ResourceManager.cpp +++ b/ResourceManager.cpp @@ -735,7 +735,7 @@ void ResourceManager::DetectDevices() { DetectionEndCallbacks[callback_idx](DetectionEndCallbackArgs[callback_idx]); } - } + } } void ResourceManager::DisableDetection() @@ -862,7 +862,7 @@ void ResourceManager::DetectDevicesThreadFunction() LOG_INFO("------------------------------------------------------"); LOG_INFO("| Detecting I2C interfaces |"); LOG_INFO("------------------------------------------------------"); - + bool i2c_interface_fail = false; for(unsigned int i2c_bus_detector_idx = 0; i2c_bus_detector_idx < i2c_bus_detectors.size() && detection_is_required.load(); i2c_bus_detector_idx++) @@ -898,7 +898,7 @@ void ResourceManager::DetectDevicesThreadFunction() if(this_device_enabled) { DetectionProgressChanged(); - + i2c_device_detectors[i2c_detector_idx](busses); } @@ -925,7 +925,7 @@ void ResourceManager::DetectDevicesThreadFunction() prev_count = rgb_controllers_hw.size(); LOG_TRACE("[%s] detection end", detection_string); - + /*-------------------------------------------------*\ | Update detection percent | \*-------------------------------------------------*/ @@ -957,7 +957,7 @@ void ResourceManager::DetectDevicesThreadFunction() if(this_device_enabled) { DetectionProgressChanged(); - + for(unsigned int bus = 0; bus < busses.size(); bus++) { if(busses[bus]->pci_vendor == i2c_pci_device_detectors[i2c_detector_idx].ven_id && @@ -993,7 +993,7 @@ void ResourceManager::DetectDevicesThreadFunction() prev_count = rgb_controllers_hw.size(); LOG_TRACE("[%s] detection end", detection_string); - + /*-------------------------------------------------*\ | Update detection percent | \*-------------------------------------------------*/ @@ -1116,7 +1116,7 @@ void ResourceManager::DetectDevicesThreadFunction() } detection_string = ""; DetectionProgressChanged(); - + unsigned int addr = (current_hid_device->vendor_id << 16) | current_hid_device->product_id; /*-----------------------------------------------------------------------------*\ @@ -1217,7 +1217,7 @@ void ResourceManager::DetectDevicesThreadFunction() if(this_device_enabled) { DetectionProgressChanged(); - + device_detectors[detector_idx](rgb_controllers_hw); } @@ -1262,7 +1262,7 @@ void ResourceManager::DetectDevicesThreadFunction() detection_string = ""; DetectionProgressChanged(); - + DetectDeviceMutex.unlock(); /*-----------------------------------------------------*\ @@ -1313,7 +1313,7 @@ void ResourceManager::UpdateDetectorSettings() { json detector_settings; bool save_settings = false; - + /*-------------------------------------------------*\ | Open device disable list and read in disabled | | device strings | @@ -1335,6 +1335,21 @@ void ResourceManager::UpdateDetectorSettings() } } + /*-------------------------------------------------*\ + | Loop through all I2C PCI detectors and see if any | + | need to be saved to the settings | + \*-------------------------------------------------*/ + for(unsigned int i2c_pci_detector_idx = 0; i2c_pci_detector_idx < i2c_pci_device_detectors.size(); i2c_pci_detector_idx++) + { + detection_string = i2c_pci_device_detectors[i2c_pci_detector_idx].name.c_str(); + + if(!(detector_settings.contains("detectors") && detector_settings["detectors"].contains(detection_string))) + { + detector_settings["detectors"][detection_string] = true; + save_settings = true; + } + } + /*-------------------------------------------------*\ | Loop through all HID detectors and see if any | | need to be saved to the settings | @@ -1342,7 +1357,7 @@ void ResourceManager::UpdateDetectorSettings() for(unsigned int hid_detector_idx = 0; hid_detector_idx < hid_device_detectors.size(); hid_detector_idx++) { detection_string = hid_device_detectors[hid_detector_idx].name.c_str(); - + if(!(detector_settings.contains("detectors") && detector_settings["detectors"].contains(detection_string))) { detector_settings["detectors"][detection_string] = true;