From f93baffae664089e04682a2318176706d080ae56 Mon Sep 17 00:00:00 2001 From: Zhi Yan <773534601@qq.com> Date: Sat, 6 Jul 2024 16:54:19 +0000 Subject: [PATCH] Correcting DRGBcontroller error, ensuring correct compilation and running on Windows --- Controllers/DRGBController/DRGBController.cpp | 5 + Controllers/DRGBController/DRGBController.h | 3 +- .../DRGBController/RGBController_DRGB.cpp | 92 ++++++++++--------- 3 files changed, 56 insertions(+), 44 deletions(-) diff --git a/Controllers/DRGBController/DRGBController.cpp b/Controllers/DRGBController/DRGBController.cpp index 971e63ed..0298ab53 100644 --- a/Controllers/DRGBController/DRGBController.cpp +++ b/Controllers/DRGBController/DRGBController.cpp @@ -44,6 +44,11 @@ unsigned short DRGBController::GetDevicePID() return(device_pid); } +void DRGBController::SetChannelLEDs(unsigned char channel, RGBColor* colors, unsigned int num_colors) +{ + +} + void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets , unsigned int Array) { unsigned char usb_buf[1025]; diff --git a/Controllers/DRGBController/DRGBController.h b/Controllers/DRGBController/DRGBController.h index 3589399a..a87e5d35 100644 --- a/Controllers/DRGBController/DRGBController.h +++ b/Controllers/DRGBController/DRGBController.h @@ -20,7 +20,6 @@ class DRGBController { public: DRGBController(hid_device* dev_handle, const char* path, unsigned short pid); - ~DRGBController(); std::string GetLocationString(); std::string GetSerialString(); unsigned short GetDevicePID(); @@ -29,6 +28,6 @@ public: void SendPacketFS(unsigned char* colors,unsigned int buf_packets ,bool Array); private: hid_device* dev; - unsigned short device_pid; std::string location; + unsigned short device_pid; }; diff --git a/Controllers/DRGBController/RGBController_DRGB.cpp b/Controllers/DRGBController/RGBController_DRGB.cpp index bd2fc376..b10f6fa2 100644 --- a/Controllers/DRGBController/RGBController_DRGB.cpp +++ b/Controllers/DRGBController/RGBController_DRGB.cpp @@ -68,62 +68,66 @@ void RGBController_DRGB::SetupZones() switch(controller->GetDevicePID()) { case DRGB_LED_V4_PID: - NUM_CHANNELS = 8; - NUM_Channel_led = 256; + NUM_CHANNELS = 8; + NUM_Channel_led = 256; + Version = 4; break; case DRGB_ULTRA_V4F_PID: - NUM_CHANNELS = 16; - NUM_Channel_led = 256; + NUM_CHANNELS = 16; + NUM_Channel_led = 256; + Version = 4; break; case DRGB_CORE_V4F_PID: - NUM_CHANNELS = 32; - NUM_Channel_led = 256; + NUM_CHANNELS = 32; + NUM_Channel_led = 256; + Version = 4; break; case DRGB_SIG_V4F_PID: - NUM_CHANNELS = 36; - NUM_Channel_led = 256; + NUM_CHANNELS = 36; + NUM_Channel_led = 256; + Version = 4; break; case DRGB_LED_V3_PID: - NUM_CHANNELS = 8; - NUM_Channel_led = 256; - Version = 3; + NUM_CHANNELS = 8; + NUM_Channel_led = 256; + Version = 3; break; case DRGB_Ultra_V3_PID: - NUM_CHANNELS = 16; - NUM_Channel_led = 256; - Version = 3; + NUM_CHANNELS = 16; + NUM_Channel_led = 256; + Version = 3; break; case DRGB_CORE_V3_PID: - NUM_CHANNELS = 30; - NUM_Channel_led = 256; - Version = 3; + NUM_CHANNELS = 30; + NUM_Channel_led = 256; + Version = 3; break; case DRGB_LED_PID: - NUM_CHANNELS = 8; - NUM_Channel_led = 256; - Version = 2; + NUM_CHANNELS = 8; + NUM_Channel_led = 256; + Version = 2; break; case DRGB_ULTRA_PID: - NUM_CHANNELS = 16; - NUM_Channel_led = 256; - Version = 2; + NUM_CHANNELS = 16; + NUM_Channel_led = 256; + Version = 2; break; case DRGB_SIG_AB_PID: - NUM_CHANNELS = 16; - NUM_Channel_led = 256; - Version = 2; + NUM_CHANNELS = 16; + NUM_Channel_led = 256; + Version = 2; break; case DRGB_SIG_CD_PID: - NUM_CHANNELS = 6; - NUM_Channel_led = 256; - Version = 2; + NUM_CHANNELS = 6; + NUM_Channel_led = 256; + Version = 2; break; case DRGB_Strimer_PID: - NUM_CHANNELS = 6; - NUM_Channel_led = 256; - Version = 2; + NUM_CHANNELS = 6; + NUM_Channel_led = 256; + Version = 2; break; } @@ -271,15 +275,16 @@ void RGBController_DRGB::DeviceUpdateLEDs() switch(Version) { case 4: - unsigned int led_index = 0; - unsigned char RGBData [8192*3 + 72] = {0}; + { + unsigned int led_index = 0; + unsigned char RGBData[8192*3 + 72] = {0}; for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++) { unsigned char LEDnum = zones[zone_idx].leds_count; - unsigned int QLedCount = (LEDnum & 0xFFFF)>>8; - unsigned int PLedCount = LEDnum & 0xFF; - RGBData[zone_idx * 2 ] = QLedCount; - RGBData[zone_idx * 2 + 1] = PLedCount; + unsigned int HighCount = (LEDnum & 0xFFFF)>>8; + unsigned int LowCount = LEDnum & 0xFF; + RGBData[zone_idx * 2 ] = HighCount; + RGBData[zone_idx * 2 + 1] = LowCount; for(unsigned int i=0; i 316) { col_packets = ((led_index - 316) / 340) + (((led_index - 316) % 340) > 0); } controller->SendPacket(&RGBData[0], col_packets,led_index); break; + } case 3: - unsigned int led_index = 0; + { + unsigned int led_index = 0; unsigned char RGBData[1801*3] = {0}; unsigned char ArrayData[64] = {0}; ArrayData[0] = 0x60; @@ -331,11 +338,12 @@ void RGBController_DRGB::DeviceUpdateLEDs() controller->SendPacketFS(&ArrayData[0], 1,0); controller->SendPacketFS(&RGBData[0], col_packets,1); break; + } case 2: for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++) { - unsigned char RGBData [256*3] = {0}; + unsigned char RGBData[256*3] = {0}; unsigned char ArrayData[64] = {0}; unsigned char LEDnum = zones[zone_idx].leds_count; for(unsigned int i=0; i> 8) & 0xFF; RGBData[i * 3 +2] = (RGBcolors >> 16) & 0xFF; } - unsigned char NumPackets = LEDnum / 20 + (LEDnum % 20) > 0; + unsigned char NumPackets = (LEDnum / 20) + ((LEDnum % 20) > 0); for (unsigned int CurrPacket = 1 ; CurrPacket <= NumPackets; CurrPacket++) { ArrayData[0] = CurrPacket;