-
-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathHidValueSetState.cs
35 lines (26 loc) · 1.08 KB
/
HidValueSetState.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace Linearstar.Windows.RawInput;
public class HidValueSetState : IEnumerable<HidValueState>
{
readonly byte[] report;
readonly int reportLength;
public HidValueSet ValueSet { get; }
public int[] CurrentValues => this.Select(x => x.CurrentValue).ToArray();
public int?[] ScaledValues => this.Select(x => x.ScaledValue).ToArray();
internal HidValueSetState(HidValueSet valueSet, byte[] report, int reportLength)
{
ValueSet = valueSet;
this.report = report;
this.reportLength = reportLength;
}
public override string ToString() =>
$"ValueSet: {{{ValueSet}}}, CurrentValues: [{string.Join(", ", CurrentValues)}]";
public IEnumerator<HidValueState> GetEnumerator()
{
for (var usage = ValueSet.UsageMin; usage <= ValueSet.UsageMax; usage++)
yield return new HidValueState(new HidValue(ValueSet.reader, ValueSet.valueCaps, usage), report, reportLength);
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}