LenovoLegionToolkit
40 строк · 1.4 Кб
1using System;
2using System.Threading.Tasks;
3using LenovoLegionToolkit.Lib.Controllers;
4
5namespace LenovoLegionToolkit.Lib.Automation.Steps;
6
7public class OverclockDiscreteGPUAutomationStep : IAutomationStep<OverclockDiscreteGPUAutomationStepState>
8{
9private readonly GPUOverclockController _controller = IoCContainer.Resolve<GPUOverclockController>();
10
11public OverclockDiscreteGPUAutomationStepState State { get; }
12
13public OverclockDiscreteGPUAutomationStep(OverclockDiscreteGPUAutomationStepState state) => State = state;
14
15public Task<OverclockDiscreteGPUAutomationStepState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<OverclockDiscreteGPUAutomationStepState>());
16
17public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();
18
19public async Task RunAsync(AutomationEnvironment _)
20{
21if (!await _controller.IsSupportedAsync().ConfigureAwait(false))
22return;
23
24var (_, info) = _controller.GetState();
25
26switch (State)
27{
28case OverclockDiscreteGPUAutomationStepState.On:
29_controller.SaveState(true, info);
30break;
31case OverclockDiscreteGPUAutomationStepState.Off:
32_controller.SaveState(false, info);
33break;
34}
35
36await _controller.ApplyStateAsync(true).ConfigureAwait(false);
37}
38
39IAutomationStep IAutomationStep.DeepCopy() => new OverclockDiscreteGPUAutomationStep(State);
40}
41