Skip to content

Commit f855d16

Browse files
773534601CalcProgrammer1
authored andcommitted
Add YICO and clean up DRGB controller
1 parent 9eb0169 commit f855d16

4 files changed

Lines changed: 88 additions & 66 deletions

File tree

Controllers/DRGBController/DRGBController.cpp

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,7 @@ void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets
106106
usb_buf[3] = HigCount;
107107
usb_buf[4] = LowCount;
108108
buf_idx = i*1020;
109-
for(unsigned int k=0;k<1020;k++)
110-
{
111-
usb_buf[k+5] = colors[buf_idx + k];
112-
}
109+
memcpy(usb_buf + 5, colors + buf_idx, 1020);
113110
hid_write(dev, usb_buf, 1025);
114111
if(LEDtotal)
115112
{
@@ -122,42 +119,26 @@ void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets
122119

123120
void DRGBController::SendPacketFS(unsigned char* colors, unsigned int buf_packets , unsigned int Array)
124121
{
125-
unsigned char usb_buf[65];
126-
unsigned int buf_idx = 0;
127-
memset(usb_buf, 0x00, sizeof(usb_buf));
128-
usb_buf[0x00] = 0x00;
129-
if(Array == 0x64)
130-
{
131-
for(unsigned int i = 0; i < buf_packets; i++)
132-
{
133-
usb_buf[1] = i == buf_packets - 1 ? Array + 100 + i : Array + i;
134-
buf_idx = i*63;
135-
for(unsigned int k=0;k<63;k++)
136-
{
137-
usb_buf[k+2] = colors[buf_idx + k];
138-
}
139-
hid_write(dev, usb_buf, 65);
140-
}
141-
}
142-
else if(Array == 0x47)
122+
unsigned char usb_buf[65] = {0};
123+
unsigned int current_index = 0;
124+
125+
if(Array == 0x64 || Array == 0x47)
143126
{
127+
const unsigned int offset = (Array == 0x64) ? 100 : 92;
128+
144129
for(unsigned int i = 0; i < buf_packets; i++)
145130
{
146-
usb_buf[1] = i == buf_packets - 1 ? Array + 92 + i : Array + i;
147-
buf_idx = i*63;
148-
for(unsigned int k=0;k<63;k++)
149-
{
150-
usb_buf[k+2] = colors[buf_idx + k];
151-
}
131+
const bool is_last_packet = (i == buf_packets - 1);
132+
usb_buf[1] = is_last_packet ? (Array + offset + i) : (Array + i);
133+
current_index = i * 63;
134+
memcpy(usb_buf + 2, colors + current_index, 63);
135+
152136
hid_write(dev, usb_buf, 65);
153137
}
154138
}
155139
else
156140
{
157-
for(unsigned int e=0;e<64;e++)
158-
{
159-
usb_buf[e+1] = colors[e];
160-
}
141+
memcpy(usb_buf + 1, colors, 64);
161142
hid_write(dev, usb_buf, 65);
162143
}
163144
}

Controllers/DRGBController/DRGBControllerDetect.cpp

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,33 +31,38 @@ void DetectDRGBControllers(hid_device_info* info, const std::string& name)
3131
}
3232
}
3333

34-
REGISTER_HID_DETECTOR("DRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID);
35-
REGISTER_HID_DETECTOR("DRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID);
36-
REGISTER_HID_DETECTOR("DRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID);
37-
REGISTER_HID_DETECTOR("DRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID);
34+
REGISTER_HID_DETECTOR("DeepRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID);
35+
REGISTER_HID_DETECTOR("DeepRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID);
36+
REGISTER_HID_DETECTOR("DeepRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID);
37+
REGISTER_HID_DETECTOR("DeepRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID);
38+
3839
REGISTER_HID_DETECTOR("Airgoo AG-DRGB04", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_04_V4F_PID);
3940
REGISTER_HID_DETECTOR("Airgoo AG-DRGB16", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_16_V4F_PID);
4041

41-
REGISTER_HID_DETECTOR("DRGB LED V5", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V5_PID);
42-
REGISTER_HID_DETECTOR("DRGB ULTRA V5", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5_PID);
43-
REGISTER_HID_DETECTOR("DRGB ULTRA V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5F_PID);
44-
REGISTER_HID_DETECTOR("DRGB CORE V5", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5_PID);
45-
REGISTER_HID_DETECTOR("DRGB CORE V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5F_PID);
46-
REGISTER_HID_DETECTOR("DRGB SIG V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V5F_PID);
47-
48-
REGISTER_HID_DETECTOR("DRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID);
49-
REGISTER_HID_DETECTOR("DRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID);
50-
REGISTER_HID_DETECTOR("DRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID);
51-
REGISTER_HID_DETECTOR("DRGB ELITE", DetectDRGBControllers, DRGBV3_VID, DRGB_ELITE_PID);
42+
REGISTER_HID_DETECTOR("DeepRGB L8 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_L8_V5_PID);
43+
REGISTER_HID_DETECTOR("DeepRGB U16 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_U16_V5_PID);
44+
REGISTER_HID_DETECTOR("DeepRGB U16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_U16_V5F_PID);
45+
REGISTER_HID_DETECTOR("DeepRGB C16 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_C16_V5_PID);
46+
REGISTER_HID_DETECTOR("DeepRGB C16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_C16_V5F_PID);
47+
REGISTER_HID_DETECTOR("DeepRGB S16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_S16_V5F_PID);
48+
49+
REGISTER_HID_DETECTOR("DeepRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID);
50+
REGISTER_HID_DETECTOR("DeepRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID);
51+
REGISTER_HID_DETECTOR("DeepRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID);
52+
REGISTER_HID_DETECTOR("DeepRGB E8 F", DetectDRGBControllers, DRGBV3_VID, DRGB_E8_F_PID);
53+
REGISTER_HID_DETECTOR("DeepRGB E16", DetectDRGBControllers, DRGBV3_VID, DRGB_E16_PID);
5254
REGISTER_HID_DETECTOR("NEEDMAX 10 ELITE", DetectDRGBControllers, DRGBV3_VID, DM_10_PID);
5355
REGISTER_HID_DETECTOR("JPU ELITE", DetectDRGBControllers, DRGBV3_VID, JPU_12_PID);
5456

55-
REGISTER_HID_DETECTOR("DRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID);
56-
REGISTER_HID_DETECTOR("DRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID);
57-
REGISTER_HID_DETECTOR("DRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID);
58-
REGISTER_HID_DETECTOR("DRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID);
59-
REGISTER_HID_DETECTOR("DRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID);
57+
REGISTER_HID_DETECTOR("DeepRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID);
58+
REGISTER_HID_DETECTOR("DeepRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID);
59+
REGISTER_HID_DETECTOR("DeepRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID);
60+
REGISTER_HID_DETECTOR("DeepRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID);
61+
REGISTER_HID_DETECTOR("DeepRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID);
6062

6163
REGISTER_HID_DETECTOR("YICO 8 ELITE", DetectDRGBControllers, YICO_VID, YICO_8_PID);
6264
REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_PID);
6365
REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_1_PID);
66+
REGISTER_HID_DETECTOR("YICO 14 LCD", DetectDRGBControllers, DRGBV3_VID, YICO_14_PID);
67+
REGISTER_HID_DETECTOR("YICO 16 ELITE", DetectDRGBControllers, DRGBV4_VID, YICO_16_PID);
68+

Controllers/DRGBController/RGBController_DRGB.cpp

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,32 +99,32 @@ void RGBController_DRGB::SetupZones()
9999
Version = 4;
100100
break;
101101

102-
case DRGB_LED_V5_PID:
102+
case DRGB_L8_V5_PID:
103103
NUM_CHANNELS = 8;
104104
NUM_Channel_led = 512;
105105
Version = 4;
106106
break;
107-
case DRGB_ULTRA_V5_PID:
107+
case DRGB_U16_V5_PID:
108108
NUM_CHANNELS = 16;
109109
NUM_Channel_led = 256;
110110
Version = 4;
111111
break;
112-
case DRGB_ULTRA_V5F_PID:
112+
case DRGB_U16_V5F_PID:
113113
NUM_CHANNELS = 16;
114114
NUM_Channel_led = 256;
115115
Version = 4;
116116
break;
117-
case DRGB_CORE_V5_PID:
117+
case DRGB_C16_V5_PID:
118118
NUM_CHANNELS = 32;
119119
NUM_Channel_led = 256;
120120
Version = 4;
121121
break;
122-
case DRGB_CORE_V5F_PID:
122+
case DRGB_C16_V5F_PID:
123123
NUM_CHANNELS = 32;
124124
NUM_Channel_led = 256;
125125
Version = 4;
126126
break;
127-
case DRGB_SIG_V5F_PID:
127+
case DRGB_S16_V5F_PID:
128128
NUM_CHANNELS = 32;
129129
NUM_Channel_led = 256;
130130
Version = 4;
@@ -145,11 +145,16 @@ void RGBController_DRGB::SetupZones()
145145
NUM_Channel_led = 256;
146146
Version = 3;
147147
break;
148-
case DRGB_ELITE_PID:
148+
case DRGB_E8_F_PID:
149149
NUM_CHANNELS = 8;
150150
NUM_Channel_led = 132;
151151
Version = 1;
152152
break;
153+
case DRGB_E16_PID:
154+
NUM_CHANNELS = 16;
155+
NUM_Channel_led = 132;
156+
Version = 1;
157+
break;
153158
case DM_10_PID:
154159
NUM_CHANNELS = 10;
155160
NUM_Channel_led = 132;
@@ -202,6 +207,16 @@ void RGBController_DRGB::SetupZones()
202207
NUM_Channel_led = 132;
203208
Version = 3;
204209
break;
210+
case YICO_14_PID:
211+
NUM_CHANNELS = 14;
212+
NUM_Channel_led = 132;
213+
Version = 1;
214+
break;
215+
case YICO_16_PID:
216+
NUM_CHANNELS = 16;
217+
NUM_Channel_led = 256;
218+
Version = 4;
219+
break;
205220
}
206221

207222
zones.resize(NUM_CHANNELS);
@@ -237,6 +252,24 @@ void RGBController_DRGB::SetupZones()
237252
snprintf(ch_idx_string, 4, "%d", channel_idx+1 );
238253
zones[channel_idx].name = "Channel ";
239254
}
255+
else if(NUM_CHANNELS == 14)
256+
{
257+
if(channel_idx<4)
258+
{
259+
snprintf(ch_idx_string, 2, "%d", channel_idx+1 );
260+
zones[channel_idx].name = "LCD ";
261+
}
262+
else if(channel_idx<6)
263+
{
264+
snprintf(ch_idx_string, 2, "%d", channel_idx+1 );
265+
zones[channel_idx].name = "LED ";
266+
}
267+
else if(channel_idx<16)
268+
{
269+
snprintf(ch_idx_string, 2, "%d", channel_idx-5 );
270+
zones[channel_idx].name = "ARGB ";
271+
}
272+
}
240273
else if(channel_idx<8)
241274
{
242275
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);

Controllers/DRGBController/RGBController_DRGB.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,19 @@
2222
#define DRGB_AG_04_V4F_PID 0x3204
2323
#define DRGB_AG_16_V4F_PID 0x3216
2424

25-
#define DRGB_LED_V5_PID 0x3208
26-
#define DRGB_ULTRA_V5_PID 0x3215
27-
#define DRGB_ULTRA_V5F_PID 0x3217
28-
#define DRGB_CORE_V5_PID 0x3228
29-
#define DRGB_CORE_V5F_PID 0x3229
30-
#define DRGB_SIG_V5F_PID 0x3232
25+
#define DRGB_L8_V5_PID 0x3208
26+
#define DRGB_U16_V5_PID 0x3215
27+
#define DRGB_U16_V5F_PID 0x3217
28+
#define DRGB_C16_V5_PID 0x3228
29+
#define DRGB_C16_V5F_PID 0x3229
30+
#define DRGB_S16_V5F_PID 0x3232
3131

3232
#define DRGBV3_VID 0x2023
3333
#define DRGB_LED_V3_PID 0x1209
3434
#define DRGB_Ultra_V3_PID 0x1221
3535
#define DRGB_CORE_V3_PID 0x1226
36-
#define DRGB_ELITE_PID 0x1408
36+
#define DRGB_E8_F_PID 0x1408
37+
#define DRGB_E16_PID 0x1416
3738
#define DM_10_PID 0x1410
3839
#define JPU_12_PID 0x1412
3940

@@ -48,6 +49,8 @@
4849
#define YICO_8_PID 0x6077
4950
#define YICO_08_PID 0x6078
5051
#define YICO_08_1_PID 0x6079
52+
#define YICO_14_PID 0x1614
53+
#define YICO_16_PID 0x1616
5154

5255
class RGBController_DRGB : public RGBController
5356
{

0 commit comments

Comments
 (0)