diff --git a/Controllers/DRGBController/DRGBController.cpp b/Controllers/DRGBController/DRGBController.cpp index 3889202b2..711cff9cc 100644 --- a/Controllers/DRGBController/DRGBController.cpp +++ b/Controllers/DRGBController/DRGBController.cpp @@ -106,10 +106,7 @@ void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets usb_buf[3] = HigCount; usb_buf[4] = LowCount; buf_idx = i*1020; - for(unsigned int k=0;k<1020;k++) - { - usb_buf[k+5] = colors[buf_idx + k]; - } + memcpy(usb_buf + 5, colors + buf_idx, 1020); hid_write(dev, usb_buf, 1025); if(LEDtotal) { @@ -122,42 +119,26 @@ void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets void DRGBController::SendPacketFS(unsigned char* colors, unsigned int buf_packets , unsigned int Array) { - unsigned char usb_buf[65]; - unsigned int buf_idx = 0; - memset(usb_buf, 0x00, sizeof(usb_buf)); - usb_buf[0x00] = 0x00; - if(Array == 0x64) + unsigned char usb_buf[65] = {0}; + unsigned int current_index = 0; + + if(Array == 0x64 || Array == 0x47) { + const unsigned int offset = (Array == 0x64) ? 100 : 92; + for(unsigned int i = 0; i < buf_packets; i++) { - usb_buf[1] = i == buf_packets - 1 ? Array + 100 + i : Array + i; - buf_idx = i*63; - for(unsigned int k=0;k<63;k++) - { - usb_buf[k+2] = colors[buf_idx + k]; - } - hid_write(dev, usb_buf, 65); - } - } - else if(Array == 0x47) - { - for(unsigned int i = 0; i < buf_packets; i++) - { - usb_buf[1] = i == buf_packets - 1 ? Array + 92 + i : Array + i; - buf_idx = i*63; - for(unsigned int k=0;k<63;k++) - { - usb_buf[k+2] = colors[buf_idx + k]; - } + const bool is_last_packet = (i == buf_packets - 1); + usb_buf[1] = is_last_packet ? (Array + offset + i) : (Array + i); + current_index = i * 63; + memcpy(usb_buf + 2, colors + current_index, 63); + hid_write(dev, usb_buf, 65); } } else { - for(unsigned int e=0;e<64;e++) - { - usb_buf[e+1] = colors[e]; - } + memcpy(usb_buf + 1, colors, 64); hid_write(dev, usb_buf, 65); } } diff --git a/Controllers/DRGBController/DRGBControllerDetect.cpp b/Controllers/DRGBController/DRGBControllerDetect.cpp index f651f4d9d..029861c0d 100644 --- a/Controllers/DRGBController/DRGBControllerDetect.cpp +++ b/Controllers/DRGBController/DRGBControllerDetect.cpp @@ -31,33 +31,38 @@ void DetectDRGBControllers(hid_device_info* info, const std::string& name) } } -REGISTER_HID_DETECTOR("DRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID); -REGISTER_HID_DETECTOR("DRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID); -REGISTER_HID_DETECTOR("DRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID); +REGISTER_HID_DETECTOR("DeepRGB LED V4", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V4_PID); +REGISTER_HID_DETECTOR("DeepRGB ULTRA V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V4F_PID); +REGISTER_HID_DETECTOR("DeepRGB CORE V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V4F_PID); +REGISTER_HID_DETECTOR("DeepRGB SIG V4F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V4F_PID); + REGISTER_HID_DETECTOR("Airgoo AG-DRGB04", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_04_V4F_PID); REGISTER_HID_DETECTOR("Airgoo AG-DRGB16", DetectDRGBControllers, DRGBV4_VID, DRGB_AG_16_V4F_PID); -REGISTER_HID_DETECTOR("DRGB LED V5", DetectDRGBControllers, DRGBV4_VID, DRGB_LED_V5_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V5", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_ULTRA_V5F_PID); -REGISTER_HID_DETECTOR("DRGB CORE V5", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5_PID); -REGISTER_HID_DETECTOR("DRGB CORE V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_CORE_V5F_PID); -REGISTER_HID_DETECTOR("DRGB SIG V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_SIG_V5F_PID); +REGISTER_HID_DETECTOR("DeepRGB L8 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_L8_V5_PID); +REGISTER_HID_DETECTOR("DeepRGB U16 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_U16_V5_PID); +REGISTER_HID_DETECTOR("DeepRGB U16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_U16_V5F_PID); +REGISTER_HID_DETECTOR("DeepRGB C16 V5", DetectDRGBControllers, DRGBV4_VID, DRGB_C16_V5_PID); +REGISTER_HID_DETECTOR("DeepRGB C16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_C16_V5F_PID); +REGISTER_HID_DETECTOR("DeepRGB S16 V5F", DetectDRGBControllers, DRGBV4_VID, DRGB_S16_V5F_PID); -REGISTER_HID_DETECTOR("DRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID); -REGISTER_HID_DETECTOR("DRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID); -REGISTER_HID_DETECTOR("DRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID); -REGISTER_HID_DETECTOR("DRGB ELITE", DetectDRGBControllers, DRGBV3_VID, DRGB_ELITE_PID); +REGISTER_HID_DETECTOR("DeepRGB LED", DetectDRGBControllers, DRGBV3_VID, DRGB_LED_V3_PID); +REGISTER_HID_DETECTOR("DeepRGB Ultra V3", DetectDRGBControllers, DRGBV3_VID, DRGB_Ultra_V3_PID); +REGISTER_HID_DETECTOR("DeepRGB CORE V3", DetectDRGBControllers, DRGBV3_VID, DRGB_CORE_V3_PID); +REGISTER_HID_DETECTOR("DeepRGB E8 F", DetectDRGBControllers, DRGBV3_VID, DRGB_E8_F_PID); +REGISTER_HID_DETECTOR("DeepRGB E16", DetectDRGBControllers, DRGBV3_VID, DRGB_E16_PID); REGISTER_HID_DETECTOR("NEEDMAX 10 ELITE", DetectDRGBControllers, DRGBV3_VID, DM_10_PID); REGISTER_HID_DETECTOR("JPU ELITE", DetectDRGBControllers, DRGBV3_VID, JPU_12_PID); -REGISTER_HID_DETECTOR("DRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID); -REGISTER_HID_DETECTOR("DRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID); -REGISTER_HID_DETECTOR("DRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID); -REGISTER_HID_DETECTOR("DRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID); -REGISTER_HID_DETECTOR("DRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID); +REGISTER_HID_DETECTOR("DeepRGB LED Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_LED_PID); +REGISTER_HID_DETECTOR("DeepRGB ULTRA", DetectDRGBControllers, DRGBV2_VID, DRGB_ULTRA_PID); +REGISTER_HID_DETECTOR("DeepRGB SIG AB", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_AB_PID); +REGISTER_HID_DETECTOR("DeepRGB SIG CD", DetectDRGBControllers, DRGBV2_VID, DRGB_SIG_CD_PID); +REGISTER_HID_DETECTOR("DeepRGB Strimer Controller", DetectDRGBControllers, DRGBV2_VID, DRGB_Strimer_PID); REGISTER_HID_DETECTOR("YICO 8 ELITE", DetectDRGBControllers, YICO_VID, YICO_8_PID); REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_PID); REGISTER_HID_DETECTOR("YICO 08 ELITE", DetectDRGBControllers, YICO_VID, YICO_08_1_PID); +REGISTER_HID_DETECTOR("YICO 14 LCD", DetectDRGBControllers, DRGBV3_VID, YICO_14_PID); +REGISTER_HID_DETECTOR("YICO 16 ELITE", DetectDRGBControllers, DRGBV4_VID, YICO_16_PID); + diff --git a/Controllers/DRGBController/RGBController_DRGB.cpp b/Controllers/DRGBController/RGBController_DRGB.cpp index 2877a74f1..18bbd85ed 100644 --- a/Controllers/DRGBController/RGBController_DRGB.cpp +++ b/Controllers/DRGBController/RGBController_DRGB.cpp @@ -99,32 +99,32 @@ void RGBController_DRGB::SetupZones() Version = 4; break; - case DRGB_LED_V5_PID: + case DRGB_L8_V5_PID: NUM_CHANNELS = 8; NUM_Channel_led = 512; Version = 4; break; - case DRGB_ULTRA_V5_PID: + case DRGB_U16_V5_PID: NUM_CHANNELS = 16; NUM_Channel_led = 256; Version = 4; break; - case DRGB_ULTRA_V5F_PID: + case DRGB_U16_V5F_PID: NUM_CHANNELS = 16; NUM_Channel_led = 256; Version = 4; break; - case DRGB_CORE_V5_PID: + case DRGB_C16_V5_PID: NUM_CHANNELS = 32; NUM_Channel_led = 256; Version = 4; break; - case DRGB_CORE_V5F_PID: + case DRGB_C16_V5F_PID: NUM_CHANNELS = 32; NUM_Channel_led = 256; Version = 4; break; - case DRGB_SIG_V5F_PID: + case DRGB_S16_V5F_PID: NUM_CHANNELS = 32; NUM_Channel_led = 256; Version = 4; @@ -145,11 +145,16 @@ void RGBController_DRGB::SetupZones() NUM_Channel_led = 256; Version = 3; break; - case DRGB_ELITE_PID: + case DRGB_E8_F_PID: NUM_CHANNELS = 8; NUM_Channel_led = 132; Version = 1; break; + case DRGB_E16_PID: + NUM_CHANNELS = 16; + NUM_Channel_led = 132; + Version = 1; + break; case DM_10_PID: NUM_CHANNELS = 10; NUM_Channel_led = 132; @@ -202,6 +207,16 @@ void RGBController_DRGB::SetupZones() NUM_Channel_led = 132; Version = 3; break; + case YICO_14_PID: + NUM_CHANNELS = 14; + NUM_Channel_led = 132; + Version = 1; + break; + case YICO_16_PID: + NUM_CHANNELS = 16; + NUM_Channel_led = 256; + Version = 4; + break; } zones.resize(NUM_CHANNELS); @@ -237,6 +252,24 @@ void RGBController_DRGB::SetupZones() snprintf(ch_idx_string, 4, "%d", channel_idx+1 ); zones[channel_idx].name = "Channel "; } + else if(NUM_CHANNELS == 14) + { + if(channel_idx<4) + { + snprintf(ch_idx_string, 2, "%d", channel_idx+1 ); + zones[channel_idx].name = "LCD "; + } + else if(channel_idx<6) + { + snprintf(ch_idx_string, 2, "%d", channel_idx+1 ); + zones[channel_idx].name = "LED "; + } + else if(channel_idx<16) + { + snprintf(ch_idx_string, 2, "%d", channel_idx-5 ); + zones[channel_idx].name = "ARGB "; + } + } else if(channel_idx<8) { snprintf(ch_idx_string, 2, "%d", channel_idx + 1); diff --git a/Controllers/DRGBController/RGBController_DRGB.h b/Controllers/DRGBController/RGBController_DRGB.h index 6d150e1cc..70c0cbf67 100644 --- a/Controllers/DRGBController/RGBController_DRGB.h +++ b/Controllers/DRGBController/RGBController_DRGB.h @@ -22,18 +22,19 @@ #define DRGB_AG_04_V4F_PID 0x3204 #define DRGB_AG_16_V4F_PID 0x3216 -#define DRGB_LED_V5_PID 0x3208 -#define DRGB_ULTRA_V5_PID 0x3215 -#define DRGB_ULTRA_V5F_PID 0x3217 -#define DRGB_CORE_V5_PID 0x3228 -#define DRGB_CORE_V5F_PID 0x3229 -#define DRGB_SIG_V5F_PID 0x3232 +#define DRGB_L8_V5_PID 0x3208 +#define DRGB_U16_V5_PID 0x3215 +#define DRGB_U16_V5F_PID 0x3217 +#define DRGB_C16_V5_PID 0x3228 +#define DRGB_C16_V5F_PID 0x3229 +#define DRGB_S16_V5F_PID 0x3232 #define DRGBV3_VID 0x2023 #define DRGB_LED_V3_PID 0x1209 #define DRGB_Ultra_V3_PID 0x1221 #define DRGB_CORE_V3_PID 0x1226 -#define DRGB_ELITE_PID 0x1408 +#define DRGB_E8_F_PID 0x1408 +#define DRGB_E16_PID 0x1416 #define DM_10_PID 0x1410 #define JPU_12_PID 0x1412 @@ -48,6 +49,8 @@ #define YICO_8_PID 0x6077 #define YICO_08_PID 0x6078 #define YICO_08_1_PID 0x6079 +#define YICO_14_PID 0x1614 +#define YICO_16_PID 0x1616 class RGBController_DRGB : public RGBController {