parent
f54eeb7998
commit
5ca9c0a6ba
|
@ -22,6 +22,7 @@ import struct
|
|||
import threading
|
||||
|
||||
from enum import Flag
|
||||
from enum import IntEnum
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import Generator
|
||||
|
@ -671,20 +672,24 @@ SUB_PARAM = { # (byte count, minimum, maximum)
|
|||
ParamId.SCALE_FACTOR: (SubParam("scale", 2, 0x002E, 0x01FF, "Scale"),),
|
||||
}
|
||||
|
||||
# Spec Ids for feature GESTURE_2
|
||||
SPEC = common.NamedInts(
|
||||
DVI_field_width=1,
|
||||
field_widths=2,
|
||||
period_unit=3,
|
||||
resolution=4,
|
||||
multiplier=5,
|
||||
sensor_size=6,
|
||||
finger_width_and_height=7,
|
||||
finger_major_minor_axis=8,
|
||||
finger_force=9,
|
||||
zone=10,
|
||||
)
|
||||
SPEC._fallback = lambda x: f"unknown:{x:04X}"
|
||||
|
||||
class SpecGesture(IntEnum):
|
||||
"""Spec IDs for feature GESTURE_2."""
|
||||
|
||||
DVI_FIELD_WIDTH = 1
|
||||
FIELD_WIDTHS = 2
|
||||
PERIOD_UNIT = 3
|
||||
RESOLUTION = 4
|
||||
MULTIPLIER = 5
|
||||
SENSOR_SIZE = 6
|
||||
FINGER_WIDTH_AND_HEIGHT = 7
|
||||
FINGER_MAJOR_MINOR_AXIS = 8
|
||||
FINGER_FORCE = 9
|
||||
ZONE = 10
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name.replace('_', ' ').lower()}"
|
||||
|
||||
|
||||
# Action Ids for feature GESTURE_2
|
||||
ACTION_ID = common.NamedInts(
|
||||
|
@ -836,10 +841,13 @@ class Param:
|
|||
|
||||
|
||||
class Spec:
|
||||
def __init__(self, device, low, high):
|
||||
def __init__(self, device, low: int, high):
|
||||
self._device = device
|
||||
self.id = low
|
||||
self.spec = SPEC[low]
|
||||
try:
|
||||
self.spec = SpecGesture(low)
|
||||
except ValueError:
|
||||
self.spec = f"unknown:{low:04X}"
|
||||
self.byte_count = high & 0x0F
|
||||
self._value = None
|
||||
|
||||
|
|
|
@ -560,14 +560,14 @@ def test_param(responses, prm, id, index, size, value, default_value, write1, wr
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"responses, id, s, byte_count, value, string",
|
||||
"responses, id, s, byte_count, expected_value, expected_string",
|
||||
[
|
||||
(fake_hidpp.responses_gestures, 1, "DVI field width", 1, 8, "[DVI field width=8]"),
|
||||
(fake_hidpp.responses_gestures, 2, "field widths", 1, 8, "[field widths=8]"),
|
||||
(fake_hidpp.responses_gestures, 3, "period unit", 2, 2048, "[period unit=2048]"),
|
||||
(fake_hidpp.responses_gestures, 1, hidpp20.SpecGesture.DVI_FIELD_WIDTH, 1, 8, "[dvi field width=8]"),
|
||||
(fake_hidpp.responses_gestures, 2, hidpp20.SpecGesture.FIELD_WIDTHS, 1, 8, "[field widths=8]"),
|
||||
(fake_hidpp.responses_gestures, 3, hidpp20.SpecGesture.PERIOD_UNIT, 2, 2048, "[period unit=2048]"),
|
||||
],
|
||||
)
|
||||
def test_Spec(responses, id, s, byte_count, value, string):
|
||||
def test_spec(responses, id, s, byte_count, expected_value, expected_string):
|
||||
device = fake_hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.SupportedFeature.GESTURE_2)
|
||||
gestures = _hidpp20.get_gestures(device)
|
||||
|
||||
|
@ -576,8 +576,8 @@ def test_Spec(responses, id, s, byte_count, value, string):
|
|||
assert spec.id == id
|
||||
assert spec.spec == s
|
||||
assert spec.byte_count == byte_count
|
||||
assert spec.value == value
|
||||
assert repr(spec) == string
|
||||
assert spec.value == expected_value
|
||||
assert repr(spec) == expected_string
|
||||
|
||||
|
||||
def test_Gestures():
|
||||
|
|
Loading…
Reference in New Issue