Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
003c3e0af1 | ||
|
|
b5f46e3f1d | ||
|
|
16efabcce6 | ||
|
|
fbeb2c1c45 | ||
|
|
0295b9041f | ||
|
|
9a04b66bec | ||
|
|
37295adf6e | ||
|
|
0c16108c89 | ||
|
|
29b0816c9c | ||
|
|
f679081a2c | ||
|
|
ad2dcdb585 | ||
|
|
35aa66455c | ||
|
|
ff3dbdac4c | ||
|
|
0497941209 | ||
|
|
cacfffd101 |
@@ -105,7 +105,7 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
|
||||
mode Music;
|
||||
Music.name = "Music";
|
||||
Music.value = POLYCHROME_V1_MODE_MUSIC;
|
||||
Music.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Music.flags = MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Music.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Music);
|
||||
|
||||
@@ -122,7 +122,6 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
|
||||
/*---------------------------------------------------------------------*\
|
||||
| Comment out until per zone modes are working. These are only for ARGB |
|
||||
\*---------------------------------------------------------------------*/
|
||||
/*
|
||||
mode Spring;
|
||||
Spring.name = "Spring";
|
||||
Spring.value = POLYCHROME_V1_MODE_SPRING;
|
||||
@@ -192,7 +191,6 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
|
||||
Rainbow.speed = POLYCHROME_V1_SPEED_DEFAULT_RAINBOW;
|
||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Rainbow);
|
||||
*/
|
||||
|
||||
/*---------------------------------------------------------------------*\
|
||||
| This ARGB_Config section is a hack to allow users to configure the |
|
||||
|
||||
@@ -9,6 +9,16 @@
|
||||
|
||||
#include "RGBController_CryorigH7QuadLumi.h"
|
||||
|
||||
/**------------------------------------------------------------------*\
|
||||
@name Cryorig H7 Quad Lumi
|
||||
@category Cooler
|
||||
@type USB
|
||||
@save :x:
|
||||
@direct :white_check_mark:
|
||||
@effects :white_check_mark:
|
||||
@detectors DetectCryorigH7QuadLumi
|
||||
@comment
|
||||
\*-------------------------------------------------------------------*/
|
||||
|
||||
RGBController_CryorigH7QuadLumi::RGBController_CryorigH7QuadLumi(CryorigH7QuadLumiController* controller_ptr)
|
||||
{
|
||||
|
||||
@@ -31,8 +31,9 @@ static const char* ene_channels[] = /* ENE channel strings
|
||||
|
||||
ENESMBusController::ENESMBusController(ENESMBusInterface* interface, ene_dev_id dev)
|
||||
{
|
||||
this->interface = interface;
|
||||
this->dev = dev;
|
||||
this->interface = interface;
|
||||
this->dev = dev;
|
||||
supports_mode_14 = false;
|
||||
|
||||
UpdateDeviceName();
|
||||
|
||||
@@ -93,6 +94,17 @@ ENESMBusController::ENESMBusController(ENESMBusInterface* interface, ene_dev_id
|
||||
direct_reg = ENE_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = ENE_REG_COLORS_EFFECT_V2;
|
||||
channel_cfg = ENE_CONFIG_CHANNEL_V1;
|
||||
|
||||
// Check for Mode 14 support, only known to exist on modules where the
|
||||
// DRAM 3 zone ID exists
|
||||
for(std::size_t cfg_zone_idx = 0; cfg_zone_idx < ENE_NUM_ZONES; cfg_zone_idx++)
|
||||
{
|
||||
if(config_table[channel_cfg + cfg_zone_idx] == (unsigned char)ENE_LED_CHANNEL_DRAM_3)
|
||||
{
|
||||
supports_mode_14 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// AUMA0-E6K5-0106 - Second generation motherboard controller
|
||||
else if (strcmp(device_name, "AUMA0-E6K5-0106") == 0)
|
||||
@@ -187,6 +199,8 @@ std::string ENESMBusController::GetDeviceLocation()
|
||||
|
||||
const char * ENESMBusController::GetChannelName(unsigned int cfg_zone)
|
||||
{
|
||||
LOG_TRACE("[%s] Config table for zone %02d: %02d", device_name, cfg_zone, config_table[channel_cfg + cfg_zone]);
|
||||
|
||||
switch(config_table[channel_cfg + cfg_zone])
|
||||
{
|
||||
case (unsigned char)ENE_LED_CHANNEL_AUDIO:
|
||||
@@ -211,6 +225,7 @@ const char * ENESMBusController::GetChannelName(unsigned int cfg_zone)
|
||||
|
||||
case (unsigned char)ENE_LED_CHANNEL_DRAM:
|
||||
case (unsigned char)ENE_LED_CHANNEL_DRAM_2:
|
||||
case (unsigned char)ENE_LED_CHANNEL_DRAM_3:
|
||||
return(ene_channels[5]);
|
||||
break;
|
||||
|
||||
@@ -238,6 +253,7 @@ const char * ENESMBusController::GetChannelName(unsigned int cfg_zone)
|
||||
|
||||
unsigned int ENESMBusController::GetLEDCount(unsigned int cfg_zone)
|
||||
{
|
||||
LOG_TRACE("[%s] LED Count for zone %02d: %02d", device_name, cfg_zone, config_table[0x03 + cfg_zone]);
|
||||
return(config_table[0x03 + cfg_zone]);
|
||||
}
|
||||
|
||||
@@ -367,6 +383,11 @@ void ENESMBusController::SetMode(unsigned char mode, unsigned char speed, unsign
|
||||
ENERegisterWrite(ENE_REG_APPLY, ENE_APPLY_VAL);
|
||||
}
|
||||
|
||||
bool ENESMBusController::SupportsMode14()
|
||||
{
|
||||
return(supports_mode_14);
|
||||
}
|
||||
|
||||
void ENESMBusController::UpdateDeviceName()
|
||||
{
|
||||
for (int i = 0; i < 16; i++)
|
||||
|
||||
@@ -53,6 +53,7 @@ enum
|
||||
ENE_MODE_SPECTRUM_CYCLE_WAVE = 11, /* Wave effect mode */
|
||||
ENE_MODE_CHASE_RAINBOW_PULSE = 12, /* Chase with Rainbow Pulse effect mode*/
|
||||
ENE_MODE_RANDOM_FLICKER = 13, /* Random flicker effect mode */
|
||||
ENE_MODE_DOUBLE_FADE = 14, /* Rainbow fade to dual color */
|
||||
ENE_NUMBER_MODES /* Number of Aura modes */
|
||||
};
|
||||
|
||||
@@ -74,6 +75,7 @@ enum
|
||||
enum
|
||||
{
|
||||
ENE_LED_CHANNEL_DRAM_2 = 0x05, /* DRAM LED channel */
|
||||
ENE_LED_CHANNEL_DRAM_3 = 0x0E, /* DRAM LED channel */
|
||||
ENE_LED_CHANNEL_CENTER_START = 0x82, /* Center zone first LED channel */
|
||||
ENE_LED_CHANNEL_CENTER = 0x83, /* Center zone LED channel */
|
||||
ENE_LED_CHANNEL_AUDIO = 0x84, /* Audio zone LED channel */
|
||||
@@ -118,6 +120,7 @@ public:
|
||||
void SetLEDColorDirect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue);
|
||||
void SetLEDColorEffect(unsigned int led, unsigned char red, unsigned char green, unsigned char blue);
|
||||
void SetMode(unsigned char mode, unsigned char speed, unsigned char direction);
|
||||
bool SupportsMode14();
|
||||
|
||||
void UpdateDeviceName();
|
||||
|
||||
@@ -134,5 +137,5 @@ private:
|
||||
unsigned char channel_cfg;
|
||||
ENESMBusInterface* interface;
|
||||
ene_dev_id dev;
|
||||
|
||||
bool supports_mode_14;
|
||||
};
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
\*-----------------------------------------*/
|
||||
|
||||
#include "RGBController_ENESMBus.h"
|
||||
#include "LogManager.h"
|
||||
#include "ResourceManager.h"
|
||||
|
||||
/**------------------------------------------------------------------*\
|
||||
@name ENE SMBus Device
|
||||
@@ -23,6 +25,24 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p
|
||||
{
|
||||
controller = controller_ptr;
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Get ENEController settings |
|
||||
\*---------------------------------------------------------*/
|
||||
json ene_settings = ResourceManager::get()->GetSettingsManager()->GetSettings("ENESMBusSettings");
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Check if save to device is enabled |
|
||||
\*---------------------------------------------------------*/
|
||||
unsigned int save_flag = 0;
|
||||
|
||||
if(ene_settings.contains("enable_save"))
|
||||
{
|
||||
if(ene_settings["enable_save"] == true)
|
||||
{
|
||||
save_flag = MODE_FLAG_MANUAL_SAVE;
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Determine name and type (DRAM or Motherboard) by checking |
|
||||
| the ENE controller's version string |
|
||||
@@ -46,99 +66,112 @@ RGBController_ENESMBus::RGBController_ENESMBus(ENESMBusController * controller_p
|
||||
description = "ENE SMBus Device";
|
||||
|
||||
mode Direct;
|
||||
Direct.name = "Direct";
|
||||
Direct.value = 0xFFFF;
|
||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
||||
Direct.color_mode = MODE_COLORS_PER_LED;
|
||||
Direct.name = "Direct";
|
||||
Direct.value = 0xFFFF;
|
||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
||||
Direct.color_mode = MODE_COLORS_PER_LED;
|
||||
modes.push_back(Direct);
|
||||
|
||||
mode Off;
|
||||
Off.name = "Off";
|
||||
Off.value = ENE_MODE_OFF;
|
||||
Off.flags = MODE_FLAG_MANUAL_SAVE;
|
||||
Off.color_mode = MODE_COLORS_NONE;
|
||||
Off.name = "Off";
|
||||
Off.value = ENE_MODE_OFF;
|
||||
Off.flags = save_flag;
|
||||
Off.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Off);
|
||||
|
||||
mode Static;
|
||||
Static.name = "Static";
|
||||
Static.value = ENE_MODE_STATIC;
|
||||
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE;
|
||||
Static.color_mode = MODE_COLORS_PER_LED;
|
||||
Static.name = "Static";
|
||||
Static.value = ENE_MODE_STATIC;
|
||||
Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | save_flag;
|
||||
Static.color_mode = MODE_COLORS_PER_LED;
|
||||
modes.push_back(Static);
|
||||
|
||||
mode Breathing;
|
||||
Breathing.name = "Breathing";
|
||||
Breathing.value = ENE_MODE_BREATHING;
|
||||
Breathing.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE;
|
||||
Breathing.color_mode = MODE_COLORS_PER_LED;
|
||||
Breathing.speed_min = ENE_SPEED_SLOWEST;
|
||||
Breathing.speed_max = ENE_SPEED_FASTEST;
|
||||
Breathing.speed = ENE_SPEED_NORMAL;
|
||||
Breathing.name = "Breathing";
|
||||
Breathing.value = ENE_MODE_BREATHING;
|
||||
Breathing.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | save_flag;
|
||||
Breathing.color_mode = MODE_COLORS_PER_LED;
|
||||
Breathing.speed_min = ENE_SPEED_SLOWEST;
|
||||
Breathing.speed_max = ENE_SPEED_FASTEST;
|
||||
Breathing.speed = ENE_SPEED_NORMAL;
|
||||
modes.push_back(Breathing);
|
||||
|
||||
mode Flashing;
|
||||
Flashing.name = "Flashing";
|
||||
Flashing.value = ENE_MODE_FLASHING;
|
||||
Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE;
|
||||
Flashing.color_mode = MODE_COLORS_PER_LED;
|
||||
Flashing.speed_min = ENE_SPEED_SLOWEST;
|
||||
Flashing.speed_max = ENE_SPEED_FASTEST;
|
||||
Flashing.speed = ENE_SPEED_NORMAL;
|
||||
Flashing.name = "Flashing";
|
||||
Flashing.value = ENE_MODE_FLASHING;
|
||||
Flashing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | save_flag;
|
||||
Flashing.color_mode = MODE_COLORS_PER_LED;
|
||||
Flashing.speed_min = ENE_SPEED_SLOWEST;
|
||||
Flashing.speed_max = ENE_SPEED_FASTEST;
|
||||
Flashing.speed = ENE_SPEED_NORMAL;
|
||||
modes.push_back(Flashing);
|
||||
|
||||
mode SpectrumCycle;
|
||||
SpectrumCycle.name = "Spectrum Cycle";
|
||||
SpectrumCycle.value = ENE_MODE_SPECTRUM_CYCLE;
|
||||
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE;
|
||||
SpectrumCycle.color_mode = MODE_COLORS_NONE;
|
||||
SpectrumCycle.speed_min = ENE_SPEED_SLOWEST;
|
||||
SpectrumCycle.speed_max = ENE_SPEED_FASTEST;
|
||||
SpectrumCycle.speed = ENE_SPEED_NORMAL;
|
||||
SpectrumCycle.name = "Spectrum Cycle";
|
||||
SpectrumCycle.value = ENE_MODE_SPECTRUM_CYCLE;
|
||||
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | save_flag;
|
||||
SpectrumCycle.color_mode = MODE_COLORS_NONE;
|
||||
SpectrumCycle.speed_min = ENE_SPEED_SLOWEST;
|
||||
SpectrumCycle.speed_max = ENE_SPEED_FASTEST;
|
||||
SpectrumCycle.speed = ENE_SPEED_NORMAL;
|
||||
modes.push_back(SpectrumCycle);
|
||||
|
||||
mode Rainbow;
|
||||
Rainbow.name = "Rainbow";
|
||||
Rainbow.value = ENE_MODE_RAINBOW;
|
||||
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE;
|
||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||
Rainbow.speed_min = ENE_SPEED_SLOWEST;
|
||||
Rainbow.speed_max = ENE_SPEED_FASTEST;
|
||||
Rainbow.speed = ENE_SPEED_NORMAL;
|
||||
Rainbow.direction = MODE_DIRECTION_LEFT;
|
||||
Rainbow.name = "Rainbow";
|
||||
Rainbow.value = ENE_MODE_RAINBOW;
|
||||
Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | save_flag;
|
||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||
Rainbow.speed_min = ENE_SPEED_SLOWEST;
|
||||
Rainbow.speed_max = ENE_SPEED_FASTEST;
|
||||
Rainbow.speed = ENE_SPEED_NORMAL;
|
||||
Rainbow.direction = MODE_DIRECTION_LEFT;
|
||||
modes.push_back(Rainbow);
|
||||
|
||||
mode ChaseFade;
|
||||
ChaseFade.name = "Chase Fade";
|
||||
ChaseFade.value = ENE_MODE_CHASE_FADE;
|
||||
ChaseFade.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE;
|
||||
ChaseFade.color_mode = MODE_COLORS_PER_LED;
|
||||
ChaseFade.speed_min = ENE_SPEED_SLOWEST;
|
||||
ChaseFade.speed_max = ENE_SPEED_FASTEST;
|
||||
ChaseFade.speed = ENE_SPEED_NORMAL;
|
||||
ChaseFade.direction = MODE_DIRECTION_LEFT;
|
||||
ChaseFade.name = "Chase Fade";
|
||||
ChaseFade.value = ENE_MODE_CHASE_FADE;
|
||||
ChaseFade.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | save_flag;
|
||||
ChaseFade.color_mode = MODE_COLORS_PER_LED;
|
||||
ChaseFade.speed_min = ENE_SPEED_SLOWEST;
|
||||
ChaseFade.speed_max = ENE_SPEED_FASTEST;
|
||||
ChaseFade.speed = ENE_SPEED_NORMAL;
|
||||
ChaseFade.direction = MODE_DIRECTION_LEFT;
|
||||
modes.push_back(ChaseFade);
|
||||
|
||||
mode Chase;
|
||||
Chase.name = "Chase";
|
||||
Chase.value = ENE_MODE_CHASE;
|
||||
Chase.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_MANUAL_SAVE;
|
||||
Chase.color_mode = MODE_COLORS_PER_LED;
|
||||
Chase.speed_min = ENE_SPEED_SLOWEST;
|
||||
Chase.speed_max = ENE_SPEED_FASTEST;
|
||||
Chase.speed = ENE_SPEED_NORMAL;
|
||||
ChaseFade.direction = MODE_DIRECTION_LEFT;
|
||||
Chase.name = "Chase";
|
||||
Chase.value = ENE_MODE_CHASE;
|
||||
Chase.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | save_flag;
|
||||
Chase.color_mode = MODE_COLORS_PER_LED;
|
||||
Chase.speed_min = ENE_SPEED_SLOWEST;
|
||||
Chase.speed_max = ENE_SPEED_FASTEST;
|
||||
Chase.speed = ENE_SPEED_NORMAL;
|
||||
ChaseFade.direction = MODE_DIRECTION_LEFT;
|
||||
modes.push_back(Chase);
|
||||
|
||||
mode RandomFlicker;
|
||||
RandomFlicker.name = "Random Flicker";
|
||||
RandomFlicker.value = ENE_MODE_RANDOM_FLICKER;
|
||||
RandomFlicker.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE;
|
||||
RandomFlicker.color_mode = MODE_COLORS_NONE;
|
||||
RandomFlicker.speed_min = ENE_SPEED_SLOWEST;
|
||||
RandomFlicker.speed_max = ENE_SPEED_FASTEST;
|
||||
RandomFlicker.speed = ENE_SPEED_NORMAL;
|
||||
RandomFlicker.name = "Random Flicker";
|
||||
RandomFlicker.value = ENE_MODE_RANDOM_FLICKER;
|
||||
RandomFlicker.flags = MODE_FLAG_HAS_SPEED | save_flag;
|
||||
RandomFlicker.color_mode = MODE_COLORS_NONE;
|
||||
RandomFlicker.speed_min = ENE_SPEED_SLOWEST;
|
||||
RandomFlicker.speed_max = ENE_SPEED_FASTEST;
|
||||
RandomFlicker.speed = ENE_SPEED_NORMAL;
|
||||
modes.push_back(RandomFlicker);
|
||||
|
||||
if(controller->SupportsMode14())
|
||||
{
|
||||
mode DoubleFade;
|
||||
DoubleFade.name = "Double Fade";
|
||||
DoubleFade.value = ENE_MODE_DOUBLE_FADE;
|
||||
DoubleFade.flags = MODE_FLAG_HAS_SPEED;
|
||||
DoubleFade.color_mode = MODE_COLORS_NONE;
|
||||
DoubleFade.speed_min = ENE_SPEED_SLOWEST;
|
||||
DoubleFade.speed_max = ENE_SPEED_FASTEST;
|
||||
DoubleFade.speed = ENE_SPEED_NORMAL;
|
||||
modes.push_back(DoubleFade);
|
||||
}
|
||||
|
||||
SetupZones();
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
@@ -162,6 +195,8 @@ int RGBController_ENESMBus::GetDeviceMode()
|
||||
int speed = controller->ENERegisterRead(ENE_REG_SPEED);
|
||||
int direction = controller->ENERegisterRead(ENE_REG_DIRECTION);
|
||||
|
||||
LOG_TRACE("[%s] Retrieved ENE mode from module: %02d", name.c_str(), dev_mode);
|
||||
|
||||
if(controller->ENERegisterRead(ENE_REG_DIRECT))
|
||||
{
|
||||
dev_mode = 0xFFFF;
|
||||
@@ -173,6 +208,7 @@ int RGBController_ENESMBus::GetDeviceMode()
|
||||
case ENE_MODE_RAINBOW:
|
||||
case ENE_MODE_SPECTRUM_CYCLE:
|
||||
case ENE_MODE_RANDOM_FLICKER:
|
||||
case ENE_MODE_DOUBLE_FADE:
|
||||
color_mode = MODE_COLORS_NONE;
|
||||
break;
|
||||
|
||||
|
||||
@@ -361,6 +361,19 @@ uint16_t LightBoard_init(uint8_t* p_in)
|
||||
@effects :x:
|
||||
@detectors DetectGaiZhongGaiKeyboardControllers
|
||||
@comment
|
||||
Open source web : https://oshwhub.com/yangzen/zui-gai68-
|
||||
|
||||
| function | command code | format | format | format | format |
|
||||
| ----------------------------- | ----------------- | -------- | -------- | -------- | ----------------------------------------- |
|
||||
| | [0] | [1] | [2] | [3] | [4] |
|
||||
| ----------------------------- | ----------------- | -------- | -------- | -------- | ----------------------------------------- |
|
||||
| Restore offline effects | 0xFF | undefined | undefined | undefined | undefined |
|
||||
| Set color | 0x10 | LED0_G | LED0_R | LED0_B | LED1_G(And so on to LED20) |
|
||||
| Set color | 0x11 | LED21_G | LED21_R | LED21_B | LED22_G(The sequence is WS2812 network) |
|
||||
| Get color | 0x20 | LED0_G | LED0_R | LED0_B | LED1_G(And so on to LED20) |
|
||||
| Get color | 0x21 | LED21_G | LED21_R | LED21_B | LED22_G(The sequence is WS2812 network) |
|
||||
|
||||
Note: Get color only sends command code, and the keyboard returns LED color data
|
||||
\*-------------------------------------------------------------------*/
|
||||
|
||||
RGBController_GaiZhongGaiKeyboard::RGBController_GaiZhongGaiKeyboard(GaiZhongGaiKeyboardController* controller_ptr)
|
||||
|
||||
@@ -17,6 +17,69 @@
|
||||
@effects :white_check_mark:
|
||||
@detectors DetectGigabyteSuperIORGBControllers
|
||||
@comment
|
||||
Testing was done on an ITE8688 Chipset, and adds the support for motherboards that can only be controlled with Gigabyte’s “Ambient Led” NOT EITHER RGB Fusion 1.0/2.0.
|
||||
|
||||
You should first check to confirm that you DO NOT HAVE EITHER A USB OR SMBUS controllable chipset, use the following powershell command to confirm if you have a USB device:
|
||||
```powershell
|
||||
gwmi Win32_USBControllerDevice |%{[wmi]($_.Dependent)} | Sort Manufacturer,Description,DeviceID | Ft -GroupBy Manufacturer Description,Service,DeviceID
|
||||
```
|
||||
|
||||
If you see anything with a VID of 048D or 8297, DO NOT PROCEED, the software is likely supportable by OpenRGB's Fusion2 USB controller.
|
||||
|
||||
After that check output on the SMBus: Using the OpenRGB I2C Sniffer to confirm that no data is output on either bus while changing colors in “Ambient LED”, if either bus outputs data, DO NOT PROCEED, the software is likely supportable in Gigabyte RGB Fusion.
|
||||
|
||||
The following chipsets are likely supported:
|
||||
| Chipset ID |
|
||||
| :---: |
|
||||
| ITE8620E |
|
||||
| ITE8626 |
|
||||
| ITE8686E |
|
||||
| ITE8688 |
|
||||
| ITE8689 |
|
||||
| ITE8728F |
|
||||
| ITE8790F |
|
||||
| ITE8791E |
|
||||
|
||||
To confirm your chipset, you can open CPU-Z, the MCU chipset model is found under Mainboard like below:
|
||||
|
||||
To confirm that your RGB is compatible with this Controller in OpenRGB, you will need to add the motherboard DMI Model name, which is the output of the following powershell command:
|
||||
|
||||
```powershell
|
||||
wmic baseboard get product
|
||||
```
|
||||
|
||||
To the struct array that is found in GigabyteSuperIORGBControllerDetect.cpp, like below
|
||||
|
||||
```c++
|
||||
gig_device compatible_devices[] =
|
||||
{
|
||||
{"X570 UD"},
|
||||
{"EXAMPLEBASEBOARDPRODUCTNAME"}
|
||||
};
|
||||
```
|
||||
|
||||
If your chipset is also NOT an ITE8688, you will also need to add the chipset, to get this is a bit harder, for myself I added a breakpoint, on this line, in GigabyteSuperIORGBControllerDetect.cpp:
|
||||
```c++
|
||||
switch (val & SIO_ID_MASK)
|
||||
```
|
||||
|
||||
For an ITE8688, the value was 0x8688 in Hexidecimal, it is likely the case with other models as well that the code matches the MCU model.
|
||||
|
||||
To add this chipset you will need to first add it to the SuperIO definitions file, which is named super_io.h like below
|
||||
```c++
|
||||
#define SIO_ITE688_ID 0x8688 // Device ID for ITE8688 (8688)
|
||||
#define SIO_NEWCHIPSETMODEL_ID 0xFOUNDHEXIDECIMALVALUE // Device ID for NEWCHIPSETMODEL (FOUNDHEXIDECIMALVALUE)
|
||||
```
|
||||
|
||||
And lastly you will need to add the chip to the
|
||||
|
||||
GigabyteSuperIORGBControllerDetect.cpp like below:
|
||||
```c++
|
||||
switch (val & SIO_ID_MASK)
|
||||
{
|
||||
case SIO_ITE688_ID:
|
||||
case SIO_NEWCHIPSETMODEL_ID:
|
||||
```
|
||||
\*-------------------------------------------------------------------*/
|
||||
|
||||
RGBController_GigabyteSuperIORGB::RGBController_GigabyteSuperIORGB(GigabyteSuperIORGBController* controller_ptr)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
@name NZXT Hue 1
|
||||
@category LEDStrip
|
||||
@type USB
|
||||
@save :robot:
|
||||
@save :x:
|
||||
@direct :white_check_mark:
|
||||
@effects :white_check_mark:
|
||||
@detectors DetectNZXTHue1Controllers
|
||||
|
||||
@@ -53,15 +53,8 @@ RGBController_ZotacV2GPU::RGBController_ZotacV2GPU(ZotacV2GPUController* control
|
||||
location = controller->GetDeviceLocation();
|
||||
type = DEVICE_TYPE_GPU;
|
||||
|
||||
try
|
||||
{
|
||||
config = ZOTAC_V2_GPU_CONFIG.at(controller->GetVersion());
|
||||
}
|
||||
catch(std::out_of_range)
|
||||
{
|
||||
LOG_ERROR("No zone config found for %s", version.c_str());
|
||||
config = ZotacV2GPUConfig();
|
||||
}
|
||||
config = ZOTAC_V2_GPU_CONFIG.at(controller->GetVersion());
|
||||
|
||||
version += std::to_string(config.numberOfZones) + " zones, "
|
||||
+ (config.supportsExternalLEDStrip ? "with" : "without") + " external LED strip support";
|
||||
|
||||
|
||||
@@ -356,26 +356,30 @@ KeyboardLayoutManager::KeyboardLayoutManager(KEYBOARD_LAYOUT layout, KEYBOARD_SI
|
||||
tmp_name.append(KEYBOARD_NAME_QWERTY);
|
||||
break;
|
||||
|
||||
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_AZERTY:
|
||||
ChangeKeys(iso_azerty);
|
||||
tmp_name = KEYBOARD_NAME_AZERTY;
|
||||
break;
|
||||
|
||||
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_QWERTY:
|
||||
ChangeKeys(iso_qwerty);
|
||||
tmp_name = KEYBOARD_NAME_ISO;
|
||||
tmp_name.append(KEYBOARD_NAME_QWERTY);
|
||||
break;
|
||||
|
||||
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_QWERTZ:
|
||||
ChangeKeys(iso_qwertz);
|
||||
tmp_name = KEYBOARD_NAME_QWERTZ;
|
||||
break;
|
||||
/*-------------------------------------------------*\
|
||||
| Non-English, non-QWERTY layouts are disabled |
|
||||
| until proper translation feature is implemented |
|
||||
\*-------------------------------------------------*/
|
||||
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_AZERTY:
|
||||
// ChangeKeys(iso_azerty);
|
||||
// tmp_name = KEYBOARD_NAME_AZERTY;
|
||||
// break;
|
||||
|
||||
case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_JIS:
|
||||
ChangeKeys(jis);
|
||||
tmp_name = KEYBOARD_NAME_JIS;
|
||||
break;
|
||||
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_ISO_QWERTZ:
|
||||
// ChangeKeys(iso_qwertz);
|
||||
// tmp_name = KEYBOARD_NAME_QWERTZ;
|
||||
// break;
|
||||
|
||||
// case KEYBOARD_LAYOUT::KEYBOARD_LAYOUT_JIS:
|
||||
// ChangeKeys(jis);
|
||||
// tmp_name = KEYBOARD_NAME_JIS;
|
||||
// break;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------*\
|
||||
|
||||
+12
-11
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "NetworkServer.h"
|
||||
#include "LogManager.h"
|
||||
#include "StringUtils.h"
|
||||
#include <cstring>
|
||||
|
||||
#ifndef WIN32
|
||||
@@ -266,7 +267,7 @@ void NetworkServer::StartServer()
|
||||
for(res = result; res && socket_count < MAXSOCK; res = res->ai_next)
|
||||
{
|
||||
server_sock[socket_count] = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
||||
|
||||
|
||||
if(server_sock[socket_count] == INVALID_SOCKET)
|
||||
{
|
||||
printf("Error: network socket could not be created\n");
|
||||
@@ -320,7 +321,7 @@ void NetworkServer::StartServer()
|
||||
|
||||
freeaddrinfo(result);
|
||||
server_online = true;
|
||||
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Start the connection thread |
|
||||
\*-------------------------------------------------*/
|
||||
@@ -430,7 +431,7 @@ void NetworkServer::ConnectionThreadFunction(int socket_idx)
|
||||
socklen_t len;
|
||||
len = sizeof(tmp_addr);
|
||||
getpeername(client_info->client_sock, (struct sockaddr*)&tmp_addr, &len);
|
||||
|
||||
|
||||
if(tmp_addr.ss_family == AF_INET)
|
||||
{
|
||||
struct sockaddr_in *s_4 = (struct sockaddr_in *)&tmp_addr;
|
||||
@@ -780,7 +781,7 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
|
||||
|
||||
if(profile_manager)
|
||||
{
|
||||
profile_manager->SaveProfile(data);
|
||||
profile_manager->SaveProfile(StringUtils::make_filename(data));
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -793,7 +794,7 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
|
||||
|
||||
if(profile_manager)
|
||||
{
|
||||
profile_manager->LoadProfile(data);
|
||||
profile_manager->LoadProfile(StringUtils::make_filename(data));
|
||||
}
|
||||
|
||||
for(RGBController* controller : controllers)
|
||||
@@ -811,7 +812,7 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
|
||||
|
||||
if(profile_manager)
|
||||
{
|
||||
profile_manager->DeleteProfile(data);
|
||||
profile_manager->DeleteProfile(StringUtils::make_filename(data));
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -1028,7 +1029,7 @@ void NetworkServer::SendReply_PluginList(SOCKET client_sock)
|
||||
{
|
||||
unsigned int data_size = 0;
|
||||
unsigned int data_ptr = 0;
|
||||
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Calculate data size |
|
||||
\*---------------------------------------------------------*/
|
||||
@@ -1045,12 +1046,12 @@ void NetworkServer::SendReply_PluginList(SOCKET client_sock)
|
||||
data_size += strlen(plugins[i].version.c_str()) + 1;
|
||||
data_size += sizeof(unsigned int) * 2;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Create data buffer |
|
||||
\*---------------------------------------------------------*/
|
||||
unsigned char *data_buf = new unsigned char[data_size];
|
||||
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Copy in data size |
|
||||
\*---------------------------------------------------------*/
|
||||
@@ -1103,14 +1104,14 @@ void NetworkServer::SendReply_PluginList(SOCKET client_sock)
|
||||
\*---------------------------------------------------------*/
|
||||
memcpy(&data_buf[data_ptr], &i, sizeof(unsigned int));
|
||||
data_ptr += sizeof(unsigned int);
|
||||
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Copy in plugin sdk version (data) |
|
||||
\*---------------------------------------------------------*/
|
||||
memcpy(&data_buf[data_ptr], &plugins[i].protocol_version, sizeof(int));
|
||||
data_ptr += sizeof(int);
|
||||
}
|
||||
|
||||
|
||||
NetPacketHeader reply_hdr;
|
||||
unsigned int reply_size;
|
||||
|
||||
|
||||
+2
-2
@@ -35,8 +35,8 @@ greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
# Application Configuration #
|
||||
#-----------------------------------------------------------------------------------------------#
|
||||
MAJOR = 0
|
||||
MINOR = 8
|
||||
REVISION = 1
|
||||
MINOR = 9
|
||||
REVISION =
|
||||
VERSION = $$MAJOR"."$$MINOR$$REVISION
|
||||
TARGET = OpenRGB
|
||||
TEMPLATE = app
|
||||
|
||||
@@ -1239,6 +1239,7 @@ void ResourceManager::DetectDevicesThreadFunction()
|
||||
| Reset current device pointer to first device |
|
||||
\*-------------------------------------------------*/
|
||||
#ifdef __linux__
|
||||
#ifdef __GLIBC__
|
||||
LOG_INFO("------------------------------------------------------");
|
||||
LOG_INFO("| Detecting libusb HID devices |");
|
||||
LOG_INFO("------------------------------------------------------");
|
||||
@@ -1352,6 +1353,7 @@ void ResourceManager::DetectDevicesThreadFunction()
|
||||
\*-------------------------------------------------*/
|
||||
wrapper.hid_free_enumeration(hid_devices);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
@@ -1431,6 +1433,9 @@ void ResourceManager::DetectDevicesThreadFunction()
|
||||
"<p>See <a href='https://openrgb.org/udev'>https://openrgb.org/udev</a> to install the udev rules manually</p>";
|
||||
|
||||
LOG_DIALOG("%s", message);
|
||||
|
||||
udev_multiple = false;
|
||||
i2c_interface_fail = false;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
@@ -1445,6 +1450,8 @@ void ResourceManager::DetectDevicesThreadFunction()
|
||||
"<p>Multiple udev rules files can conflict, it is recommended to remove one of them.</p>";
|
||||
|
||||
LOG_DIALOG("%s", message);
|
||||
|
||||
i2c_interface_fail = false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -38,3 +38,31 @@ const char* StringUtils::wchar_to_char(const wchar_t* pwchar)
|
||||
|
||||
return filePathC;
|
||||
}
|
||||
|
||||
std::string StringUtils::make_filename(std::string input)
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
| Replace : characters with - characters |
|
||||
\*-----------------------------------------------------*/
|
||||
input = std::regex_replace(input, std::regex(":"), "-");
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Remove all other characters |
|
||||
\*-----------------------------------------------------*/
|
||||
input = std::regex_replace(input, std::regex("[#%&\\{\\}\\\\<>\\*\\?/!`';@+|=]"), "");
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Remove leading . characters |
|
||||
\*-----------------------------------------------------*/
|
||||
input = std::regex_replace(input, std::regex("^\\.+"), "");
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Remove control characters |
|
||||
\*-----------------------------------------------------*/
|
||||
input = std::regex_replace(input, std::regex("[\\x00-\\x1F\\x7F]"), "");
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Return complete string |
|
||||
\*-----------------------------------------------------*/
|
||||
return(input);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ class StringUtils
|
||||
{
|
||||
public:
|
||||
static const char* wchar_to_char(const wchar_t* pwchar);
|
||||
static std::string make_filename(std::string input);
|
||||
};
|
||||
|
||||
#endif // STRING_UTILS_H
|
||||
|
||||
+3
-2
@@ -30,8 +30,9 @@ extern "C" {
|
||||
#define CMMK_ROWS_MAX 7
|
||||
#define CMMK_COLS_MAX 22
|
||||
|
||||
#define CMMK_KEYLIST_SIZE 256
|
||||
#define CMMK_BUFFER_SIZE 65
|
||||
#define CMMK_FW_SIZE 16
|
||||
#define CMMK_KEYLIST_SIZE 256
|
||||
#define CMMK_BUFFER_SIZE 65
|
||||
|
||||
/*
|
||||
* If we have C99 support (which we do, because libusb-1.0 requires it...), define some handy
|
||||
|
||||
Vendored
+6
-8
@@ -236,12 +236,12 @@ int cmmk_find_device(int *product)
|
||||
|
||||
static int cmmk_try_determine_layout(struct cmmk *dev, int product)
|
||||
{
|
||||
char fw[16];
|
||||
char fw[CMMK_FW_SIZE];
|
||||
|
||||
enum cmmk_layout_type general_layout = CMMK_LAYOUT_TYPE_ANSI;
|
||||
enum cmmk_product_type device_model;
|
||||
enum cmmk_layout_type general_layout = CMMK_LAYOUT_TYPE_ANSI;
|
||||
enum cmmk_product_type device_model = 0;
|
||||
|
||||
if (cmmk_get_firmware_version(dev, fw, sizeof(fw)) == 0) {
|
||||
if (cmmk_get_firmware_version(dev, fw, CMMK_FW_SIZE) == 0) {
|
||||
if (fw[0] == '1') {
|
||||
/* ANSI firmware */
|
||||
general_layout = CMMK_LAYOUT_TYPE_ANSI;
|
||||
@@ -399,7 +399,7 @@ int cmmk_get_firmware_version(struct cmmk *dev, char *fw, size_t fwsiz)
|
||||
fwsiz = 60;
|
||||
}
|
||||
|
||||
strncpy(fw, (char *)data + 4, fwsiz);
|
||||
memcpy(fw, (char *)data + 4, fwsiz);
|
||||
|
||||
return CMMK_OK;
|
||||
}
|
||||
@@ -890,7 +890,6 @@ int cmmk_get_multilayer_map(struct cmmk *dev, struct cmmk_effect_matrix *effmap)
|
||||
{
|
||||
const unsigned char HEADER_SIZE = 9;
|
||||
unsigned char data_size = CMMK_BUFFER_SIZE - HEADER_SIZE;
|
||||
unsigned char data_size_in_bytes = data_size / BYTE_SIZE;
|
||||
int r;
|
||||
|
||||
unsigned char data[CMMK_BUFFER_SIZE];
|
||||
@@ -939,7 +938,6 @@ int cmmk_set_multilayer_map(struct cmmk *dev, struct cmmk_effect_matrix const *e
|
||||
{
|
||||
const unsigned char HEADER_SIZE = 9;
|
||||
unsigned char data_size = CMMK_BUFFER_SIZE - HEADER_SIZE;
|
||||
unsigned char data_size_in_bytes = data_size / BYTE_SIZE;
|
||||
int r;
|
||||
|
||||
unsigned char data[CMMK_BUFFER_SIZE];
|
||||
@@ -1035,7 +1033,7 @@ int cmmk_set_all_single(struct cmmk *dev, struct rgb const *col)
|
||||
*/
|
||||
int cmmk_set_leds(struct cmmk *dev, struct cmmk_color_matrix const *colmap)
|
||||
{
|
||||
unsigned char data[CMMK_BUFFER_SIZE];
|
||||
unsigned char data[CMMK_BUFFER_SIZE];
|
||||
|
||||
int i;
|
||||
int j;
|
||||
|
||||
@@ -47,6 +47,9 @@ fi
|
||||
%doc README.md
|
||||
|
||||
%changelog
|
||||
* Sun Jul 9 2023 Adam Honse <[email protected]> - 0.9-0
|
||||
- Updated to 0.9
|
||||
|
||||
* Tue Nov 29 2022 Adam Honse <[email protected]> - 0.8.1-0
|
||||
- Updated to 0.8.1
|
||||
|
||||
|
||||
@@ -803,7 +803,7 @@
|
||||
<message>
|
||||
<location filename="../OpenRGBPhilipsHueSettingsPage/OpenRGBPhilipsHueSettingsPage.ui" line="48"/>
|
||||
<source>After adding a Hue entry and saving, restart OpenRGB and press the Sync button on your Hue bridge to pair it.</source>
|
||||
<translation>После добавления устройств Hue и сохранения, перезапустите OpenRGB, затем нажмите кнопку Sync на мосте Hue brisge для установления связи.</translation>
|
||||
<translation>После добавления устройств Hue и сохранения, перезапустите OpenRGB, затем нажмите кнопку Sync на мосте Hue bridge для установления связи.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../OpenRGBPhilipsHueSettingsPage/OpenRGBPhilipsHueSettingsPage.ui" line="14"/>
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
</description>
|
||||
|
||||
<releases>
|
||||
<release version="0.9" date="2023-06-09"></release>
|
||||
<release version="0.8" date="2022-11-27"></release>
|
||||
<release version="0.7" date="2021-12-30"></release>
|
||||
<release version="0.6" date="2021-06-01"></release>
|
||||
|
||||
Reference in New Issue
Block a user