Skip to content

Commit fbb7d16

Browse files
Chr1sNoCalcProgrammer1
authored andcommitted
Changed Gigabyte Fusion 2 controller
* Removed warnings * Refactored RGBFusion2USBController::SetLEDEffect() to improve readability * Tidied up Mode declarations * Other changes for style and formatting
1 parent ca84bad commit fbb7d16

8 files changed

Lines changed: 258 additions & 338 deletions

Controllers/GigabyteRGBFusion2USBController/GigabyteRGBFusion2USBController.cpp

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
\*---------------------------------------------------------*/
1212

1313
#include "GigabyteRGBFusion2USBController.h"
14-
#include "ResourceManager.h"
15-
#include "SettingsManager.h"
1614

1715
/*-------------------------------------------------------------------------*\
1816
| Low level RGB value conversion table |
@@ -85,7 +83,7 @@ RGBFusion2USBController::~RGBFusion2USBController()
8583
\*---------------------------------------------------------*/
8684
bool RGBFusion2USBController::RefreshHardwareInfo()
8785
{
88-
unsigned char buffer[64] = {0};
86+
unsigned char buffer[FUSION2_USB_BUFFER_SIZE] = {0};
8987

9088
SendPacket(0x60, 0x00);
9189
buffer[0] = report_id;
@@ -140,7 +138,7 @@ bool RGBFusion2USBController::RefreshHardwareInfo()
140138
cali_loaded = false;
141139
if(product_id == 0x5711)
142140
{
143-
unsigned char buffer2[64] = {0};
141+
unsigned char buffer2[FUSION2_USB_BUFFER_SIZE] = {0};
144142
SendPacket(0x61, 0x00);
145143
buffer2[0] = report_id;
146144
int res2 = hid_get_feature_report(dev, buffer2, sizeof(buffer2));
@@ -364,7 +362,7 @@ void RGBFusion2USBController::SetLedCount(unsigned int c0, unsigned int c1, unsi
364362
D_LED3_count = new_d3;
365363
D_LED4_count = new_d4;
366364

367-
unsigned char buffer[64] = { 0 };
365+
unsigned char buffer[FUSION2_USB_BUFFER_SIZE] = { 0 };
368366
buffer[0] = report_id;
369367
buffer[1] = 0x34;
370368
buffer[2] = (new_d2 << 4) | new_d1;
@@ -550,14 +548,12 @@ void RGBFusion2USBController::SetStripColors(unsigned int hdr, RGBColor* colors,
550548

551549
for(int i = 0; i < leds_in_pkt; i++)
552550
{
553-
RGBColor color = colors[k];
554-
unsigned char red = RGBGetRValue(color);
555-
unsigned char grn = RGBGetGValue(color);
556-
unsigned char blu = RGBGetBValue(color);
557-
558-
pkt.buffer[5 + i * 3 + bo_r] = red;
559-
pkt.buffer[5 + i * 3 + bo_g] = grn;
560-
pkt.buffer[5 + i * 3 + bo_b] = blu;
551+
RGBColor color = colors[k];
552+
uint8_t offset = (i * 3) + 5;
553+
554+
pkt.buffer[offset + bo_r] = RGBGetRValue(color);
555+
pkt.buffer[offset + bo_g] = RGBGetGValue(color);
556+
pkt.buffer[offset + bo_b] = RGBGetBValue(color);
561557
k++;
562558
}
563559

@@ -585,7 +581,7 @@ void RGBFusion2USBController::SetStripColors(unsigned int hdr, RGBColor* colors,
585581
| -(15)Gigabyte dflash ranges are 800-2600ms in 200ms steps |
586582
| -(3)(15)flash and dflash parameters were combined. |
587583
\*---------------------------------------------------------*/
588-
void RGBFusion2USBController::SetLEDEffect(int led, int mode, unsigned int speed, unsigned char brightness, bool random, unsigned char r, unsigned char g, unsigned char b)
584+
void RGBFusion2USBController::SetLEDEffect(int led, int mode, unsigned int speed, unsigned char brightness, bool random, uint32_t* color)
589585
{
590586
PktEffect pkt;
591587
pkt.Init(led, report_id, product_id);
@@ -599,66 +595,57 @@ void RGBFusion2USBController::SetLEDEffect(int led, int mode, unsigned int speed
599595
}
600596
pkt.e.max_brightness = brightness;
601597
pkt.e.effect_type = mode;
602-
pkt.e.color0 = r << 16 | g << 8 | b;
598+
pkt.e.effect_param0 = random ? 7 : 0;
599+
pkt.e.color0 = RGBToBGRColor(*color);
603600

604601
switch(mode)
605602
{
606-
case 2:
607-
pkt.e.period0 = pkt.e.period1 = (speed <= 6) ? (400 + speed * 100) : (1000 + (speed - 6) * 200);
603+
case EFFECT_PULSE:
604+
pkt.e.period0 = (speed <= 6) ? (400 + speed * 100) : (1000 + (speed - 6) * 200);
605+
pkt.e.period1 = pkt.e.period0;
608606
pkt.e.period2 = 200;
609-
if(random)
610-
{
611-
pkt.e.effect_param0 = 7;
612-
}
613607
break;
614-
case 15:
608+
case EFFECT_DFLASH:
615609
pkt.e.effect_type = 3;
616610
pkt.e.effect_param1 = 1;
617611
pkt.e.effect_param2 = 2;
618-
case 3:
612+
case EFFECT_BLINKING:
619613
pkt.e.period0 = 100;
620614
pkt.e.period1 = 100;
621615
pkt.e.period2 = (speed * 200) + 700;
622-
if(random)
623-
{
624-
pkt.e.effect_param0 = 7;
625-
}
626616
break;
627-
case 4:
617+
case EFFECT_COLORCYCLE:
628618
pkt.e.period0 = (speed * 100 + 300) + (speed > 8 ? 1300 * (speed - 8) : 0);
629619
pkt.e.period1 = pkt.e.period0 -200;
630620
pkt.e.effect_param0 = 7;
631621
break;
632-
case 6:
633-
pkt.e.period0 = ((speed + 1)^2 + (speed + 1) + 10) * 5 / 2;
622+
case EFFECT_WAVE:
623+
pkt.e.period0 = (((speed + 1)^2) + (speed + 1) + 10) * 5 / 2;
634624
pkt.e.effect_param0 = 7;
635625
pkt.e.effect_param1 = 1;
636626
break;
637-
case 8:
627+
case EFFECT_RANDOM:
638628
pkt.e.period0 = 100;
639629
pkt.e.effect_param0 = 1;
640630
pkt.e.effect_param1 = 5;
641631
break;
642-
case 9:
632+
case EFFECT_WAVE1:
643633
pkt.e.period0 = 1200;
644634
pkt.e.period1 = 100;
645635
pkt.e.period2 = 360;
646636
pkt.e.period3 = 1200;
647637
break;
648-
case 10:
638+
case EFFECT_WAVE2:
639+
case EFFECT_WAVE4:
649640
pkt.e.period0 = 200;
650641
pkt.e.effect_param0 = 7;
651642
break;
652-
case 11:
643+
case EFFECT_WAVE3:
653644
pkt.e.period0 = 840;
654645
pkt.e.period1 = 20;
655646
pkt.e.period2 = 200;
656647
pkt.e.period3 = 840;
657648
break;
658-
case 12:
659-
pkt.e.period0 = 200;
660-
pkt.e.effect_param0 = 7;
661-
break;
662649
}
663650
SendPacket(pkt.buffer);
664651
}
@@ -684,24 +671,24 @@ bool RGBFusion2USBController::ApplyEffect(bool fast_apply)
684671
pkt.a.zone_sel0 = effect_zone_mask;
685672

686673
effect_zone_mask = 0;
687-
return SendPacket(pkt.buffer());
674+
return SendPacket(pkt.buffer);
688675
}
689676

690677
bool RGBFusion2USBController::SendPacket(uint8_t a, uint8_t b, uint8_t c)
691678
{
692-
unsigned char buffer[64] {};
679+
unsigned char buffer[FUSION2_USB_BUFFER_SIZE] {};
693680

694681
buffer[0] = report_id;
695682
buffer[1] = a;
696683
buffer[2] = b;
697684
buffer[3] = c;
698685

699-
return(SendPacket(buffer) == 64);
686+
return(SendPacket(buffer) == FUSION2_USB_BUFFER_SIZE);
700687
}
701688

702689
int RGBFusion2USBController::SendPacket(unsigned char* packet)
703690
{
704-
return hid_send_feature_report(dev, packet, 64);
691+
return hid_send_feature_report(dev, packet, FUSION2_USB_BUFFER_SIZE);
705692
}
706693

707694
/*---------------------------------------------------------*\
@@ -722,4 +709,4 @@ void RGBFusion2USBController::ResetController()
722709
}
723710
}
724711
ApplyEffect(true);
725-
}
712+
}

0 commit comments

Comments
 (0)