LenovoLegionToolkit

Форк
0
32 строки · 1.2 Кб
1
using System;
2
using System.Threading.Tasks;
3
using LenovoLegionToolkit.Lib.Extensions;
4
using LenovoLegionToolkit.Lib.System;
5

6
namespace LenovoLegionToolkit.Lib.Features;
7

8
public class BatteryNightChargeFeature : AbstractDriverFeature<BatteryNightChargeState>
9
{
10
    public BatteryNightChargeFeature() : base(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_BATTERY_NIGHT_CHARGE) { }
11

12
    protected override uint GetInBufferValue() => 0x11;
13

14
    protected override Task<uint[]> ToInternalAsync(BatteryNightChargeState state)
15
    {
16
        var result = state switch
17
        {
18
            BatteryNightChargeState.On => new[] { 0x80000012u },
19
            BatteryNightChargeState.Off => new[] { 0x12u },
20
            _ => throw new InvalidOperationException("Invalid state.")
21
        };
22
        return Task.FromResult(result);
23
    }
24

25
    protected override Task<BatteryNightChargeState> FromInternalAsync(uint state)
26
    {
27
        if (state.GetNthBit(0))
28
            return Task.FromResult(state.GetNthBit(4) ? BatteryNightChargeState.On : BatteryNightChargeState.Off);
29

30
        throw new InvalidOperationException($"Unknown battery night charge state: {state} [bits={Convert.ToString(state, 2)}]");
31
    }
32
}
33

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.