diff --git a/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp b/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp index 966e8606..47587c65 100644 --- a/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp +++ b/Controllers/AsusAuraUSBController/AsusROGAllyController.cpp @@ -14,6 +14,8 @@ ROGAllyController::ROGAllyController(hid_device* dev_handle, const char* path) { dev = dev_handle; location = path; + + SendInitialization(); } ROGAllyController::~ROGAllyController() @@ -47,6 +49,56 @@ std::string ROGAllyController::GetVersion() return(""); } +void ROGAllyController::SendInitialization() +{ + unsigned char usb_buf[64]; + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x5D; + usb_buf[0x01] = 0xB9; + + hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x5D; + usb_buf[0x01] = 0x41; + usb_buf[0x02] = 0x53; + usb_buf[0x03] = 0x55; + usb_buf[0x04] = 0x53; + usb_buf[0x05] = 0x20; + usb_buf[0x06] = 0x54; + usb_buf[0x07] = 0x65; + usb_buf[0x08] = 0x63; + usb_buf[0x09] = 0x68; + usb_buf[0x0A] = 0x2E; + usb_buf[0x0B] = 0x49; + usb_buf[0x0C] = 0x6E; + usb_buf[0x0D] = 0x63; + usb_buf[0x0E] = 0x2E; + + hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); +} + +void ROGAllyController::UpdateBrightness + ( + unsigned char brightness + ) +{ + unsigned char usb_buf[64]; + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x5A; + usb_buf[0x01] = 0xBA; + usb_buf[0x02] = 0xC5; + usb_buf[0x03] = 0xC4; + usb_buf[0x04] = brightness; + + hid_send_feature_report(dev, usb_buf, sizeof(usb_buf)); +} + void ROGAllyController::UpdateLeds ( std::vector colors @@ -76,7 +128,6 @@ void ROGAllyController::UpdateDevice unsigned char mode, std::vector colors, unsigned char speed, - unsigned char /*brightness*/, unsigned char direction ) { diff --git a/Controllers/AsusAuraUSBController/AsusROGAllyController.h b/Controllers/AsusAuraUSBController/AsusROGAllyController.h index 903b0da3..5df337f5 100644 --- a/Controllers/AsusAuraUSBController/AsusROGAllyController.h +++ b/Controllers/AsusAuraUSBController/AsusROGAllyController.h @@ -45,6 +45,13 @@ public: std::string GetSerialString(); std::string GetVersion(); + void SendInitialization(); + + void UpdateBrightness + ( + unsigned char brightness + ); + void UpdateLeds ( std::vector colors @@ -55,7 +62,6 @@ public: unsigned char mode, std::vector colors, unsigned char speed, - unsigned char brightness, unsigned char direction ); diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp b/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp index e839f602..eb179854 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp +++ b/Controllers/AsusAuraUSBController/RGBController_AsusROGAlly.cpp @@ -35,24 +35,30 @@ RGBController_AsusROGAlly::RGBController_AsusROGAlly(ROGAllyController* controll mode Direct; Direct.name = "Direct"; Direct.value = ROG_ALLY_MODE_DIRECT; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; Direct.color_mode = MODE_COLORS_PER_LED; + Direct.brightness_min = 0; + Direct.brightness_max = 3; + Direct.brightness = 3; 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.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; Static.color_mode = MODE_COLORS_MODE_SPECIFIC; Static.colors_min = 1; Static.colors_max = 1; Static.colors.resize(1); + Static.brightness_min = 0; + Static.brightness_max = 3; + Static.brightness = 3; 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.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC; Breathing.speed_min = ROG_ALLY_SPEED_MIN; Breathing.speed_max = ROG_ALLY_SPEED_MAX; @@ -60,35 +66,47 @@ RGBController_AsusROGAlly::RGBController_AsusROGAlly(ROGAllyController* controll Breathing.colors_min = 2; Breathing.colors_max = 2; Breathing.colors.resize(2); + Breathing.brightness_min = 0; + Breathing.brightness_max = 3; + Breathing.brightness = 3; 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.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; 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; + ColorCycle.brightness_min = 0; + ColorCycle.brightness_max = 3; + ColorCycle.brightness = 3; 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.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_BRIGHTNESS; 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; + Rainbow.brightness_min = 0; + Rainbow.brightness_max = 3; + Rainbow.brightness = 3; 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.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; Strobing.color_mode = MODE_COLORS_MODE_SPECIFIC; Strobing.colors_min = 1; Strobing.colors_max = 1; + Strobing.brightness_min = 0; + Strobing.brightness_max = 3; + Strobing.brightness = 3; Strobing.colors.resize(1); modes.push_back(Strobing); @@ -172,6 +190,8 @@ void RGBController_AsusROGAlly::UpdateSingleLED(int /*led*/) void RGBController_AsusROGAlly::DeviceUpdateMode() { + controller->UpdateBrightness(modes[active_mode].brightness); + if(modes[active_mode].value == ROG_ALLY_MODE_DIRECT) { DeviceUpdateLEDs(); @@ -185,7 +205,7 @@ void RGBController_AsusROGAlly::DeviceUpdateMode() 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); + controller->UpdateDevice(modes[active_mode].value, modes[active_mode].colors, modes[active_mode].speed, rog_ally_direction); } }