egis_etu905: add test

This commit is contained in:
Jason Huang 2026-01-29 16:45:07 +08:00
parent 90b758603d
commit 30b7a596d1
5 changed files with 481 additions and 0 deletions

View file

@ -166,6 +166,7 @@ endian_independent_drivers = virtual_drivers + [
'aes4000',
'egis0570',
'egismoc',
'egis_etu905',
'elanmoc',
'etes603',
'focaltech_moc',

Binary file not shown.

109
tests/egis_etu905/custom.py Normal file
View file

@ -0,0 +1,109 @@
#!/usr/bin/python3
import traceback
import sys
import gi
gi.require_version('FPrint', '2.0')
from gi.repository import FPrint, GLib
# Exit with error on any exception, included those happening in async callbacks
sys.excepthook = lambda *args: (traceback.print_exception(*args), sys.exit(1))
ctx = GLib.main_context_default()
c = FPrint.Context()
c.enumerate()
devices = c.get_devices()
d = devices[0]
del devices
assert d.get_driver() == "egis_etu905"
assert not d.has_feature(FPrint.DeviceFeature.CAPTURE)
assert d.has_feature(FPrint.DeviceFeature.IDENTIFY)
assert d.has_feature(FPrint.DeviceFeature.VERIFY)
assert d.has_feature(FPrint.DeviceFeature.STORAGE)
assert d.has_feature(FPrint.DeviceFeature.STORAGE_LIST)
assert d.has_feature(FPrint.DeviceFeature.STORAGE_DELETE)
assert d.has_feature(FPrint.DeviceFeature.STORAGE_CLEAR)
d.open_sync()
def enroll_progress(*args):
assert d.get_finger_status() == FPrint.FingerStatusFlags.PRESENT
print("enroll progress stage: " + str(args[1]))
def identify_done(dev, res):
global identified
identified = True
identify_match, identify_print = dev.identify_finish(res)
print("MATCH FOUND!" if identify_match else "NO MATCH FOUND")
assert identify_match.equal(identify_print)
# List
print("--- LISTING ---")
stored = d.list_prints_sync()
prints1 = len(stored)
print(f"--- LIST DONE: Found {prints1} prints before enroll---")
# Enroll
print("--- ENROLLING ---")
template = FPrint.Print.new(d)
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
p = d.enroll_sync(template, None, enroll_progress, None)
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
print("--- ENROLL DONE ---")
del template
# List
print("--- LISTING ---")
stored = d.list_prints_sync()
prints2 = len(stored)
print(f"--- LIST DONE: Found {prints2} prints after enroll---")
assert (prints2 - prints1) == 1
# Verify
print("--- VERIFYING ---")
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
verify_res, verify_print = d.verify_sync(p)
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
print(f"--- VERIFY DONE: Result {verify_res} ---")
# Identify
print("--- ASYNC IDENTIFYING ---")
identified = False
deserialized_prints = []
for p in stored:
deserialized_prints.append(FPrint.Print.deserialize(p.serialize()))
assert deserialized_prints[-1].equal(p)
d.identify(deserialized_prints, callback=identify_done)
del deserialized_prints
while not identified:
ctx.iteration(True)
print("--- IDENTIFY DONE ---")
# Delete
print("--- DELETING ---")
p_to_delete = next((sp for sp in stored if sp.equal(p)), None)
if p_to_delete:
d.delete_print_sync(p_to_delete)
print("--- DELETE DONE ---")
del p_to_delete
del p
# List
print("--- LISTING ---")
stored = d.list_prints_sync()
prints3 = len(stored)
print(f"--- LIST DONE: Found {prints3} prints after deleting---")
assert (prints2 - prints3) == 1
del stored
d.close_sync()
del d
del c

370
tests/egis_etu905/device Normal file
View file

@ -0,0 +1,370 @@
P: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1
N: bus/usb/003/050=12010002FF0000407A1CAE0527990102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001
E: BUSNUM=003
E: CURRENT_TAGS=:snap_cups_ippeveprinter:snap_cups_cupsd:
E: DEVNAME=/dev/bus/usb/003/050
E: DEVNUM=050
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=ETU905Axx-E
E: ID_MODEL_ENC=ETU905Axx-E
E: ID_MODEL_ID=05ae
E: ID_PATH=pci-0000:00:14.0-usb-0:2.1
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1
E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:2.1
E: ID_REVISION=9927
E: ID_SERIAL=EGIS_ETU905Axx-E_0A2420PNA357
E: ID_SERIAL_SHORT=0A2420PNA357
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_MODEL=ETU905Axx-E
E: ID_USB_MODEL_ENC=ETU905Axx-E
E: ID_USB_MODEL_ID=05ae
E: ID_USB_REVISION=9927
E: ID_USB_SERIAL=EGIS_ETU905Axx-E_0A2420PNA357
E: ID_USB_SERIAL_SHORT=0A2420PNA357
E: ID_USB_VENDOR=EGIS
E: ID_USB_VENDOR_ENC=EGIS
E: ID_USB_VENDOR_ID=1c7a
E: ID_VENDOR=EGIS
E: ID_VENDOR_ENC=EGIS
E: ID_VENDOR_FROM_DATABASE=LighTuning Technology Inc.
E: ID_VENDOR_ID=1c7a
E: MAJOR=189
E: MINOR=305
E: PRODUCT=1c7a/5ae/9927
E: SUBSYSTEM=usb
E: TAGS=:snap_cups_ippeveprinter:snap_cups_cupsd:
E: TYPE=255/0/0
A: authorized=1\n
A: avoid_reset_quirk=0\n
A: bConfigurationValue=1\n
A: bDeviceClass=ff\n
A: bDeviceProtocol=00\n
A: bDeviceSubClass=00\n
A: bMaxPacketSize0=64\n
A: bMaxPower=100mA\n
A: bNumConfigurations=1\n
A: bNumInterfaces= 1\n
A: bcdDevice=9927\n
A: bmAttributes=a0\n
A: busnum=3\n
A: configuration=
H: descriptors=12010002FF0000407A1CAE0527990102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001
A: dev=189:305\n
A: devnum=50\n
A: devpath=2.1\n
L: driver=../../../../../../bus/usb/drivers/usb
A: idProduct=05ae\n
A: idVendor=1c7a\n
A: ltm_capable=no\n
A: manufacturer=EGIS\n
A: maxchild=0\n
L: port=../3-2:1.0/3-2-port1
A: power/active_duration=9509610\n
A: power/async=enabled\n
A: power/autosuspend=2\n
A: power/autosuspend_delay_ms=2000\n
A: power/connected_duration=9509610\n
A: power/control=on\n
A: power/level=on\n
A: power/persist=1\n
A: power/runtime_active_kids=0\n
A: power/runtime_active_time=9509451\n
A: power/runtime_enabled=forbidden\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=0\n
A: power/runtime_usage=1\n
A: power/wakeup=disabled\n
A: power/wakeup_abort_count=\n
A: power/wakeup_active=\n
A: power/wakeup_active_count=\n
A: power/wakeup_count=\n
A: power/wakeup_expire_count=\n
A: power/wakeup_last_time_ms=\n
A: power/wakeup_max_time_ms=\n
A: power/wakeup_total_time_ms=\n
A: product=ETU905Axx-E\n
A: quirks=0x0\n
A: removable=removable\n
A: rx_lanes=1\n
A: serial=0A2420PNA357\n
A: speed=12\n
A: tx_lanes=1\n
A: urbnum=4090\n
A: version= 2.00\n
P: /devices/pci0000:00/0000:00:14.0/usb3/3-2
N: bus/usb/003/042=1201100209000240DA0B115430610102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C
E: BUSNUM=003
E: CURRENT_TAGS=:seat:snap_cups_ippeveprinter:snap_cups_cupsd:
E: DEVNAME=/dev/bus/usb/003/042
E: DEVNUM=042
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_2
E: ID_MODEL=4-Port_USB_2.0_Hub
E: ID_MODEL_ENC=4-Port\x20USB\x202.0\x20Hub
E: ID_MODEL_FROM_DATABASE=RTS5411 Hub
E: ID_MODEL_ID=5411
E: ID_PATH=pci-0000:00:14.0-usb-0:2
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2
E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:2
E: ID_REVISION=6130
E: ID_SERIAL=Generic_4-Port_USB_2.0_Hub
E: ID_USB_INTERFACES=:090001:090002:
E: ID_USB_MODEL=4-Port_USB_2.0_Hub
E: ID_USB_MODEL_ENC=4-Port\x20USB\x202.0\x20Hub
E: ID_USB_MODEL_ID=5411
E: ID_USB_REVISION=6130
E: ID_USB_SERIAL=Generic_4-Port_USB_2.0_Hub
E: ID_USB_VENDOR=Generic
E: ID_USB_VENDOR_ENC=Generic
E: ID_USB_VENDOR_ID=0bda
E: ID_VENDOR=Generic
E: ID_VENDOR_ENC=Generic
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp.
E: ID_VENDOR_ID=0bda
E: MAJOR=189
E: MINOR=297
E: PRODUCT=bda/5411/6130
E: SUBSYSTEM=usb
E: TAGS=:snap_cups_ippeveprinter:seat:snap_cups_cupsd:
E: TYPE=9/0/2
A: authorized=1\n
A: avoid_reset_quirk=0\n
A: bConfigurationValue=1\n
A: bDeviceClass=09\n
A: bDeviceProtocol=02\n
A: bDeviceSubClass=00\n
A: bMaxPacketSize0=64\n
A: bMaxPower=0mA\n
A: bNumConfigurations=1\n
A: bNumInterfaces= 1\n
A: bcdDevice=6130\n
A: bmAttributes=e0\n
H: bos_descriptors=050F2A00030710021EF400000A1003000E00010AFF0314100400F1ADF5EC1150054091EC71CA7101B6A2
A: busnum=3\n
A: configuration=
H: descriptors=1201100209000240DA0B115430610102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C
A: dev=189:297\n
A: devnum=42\n
A: devpath=2\n
L: driver=../../../../../bus/usb/drivers/usb
L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11/device:12/device:14
A: idProduct=5411\n
A: idVendor=0bda\n
A: ltm_capable=no\n
A: manufacturer=Generic\n
A: maxchild=4\n
A: physical_location/dock=no\n
A: physical_location/horizontal_position=left\n
A: physical_location/lid=no\n
A: physical_location/panel=unknown\n
A: physical_location/vertical_position=center\n
L: port=../3-0:1.0/usb3-port2
A: power/active_duration=19225334\n
A: power/async=enabled\n
A: power/autosuspend=0\n
A: power/autosuspend_delay_ms=0\n
A: power/connected_duration=19337938\n
A: power/control=auto\n
A: power/level=auto\n
A: power/runtime_active_kids=1\n
A: power/runtime_active_time=19232222\n
A: power/runtime_enabled=enabled\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=105465\n
A: power/runtime_usage=0\n
A: power/wakeup=disabled\n
A: power/wakeup_abort_count=\n
A: power/wakeup_active=\n
A: power/wakeup_active_count=\n
A: power/wakeup_count=\n
A: power/wakeup_expire_count=\n
A: power/wakeup_last_time_ms=\n
A: power/wakeup_max_time_ms=\n
A: power/wakeup_total_time_ms=\n
A: product=4-Port USB 2.0 Hub\n
A: quirks=0x0\n
A: removable=removable\n
A: rx_lanes=1\n
A: speed=480\n
A: tx_lanes=1\n
A: urbnum=2268\n
A: version= 2.10\n
P: /devices/pci0000:00/0000:00:14.0/usb3
N: bus/usb/003/001=12010002090001406B1D020014060302010109021900010100E0000904000001090000000705810304000C
E: BUSNUM=003
E: CURRENT_TAGS=:seat:snap_cups_cupsd:snap_cups_ippeveprinter:
E: DEVNAME=/dev/bus/usb/003/001
E: DEVNUM=001
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_AUTOSUSPEND=1
E: ID_BUS=usb
E: ID_FOR_SEAT=usb-pci-0000_00_14_0
E: ID_MODEL=xHCI_Host_Controller
E: ID_MODEL_ENC=xHCI\x20Host\x20Controller
E: ID_MODEL_FROM_DATABASE=2.0 root hub
E: ID_MODEL_ID=0002
E: ID_PATH=pci-0000:00:14.0
E: ID_PATH_TAG=pci-0000_00_14_0
E: ID_REVISION=0614
E: ID_SERIAL=Linux_6.14.0-37-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
E: ID_SERIAL_SHORT=0000:00:14.0
E: ID_USB_INTERFACES=:090000:
E: ID_USB_MODEL=xHCI_Host_Controller
E: ID_USB_MODEL_ENC=xHCI\x20Host\x20Controller
E: ID_USB_MODEL_ID=0002
E: ID_USB_REVISION=0614
E: ID_USB_SERIAL=Linux_6.14.0-37-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
E: ID_USB_SERIAL_SHORT=0000:00:14.0
E: ID_USB_VENDOR=Linux_6.14.0-37-generic_xhci-hcd
E: ID_USB_VENDOR_ENC=Linux\x206.14.0-37-generic\x20xhci-hcd
E: ID_USB_VENDOR_ID=1d6b
E: ID_VENDOR=Linux_6.14.0-37-generic_xhci-hcd
E: ID_VENDOR_ENC=Linux\x206.14.0-37-generic\x20xhci-hcd
E: ID_VENDOR_FROM_DATABASE=Linux Foundation
E: ID_VENDOR_ID=1d6b
E: MAJOR=189
E: MINOR=256
E: PRODUCT=1d6b/2/614
E: SUBSYSTEM=usb
E: TAGS=:seat:snap_cups_cupsd:snap_cups_ippeveprinter:
E: TYPE=9/0/1
A: authorized=1\n
A: authorized_default=1\n
A: avoid_reset_quirk=0\n
A: bConfigurationValue=1\n
A: bDeviceClass=09\n
A: bDeviceProtocol=01\n
A: bDeviceSubClass=00\n
A: bMaxPacketSize0=64\n
A: bMaxPower=0mA\n
A: bNumConfigurations=1\n
A: bNumInterfaces= 1\n
A: bcdDevice=0614\n
A: bmAttributes=e0\n
A: busnum=3\n
A: configuration=
H: descriptors=12010002090001406B1D020014060302010109021900010100E0000904000001090000000705810304000C
A: dev=189:256\n
A: devnum=1\n
A: devpath=0\n
L: driver=../../../../bus/usb/drivers/usb
L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11/device:12
A: idProduct=0002\n
A: idVendor=1d6b\n
A: interface_authorized_default=1\n
A: ltm_capable=no\n
A: manufacturer=Linux 6.14.0-37-generic xhci-hcd\n
A: maxchild=12\n
A: power/active_duration=1686863185\n
A: power/async=enabled\n
A: power/autosuspend=0\n
A: power/autosuspend_delay_ms=0\n
A: power/connected_duration=1686928088\n
A: power/control=auto\n
A: power/level=auto\n
A: power/runtime_active_kids=5\n
A: power/runtime_active_time=1686894465\n
A: power/runtime_enabled=enabled\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=3910\n
A: power/runtime_usage=0\n
A: power/wakeup=disabled\n
A: power/wakeup_abort_count=\n
A: power/wakeup_active=\n
A: power/wakeup_active_count=\n
A: power/wakeup_count=\n
A: power/wakeup_expire_count=\n
A: power/wakeup_last_time_ms=\n
A: power/wakeup_max_time_ms=\n
A: power/wakeup_total_time_ms=\n
A: product=xHCI Host Controller\n
A: quirks=0x0\n
A: removable=unknown\n
A: rx_lanes=1\n
A: serial=0000:00:14.0\n
A: speed=480\n
A: tx_lanes=1\n
A: urbnum=897487\n
A: version= 2.00\n
P: /devices/pci0000:00/0000:00:14.0
E: DRIVER=xhci_hcd
E: ID_MODEL_FROM_DATABASE=Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller
E: ID_PATH=pci-0000:00:14.0
E: ID_PATH_TAG=pci-0000_00_14_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: MODALIAS=pci:v00008086d00007E7Dsv00001028sd00000CB2bc0Csc03i30
E: PCI_CLASS=C0330
E: PCI_ID=8086:7E7D
E: PCI_SLOT_NAME=0000:00:14.0
E: PCI_SUBSYS_ID=1028:0CB2
E: SUBSYSTEM=pci
A: ari_enabled=0\n
A: broken_parity_status=0\n
A: class=0x0c0330\n
H: config=86807D7E060490022030030C1000800004002A195000000000000000000000000000000000000000000000002810B20C000000007000000000000000FF010000FD0134C08FC2FF8300000000000000003F6DDE0F000000000000000000000000326000000000000000000000000000000180C3C10800000000000000000000000590B7001804E0FE000000000000000009B014F01000400100000000C10A080000080E00001800008F50020000030000090000018680C00009001014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F200012000000
A: consistent_dma_mask_bits=64\n
A: d3cold_allowed=1\n
A: dbc=disabled\n
A: dbc_bInterfaceProtocol=01\n
A: dbc_bcdDevice=0010\n
A: dbc_idProduct=0010\n
A: dbc_idVendor=1d6b\n
A: dbc_poll_interval_ms=64\n
A: device=0x7e7d\n
A: dma_mask_bits=64\n
L: driver=../../../bus/pci/drivers/xhci_hcd
A: driver_override=(null)\n
A: enable=1\n
L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11
L: iommu=../../virtual/iommu/dmar1
L: iommu_group=../../../kernel/iommu_groups/11
A: irq=133\n
A: local_cpulist=0-13\n
A: local_cpus=3fff\n
A: modalias=pci:v00008086d00007E7Dsv00001028sd00000CB2bc0Csc03i30\n
A: msi_bus=1\n
A: msi_irqs/133=msi\n
A: msi_irqs/134=msi\n
A: msi_irqs/135=msi\n
A: msi_irqs/136=msi\n
A: msi_irqs/137=msi\n
A: msi_irqs/138=msi\n
A: msi_irqs/139=msi\n
A: msi_irqs/140=msi\n
A: numa_node=-1\n
A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 22 23 2112 23\nxHCI ring segments 75 75 4096 75\nbuffer-2048 0 0 2048 0\nbuffer-512 3 8 512 1\nbuffer-128 18 32 128 1\nbuffer-32 0 0 32 0\n
A: power/async=enabled\n
A: power/control=auto\n
A: power/runtime_active_kids=2\n
A: power/runtime_active_time=1686895728\n
A: power/runtime_enabled=enabled\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=2967\n
A: power/runtime_usage=0\n
A: power/wakeup=enabled\n
A: power/wakeup_abort_count=0\n
A: power/wakeup_active=0\n
A: power/wakeup_active_count=0\n
A: power/wakeup_count=0\n
A: power/wakeup_expire_count=0\n
A: power/wakeup_last_time_ms=0\n
A: power/wakeup_max_time_ms=0\n
A: power/wakeup_total_time_ms=0\n
A: power_state=D0\n
A: resource=0x00000050192a0000 0x00000050192affff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n
A: revision=0x20\n
A: subsystem_device=0x0cb2\n
A: subsystem_vendor=0x1028\n
A: vendor=0x8086\n

View file

@ -52,6 +52,7 @@ drivers_tests = [
'nb1010',
'egis0570',
'egismoc',
'egis_etu905',
'egismoc-05a1',
'egismoc-0586',
'egismoc-0587',