AIO H1xx ELITE Series
This commit is contained in:
parent
49e4f00aff
commit
2dd013a0a0
5 changed files with 357 additions and 249 deletions
|
|
@ -4,6 +4,7 @@
|
||||||
| Driver for Corsair Hydro Platinum coolers |
|
| Driver for Corsair Hydro Platinum coolers |
|
||||||
| |
|
| |
|
||||||
| Kasper 28 Mar 2021 |
|
| Kasper 28 Mar 2021 |
|
||||||
|
| Nikola Jurkovic (jurkovic.nikola) 13 Aug 2025 |
|
||||||
| |
|
| |
|
||||||
| This file is part of the OpenRGB project |
|
| This file is part of the OpenRGB project |
|
||||||
| SPDX-License-Identifier: GPL-2.0-only |
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
|
@ -51,45 +52,94 @@ static const uint8_t CRC_TABLE[256] =
|
||||||
|
|
||||||
static const uint8_t MAGIC_1[61] =
|
static const uint8_t MAGIC_1[61] =
|
||||||
{
|
{
|
||||||
0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
|
||||||
0x7f, 0x7f, 0x7f, 0xff, 0x00, 0xff, 0xff, 0xff,
|
0x7F, 0x7F, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
|
0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint8_t MAGIC_2[61] =
|
static const uint8_t MAGIC_2[61] =
|
||||||
{
|
{
|
||||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||||
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
||||||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
||||||
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
|
||||||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
|
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint8_t MAGIC_3[61] =
|
static const uint8_t MAGIC_3[61] =
|
||||||
{
|
{
|
||||||
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
|
0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
|
||||||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
|
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
|
||||||
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
|
0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
|
||||||
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
|
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
|
||||||
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
|
0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
};
|
};
|
||||||
|
|
||||||
CorsairHydroPlatinumController::CorsairHydroPlatinumController(hid_device* dev_handle, const char* path, std::string dev_name)
|
static const uint8_t HARDWARE_MAGIC_1[61] =
|
||||||
|
{
|
||||||
|
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
|
||||||
|
0x7F, 0x7F, 0x7F, 0x7F, 0x09, 0x20, 0x07, 0x00,
|
||||||
|
0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t HARDWARE_MAGIC_2[61] =
|
||||||
|
{
|
||||||
|
0x0A, 0x01, 0x04, 0x07, 0x05, 0x06, 0x07, 0x08,
|
||||||
|
0x09, 0x0A, 0x0B, 0x00, 0x01, 0x02, 0x03, 0x04,
|
||||||
|
0x01, 0x0A, 0x07, 0x04, 0x0B, 0x0A, 0x09, 0x08,
|
||||||
|
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
|
||||||
|
0x01, 0x0A, 0x07, 0x04, 0x01, 0x0A, 0x09, 0x08,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t HARDWARE_MAGIC_3[61] =
|
||||||
|
{
|
||||||
|
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
|
||||||
|
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||||
|
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||||
|
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||||
|
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint8_t HARDWARE_MAGIC_4[61] =
|
||||||
|
{
|
||||||
|
0x00, 0x00, 0xFF, 0x00, 0x4A, 0xFF, 0x00, 0x94,
|
||||||
|
0xFF, 0x00, 0xDF, 0xFF, 0x00, 0xFF, 0xAA, 0x00,
|
||||||
|
0xFF, 0x15, 0x7F, 0x7F, 0x00, 0xFA, 0x00, 0x06,
|
||||||
|
0xDB, 0x00, 0x32, 0xD7, 0x00, 0x58, 0xF6, 0x00,
|
||||||
|
0x76, 0x94, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
CorsairHydroPlatinumController::CorsairHydroPlatinumController(hid_device* dev_handle, const char* path, bool dev_rgb_fan, std::string dev_name)
|
||||||
{
|
{
|
||||||
dev = dev_handle;
|
dev = dev_handle;
|
||||||
location = path;
|
location = path;
|
||||||
name = dev_name;
|
name = dev_name;
|
||||||
|
have_rgb_fan = dev_rgb_fan;
|
||||||
guard_manager_ptr = new DeviceGuardManager(new CorsairDeviceGuard());
|
guard_manager_ptr = new DeviceGuardManager(new CorsairDeviceGuard());
|
||||||
|
|
||||||
SendMagic(MAGIC_1, CORSAIR_HYDRO_PLATINUM_MAGIC_1);
|
SendMagic(MAGIC_1, CORSAIR_HYDRO_PLATINUM_MAGIC_1);
|
||||||
|
|
@ -99,6 +149,14 @@ CorsairHydroPlatinumController::CorsairHydroPlatinumController(hid_device* dev_h
|
||||||
|
|
||||||
CorsairHydroPlatinumController::~CorsairHydroPlatinumController()
|
CorsairHydroPlatinumController::~CorsairHydroPlatinumController()
|
||||||
{
|
{
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Hardware lights, 2,3,4,1 |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
SendMagic(HARDWARE_MAGIC_2, CORSAIR_HYDRO_PLATINUM_MAGIC_2);
|
||||||
|
SendMagic(HARDWARE_MAGIC_3, CORSAIR_HYDRO_PLATINUM_MAGIC_3);
|
||||||
|
SendMagic(HARDWARE_MAGIC_4, CORSAIR_HYDRO_PLATINUM_SET_LIGHTING_1);
|
||||||
|
SendMagic(HARDWARE_MAGIC_1, CORSAIR_HYDRO_PLATINUM_MAGIC_1);
|
||||||
|
|
||||||
hid_close(dev);
|
hid_close(dev);
|
||||||
delete guard_manager_ptr;
|
delete guard_manager_ptr;
|
||||||
}
|
}
|
||||||
|
|
@ -135,6 +193,11 @@ void CorsairHydroPlatinumController::SetupColors(std::vector<RGBColor> colors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CorsairHydroPlatinumController::HaveRgbFan()
|
||||||
|
{
|
||||||
|
return(have_rgb_fan);
|
||||||
|
}
|
||||||
|
|
||||||
void CorsairHydroPlatinumController::SendMagic(const uint8_t* magic, unsigned int command)
|
void CorsairHydroPlatinumController::SendMagic(const uint8_t* magic, unsigned int command)
|
||||||
{
|
{
|
||||||
unsigned char usb_buf[CORSAIR_HYDRO_PLATINUM_PACKET_SIZE];
|
unsigned char usb_buf[CORSAIR_HYDRO_PLATINUM_PACKET_SIZE];
|
||||||
|
|
@ -265,7 +328,7 @@ uint8_t CorsairHydroPlatinumController::ComputePEC(const void * data, size_t siz
|
||||||
uint8_t * pos = (uint8_t *) data;
|
uint8_t * pos = (uint8_t *) data;
|
||||||
uint8_t * end = pos + size;
|
uint8_t * end = pos + size;
|
||||||
|
|
||||||
while (pos < end)
|
while(pos < end)
|
||||||
{
|
{
|
||||||
val = CRC_TABLE[val ^ *pos];
|
val = CRC_TABLE[val ^ *pos];
|
||||||
pos++;
|
pos++;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
| Driver for Corsair Hydro Platinum coolers |
|
| Driver for Corsair Hydro Platinum coolers |
|
||||||
| |
|
| |
|
||||||
| Kasper 28 Mar 2021 |
|
| Kasper 28 Mar 2021 |
|
||||||
|
| Nikola Jurkovic (jurkovic.nikola) 13 Aug 2025 |
|
||||||
| |
|
| |
|
||||||
| This file is part of the OpenRGB project |
|
| This file is part of the OpenRGB project |
|
||||||
| SPDX-License-Identifier: GPL-2.0-only |
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
|
@ -34,13 +35,14 @@ enum
|
||||||
class CorsairHydroPlatinumController
|
class CorsairHydroPlatinumController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CorsairHydroPlatinumController(hid_device* dev_handle, const char* path, std::string dev_name);
|
CorsairHydroPlatinumController(hid_device* dev_handle, const char* path, bool dev_rgb_fan, std::string dev_name);
|
||||||
~CorsairHydroPlatinumController();
|
~CorsairHydroPlatinumController();
|
||||||
|
|
||||||
std::string GetLocation();
|
std::string GetLocation();
|
||||||
std::string GetFirmwareString();
|
std::string GetFirmwareString();
|
||||||
std::string GetName();
|
std::string GetName();
|
||||||
void SetupColors(std::vector<RGBColor> colors);
|
void SetupColors(std::vector<RGBColor> colors);
|
||||||
|
bool HaveRgbFan();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
hid_device* dev;
|
hid_device* dev;
|
||||||
|
|
@ -49,6 +51,7 @@ private:
|
||||||
std::string name;
|
std::string name;
|
||||||
std::atomic<unsigned int> sequence_number;
|
std::atomic<unsigned int> sequence_number;
|
||||||
DeviceGuardManager* guard_manager_ptr;
|
DeviceGuardManager* guard_manager_ptr;
|
||||||
|
bool have_rgb_fan = true;
|
||||||
|
|
||||||
void SendMagic(const uint8_t* magic, unsigned int command);
|
void SendMagic(const uint8_t* magic, unsigned int command);
|
||||||
void SendColors(std::vector<RGBColor> colors, unsigned int start, unsigned int end, unsigned int command);
|
void SendColors(std::vector<RGBColor> colors, unsigned int start, unsigned int end, unsigned int command);
|
||||||
|
|
|
||||||
|
|
@ -1,56 +1,84 @@
|
||||||
/*---------------------------------------------------------*\
|
/*---------------------------------------------------------*\
|
||||||
| CorsairHydroPlatinumControllerDetect.cpp |
|
| CorsairHydroPlatinumControllerDetect.cpp |
|
||||||
| |
|
| |
|
||||||
| Detector for Corsair Hydro Platinum coolers |
|
| Detector for Corsair Hydro Platinum coolers |
|
||||||
| |
|
| |
|
||||||
| Kasper 28 Mar 2021 |
|
| Kasper 28 Mar 2021 |
|
||||||
| |
|
| Nikola Jurkovic (jurkovic.nikola) 13 Aug 2025 |
|
||||||
| This file is part of the OpenRGB project |
|
| |
|
||||||
| SPDX-License-Identifier: GPL-2.0-only |
|
| This file is part of the OpenRGB project |
|
||||||
\*---------------------------------------------------------*/
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
#include <hidapi.h>
|
|
||||||
#include "Detector.h"
|
#include <hidapi.h>
|
||||||
#include "CorsairHydroPlatinumController.h"
|
#include "Detector.h"
|
||||||
#include "RGBController_CorsairHydroPlatinum.h"
|
#include "CorsairHydroPlatinumController.h"
|
||||||
|
#include "RGBController_CorsairHydroPlatinum.h"
|
||||||
/*-----------------------------------------------------*\
|
|
||||||
| Corsair vendor ID |
|
/*-----------------------------------------------------*\
|
||||||
\*-----------------------------------------------------*/
|
| Corsair vendor ID |
|
||||||
#define CORSAIR_VID 0x1B1C
|
\*-----------------------------------------------------*/
|
||||||
|
#define CORSAIR_VID 0x1B1C
|
||||||
/*-----------------------------------------------------*\
|
|
||||||
| Product IDs |
|
/*-----------------------------------------------------*\
|
||||||
\*-----------------------------------------------------*/
|
| Product IDs |
|
||||||
#define CORSAIR_HYDRO_H100I_PLATINUM_PID 0x0C18
|
\*-----------------------------------------------------*/
|
||||||
#define CORSAIR_HYDRO_H100I_PLATINUM_SE_PID 0x0C19
|
#define CORSAIR_HYDRO_H100I_PLATINUM_PID 0x0C18
|
||||||
#define CORSAIR_HYDRO_H115I_PLATINUM_PID 0x0C17
|
#define CORSAIR_HYDRO_H100I_PLATINUM_SE_PID 0x0C19
|
||||||
#define CORSAIR_HYDRO_H60I_PRO_XT_PID 0x0C29
|
#define CORSAIR_HYDRO_H115I_PLATINUM_PID 0x0C17
|
||||||
#define CORSAIR_HYDRO_H100I_PRO_XT_PID 0x0C20
|
#define CORSAIR_HYDRO_H60I_PRO_XT_PID 0x0C29
|
||||||
#define CORSAIR_HYDRO_H100I_PRO_XT_V2_PID 0x0C2D
|
#define CORSAIR_HYDRO_H100I_PRO_XT_PID 0x0C20
|
||||||
#define CORSAIR_HYDRO_H115I_PRO_XT_PID 0x0C21
|
#define CORSAIR_HYDRO_H100I_PRO_XT_V2_PID 0x0C2D
|
||||||
#define CORSAIR_HYDRO_H150I_PRO_XT_PID 0x0C22
|
#define CORSAIR_HYDRO_H115I_PRO_XT_PID 0x0C21
|
||||||
#define CORSAIR_HYDRO_H100I_ELITE_PID 0x0C40
|
#define CORSAIR_HYDRO_H150I_PRO_XT_PID 0x0C22
|
||||||
|
#define CORSAIR_HYDRO_H100I_ELITE_RGB_PID 0x0C35
|
||||||
void DetectCorsairHydroPlatinumControllers(hid_device_info* info, const std::string& name)
|
#define CORSAIR_HYDRO_H115I_ELITE_RGB_PID 0x0C36
|
||||||
{
|
#define CORSAIR_HYDRO_H150I_ELITE_RGB_PID 0x0C37
|
||||||
hid_device* dev = hid_open_path(info->path);
|
#define CORSAIR_HYDRO_H100I_ELITE_RGB_PID_WHITE 0x0C40
|
||||||
|
#define CORSAIR_HYDRO_H150I_ELITE_RGB_PID_WHITE 0x0C41
|
||||||
if(dev)
|
|
||||||
{
|
void DetectCorsairHydroPlatinumControllers(hid_device_info* info, const std::string& name)
|
||||||
CorsairHydroPlatinumController* controller = new CorsairHydroPlatinumController(dev, info->path, name);
|
{
|
||||||
RGBController_CorsairHydroPlatinum* rgb_controller = new RGBController_CorsairHydroPlatinum(controller);
|
uint16_t no_rgb_fan_models[] =
|
||||||
|
{
|
||||||
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
CORSAIR_HYDRO_H100I_ELITE_RGB_PID,
|
||||||
}
|
CORSAIR_HYDRO_H115I_ELITE_RGB_PID,
|
||||||
}
|
CORSAIR_HYDRO_H150I_ELITE_RGB_PID,
|
||||||
|
CORSAIR_HYDRO_H100I_ELITE_RGB_PID_WHITE,
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H100i Platinum", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PLATINUM_PID );
|
CORSAIR_HYDRO_H150I_ELITE_RGB_PID_WHITE
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H100i Platinum SE", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PLATINUM_SE_PID );
|
};
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H115i Platinum", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_PLATINUM_PID );
|
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H60i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H60I_PRO_XT_PID );
|
hid_device* dev = hid_open_path(info->path);
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PRO_XT_PID );
|
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT v2", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PRO_XT_V2_PID );
|
if(dev)
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H115i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_PRO_XT_PID );
|
{
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H150i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H150I_PRO_XT_PID );
|
bool dev_rgb_fan = true;
|
||||||
REGISTER_HID_DETECTOR("Corsair Hydro H100i Elite", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_ELITE_PID );
|
for(uint16_t pid : no_rgb_fan_models)
|
||||||
|
{
|
||||||
|
if(info->product_id == pid)
|
||||||
|
{
|
||||||
|
dev_rgb_fan = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CorsairHydroPlatinumController* controller = new CorsairHydroPlatinumController(dev, info->path, dev_rgb_fan, name);
|
||||||
|
RGBController_CorsairHydroPlatinum* rgb_controller = new RGBController_CorsairHydroPlatinum(controller);
|
||||||
|
|
||||||
|
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Platinum", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PLATINUM_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Platinum SE", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PLATINUM_SE_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H115i Platinum", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_PLATINUM_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H60i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H60I_PRO_XT_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PRO_XT_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Pro XT v2", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_PRO_XT_V2_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H115i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_PRO_XT_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H150i Pro XT", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H150I_PRO_XT_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Elite", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_ELITE_RGB_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H115i Elite", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H115I_ELITE_RGB_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H150i Elite", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H150I_ELITE_RGB_PID );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H100i Elite White", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H100I_ELITE_RGB_PID_WHITE );
|
||||||
|
REGISTER_HID_DETECTOR("Corsair Hydro H150i Elite White", DetectCorsairHydroPlatinumControllers, CORSAIR_VID, CORSAIR_HYDRO_H150I_ELITE_RGB_PID_WHITE );
|
||||||
|
|
|
||||||
|
|
@ -1,135 +1,147 @@
|
||||||
/*---------------------------------------------------------*\
|
/*---------------------------------------------------------*\
|
||||||
| RGBController_CorsairHydroPlatinum.cpp |
|
| RGBController_CorsairHydroPlatinum.cpp |
|
||||||
| |
|
| |
|
||||||
| RGBController for Corsair Hydro Platinum coolers |
|
| RGBController for Corsair Hydro Platinum coolers |
|
||||||
| |
|
| |
|
||||||
| Kasper 28 Mar 2021 |
|
| Kasper 28 Mar 2021 |
|
||||||
| |
|
| Nikola Jurkovic (jurkovic.nikola) 13 Aug 2025 |
|
||||||
| This file is part of the OpenRGB project |
|
| |
|
||||||
| SPDX-License-Identifier: GPL-2.0-only |
|
| This file is part of the OpenRGB project |
|
||||||
\*---------------------------------------------------------*/
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
#include "RGBController_CorsairHydroPlatinum.h"
|
|
||||||
|
#include "RGBController_CorsairHydroPlatinum.h"
|
||||||
#define NA 0xFFFFFFFF
|
|
||||||
static unsigned int matrix_map[5][5] =
|
#define NA 0xFFFFFFFF
|
||||||
{
|
static unsigned int matrix_map[5][5] =
|
||||||
{ NA, 11, 12, 13, NA },
|
{
|
||||||
{ 10, NA, 1, NA, 14 },
|
{ NA, 11, 12, 13, NA },
|
||||||
{ 9, 0, NA, 2, 15 },
|
{ 10, NA, 1, NA, 14 },
|
||||||
{ 8, NA, 3, NA, 4 },
|
{ 9, 0, NA, 2, 15 },
|
||||||
{ NA, 7, 6, 5, NA }
|
{ 8, NA, 3, NA, 4 },
|
||||||
};
|
{ NA, 7, 6, 5, NA }
|
||||||
|
};
|
||||||
/**------------------------------------------------------------------*\
|
|
||||||
@name Corsair Hydro Platinum
|
/**------------------------------------------------------------------*\
|
||||||
@category Cooler
|
@name Corsair Hydro Platinum
|
||||||
@type USB
|
@category Cooler
|
||||||
@save :x:
|
@type USB
|
||||||
@direct :white_check_mark:
|
@save :x:
|
||||||
@effects :x:
|
@direct :white_check_mark:
|
||||||
@detectors DetectCorsairHydroPlatinumControllers
|
@effects :x:
|
||||||
@comment
|
@detectors DetectCorsairHydroPlatinumControllers
|
||||||
\*-------------------------------------------------------------------*/
|
@comment
|
||||||
|
\*-------------------------------------------------------------------*/
|
||||||
RGBController_CorsairHydroPlatinum::RGBController_CorsairHydroPlatinum(CorsairHydroPlatinumController* controller_ptr)
|
|
||||||
{
|
RGBController_CorsairHydroPlatinum::RGBController_CorsairHydroPlatinum(CorsairHydroPlatinumController* controller_ptr)
|
||||||
controller = controller_ptr;
|
{
|
||||||
|
controller = controller_ptr;
|
||||||
name = controller->GetName();
|
|
||||||
vendor = "Corsair";
|
name = controller->GetName();
|
||||||
description = "Corsair Hydro Platinum Series Device";
|
vendor = "Corsair";
|
||||||
type = DEVICE_TYPE_COOLER;
|
description = "Corsair Hydro Platinum Series Device";
|
||||||
location = controller->GetLocation();
|
type = DEVICE_TYPE_COOLER;
|
||||||
version = controller->GetFirmwareString();
|
location = controller->GetLocation();
|
||||||
|
version = controller->GetFirmwareString();
|
||||||
mode Direct;
|
|
||||||
Direct.name = "Direct";
|
mode Direct;
|
||||||
Direct.value = 0;
|
Direct.name = "Direct";
|
||||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
Direct.value = 0;
|
||||||
Direct.color_mode = MODE_COLORS_PER_LED;
|
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
||||||
modes.push_back(Direct);
|
Direct.color_mode = MODE_COLORS_PER_LED;
|
||||||
|
modes.push_back(Direct);
|
||||||
Init_Controller();
|
|
||||||
SetupZones();
|
Init_Controller();
|
||||||
}
|
SetupZones();
|
||||||
|
}
|
||||||
void RGBController_CorsairHydroPlatinum::Init_Controller()
|
|
||||||
{
|
RGBController_CorsairHydroPlatinum::~RGBController_CorsairHydroPlatinum()
|
||||||
zone cpu_block_zone;
|
{
|
||||||
cpu_block_zone.name = "CPU Block";
|
delete controller;
|
||||||
cpu_block_zone.type = ZONE_TYPE_MATRIX;
|
}
|
||||||
cpu_block_zone.leds_min = 16;
|
|
||||||
cpu_block_zone.leds_max = 16;
|
void RGBController_CorsairHydroPlatinum::Init_Controller()
|
||||||
cpu_block_zone.leds_count = 16;
|
{
|
||||||
cpu_block_zone.matrix_map = new matrix_map_type;
|
zone cpu_block_zone;
|
||||||
cpu_block_zone.matrix_map->height = 5;
|
cpu_block_zone.name = "CPU Block";
|
||||||
cpu_block_zone.matrix_map->width = 5;
|
cpu_block_zone.type = ZONE_TYPE_MATRIX;
|
||||||
cpu_block_zone.matrix_map->map = (unsigned int *)&matrix_map;
|
cpu_block_zone.leds_min = 16;
|
||||||
zones.push_back(cpu_block_zone);
|
cpu_block_zone.leds_max = 16;
|
||||||
|
cpu_block_zone.leds_count = 16;
|
||||||
zone fans_zone;
|
cpu_block_zone.matrix_map = new matrix_map_type;
|
||||||
fans_zone.name = "Fans";
|
cpu_block_zone.matrix_map->height = 5;
|
||||||
fans_zone.type = ZONE_TYPE_LINEAR;
|
cpu_block_zone.matrix_map->width = 5;
|
||||||
fans_zone.leds_min = 0;
|
cpu_block_zone.matrix_map->map = (unsigned int *)&matrix_map;
|
||||||
fans_zone.leds_max = 32;
|
zones.push_back(cpu_block_zone);
|
||||||
fans_zone.leds_count = 0;
|
|
||||||
fans_zone.matrix_map = NULL;
|
/*-----------------------------------------------------*\
|
||||||
zones.push_back(fans_zone);
|
| If the device is RGB fan-capable, set up fan zones. |
|
||||||
}
|
\*-----------------------------------------------------*/
|
||||||
|
if(controller->HaveRgbFan())
|
||||||
void RGBController_CorsairHydroPlatinum::SetupZones()
|
{
|
||||||
{
|
zone fans_zone;
|
||||||
/*-------------------------------------------------*\
|
fans_zone.name = "Fans";
|
||||||
| Clear any existing color/LED configuration |
|
fans_zone.type = ZONE_TYPE_LINEAR;
|
||||||
\*-------------------------------------------------*/
|
fans_zone.leds_min = 0;
|
||||||
leds.clear();
|
fans_zone.leds_max = 32;
|
||||||
colors.clear();
|
fans_zone.leds_count = 0;
|
||||||
|
fans_zone.matrix_map = NULL;
|
||||||
for (unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
|
zones.push_back(fans_zone);
|
||||||
{
|
}
|
||||||
for (unsigned int led_idx = 0; led_idx < zones[zone_idx].leds_count; led_idx++)
|
}
|
||||||
{
|
|
||||||
led new_led;
|
void RGBController_CorsairHydroPlatinum::SetupZones()
|
||||||
new_led.name = zones[zone_idx].name + " " + std::to_string(led_idx);;
|
{
|
||||||
leds.push_back(new_led);
|
/*-------------------------------------------------*\
|
||||||
}
|
| Clear any existing color/LED configuration |
|
||||||
}
|
\*-------------------------------------------------*/
|
||||||
|
leds.clear();
|
||||||
SetupColors();
|
colors.clear();
|
||||||
}
|
|
||||||
|
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
|
||||||
void RGBController_CorsairHydroPlatinum::ResizeZone(int zone, int new_size)
|
{
|
||||||
{
|
for(unsigned int led_idx = 0; led_idx < zones[zone_idx].leds_count; led_idx++)
|
||||||
if((size_t) zone >= zones.size())
|
{
|
||||||
{
|
led new_led;
|
||||||
return;
|
new_led.name = zones[zone_idx].name + " " + std::to_string(led_idx);;
|
||||||
}
|
leds.push_back(new_led);
|
||||||
|
}
|
||||||
if(((unsigned int)new_size >= zones[zone].leds_min) && ((unsigned int)new_size <= zones[zone].leds_max))
|
}
|
||||||
{
|
|
||||||
zones[zone].leds_count = new_size;
|
SetupColors();
|
||||||
|
}
|
||||||
SetupZones();
|
|
||||||
}
|
void RGBController_CorsairHydroPlatinum::ResizeZone(int zone, int new_size)
|
||||||
}
|
{
|
||||||
|
if((size_t) zone >= zones.size())
|
||||||
void RGBController_CorsairHydroPlatinum::DeviceUpdateLEDs()
|
{
|
||||||
{
|
return;
|
||||||
controller->SetupColors(colors);
|
}
|
||||||
}
|
|
||||||
|
if(((unsigned int)new_size >= zones[zone].leds_min) && ((unsigned int)new_size <= zones[zone].leds_max))
|
||||||
void RGBController_CorsairHydroPlatinum::UpdateZoneLEDs(int /*zone*/)
|
{
|
||||||
{
|
zones[zone].leds_count = new_size;
|
||||||
DeviceUpdateLEDs();
|
|
||||||
}
|
SetupZones();
|
||||||
|
}
|
||||||
void RGBController_CorsairHydroPlatinum::UpdateSingleLED(int /*led*/)
|
}
|
||||||
{
|
|
||||||
DeviceUpdateLEDs();
|
void RGBController_CorsairHydroPlatinum::DeviceUpdateLEDs()
|
||||||
}
|
{
|
||||||
|
controller->SetupColors(colors);
|
||||||
void RGBController_CorsairHydroPlatinum::DeviceUpdateMode()
|
}
|
||||||
{
|
|
||||||
|
void RGBController_CorsairHydroPlatinum::UpdateZoneLEDs(int /*zone*/)
|
||||||
}
|
{
|
||||||
|
DeviceUpdateLEDs();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_CorsairHydroPlatinum::UpdateSingleLED(int /*led*/)
|
||||||
|
{
|
||||||
|
DeviceUpdateLEDs();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_CorsairHydroPlatinum::DeviceUpdateMode()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,38 @@
|
||||||
/*---------------------------------------------------------*\
|
/*---------------------------------------------------------*\
|
||||||
| RGBController_CorsairHydroPlatinum.h |
|
| RGBController_CorsairHydroPlatinum.h |
|
||||||
| |
|
| |
|
||||||
| RGBController for Corsair Hydro Platinum coolers |
|
| RGBController for Corsair Hydro Platinum coolers |
|
||||||
| |
|
| |
|
||||||
| Kasper 28 Mar 2021 |
|
| Kasper 28 Mar 2021 |
|
||||||
| |
|
| Nikola Jurkovic (jurkovic.nikola) 13 Aug 2025 |
|
||||||
| This file is part of the OpenRGB project |
|
| |
|
||||||
| SPDX-License-Identifier: GPL-2.0-only |
|
| This file is part of the OpenRGB project |
|
||||||
\*---------------------------------------------------------*/
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
#pragma once
|
|
||||||
|
#pragma once
|
||||||
#include "RGBController.h"
|
|
||||||
#include "CorsairHydroPlatinumController.h"
|
#include "RGBController.h"
|
||||||
|
#include "CorsairHydroPlatinumController.h"
|
||||||
class RGBController_CorsairHydroPlatinum : public RGBController
|
|
||||||
{
|
class RGBController_CorsairHydroPlatinum : public RGBController
|
||||||
public:
|
{
|
||||||
RGBController_CorsairHydroPlatinum(CorsairHydroPlatinumController* controller_ptr);
|
public:
|
||||||
|
RGBController_CorsairHydroPlatinum(CorsairHydroPlatinumController* controller_ptr);
|
||||||
void SetupZones();
|
~RGBController_CorsairHydroPlatinum();
|
||||||
|
|
||||||
void ResizeZone(int zone, int new_size);
|
void SetupZones();
|
||||||
|
|
||||||
void DeviceUpdateLEDs();
|
void ResizeZone(int zone, int new_size);
|
||||||
void UpdateZoneLEDs(int zone);
|
|
||||||
void UpdateSingleLED(int led);
|
void DeviceUpdateLEDs();
|
||||||
|
void UpdateZoneLEDs(int zone);
|
||||||
void DeviceUpdateMode();
|
void UpdateSingleLED(int led);
|
||||||
|
|
||||||
private:
|
void DeviceUpdateMode();
|
||||||
CorsairHydroPlatinumController* controller;
|
|
||||||
|
private:
|
||||||
void Init_Controller();
|
CorsairHydroPlatinumController* controller;
|
||||||
};
|
|
||||||
|
void Init_Controller();
|
||||||
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue