Correcting DRGBcontroller error, ensuring correct compilation and running on Windows

This commit is contained in:
Zhi Yan 2024-07-06 16:54:19 +00:00 committed by Adam Honse
parent 6928c50f48
commit f93baffae6
3 changed files with 56 additions and 44 deletions

View file

@ -44,6 +44,11 @@ unsigned short DRGBController::GetDevicePID()
return(device_pid); 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) void DRGBController::SendPacket(unsigned char* colors, unsigned int buf_packets , unsigned int Array)
{ {
unsigned char usb_buf[1025]; unsigned char usb_buf[1025];

View file

@ -20,7 +20,6 @@ class DRGBController
{ {
public: public:
DRGBController(hid_device* dev_handle, const char* path, unsigned short pid); DRGBController(hid_device* dev_handle, const char* path, unsigned short pid);
~DRGBController();
std::string GetLocationString(); std::string GetLocationString();
std::string GetSerialString(); std::string GetSerialString();
unsigned short GetDevicePID(); unsigned short GetDevicePID();
@ -29,6 +28,6 @@ public:
void SendPacketFS(unsigned char* colors,unsigned int buf_packets ,bool Array); void SendPacketFS(unsigned char* colors,unsigned int buf_packets ,bool Array);
private: private:
hid_device* dev; hid_device* dev;
unsigned short device_pid;
std::string location; std::string location;
unsigned short device_pid;
}; };

View file

@ -68,62 +68,66 @@ void RGBController_DRGB::SetupZones()
switch(controller->GetDevicePID()) switch(controller->GetDevicePID())
{ {
case DRGB_LED_V4_PID: case DRGB_LED_V4_PID:
NUM_CHANNELS = 8; NUM_CHANNELS = 8;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 4;
break; break;
case DRGB_ULTRA_V4F_PID: case DRGB_ULTRA_V4F_PID:
NUM_CHANNELS = 16; NUM_CHANNELS = 16;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 4;
break; break;
case DRGB_CORE_V4F_PID: case DRGB_CORE_V4F_PID:
NUM_CHANNELS = 32; NUM_CHANNELS = 32;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 4;
break; break;
case DRGB_SIG_V4F_PID: case DRGB_SIG_V4F_PID:
NUM_CHANNELS = 36; NUM_CHANNELS = 36;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 4;
break; break;
case DRGB_LED_V3_PID: case DRGB_LED_V3_PID:
NUM_CHANNELS = 8; NUM_CHANNELS = 8;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 3; Version = 3;
break; break;
case DRGB_Ultra_V3_PID: case DRGB_Ultra_V3_PID:
NUM_CHANNELS = 16; NUM_CHANNELS = 16;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 3; Version = 3;
break; break;
case DRGB_CORE_V3_PID: case DRGB_CORE_V3_PID:
NUM_CHANNELS = 30; NUM_CHANNELS = 30;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 3; Version = 3;
break; break;
case DRGB_LED_PID: case DRGB_LED_PID:
NUM_CHANNELS = 8; NUM_CHANNELS = 8;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 2; Version = 2;
break; break;
case DRGB_ULTRA_PID: case DRGB_ULTRA_PID:
NUM_CHANNELS = 16; NUM_CHANNELS = 16;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 2; Version = 2;
break; break;
case DRGB_SIG_AB_PID: case DRGB_SIG_AB_PID:
NUM_CHANNELS = 16; NUM_CHANNELS = 16;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 2; Version = 2;
break; break;
case DRGB_SIG_CD_PID: case DRGB_SIG_CD_PID:
NUM_CHANNELS = 6; NUM_CHANNELS = 6;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 2; Version = 2;
break; break;
case DRGB_Strimer_PID: case DRGB_Strimer_PID:
NUM_CHANNELS = 6; NUM_CHANNELS = 6;
NUM_Channel_led = 256; NUM_Channel_led = 256;
Version = 2; Version = 2;
break; break;
} }
@ -271,15 +275,16 @@ void RGBController_DRGB::DeviceUpdateLEDs()
switch(Version) switch(Version)
{ {
case 4: 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++) for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{ {
unsigned char LEDnum = zones[zone_idx].leds_count; unsigned char LEDnum = zones[zone_idx].leds_count;
unsigned int QLedCount = (LEDnum & 0xFFFF)>>8; unsigned int HighCount = (LEDnum & 0xFFFF)>>8;
unsigned int PLedCount = LEDnum & 0xFF; unsigned int LowCount = LEDnum & 0xFF;
RGBData[zone_idx * 2 ] = QLedCount; RGBData[zone_idx * 2 ] = HighCount;
RGBData[zone_idx * 2 + 1] = PLedCount; RGBData[zone_idx * 2 + 1] = LowCount;
for(unsigned int i=0; i<LEDnum;i++) for(unsigned int i=0; i<LEDnum;i++)
{ {
unsigned int RGBcolors = zones[zone_idx].colors[i]; unsigned int RGBcolors = zones[zone_idx].colors[i];
@ -293,16 +298,18 @@ void RGBController_DRGB::DeviceUpdateLEDs()
break; break;
} }
} }
unsigned int col_packets = 1 ; unsigned int col_packets = 1 ;
if(led_index > 316) if(led_index > 316)
{ {
col_packets = ((led_index - 316) / 340) + (((led_index - 316) % 340) > 0); col_packets = ((led_index - 316) / 340) + (((led_index - 316) % 340) > 0);
} }
controller->SendPacket(&RGBData[0], col_packets,led_index); controller->SendPacket(&RGBData[0], col_packets,led_index);
break; break;
}
case 3: case 3:
unsigned int led_index = 0; {
unsigned int led_index = 0;
unsigned char RGBData[1801*3] = {0}; unsigned char RGBData[1801*3] = {0};
unsigned char ArrayData[64] = {0}; unsigned char ArrayData[64] = {0};
ArrayData[0] = 0x60; ArrayData[0] = 0x60;
@ -331,11 +338,12 @@ void RGBController_DRGB::DeviceUpdateLEDs()
controller->SendPacketFS(&ArrayData[0], 1,0); controller->SendPacketFS(&ArrayData[0], 1,0);
controller->SendPacketFS(&RGBData[0], col_packets,1); controller->SendPacketFS(&RGBData[0], col_packets,1);
break; break;
}
case 2: case 2:
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++) 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 ArrayData[64] = {0};
unsigned char LEDnum = zones[zone_idx].leds_count; unsigned char LEDnum = zones[zone_idx].leds_count;
for(unsigned int i=0; i<LEDnum;i++) for(unsigned int i=0; i<LEDnum;i++)
@ -345,7 +353,7 @@ void RGBController_DRGB::DeviceUpdateLEDs()
RGBData[i * 3 +1] = (RGBcolors >> 8) & 0xFF; RGBData[i * 3 +1] = (RGBcolors >> 8) & 0xFF;
RGBData[i * 3 +2] = (RGBcolors >> 16) & 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++) for (unsigned int CurrPacket = 1 ; CurrPacket <= NumPackets; CurrPacket++)
{ {
ArrayData[0] = CurrPacket; ArrayData[0] = CurrPacket;