Skip to content

Commit e55da57

Browse files
rytypeteCalcProgrammer1
authored andcommitted
Add Asus USB Motherboard save and shutdown effect support
1 parent 479b8e8 commit e55da57

8 files changed

+157
-15
lines changed

Controllers/AsusAuraUSBController/AsusAuraMainboardController.cpp

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,24 @@ void AuraMainboardController::SetMode
8686
unsigned char grn,
8787
unsigned char blu
8888
)
89+
{
90+
SetMode(channel, mode, red, grn, blu, false);
91+
}
92+
93+
void AuraMainboardController::SetMode
94+
(
95+
unsigned char channel,
96+
unsigned char mode,
97+
unsigned char red,
98+
unsigned char grn,
99+
unsigned char blu,
100+
bool shutdown_effect
101+
)
89102
{
90103
this->mode = mode;
91104
RGBColor color = ToRGBColor(red, grn, blu);
92105

93-
SendEffect(device_info[channel].effect_channel, mode);
106+
SendEffect(device_info[channel].effect_channel, mode, shutdown_effect);
94107
if(mode == AURA_MODE_DIRECT)
95108
{
96109
return;
@@ -116,7 +129,8 @@ void AuraMainboardController::SetMode
116129
channel,
117130
start_led,
118131
device_info[channel].num_leds,
119-
led_data
132+
led_data,
133+
shutdown_effect
120134
);
121135
}
122136

@@ -128,7 +142,8 @@ unsigned short AuraMainboardController::GetMask(int start, int size)
128142
void AuraMainboardController::SendEffect
129143
(
130144
unsigned char channel,
131-
unsigned char mode
145+
unsigned char mode,
146+
bool shutdown_effect
132147
)
133148
{
134149
unsigned char usb_buf[65];
@@ -145,7 +160,7 @@ void AuraMainboardController::SendEffect
145160
usb_buf[0x01] = AURA_MAINBOARD_CONTROL_MODE_EFFECT;
146161
usb_buf[0x02] = channel;
147162
usb_buf[0x03] = 0x00;
148-
usb_buf[0x04] = 0x00;
163+
usb_buf[0x04] = shutdown_effect ? 0x01 : 0x00;
149164
usb_buf[0x05] = mode;
150165

151166
/*-----------------------------------------------------*\
@@ -159,7 +174,8 @@ void AuraMainboardController::SendColor
159174
unsigned char /*channel*/,
160175
unsigned char start_led,
161176
unsigned char led_count,
162-
unsigned char* led_data
177+
unsigned char* led_data,
178+
bool shutdown_effect
163179
)
164180
{
165181
unsigned short mask = GetMask(start_led, led_count);
@@ -177,7 +193,7 @@ void AuraMainboardController::SendColor
177193
usb_buf[0x01] = AURA_MAINBOARD_CONTROL_MODE_EFFECT_COLOR;
178194
usb_buf[0x02] = mask >> 8;
179195
usb_buf[0x03] = mask & 0xff;
180-
usb_buf[0x04] = 0x00;
196+
usb_buf[0x04] = shutdown_effect ? 0x01 : 0x00;
181197

182198
/*-----------------------------------------------------*\
183199
| Copy in color data bytes |

Controllers/AsusAuraUSBController/AsusAuraMainboardController.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,24 +44,36 @@ class AuraMainboardController : public AuraUSBController
4444
unsigned char blu
4545
);
4646

47+
void SetMode
48+
(
49+
unsigned char channel,
50+
unsigned char mode,
51+
unsigned char red,
52+
unsigned char grn,
53+
unsigned char blu,
54+
bool shutdown_effect
55+
);
56+
57+
void SendCommit();
58+
4759
private:
4860
unsigned int mode;
4961

5062
unsigned short GetMask(int start, int size);
51-
63+
5264
void SendEffect
5365
(
5466
unsigned char channel,
55-
unsigned char mode
67+
unsigned char mode,
68+
bool shutdown_effect
5669
);
5770

5871
void SendColor
5972
(
6073
unsigned char channel,
6174
unsigned char start_led,
6275
unsigned char led_count,
63-
unsigned char* led_data
76+
unsigned char* led_data,
77+
bool shutdown_effect
6478
);
65-
66-
void SendCommit();
6779
};

Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "RGBController_AsusAuraHeadsetStand.h"
1616
#include "RGBController_AsusAuraKeyboard.h"
1717
#include "RGBController_AsusAuraTUFKeyboard.h"
18+
#include "RGBController_AsusAuraMainboard.h"
1819
#include "RGBController_AsusAuraMouse.h"
1920
#include "RGBController_AsusAuraMousemat.h"
2021
#include "RGBController_AsusROGAlly.h"
@@ -155,7 +156,7 @@ void DetectAsusAuraUSBMotherboards(hid_device_info* info, const std::string& /*n
155156
{
156157
DMIInfo dmi;
157158
AuraMainboardController* controller = new AuraMainboardController(dev, info->path);
158-
RGBController_AuraUSB* rgb_controller = new RGBController_AuraUSB(controller);
159+
RGBController_AuraMainboard* rgb_controller = new RGBController_AuraMainboard(controller);
159160
rgb_controller->name = "ASUS " + dmi.getMainboard();
160161
ResourceManager::get()->RegisterRGBController(rgb_controller);
161162
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*-----------------------------------------*\
2+
| RGBController_AsusAuraMainboard.cpp |
3+
| |
4+
| RGB controller for Asus Aura USB |
5+
| mainboards |
6+
| |
7+
| rytypete 8/30/2023 |
8+
| based on RGBController_AsusAuraUSB.cpp |
9+
| code |
10+
\*-----------------------------------------*/
11+
12+
#include "RGBController_AsusAuraMainboard.h"
13+
14+
/**------------------------------------------------------------------*\
15+
@name Asus Aura USB Mainboard
16+
@category Motherboard
17+
@type USB
18+
@save :white_check_mark:
19+
@direct :white_check_mark:
20+
@effects :white_check_mark:
21+
@detectors DetectAsusAuraUSBMotherboards
22+
@comment The Asus Aura USB Mainboard controller applies to most
23+
AMD and Intel mainboards from the x570 chipset onwards.
24+
\*-------------------------------------------------------------------*/
25+
26+
RGBController_AuraMainboard::RGBController_AuraMainboard(AuraMainboardController* controller_ptr) :
27+
RGBController_AuraUSB(controller_ptr)
28+
{
29+
name = "ASUS Aura USB Mainboard";
30+
description = "ASUS Aura USB Mainboard Device";
31+
32+
/*-------------------------------------------------------*\
33+
| Add manual save flag to all modes except direct mode |
34+
\*-------------------------------------------------------*/
35+
for(unsigned int mode_idx = 0; mode_idx < modes.size(); mode_idx++)
36+
{
37+
mode Mode = modes[mode_idx];
38+
if(Mode.value != AURA_MODE_DIRECT)
39+
{
40+
Mode.flags |= MODE_FLAG_MANUAL_SAVE;
41+
modes[mode_idx] = Mode;
42+
}
43+
}
44+
}
45+
46+
RGBController_AuraMainboard::~RGBController_AuraMainboard()
47+
{
48+
delete controller;
49+
}
50+
51+
void RGBController_AuraMainboard::DeviceUpdateShutdownEffect()
52+
{
53+
unsigned char red = 0;
54+
unsigned char grn = 0;
55+
unsigned char blu = 0;
56+
57+
if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC)
58+
{
59+
red = RGBGetRValue(modes[active_mode].colors[0]);
60+
grn = RGBGetGValue(modes[active_mode].colors[0]);
61+
blu = RGBGetBValue(modes[active_mode].colors[0]);
62+
}
63+
64+
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
65+
{
66+
AuraDeviceInfo device_info = controller->GetAuraDevices()[zone_idx];
67+
68+
/*---------------------------------------------------*\
69+
| Shutdown effect only works with onboard lighting |
70+
\*---------------------------------------------------*/
71+
if(device_info.device_type == AuraDeviceType::FIXED && zones[zone_idx].leds_count > 0)
72+
{
73+
((AuraMainboardController*) controller)->SetMode(zone_idx, modes[active_mode].value, red, grn, blu, true);
74+
}
75+
}
76+
}
77+
78+
void RGBController_AuraMainboard::DeviceSaveMode()
79+
{
80+
DeviceUpdateMode();
81+
DeviceUpdateShutdownEffect();
82+
((AuraMainboardController*) controller)->SendCommit();
83+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*-----------------------------------------*\
2+
| RGBController_AsusAuraMainboard.h |
3+
| |
4+
| RGB controller for Asus Aura USB |
5+
| mainboards |
6+
| |
7+
| rytypete 8/30/2023 |
8+
| based on RGBController_AsusAuraUSB.h |
9+
| code |
10+
\*-----------------------------------------*/
11+
12+
#pragma once
13+
#include "RGBController_AsusAuraUSB.h"
14+
#include "AsusAuraMainboardController.h"
15+
16+
class RGBController_AuraMainboard : public RGBController_AuraUSB
17+
{
18+
public:
19+
RGBController_AuraMainboard(AuraMainboardController* controller_ptr);
20+
~RGBController_AuraMainboard();
21+
22+
void DeviceSaveMode();
23+
24+
private:
25+
void DeviceUpdateShutdownEffect();
26+
};

Controllers/AsusAuraUSBController/RGBController_AsusAuraUSB.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
@save :x:
1717
@direct :white_check_mark:
1818
@effects :white_check_mark:
19-
@detectors DetectAsusAuraUSBTerminal,DetectAsusAuraUSBAddressable,DetectAsusAuraUSBMotherboards
19+
@detectors DetectAsusAuraUSBTerminal,DetectAsusAuraUSBAddressable
2020
@comment The Asus Aura USB controller applies to most AMD and
21-
Intel mainboards from the x470 and z390 chipsets onwards.
21+
Intel mainboards from the x470 and z390 chipset generations.
2222
\*-------------------------------------------------------------------*/
2323

2424
RGBController_AuraUSB::RGBController_AuraUSB(AuraUSBController* controller_ptr) :

Controllers/AsusAuraUSBController/RGBController_AsusAuraUSB.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ class RGBController_AuraUSB : public RGBController
2929

3030
void DeviceUpdateMode();
3131

32-
private:
32+
protected:
3333
AuraUSBController* controller;
34+
35+
private:
3436
std::vector<unsigned int> leds_channel;
3537
std::vector<unsigned int> zones_channel;
3638
bool initializedMode;

OpenRGB.pro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ HEADERS +=
367367
Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardLayouts.h \
368368
Controllers/AsusAuraUSBController/RGBController_AsusAuraHeadsetStand.h \
369369
Controllers/AsusAuraUSBController/RGBController_AsusAuraKeyboard.h \
370+
Controllers/AsusAuraUSBController/RGBController_AsusAuraMainboard.h \
370371
Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.h \
371372
Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.h \
372373
Controllers/AsusAuraUSBController/RGBController_AsusAuraMousemat.h \
@@ -968,6 +969,7 @@ SOURCES +=
968969
Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp \
969970
Controllers/AsusAuraUSBController/RGBController_AsusAuraHeadsetStand.cpp \
970971
Controllers/AsusAuraUSBController/RGBController_AsusAuraKeyboard.cpp \
972+
Controllers/AsusAuraUSBController/RGBController_AsusAuraMainboard.cpp \
971973
Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp \
972974
Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp \
973975
Controllers/AsusAuraUSBController/RGBController_AsusAuraMousemat.cpp \

0 commit comments

Comments
 (0)