From 67dedaa2bec4e53e5e650954c46285c9fd50727a Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sun, 25 Jun 2023 23:15:11 -0500 Subject: [PATCH] Implement effect modes and clean up code --- .../AsusROGAllyController.cpp | 18 ++++- .../AsusROGAllyController.h | 17 ++++- .../RGBController_AsusROGAlly.cpp | 72 +++++++++++++++++-- OpenRGB.pro | 8 +-- 4 files changed, 104 insertions(+), 11 deletions(-) diff --git a/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp b/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp index 0e94e462..b09f7c8f 100644 --- a/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp +++ b/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp @@ -77,7 +77,7 @@ void ROGAllyController::UpdateDevice std::vector colors, unsigned char speed, unsigned char brightness, - unsigned char pattern + unsigned char direction ) { unsigned char usb_buf[64]; @@ -95,6 +95,7 @@ void ROGAllyController::UpdateDevice usb_buf[0x06] = RGBGetBValue(colors[0]); } usb_buf[0x07] = speed; + usb_buf[0x08] = direction; if(colors.size() > 1) { usb_buf[0x0A] = RGBGetRValue(colors[1]); @@ -103,9 +104,24 @@ void ROGAllyController::UpdateDevice } hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x5A; + usb_buf[0x01] = 0xB5; + + hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); } void ROGAllyController::SaveMode() { + unsigned char usb_buf[64]; + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x5A; + usb_buf[0x01] = 0xB4; + + hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); } diff --git a/Controllers/AsusAuraUSBController/AsusROGAllyController.h b/Controllers/AsusAuraUSBController/AsusROGAllyController.h index 0ef588cc..903b0da3 100644 --- a/Controllers/AsusAuraUSBController/AsusROGAllyController.h +++ b/Controllers/AsusAuraUSBController/AsusROGAllyController.h @@ -17,11 +17,24 @@ enum ROG_ALLY_MODE_STATIC = 0, ROG_ALLY_MODE_BREATHING = 1, ROG_ALLY_MODE_COLOR_CYCLE = 2, - ROG_ALLY_MODE_WAVE = 3, + ROG_ALLY_MODE_RAINBOW = 3, ROG_ALLY_MODE_STROBING = 10, ROG_ALLY_MODE_DIRECT = 0xFF, }; +enum +{ + ROG_ALLY_SPEED_MIN = 0xE1, + ROG_ALLY_SPEED_MED = 0xEB, + ROG_ALLY_SPEED_MAX = 0xF5 +}; + +enum +{ + ROG_ALLY_DIRECTION_RIGHT = 0x00, + ROG_ALLY_DIRECTION_LEFT = 0x01 +}; + class ROGAllyController { public: @@ -43,7 +56,7 @@ public: std::vector colors, unsigned char speed, unsigned char brightness, - unsigned char pattern + unsigned char direction ); void SaveMode(); diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp b/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp index 39c594f6..55561b17 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp +++ b/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp @@ -34,11 +34,64 @@ RGBController_AsusROGAlly::RGBController_AsusROGAlly(ROGAllyController* controll mode Direct; Direct.name = "Direct"; - Direct.value = 0xFF; + Direct.value = ROG_ALLY_MODE_DIRECT; Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; Direct.color_mode = MODE_COLORS_PER_LED; modes.push_back(Direct); + mode Static; + Static.name = "Static"; + Static.value = ROG_ALLY_MODE_STATIC; + Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE; + Static.color_mode = MODE_COLORS_MODE_SPECIFIC; + Static.colors_min = 1; + Static.colors_max = 1; + Static.colors.resize(1); + modes.push_back(Static); + + mode Breathing; + Breathing.name = "Breathing"; + Breathing.value = ROG_ALLY_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED; + Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC; + Breathing.speed_min = ROG_ALLY_SPEED_MIN; + Breathing.speed_max = ROG_ALLY_SPEED_MAX; + Breathing.speed = ROG_ALLY_SPEED_MED; + Breathing.colors_min = 2; + Breathing.colors_max = 2; + Breathing.colors.resize(2); + modes.push_back(Breathing); + + mode ColorCycle; + ColorCycle.name = "Spectrum Cycle"; + ColorCycle.value = ROG_ALLY_MODE_COLOR_CYCLE; + ColorCycle.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED; + ColorCycle.color_mode = MODE_COLORS_RANDOM; + ColorCycle.speed_min = ROG_ALLY_SPEED_MIN; + ColorCycle.speed_max = ROG_ALLY_SPEED_MAX; + ColorCycle.speed = ROG_ALLY_SPEED_MED; + modes.push_back(ColorCycle); + + mode Rainbow; + Rainbow.name = "Rainbow Wave"; + Rainbow.value = ROG_ALLY_MODE_RAINBOW; + Rainbow.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; + Rainbow.color_mode = MODE_COLORS_RANDOM; + Rainbow.speed_min = ROG_ALLY_SPEED_MIN; + Rainbow.speed_max = ROG_ALLY_SPEED_MAX; + Rainbow.speed = ROG_ALLY_SPEED_MED; + modes.push_back(Rainbow); + + mode Strobing; + Strobing.name = "Strobing"; + Strobing.value = ROG_ALLY_MODE_STROBING; + Strobing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE; + Strobing.color_mode = MODE_COLORS_MODE_SPECIFIC; + Strobing.colors_min = 1; + Strobing.colors_max = 1; + Strobing.colors.resize(1); + modes.push_back(Strobing); + SetupZones(); } @@ -71,7 +124,7 @@ void RGBController_AsusROGAlly::SetupZones() zone right_stick_zone; - right_stick_zone.name = "Left Stick"; + right_stick_zone.name = "Right Stick"; right_stick_zone.type = ZONE_TYPE_SINGLE; right_stick_zone.leds_min = 2; right_stick_zone.leds_max = 2; @@ -101,7 +154,7 @@ void RGBController_AsusROGAlly::ResizeZone(int /*zone*/, int /*new_size*/) void RGBController_AsusROGAlly::DeviceUpdateLEDs() { - if(modes[active_mode].value == 0xFF) + if(modes[active_mode].value == ROG_ALLY_MODE_DIRECT) { controller->UpdateLeds(std::vector(colors)); } @@ -119,10 +172,21 @@ void RGBController_AsusROGAlly::UpdateSingleLED(int /*led*/) void RGBController_AsusROGAlly::DeviceUpdateMode() { - if(modes[active_mode].value == 0xFF) + if(modes[active_mode].value == ROG_ALLY_MODE_DIRECT) { DeviceUpdateLEDs(); } + else + { + unsigned int rog_ally_direction = ROG_ALLY_DIRECTION_RIGHT; + + if((modes[active_mode].flags & MODE_FLAG_HAS_DIRECTION_LR) && (modes[active_mode].direction == MODE_DIRECTION_LEFT)) + { + rog_ally_direction = ROG_ALLY_DIRECTION_LEFT; + } + + controller->UpdateDevice(modes[active_mode].value, modes[active_mode].colors, modes[active_mode].speed, modes[active_mode].brightness, rog_ally_direction); + } } void RGBController_AsusROGAlly::DeviceSaveMode() diff --git a/OpenRGB.pro b/OpenRGB.pro index 99f1a03b..b291e2d6 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -199,8 +199,6 @@ contains(QMAKE_PLATFORM, freebsd) { HEADERS += \ Colors.h \ - Controllers/AsusAuraUSBController/AsusROGAllyController.h \ - Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.h \ dependencies/ColorWheel/ColorWheel.h \ dependencies/Swatches/swatches.h \ dependencies/json/json.hpp \ @@ -313,6 +311,7 @@ HEADERS += Controllers/AsusAuraUSBController/AsusAuraMouseController.h \ Controllers/AsusAuraUSBController/AsusAuraMousematController.h \ Controllers/AsusAuraUSBController/AsusAuraMouseDevices.h \ + Controllers/AsusAuraUSBController/AsusROGAllyController.h \ Controllers/AsusAuraUSBController/AsusAuraRyuoAIOController.h \ Controllers/AsusAuraUSBController/AsusAuraStrixEvolveController.h \ Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h \ @@ -322,6 +321,7 @@ HEADERS += Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraMousemat.h \ + Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraRyuoAIO.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraStrixEvolve.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.h \ @@ -744,8 +744,6 @@ contains(QMAKE_PLATFORM, freebsd) { } SOURCES += \ - Controllers/AsusAuraUSBController/AsusROGAllyController.cpp \ - Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp \ dependencies/Swatches/swatches.cpp \ dependencies/dmiinfo.cpp \ dependencies/ColorWheel/ColorWheel.cpp \ @@ -894,6 +892,7 @@ SOURCES += Controllers/AsusAuraUSBController/AsusAuraMonitorController.cpp \ Controllers/AsusAuraUSBController/AsusAuraMouseController.cpp \ Controllers/AsusAuraUSBController/AsusAuraMousematController.cpp \ + Controllers/AsusAuraUSBController/AsusROGAllyController.cpp \ Controllers/AsusAuraUSBController/AsusAuraRyuoAIOController.cpp \ Controllers/AsusAuraUSBController/AsusAuraStrixEvolveController.cpp \ Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.cpp \ @@ -903,6 +902,7 @@ SOURCES += Controllers/AsusAuraUSBController/RGBController_AsusAuraMonitor.cpp \ Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp \ Controllers/AsusAuraUSBController/RGBController_AsusAuraMousemat.cpp \ + Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp \ Controllers/AsusAuraUSBController/RGBController_AsusAuraRyuoAIO.cpp \ Controllers/AsusAuraUSBController/RGBController_AsusAuraStrixEvolve.cpp \ Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.cpp \