diff --git a/Controllers/MSIGPUController/MSIGPUController.cpp b/Controllers/MSIGPUController/MSIGPUController.cpp index c3d78d3a..b09af1f0 100644 --- a/Controllers/MSIGPUController/MSIGPUController.cpp +++ b/Controllers/MSIGPUController/MSIGPUController.cpp @@ -53,7 +53,11 @@ void MSIGPUController::SetRGB3(unsigned char red, unsigned char green, unsigned void MSIGPUController::SetMode(unsigned char mode) { MSIGPURegisterWrite(MSI_GPU_REG_MODE, mode); - MSIGPURegisterWrite(MSI_GPU_REG_APPLY, 0x01); +} + +void MSIGPUController::Save() +{ + MSIGPURegisterWrite(MSI_GPU_REG_SAVE, 0x01); } unsigned char MSIGPUController::MSIGPURegisterRead(unsigned char reg) diff --git a/Controllers/MSIGPUController/MSIGPUController.h b/Controllers/MSIGPUController/MSIGPUController.h index 203deac2..247f4591 100644 --- a/Controllers/MSIGPUController/MSIGPUController.h +++ b/Controllers/MSIGPUController/MSIGPUController.h @@ -27,7 +27,7 @@ enum MSI_GPU_REG_G3 = 0x2b, /* MSI GPU G3 Register */ MSI_GPU_REG_B3 = 0x2c, /* MSI GPU B3 Register */ MSI_GPU_REG_MODE = 0x22, /* MSI GPU Mode Selection Register */ - MSI_GPU_REG_APPLY = 0x3f, /* MSI GPU Apply Changes Register */ + MSI_GPU_REG_SAVE = 0x3f, /* MSI GPU Save Changes Register */ }; enum @@ -67,6 +67,7 @@ public: void SetRGB3(unsigned char red, unsigned char green, unsigned char blue); void SetMode(unsigned char mode); + void Save(); unsigned char MSIGPURegisterRead(unsigned char reg); void MSIGPURegisterWrite(unsigned char reg, unsigned char val); diff --git a/Controllers/MSIGPUController/RGBController_MSIGPU.cpp b/Controllers/MSIGPUController/RGBController_MSIGPU.cpp index 5d9ef70f..97e0182a 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPU.cpp +++ b/Controllers/MSIGPUController/RGBController_MSIGPU.cpp @@ -39,30 +39,30 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Off; Off.name = "Off"; Off.value = MSI_GPU_MODE_OFF; - Off.flags = 0; + Off.flags = MODE_FLAG_MANUAL_SAVE; Off.color_mode = MODE_COLORS_NONE; modes.push_back(Off); mode Rainbow; Rainbow.name = "Rainbow"; Rainbow.value = MSI_GPU_MODE_RAINBOW; - Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; + Rainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; Rainbow.speed_min = 0; Rainbow.speed_max = 2; Rainbow.color_mode = MODE_COLORS_NONE; modes.push_back(Rainbow); - mode Static; - Static.name = "Static"; - Static.value = MSI_GPU_MODE_STATIC; - Static.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS; - Static.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Static); + mode Direct; + Direct.name = "Direct"; + Direct.value = MSI_GPU_MODE_STATIC; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; + Direct.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Direct); mode Raindrop; Raindrop.name = "Raindrop"; Raindrop.value = MSI_GPU_MODE_RAINDROP; - Raindrop.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Raindrop.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Raindrop.speed_min = 0; Raindrop.speed_max = 2; Raindrop.color_mode = MODE_COLORS_PER_LED; @@ -71,7 +71,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Magic; Magic.name = "Magic"; Magic.value = MSI_GPU_MODE_MAGIC; - Magic.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; + Magic.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; Magic.speed_min = 0; Magic.speed_max = 2; Magic.color_mode = MODE_COLORS_NONE; @@ -80,7 +80,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Patrolling; Patrolling.name = "Patrolling"; Patrolling.value = MSI_GPU_MODE_PATROLLING; - Patrolling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Patrolling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Patrolling.speed_min = 0; Patrolling.speed_max = 2; Patrolling.color_mode = MODE_COLORS_PER_LED; @@ -89,7 +89,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Streaming; Streaming.name = "Streaming"; Streaming.value = MSI_GPU_MODE_STREAMING; - Streaming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; + Streaming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; Streaming.speed_min = 0; Streaming.speed_max = 2; Streaming.color_mode = MODE_COLORS_NONE; @@ -98,7 +98,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Lightning; Lightning.name = "Lightning"; Lightning.value = MSI_GPU_MODE_LIGHTNING; - Lightning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS; + Lightning.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE; Lightning.speed_min = 0; Lightning.speed_max = 2; Lightning.color_mode = MODE_COLORS_NONE; @@ -107,7 +107,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Wave; Wave.name = "Wave"; Wave.value = MSI_GPU_MODE_WAVE; - Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Wave.speed_min = 0; Wave.speed_max = 2; Wave.color_mode = MODE_COLORS_PER_LED; @@ -116,7 +116,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Meteor; Meteor.name = "Meteor"; Meteor.value = MSI_GPU_MODE_METEOR; - Meteor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Meteor.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Meteor.speed_min = 0; Meteor.speed_max = 2; Meteor.color_mode = MODE_COLORS_PER_LED; @@ -125,7 +125,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Stack; Stack.name = "Stack"; Stack.value = MSI_GPU_MODE_STACK; - Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Stack.speed_min = 0; Stack.speed_max = 2; Stack.color_mode = MODE_COLORS_PER_LED; @@ -134,7 +134,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Rhythm; Rhythm.name = "Rhythm"; Rhythm.value = MSI_GPU_MODE_RHYTHM; - Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Rhythm.speed_min = 0; Rhythm.speed_max = 2; Rhythm.color_mode = MODE_COLORS_PER_LED; @@ -143,7 +143,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Flowing; Flowing.name = "Flowing"; Flowing.value = MSI_GPU_MODE_FLOWING; - Flowing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Flowing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Flowing.speed_min = 0; Flowing.speed_max = 2; Flowing.color_mode = MODE_COLORS_PER_LED; @@ -152,7 +152,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Whirling; Whirling.name = "Whirling"; Whirling.value = MSI_GPU_MODE_WHIRLING; - Whirling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Whirling.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Whirling.speed_min = 0; Whirling.speed_max = 2; Whirling.color_mode = MODE_COLORS_PER_LED; @@ -161,7 +161,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Twisting; Twisting.name = "Twisting"; Twisting.value = MSI_GPU_MODE_TWISTING; - Twisting.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Twisting.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Twisting.speed_min = 0; Twisting.speed_max = 2; Twisting.color_mode = MODE_COLORS_PER_LED; @@ -170,7 +170,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Laminating; Laminating.name = "Laminating"; Laminating.value = MSI_GPU_MODE_LAMINATING; - Laminating.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Laminating.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Laminating.speed_min = 0; Laminating.speed_max = 2; Laminating.color_mode = MODE_COLORS_PER_LED; @@ -179,7 +179,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Fadein; Fadein.name = "Fadein"; Fadein.value = MSI_GPU_MODE_FADEIN; - Fadein.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Fadein.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Fadein.speed_min = 0; Fadein.speed_max = 2; Fadein.color_mode = MODE_COLORS_PER_LED; @@ -188,7 +188,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode Breathing; Breathing.name = "Breathing"; Breathing.value = MSI_GPU_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; Breathing.speed_min = 0; Breathing.speed_max = 2; Breathing.color_mode = MODE_COLORS_PER_LED; @@ -197,7 +197,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode flashing; flashing.name = "Flashing"; flashing.value = MSI_GPU_MODE_FLASHING; - flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + flashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; flashing.speed_min = 0; flashing.speed_max = 2; flashing.color_mode = MODE_COLORS_PER_LED; @@ -206,7 +206,7 @@ RGBController_MSIGPU::RGBController_MSIGPU(MSIGPUController * msi_gpu_ptr) mode doubleflashing; doubleflashing.name = "Doubleflashing"; doubleflashing.value = MSI_GPU_MODE_DOUBLEFLASHING; - doubleflashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR; + doubleflashing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; doubleflashing.speed_min = 0; doubleflashing.speed_max = 2; doubleflashing.color_mode = MODE_COLORS_PER_LED; @@ -320,3 +320,8 @@ void RGBController_MSIGPU::DeviceUpdateMode() msi_gpu->SetMode(modes[active_mode].value); } + +void RGBController_MSIGPU::DeviceSaveMode() +{ + msi_gpu->Save(); +} diff --git a/Controllers/MSIGPUController/RGBController_MSIGPU.h b/Controllers/MSIGPUController/RGBController_MSIGPU.h index 36add91b..0bc700d8 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPU.h +++ b/Controllers/MSIGPUController/RGBController_MSIGPU.h @@ -26,6 +26,7 @@ public: void SetCustomMode(); void DeviceUpdateMode(); + void DeviceSaveMode(); private: MSIGPUController* msi_gpu;