LenovoLegionToolkit

Форк
0
32 строки · 978.0 Байт
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 FnLockFeature : AbstractDriverFeature<FnLockState>
9
{
10
    public FnLockFeature() : base(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_SETTINGS) { }
11

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

14
    protected override Task<uint[]> ToInternalAsync(FnLockState state)
15
    {
16
        var lockOn = state switch
17
        {
18
            FnLockState.On => true,
19
            FnLockState.Off => false,
20
            _ => throw new InvalidOperationException("Invalid state"),
21
        };
22

23
        var value = lockOn ? new uint[] { 0xE } : new uint[] { 0xF };
24
        return Task.FromResult(value);
25
    }
26

27
    protected override Task<FnLockState> FromInternalAsync(uint state)
28
    {
29
        var value = state.GetNthBit(10) ? FnLockState.On : FnLockState.Off;
30
        return Task.FromResult(value);
31
    }
32
}
33

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

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

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

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