Skip to content

Commit 98d7224

Browse files
Split HyperX Alloy FPS and HyperX Alloy Elite into two separate controllers
1 parent 4026aa4 commit 98d7224

10 files changed

+1199
-130
lines changed

Controllers/HyperXKeyboardController/HyperXAlloyEliteController.cpp

Lines changed: 504 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/*-----------------------------------------*\
2+
| HyperXAlloyEliteController.h |
3+
| |
4+
| Definitions and types for HyperX Alloy |
5+
| Elite Keyboard lighting controller |
6+
| |
7+
| Adam Honse (CalcProgrammer1) 1/30/2020 |
8+
\*-----------------------------------------*/
9+
10+
#include "RGBController.h"
11+
12+
#include <string>
13+
#include <hidapi/hidapi.h>
14+
15+
#pragma once
16+
17+
enum
18+
{
19+
HYPERX_ALLOY_ELITE_PACKET_ID_SET_EFFECT = 0x02, /* Set profile effect packet */
20+
HYPERX_ALLOY_ELITE_PACKET_ID_SET_COLOR = 0x06, /* Set profile color packet */
21+
HYPERX_ALLOY_ELITE_PACKET_ID_DIRECT = 0x16, /* Direct control packet */
22+
};
23+
24+
25+
enum
26+
{
27+
HYPERX_ALLOY_ELITE_DIRECTION_RIGHT = 0x00,
28+
HYPERX_ALLOY_ELITE_DIRECTION_LEFT = 0x01,
29+
HYPERX_ALLOY_ELITE_DIRECTION_UP = 0x02,
30+
HYPERX_ALLOY_ELITE_DIRECTION_DOWN = 0x03,
31+
HYPERX_ALLOY_ELITE_DIRECTION_IN = 0x04,
32+
HYPERX_ALLOY_ELITE_DIRECTION_OUT = 0x05
33+
};
34+
35+
enum
36+
{
37+
HYPERX_ALLOY_ELITE_MODE_WAVE = 0x00,
38+
HYPERX_ALLOY_ELITE_MODE_STATIC = 0x01,
39+
HYPERX_ALLOY_ELITE_MODE_BREATHING = 0x02,
40+
};
41+
42+
enum
43+
{
44+
HYPERX_ALLOY_ELITE_REACTIVE_MODE_TRIGGER = 0x03,
45+
HYPERX_ALLOY_ELITE_REACTIVE_MODE_EXPLOSION = 0x04,
46+
HYPERX_ALLOY_ELITE_REACTIVE_MODE_HYPERX_FLAME = 0x05,
47+
HYPERX_ALLOY_ELITE_REACTIVE_MODE_NONE = 0xFF
48+
};
49+
50+
enum
51+
{
52+
HYPERX_ALLOY_ELITE_COLOR_MODE_SINGLE = 0x00,
53+
HYPERX_ALLOY_ELITE_COLOR_MODE_DUAL = 0x01,
54+
HYPERX_ALLOY_ELITE_COLOR_MODE_SPECTRUM = 0x02
55+
};
56+
57+
enum
58+
{
59+
HYPERX_ALLOY_ELITE_COLOR_CHANNEL_RED = 0x01,
60+
HYPERX_ALLOY_ELITE_COLOR_CHANNEL_GREEN = 0x02,
61+
HYPERX_ALLOY_ELITE_COLOR_CHANNEL_BLUE = 0x03,
62+
HYPERX_ALLOY_ELITE_COLOR_CHANNEL_EXTENDED = 0x04
63+
};
64+
65+
class HyperXAlloyEliteController
66+
{
67+
public:
68+
HyperXAlloyEliteController(hid_device* dev_handle, const char* path);
69+
~HyperXAlloyEliteController();
70+
71+
std::string GetDeviceLocation();
72+
std::string GetSerialString();
73+
74+
void SetMode
75+
(
76+
unsigned char mode,
77+
unsigned char direction,
78+
unsigned char speed,
79+
std::vector<RGBColor> colors
80+
);
81+
82+
void SetLEDsDirect(std::vector<RGBColor> colors);
83+
void SetLEDs(std::vector<RGBColor> colors);
84+
85+
private:
86+
hid_device* dev;
87+
unsigned char active_mode;
88+
unsigned char active_direction;
89+
unsigned char active_speed;
90+
std::string location;
91+
92+
void SelectProfile
93+
(
94+
unsigned char profile
95+
);
96+
97+
void SendEffect
98+
(
99+
unsigned char profile,
100+
unsigned char mode,
101+
unsigned char direction,
102+
unsigned char reactive_mode,
103+
unsigned char speed,
104+
unsigned char color_mode,
105+
unsigned char red_single,
106+
unsigned char grn_single,
107+
unsigned char blu_single,
108+
unsigned char red_dual_1,
109+
unsigned char grn_dual_1,
110+
unsigned char blu_dual_1,
111+
unsigned char red_dual_2,
112+
unsigned char grn_dual_2,
113+
unsigned char blu_dual_2
114+
);
115+
116+
void SendColor
117+
(
118+
unsigned char profile,
119+
unsigned char color_channel,
120+
unsigned char* color_data
121+
);
122+
123+
void SendExtendedColor
124+
(
125+
unsigned char profile,
126+
unsigned char* color_data
127+
);
128+
129+
void SendDirect
130+
(
131+
unsigned char color_channel,
132+
unsigned char* color_data
133+
);
134+
135+
void SendDirectExtended
136+
(
137+
unsigned char* color_data
138+
);
139+
};

0 commit comments

Comments
 (0)