mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-06-10 18:24:19 +00:00
Merge tag 'debian/1%1.90.7-3' into ubuntu
libfprint Debian release 1:1.90.7-3
This commit is contained in:
@@ -1,6 +1,16 @@
|
||||
This file lists notable changes in each release. For the full history of all
|
||||
changes, see ChangeLog.
|
||||
|
||||
2020-12-01: v1.90.7 release
|
||||
|
||||
Highlights:
|
||||
* vfs5011: Fix possible use-after-free
|
||||
* goodixmoc: Add two new PIDs (0x63AC, 0x639C)
|
||||
* goodixmoc: Support finger status API
|
||||
* synaptics: Only identify within provided prints
|
||||
* synaptics: Reject devices with old firmware during probe (#239)
|
||||
|
||||
|
||||
2020-12-01: v1.90.6 release
|
||||
|
||||
This release is primarily a bugfix release for some older issues.
|
||||
|
||||
Vendored
+7
-16
@@ -1,19 +1,10 @@
|
||||
The libfprint0 postinst script calls udevadmin trigger for all the supported
|
||||
USB readers. The list of readers used in that file is generated by calling the
|
||||
following awk script:
|
||||
The libfprint-2-2 postinst script calls udevadmin trigger for all the supported
|
||||
USB readers. The list of readers used in that file is generated using the gbp
|
||||
import hook when `gbp import-orig` (via --uscan or with a tarball) is used.
|
||||
|
||||
/plugdev/ {
|
||||
printf ("\tudevadm trigger --action=add " )
|
||||
for (i=1;i<=NF; i++){
|
||||
if (match($i,/idVendor/)>0) {
|
||||
match($i, /"[^"]*"/); printf ("--attr-match=idVendor=%s ",substr($i,RSTART+1,RLENGTH-2))
|
||||
}
|
||||
if (match($i,/idProduct/)>0) {
|
||||
match($i, /"[^"]*"/); printf ("--attr-match=idProduct=%s",substr($i,RSTART+1,RLENGTH-2))
|
||||
}
|
||||
};
|
||||
printf("\n")
|
||||
}
|
||||
Alternatively it can be called manually by using:
|
||||
|
||||
GBP_SOURCES_DIR=. debian/update-udev-triggers.sh
|
||||
|
||||
When preparing a new upstream release, this script should be called against the
|
||||
udev .rules file generated during the build of the package
|
||||
upstream provided .hwdb file.
|
||||
|
||||
Vendored
+157
@@ -1,3 +1,55 @@
|
||||
libfprint (1:1.90.7-3) experimental; urgency=medium
|
||||
|
||||
* gbp.conf: Prepare for experimental branching
|
||||
* debian/patches:
|
||||
- Use hwdb to store device autosuspend rules and drop debian specifics.
|
||||
Upstream will use an hwdb to store the device autosuspend (that will be
|
||||
included in systemd also, so libfprint packagin may stop shipping it at
|
||||
later point), so use it earlier.
|
||||
Drop the debian specific rules to set the devices part of the `plugdev`
|
||||
group as such devices should not be ever readable by an user, but the
|
||||
access should be managed through a libfprint-based service (frpintd at
|
||||
the date).
|
||||
- Explicitly mark libfprint as a shared library
|
||||
* libfprint-2-2.install: Install hwdb file
|
||||
* debian/rules:
|
||||
- Do not autorename upstream rules file anymore.
|
||||
It's not there, while there's no point to rename the hwdb one.
|
||||
- Manually set udev hwdb directory (was rules dir before)
|
||||
- Don't remove the meson generated private values from pc file.
|
||||
This is now generated correctly by upstream, so no need to drop anything
|
||||
from it.
|
||||
* debian: Generate postinst devices list automatically at gbp import phase.
|
||||
Alternatively provide a script to keep the post-inst script updated
|
||||
* debian/libfprint-2-2.postinst: Upgrade as per upstream hwdb.
|
||||
Blacklisted devices can be now removed from the trigger list as we don't
|
||||
add them to plugdev anymore.
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 21 Jan 2021 19:53:12 +0100
|
||||
|
||||
libfprint (1:1.90.7-2) unstable; urgency=medium
|
||||
|
||||
* debian/patches: Skip udev rules tests when not all drivers are compiled
|
||||
* debian/libfprint-2-2.postinst: Regenerate the udev list based on new IDs
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 21 Jan 2021 17:10:57 +0100
|
||||
|
||||
libfprint (1:1.90.7-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release:
|
||||
- vfs5011: Fix possible use-after-free
|
||||
- goodixmoc: Add two new PIDs (0x63AC, 0x639C)
|
||||
- goodixmoc: Support finger status API
|
||||
- synaptics: Only identify within provided prints
|
||||
- synaptics: Reject devices with old firmware during probe (#239)
|
||||
* debian/patches:
|
||||
- Refresh, dropping merged
|
||||
- Include upstream udev fixes and use hardcoded rules
|
||||
- Ensure that umockdev tests will pass with libusb 1.0.24
|
||||
(Closes: #977848, #978256)
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 21 Jan 2021 13:38:59 +0100
|
||||
|
||||
libfprint (1:1.90.6+tod1-0ubuntu2) hirsute; urgency=medium
|
||||
|
||||
* d/p/meson-Do-not-support-drivers-known-to-fail-in-Big-Endian-.patch:
|
||||
@@ -22,6 +74,43 @@ libfprint (1:1.90.6+tod1-0ubuntu1) hirsute; urgency=medium
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 10 Dec 2020 17:26:27 +0100
|
||||
|
||||
libfprint (1:1.90.6-2) unstable; urgency=medium
|
||||
|
||||
* d/p/meson-Do-not-support-drivers-known-to-fail-in-Big-Endian-.patch:
|
||||
- Do not enable drivers that are not supported by big endian archs
|
||||
Upstream patch to only build drivers everywhere but not include them
|
||||
in the supported list or test them
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 10 Dec 2020 21:32:49 +0100
|
||||
|
||||
libfprint (1:1.90.6-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release:
|
||||
- fp_print_deserialize will now correctly return a sunken reference
|
||||
- Object reference management fixes for FpPrint and identify
|
||||
- Fixed issues that caused problem on non-x86 machines (#236)
|
||||
- Fix building with older GLib versions
|
||||
- synaptics: Support PID 00e7
|
||||
- goodix: Fix issue with long USB packages
|
||||
* debian/control:
|
||||
- Remove Didier Raboud from uploaders (as he requested via bigon).
|
||||
- Mark libfprint-2-doc as Multi-Arch: foreign
|
||||
* debian/rules:
|
||||
- Ignore tests failures in s390x as it now builds and tests correctly
|
||||
- Increase testing timeout.
|
||||
* debian/{control,rules,*.install}:
|
||||
- Switch to debhelper 13 and use its features.
|
||||
As per this restrict more the .install files wilcards
|
||||
* debian/gbp.conf: Include suggested settings by GNOME team.
|
||||
- Even if libfprint is not part of GNOME I think these settings are good
|
||||
practice anyways.
|
||||
* debian/patches:
|
||||
- Refresh
|
||||
- Add upstream patch to avoid nbis library warnings.
|
||||
These have been checked to be harmless upstream
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 10 Dec 2020 15:58:37 +0100
|
||||
|
||||
libfprint (1:1.90.5+tod1-0ubuntu1) hirsute; urgency=medium
|
||||
|
||||
* New upstream release:
|
||||
@@ -56,6 +145,54 @@ libfprint (1:1.90.5+tod1-0ubuntu1) hirsute; urgency=medium
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Fri, 04 Dec 2020 03:57:04 +0100
|
||||
|
||||
libfprint (1:1.90.5-2) unstable; urgency=medium
|
||||
|
||||
* d/p/fpi-device-Return-proper-type-on-identification-success.patch,
|
||||
d/p/test-fpi-device-Always-check-the-return-values-for-the-AP.patch:
|
||||
- Properly handle identify return value and add tests.
|
||||
This fixes fprintd test failures in s390x
|
||||
* d/p/fp-print-Don-t-byte-swap-two-times-the-NBIS-array-content.patch:
|
||||
- Fixes virtual-image test in libfprint for s390x
|
||||
* debian/control: Add myself to Uploaders
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 02 Dec 2020 17:53:32 +0100
|
||||
|
||||
libfprint (1:1.90.5-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release:
|
||||
- Remove USB hub from udev autosupend rules
|
||||
- synaptics: Add PID 0x00c9 which is used in some HP laptops
|
||||
* debian/patches: Use gbp pq topics for debian-specific patches
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Wed, 02 Dec 2020 05:11:33 +0100
|
||||
|
||||
libfprint (1:1.90.4-1) unstable; urgency=medium
|
||||
|
||||
* Team upload.
|
||||
[ Marco Trevisan (Treviño) ]
|
||||
* New upstream release:
|
||||
- Work around GUsb cancellation issue
|
||||
- Redefine internal image device state machine for more robustness
|
||||
- Add public finger-status reporting to FpDevice
|
||||
- Rework device removal API to be convenient
|
||||
- Enable powersave for unsupported USB devices (LP: #1905603)
|
||||
- Improvements to examples
|
||||
- synaptics: Support identify operation (LP: #1905600)
|
||||
- synaptics: Fix possible crash when the interrupt transfer is resubmitted
|
||||
- synaptics: Add support for PIDs 0x00f9, 0x00fc and 0x00c2
|
||||
- elan: Add PID 0x0c4d to supported device list
|
||||
- aes3k: Fix driver and add CI test (LP: #1897613)
|
||||
- uru4000: Fix reference counting of image transfer
|
||||
- vfs301: Fix driver and add CI test (LP: #1905597, Closes: #951648)
|
||||
* debian/libfprint-2-2.symbols: Add new symbols
|
||||
* debian/rules: Also build the virtual drivers, as they're useful for
|
||||
testing libfprint and fprintd
|
||||
|
||||
[ Laurent Bigonville ]
|
||||
* debian/control: Bump Standards-Version to 4.5.1 (no further changes)
|
||||
|
||||
-- Laurent Bigonville <bigon@debian.org> Tue, 01 Dec 2020 11:36:08 +0100
|
||||
|
||||
libfprint (1:1.90.3+tod1-0ubuntu3) hirsute; urgency=medium
|
||||
|
||||
* debian/patches:
|
||||
@@ -92,6 +229,25 @@ libfprint (1:1.90.3+tod1-0ubuntu1) groovy; urgency=medium
|
||||
|
||||
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Thu, 24 Sep 2020 06:14:30 +0200
|
||||
|
||||
libfprint (1:1.90.3-1) unstable; urgency=medium
|
||||
|
||||
* Team upload.
|
||||
[ Marco Trevisan (Treviño) ]
|
||||
* New upstream release
|
||||
- Fixed crash in VFS0050 (LP: #1876502)
|
||||
- Enrollment fails with UPEK reader (LP: #1881380)
|
||||
- Lots of various drivers fixes
|
||||
- As per a patch for nbis required for some sensors that was accidentally
|
||||
dropped in an earlier release. Users of sensors/drivers aes1610, aes2501,
|
||||
aes2550, aes1660, aes2660, elan, upektc_img) need to re-enroll
|
||||
* d/p/git_reading_pointer.patch:
|
||||
- Dopped (applied upstream)
|
||||
|
||||
[ Laurent Bigonville ]
|
||||
* New upstream release
|
||||
|
||||
-- Laurent Bigonville <bigon@debian.org> Sun, 15 Nov 2020 16:05:30 +0100
|
||||
|
||||
libfprint (1:1.90.2+tod1-0ubuntu1) groovy; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
@@ -149,6 +305,7 @@ libfprint (1:1.90.1+tod1-0ubuntu1) focal; urgency=medium
|
||||
|
||||
libfprint (1:1.90.1-2) experimental; urgency=medium
|
||||
|
||||
* Team upload.
|
||||
[ Laurent Bigonville ]
|
||||
* debian/control: Add libcairo-dev and python3 to build-dependencies as they
|
||||
are explicitly required for some tests
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
dch -v"$GBP_DEBIAN_VERSION" "New upstream release"
|
||||
git add debian/changelog
|
||||
debcommit
|
||||
|
||||
debian/update-udev-triggers.sh
|
||||
Vendored
+2
-1
@@ -12,7 +12,8 @@ sign-tags = True
|
||||
multimaint-merge = True
|
||||
|
||||
[import-orig]
|
||||
postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit
|
||||
postimport = debian/gbp-post-import-hook.sh
|
||||
|
||||
[pq]
|
||||
patch-numbers = False
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
||||
lib/udev/rules.d/
|
||||
lib/udev/hwdb.d/
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/libfprint-[0-9].so.*
|
||||
|
||||
Vendored
+78
-3
@@ -5,10 +5,12 @@ set -e
|
||||
#DEBHELPER#
|
||||
|
||||
if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then
|
||||
# apply udev rules at package installation, see
|
||||
# apply hwdb rules at package installation, see
|
||||
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27>
|
||||
# NOTA BENE: after the DEBHELPER section since dh_installudev
|
||||
# adds stuff there
|
||||
# The devices ID list is auto-generated using the gbp postimport hook
|
||||
# see debian/README.sources for more details.
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2016
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2020
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0010
|
||||
@@ -65,6 +67,13 @@ if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2
|
||||
udevadm trigger --action=add --attr-match=idVendor=1c7a --attr-match=idProduct=0603
|
||||
udevadm trigger --action=add --attr-match=idVendor=061a --attr-match=idProduct=0110
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00bd
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00e9
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00df
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00f9
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00fc
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00c2
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00c9
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00e7
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0903
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0907
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c01
|
||||
@@ -119,7 +128,7 @@ if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c32
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c33
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c42
|
||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00bb
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c4d
|
||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00bc
|
||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00bd
|
||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00ca
|
||||
@@ -130,11 +139,77 @@ if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=3001
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=1000
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=1001
|
||||
udevadm trigger --action=add --attr-match=idVendor=0483 --attr-match=idProduct=2016
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5840
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=6496
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=60a2
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=63ac
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=639c
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=036b
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c00
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c4b
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c4c
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c4f
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c57
|
||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=2706
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=0081
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=0088
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=008a
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=009a
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=009b
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00a2
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00b7
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00bb
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00be
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00cb
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00d8
|
||||
udevadm trigger --action=add --attr-match=idVendor=06cb --attr-match=idProduct=00da
|
||||
udevadm trigger --action=add --attr-match=idVendor=0a5c --attr-match=idProduct=5801
|
||||
udevadm trigger --action=add --attr-match=idVendor=0a5c --attr-match=idProduct=5805
|
||||
udevadm trigger --action=add --attr-match=idVendor=0a5c --attr-match=idProduct=5834
|
||||
udevadm trigger --action=add --attr-match=idVendor=0a5c --attr-match=idProduct=5843
|
||||
udevadm trigger --action=add --attr-match=idVendor=10a5 --attr-match=idProduct=0007
|
||||
udevadm trigger --action=add --attr-match=idVendor=1188 --attr-match=idProduct=9545
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0007
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=003a
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=003c
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=003d
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=003f
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0090
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0091
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0092
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0094
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0097
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=009d
|
||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=00ab
|
||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=1002
|
||||
udevadm trigger --action=add --attr-match=idVendor=1491 --attr-match=idProduct=0088
|
||||
udevadm trigger --action=add --attr-match=idVendor=16d1 --attr-match=idProduct=1027
|
||||
udevadm trigger --action=add --attr-match=idVendor=1c7a --attr-match=idProduct=0300
|
||||
udevadm trigger --action=add --attr-match=idVendor=1c7a --attr-match=idProduct=0570
|
||||
udevadm trigger --action=add --attr-match=idVendor=1c7a --attr-match=idProduct=0575
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5042
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5110
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5117
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5201
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=521d
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5301
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=530c
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=532d
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=533c
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5381
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5385
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=538c
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=538d
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5395
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5584
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=55a2
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=55a4
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=55b4
|
||||
udevadm trigger --action=add --attr-match=idVendor=27c6 --attr-match=idProduct=5740
|
||||
udevadm trigger --action=add --attr-match=idVendor=2808 --attr-match=idProduct=9338
|
||||
udevadm trigger --action=add --attr-match=idVendor=298d --attr-match=idProduct=2033
|
||||
udevadm trigger --action=add --attr-match=idVendor=3538 --attr-match=idProduct=0930
|
||||
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then
|
||||
# apply hwdb rules at package installation, see
|
||||
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27>
|
||||
# NOTA BENE: after the DEBHELPER section since dh_installudev
|
||||
# adds stuff there
|
||||
# The devices ID list is auto-generated using the gbp postimport hook
|
||||
# see debian/README.sources for more details.
|
||||
@UDEVADM_TRIGGERS@
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,178 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 14:42:35 +0100
|
||||
Subject: Drop version from libfprint hwdb
|
||||
|
||||
As we are shipping a hwdb file now, we cannot have a collision with the
|
||||
old libfprint version. Also, we are going to pull these rules into
|
||||
systemd and they will not be installed via libfprint in the future. As
|
||||
such, collisions will not happen again and it makes more sense like this
|
||||
for systemd.
|
||||
---
|
||||
.gitlab-ci.yml | 144 --------------------------------------------------
|
||||
libfprint/meson.build | 2 +-
|
||||
2 files changed, 1 insertion(+), 145 deletions(-)
|
||||
delete mode 100644 .gitlab-ci.yml
|
||||
|
||||
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
|
||||
deleted file mode 100644
|
||||
index 3f0925b..0000000
|
||||
--- a/.gitlab-ci.yml
|
||||
+++ /dev/null
|
||||
@@ -1,144 +0,0 @@
|
||||
-include:
|
||||
- - local: '.gitlab-ci/libfprint-templates.yaml'
|
||||
- - project: 'wayland/ci-templates'
|
||||
- ref: master
|
||||
- file: '/templates/fedora.yml'
|
||||
- - remote: 'https://gitlab.gnome.org/GNOME/citemplates/-/raw/master/flatpak/flatpak_ci_initiative.yml'
|
||||
-
|
||||
-variables:
|
||||
- extends: .libfprint_common_variables
|
||||
- FDO_DISTRIBUTION_TAG: latest
|
||||
- FDO_DISTRIBUTION_VERSION: rawhide
|
||||
- FEDORA_IMAGE: "$CI_REGISTRY/libfprint/$CI_PROJECT_NAME/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
|
||||
- BUNDLE: "org.freedesktop.libfprint.Demo.flatpak"
|
||||
- LAST_ABI_BREAK: "056ea541ddc97f5806cffbd99a12dc87e4da3546"
|
||||
-
|
||||
-stages:
|
||||
- - check-source
|
||||
- - build
|
||||
- - test
|
||||
- - flatpak
|
||||
-
|
||||
-image: "$FEDORA_IMAGE"
|
||||
-
|
||||
-.build_one_driver_template: &build_one_driver
|
||||
- script:
|
||||
- # Build with a driver that doesn't need imaging, or nss
|
||||
- - meson --werror -Ddrivers=$driver . _build
|
||||
- - ninja -C _build
|
||||
- - rm -rf _build/
|
||||
-
|
||||
-.build_template: &build
|
||||
- script:
|
||||
- # And build with everything
|
||||
- - meson --werror -Ddrivers=all . _build
|
||||
- - ninja -C _build
|
||||
- - ninja -C _build install
|
||||
-
|
||||
-.build_template: &check_abi
|
||||
- script:
|
||||
- - ./.ci/check-abi ${LAST_ABI_BREAK} $(git rev-parse HEAD)
|
||||
-
|
||||
-build:
|
||||
- stage: build
|
||||
- except:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule"
|
||||
- variables:
|
||||
- driver: virtual_image
|
||||
- <<: *build_one_driver
|
||||
- <<: *build
|
||||
-# <<: *check_abi
|
||||
- artifacts:
|
||||
- expose_as: "HTML Documentation"
|
||||
- paths:
|
||||
- - _build/doc/html/
|
||||
- expire_in: 1 week
|
||||
-
|
||||
-test:
|
||||
- stage: test
|
||||
- except:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule"
|
||||
- script:
|
||||
- - meson --werror -Ddrivers=all -Db_coverage=true . _build
|
||||
- - ninja -C _build
|
||||
- - meson test -C _build --verbose --no-stdsplit --timeout-multiplier 3
|
||||
- - ninja -C _build coverage
|
||||
- - cat _build/meson-logs/coverage.txt
|
||||
- artifacts:
|
||||
- paths:
|
||||
- - _build/meson-logs
|
||||
- expire_in: 1 week
|
||||
- coverage: '/^TOTAL.*\s+(\d+\%)$/'
|
||||
-
|
||||
-test_valgrind:
|
||||
- stage: test
|
||||
- except:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule"
|
||||
- script:
|
||||
- - meson -Ddrivers=all . _build
|
||||
- - ninja -C _build
|
||||
- - meson test -C _build --verbose --no-stdsplit --setup=valgrind
|
||||
-
|
||||
-test_scan_build:
|
||||
- stage: test
|
||||
- except:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule"
|
||||
- allow_failure: true
|
||||
- script:
|
||||
- - meson -Ddrivers=all . _build
|
||||
- # This is ugly, the wrapper disables the malloc checker
|
||||
- - SCANBUILD=$CI_PROJECT_DIR/.gitlab-ci/scan-build ninja -C _build scan-build
|
||||
- # Check that the directory is empty
|
||||
- - "! ls -A _build/meson-logs/scanbuild | grep -q ."
|
||||
- artifacts:
|
||||
- paths:
|
||||
- - _build/meson-logs
|
||||
- expire_in: 1 week
|
||||
-
|
||||
-test_indent:
|
||||
- stage: check-source
|
||||
- except:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule"
|
||||
- script:
|
||||
- - scripts/uncrustify.sh
|
||||
- - git diff
|
||||
- - "! git status -s | grep -q ."
|
||||
-
|
||||
-flatpak:
|
||||
- stage: flatpak
|
||||
- extends: .flatpak
|
||||
- image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.36
|
||||
- variables:
|
||||
- MANIFEST_PATH: "demo/org.freedesktop.libfprint.Demo.json"
|
||||
- FLATPAK_MODULE: "libfprint"
|
||||
- APP_ID: "org.freedesktop.libfprint.Demo"
|
||||
- rules:
|
||||
- - if: '$CI_PROJECT_PATH != "libfprint/libfprint"'
|
||||
- when: never
|
||||
- - if: '$CI_PIPELINE_SOURCE == "schedule"'
|
||||
- when: never
|
||||
- - if: '$CI_COMMIT_BRANCH == "master"'
|
||||
- when: always
|
||||
- - if: '$CI_COMMIT_TAG'
|
||||
- when: always
|
||||
- # For any other (commit), allow manual run.
|
||||
- # This excludes MRs which would create a duplicate pipeline
|
||||
- - if: '$CI_COMMIT_BRANCH'
|
||||
- when: manual
|
||||
- allow_failure: true
|
||||
-
|
||||
-# CONTAINERS creation stage
|
||||
-container_fedora_build:
|
||||
- extends: .fdo.container-build@fedora
|
||||
- only:
|
||||
- variables:
|
||||
- - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES"
|
||||
- variables:
|
||||
- GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
||||
- # a list of packages to install
|
||||
- FDO_DISTRIBUTION_PACKAGES: $LIBFPRINT_DEPENDENCIES
|
||||
diff --git a/libfprint/meson.build b/libfprint/meson.build
|
||||
index 3464bf3..abf2fb9 100644
|
||||
--- a/libfprint/meson.build
|
||||
+++ b/libfprint/meson.build
|
||||
@@ -304,7 +304,7 @@ udev_hwdb = executable('fprint-list-udev-hwdb',
|
||||
# We always build this file; primarily so that systemd can pull it
|
||||
# from the artefacts!
|
||||
custom_target('udev-rules',
|
||||
- output: '60-autosuspend-@0@.hwdb'.format(versioned_libname),
|
||||
+ output: '60-autosuspend-@0@.hwdb'.format(meson.project_name()),
|
||||
capture: true,
|
||||
command: [ udev_hwdb ],
|
||||
install: get_option('udev_rules'),
|
||||
@@ -0,0 +1,491 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 14:13:03 +0100
|
||||
Subject: Generate a hwdb instead of udev rules
|
||||
|
||||
We only use the rules/hwdb to enable auto-suspend. So, instead of
|
||||
shipping our own rules, we can just use the existing autosuspend rules
|
||||
and ship a hwdb that sets the appropriate flag.
|
||||
|
||||
Closes: #336
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/55a2bb55
|
||||
---
|
||||
libfprint/fprint-list-udev-hwdb.c | 191 +++++++++++++++++++++++++++++++++++++
|
||||
libfprint/fprint-list-udev-rules.c | 188 ------------------------------------
|
||||
libfprint/meson.build | 10 +-
|
||||
meson.build | 6 +-
|
||||
meson_options.txt | 4 +-
|
||||
tests/meson.build | 4 +-
|
||||
6 files changed, 203 insertions(+), 200 deletions(-)
|
||||
create mode 100644 libfprint/fprint-list-udev-hwdb.c
|
||||
delete mode 100644 libfprint/fprint-list-udev-rules.c
|
||||
|
||||
diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c
|
||||
new file mode 100644
|
||||
index 0000000..b687085
|
||||
--- /dev/null
|
||||
+++ b/libfprint/fprint-list-udev-hwdb.c
|
||||
@@ -0,0 +1,191 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2009 Red Hat <mjg@redhat.com>
|
||||
+ * Copyright (C) 2008 Bastien Nocera <hadess@hadess.net>
|
||||
+ * Copyright (C) 2008 Timo Hoenig <thoenig@suse.de>, <thoenig@nouse.net>
|
||||
+ * Copyright (C) 2019 Benjamin Berg <bberg@redhat.com>
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+ */
|
||||
+
|
||||
+#include <config.h>
|
||||
+
|
||||
+#include "fpi-context.h"
|
||||
+#include "fpi-device.h"
|
||||
+
|
||||
+static const FpIdEntry whitelist_id_table[] = {
|
||||
+ /* Currently known and unsupported devices.
|
||||
+ * You can generate this list from the wiki page using e.g.:
|
||||
+ * gio cat https://gitlab.freedesktop.org/libfprint/wiki/-/wikis/Unsupported-Devices.md | sed -n 's!|.*\([0-9a-fA-F]\{4\}\):\([0-9a-fA-F]\{4\}\).*|.*! { .vid = 0x\1, .pid = 0x\2 },!p'
|
||||
+ */
|
||||
+ { .vid = 0x04f3, .pid = 0x036b },
|
||||
+ { .vid = 0x04f3, .pid = 0x0c00 },
|
||||
+ { .vid = 0x04f3, .pid = 0x0c4b },
|
||||
+ { .vid = 0x04f3, .pid = 0x0c4c },
|
||||
+ { .vid = 0x04f3, .pid = 0x0c4f },
|
||||
+ { .vid = 0x04f3, .pid = 0x0c57 },
|
||||
+ { .vid = 0x04f3, .pid = 0x2706 },
|
||||
+ { .vid = 0x06cb, .pid = 0x0081 },
|
||||
+ { .vid = 0x06cb, .pid = 0x0088 },
|
||||
+ { .vid = 0x06cb, .pid = 0x008a },
|
||||
+ { .vid = 0x06cb, .pid = 0x009a },
|
||||
+ { .vid = 0x06cb, .pid = 0x009b },
|
||||
+ { .vid = 0x06cb, .pid = 0x00a2 },
|
||||
+ { .vid = 0x06cb, .pid = 0x00b7 },
|
||||
+ { .vid = 0x06cb, .pid = 0x00bb },
|
||||
+ { .vid = 0x06cb, .pid = 0x00be },
|
||||
+ { .vid = 0x06cb, .pid = 0x00cb },
|
||||
+ { .vid = 0x06cb, .pid = 0x00d8 },
|
||||
+ { .vid = 0x06cb, .pid = 0x00da },
|
||||
+ { .vid = 0x0a5c, .pid = 0x5801 },
|
||||
+ { .vid = 0x0a5c, .pid = 0x5805 },
|
||||
+ { .vid = 0x0a5c, .pid = 0x5834 },
|
||||
+ { .vid = 0x0a5c, .pid = 0x5843 },
|
||||
+ { .vid = 0x10a5, .pid = 0x0007 },
|
||||
+ { .vid = 0x1188, .pid = 0x9545 },
|
||||
+ { .vid = 0x138a, .pid = 0x0007 },
|
||||
+ { .vid = 0x138a, .pid = 0x003a },
|
||||
+ { .vid = 0x138a, .pid = 0x003c },
|
||||
+ { .vid = 0x138a, .pid = 0x003d },
|
||||
+ { .vid = 0x138a, .pid = 0x003f },
|
||||
+ { .vid = 0x138a, .pid = 0x0090 },
|
||||
+ { .vid = 0x138a, .pid = 0x0091 },
|
||||
+ { .vid = 0x138a, .pid = 0x0092 },
|
||||
+ { .vid = 0x138a, .pid = 0x0094 },
|
||||
+ { .vid = 0x138a, .pid = 0x0097 },
|
||||
+ { .vid = 0x138a, .pid = 0x009d },
|
||||
+ { .vid = 0x138a, .pid = 0x00ab },
|
||||
+ { .vid = 0x147e, .pid = 0x1002 },
|
||||
+ { .vid = 0x1491, .pid = 0x0088 },
|
||||
+ { .vid = 0x16d1, .pid = 0x1027 },
|
||||
+ { .vid = 0x1c7a, .pid = 0x0300 },
|
||||
+ { .vid = 0x1c7a, .pid = 0x0570 },
|
||||
+ { .vid = 0x1c7a, .pid = 0x0575 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5042 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5110 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5117 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5201 },
|
||||
+ { .vid = 0x27c6, .pid = 0x521d },
|
||||
+ { .vid = 0x27c6, .pid = 0x5301 },
|
||||
+ { .vid = 0x27c6, .pid = 0x530c },
|
||||
+ { .vid = 0x27c6, .pid = 0x532d },
|
||||
+ { .vid = 0x27c6, .pid = 0x533c },
|
||||
+ { .vid = 0x27c6, .pid = 0x5381 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5385 },
|
||||
+ { .vid = 0x27c6, .pid = 0x538c },
|
||||
+ { .vid = 0x27c6, .pid = 0x538d },
|
||||
+ { .vid = 0x27c6, .pid = 0x5395 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5584 },
|
||||
+ { .vid = 0x27c6, .pid = 0x55a2 },
|
||||
+ { .vid = 0x27c6, .pid = 0x55a4 },
|
||||
+ { .vid = 0x27c6, .pid = 0x55b4 },
|
||||
+ { .vid = 0x27c6, .pid = 0x5740 },
|
||||
+ { .vid = 0x2808, .pid = 0x9338 },
|
||||
+ { .vid = 0x298d, .pid = 0x2033 },
|
||||
+ { .vid = 0x3538, .pid = 0x0930 },
|
||||
+ { .vid = 0 },
|
||||
+};
|
||||
+
|
||||
+static const FpIdEntry blacklist_id_table[] = {
|
||||
+ { .vid = 0x0483, .pid = 0x2016 },
|
||||
+ /* https://bugs.freedesktop.org/show_bug.cgi?id=66659 */
|
||||
+ { .vid = 0x045e, .pid = 0x00bb },
|
||||
+ { .vid = 0 },
|
||||
+};
|
||||
+
|
||||
+static const FpDeviceClass whitelist = {
|
||||
+ .type = FP_DEVICE_TYPE_USB,
|
||||
+ .id_table = whitelist_id_table,
|
||||
+ .id = "whitelist",
|
||||
+ .full_name = "Hardcoded whitelist"
|
||||
+};
|
||||
+
|
||||
+GHashTable *printed = NULL;
|
||||
+
|
||||
+static void
|
||||
+print_driver (const FpDeviceClass *cls)
|
||||
+{
|
||||
+ const FpIdEntry *entry;
|
||||
+ gint num_printed = 0;
|
||||
+
|
||||
+ if (cls->type != FP_DEVICE_TYPE_USB)
|
||||
+ return;
|
||||
+
|
||||
+ for (entry = cls->id_table; entry->vid != 0; entry++)
|
||||
+ {
|
||||
+ const FpIdEntry *bl_entry;
|
||||
+ char *key;
|
||||
+
|
||||
+ for (bl_entry = blacklist_id_table; bl_entry->vid != 0; bl_entry++)
|
||||
+ if (entry->vid == bl_entry->vid && entry->pid == bl_entry->pid)
|
||||
+ break;
|
||||
+
|
||||
+ if (bl_entry->vid != 0)
|
||||
+ continue;
|
||||
+
|
||||
+ key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
+
|
||||
+ if (g_hash_table_lookup (printed, key) != NULL)
|
||||
+ {
|
||||
+ if (cls == &whitelist)
|
||||
+ g_warning ("%s implemented by driver %s",
|
||||
+ key, (const char *) g_hash_table_lookup (printed, key));
|
||||
+ g_free (key);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ g_hash_table_insert (printed, key, (void *) cls->id);
|
||||
+
|
||||
+ if (num_printed == 0)
|
||||
+ {
|
||||
+ if (cls != &whitelist)
|
||||
+ g_print ("\n# Supported by libfprint driver %s\n", cls->id);
|
||||
+ else
|
||||
+ g_print ("\n# Known unsupported devices\n");
|
||||
+ }
|
||||
+
|
||||
+ g_print ("usb:v%04Xp%04X*\n",
|
||||
+ entry->vid, entry->pid);
|
||||
+ num_printed++;
|
||||
+ }
|
||||
+
|
||||
+ if (num_printed > 0)
|
||||
+ g_print (" ID_AUTOSUSPEND=1\n");
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ g_autoptr(GArray) drivers = fpi_get_driver_types ();
|
||||
+ guint i;
|
||||
+
|
||||
+ printed = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
+
|
||||
+ for (i = 0; i < drivers->len; i++)
|
||||
+ {
|
||||
+ GType driver = g_array_index (drivers, GType, i);
|
||||
+ g_autoptr(FpDeviceClass) cls = g_type_class_ref (driver);
|
||||
+
|
||||
+ if (cls->type != FP_DEVICE_TYPE_USB)
|
||||
+ continue;
|
||||
+
|
||||
+ print_driver (cls);
|
||||
+ }
|
||||
+
|
||||
+ print_driver (&whitelist);
|
||||
+
|
||||
+ g_hash_table_destroy (printed);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c
|
||||
deleted file mode 100644
|
||||
index 050a450..0000000
|
||||
--- a/libfprint/fprint-list-udev-rules.c
|
||||
+++ /dev/null
|
||||
@@ -1,188 +0,0 @@
|
||||
-/*
|
||||
- * Copyright (C) 2009 Red Hat <mjg@redhat.com>
|
||||
- * Copyright (C) 2008 Bastien Nocera <hadess@hadess.net>
|
||||
- * Copyright (C) 2008 Timo Hoenig <thoenig@suse.de>, <thoenig@nouse.net>
|
||||
- * Copyright (C) 2019 Benjamin Berg <bberg@redhat.com>
|
||||
- *
|
||||
- * This library is free software; you can redistribute it and/or
|
||||
- * modify it under the terms of the GNU Lesser General Public
|
||||
- * License as published by the Free Software Foundation; either
|
||||
- * version 2.1 of the License, or (at your option) any later version.
|
||||
- *
|
||||
- * This library is distributed in the hope that it will be useful,
|
||||
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
- * Lesser General Public License for more details.
|
||||
- *
|
||||
- * You should have received a copy of the GNU Lesser General Public
|
||||
- * License along with this library; if not, write to the Free Software
|
||||
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
- */
|
||||
-
|
||||
-#include <config.h>
|
||||
-
|
||||
-#include "fpi-context.h"
|
||||
-#include "fpi-device.h"
|
||||
-
|
||||
-static const FpIdEntry whitelist_id_table[] = {
|
||||
- /* Currently known and unsupported devices.
|
||||
- * You can generate this list from the wiki page using e.g.:
|
||||
- * gio cat https://gitlab.freedesktop.org/libfprint/wiki/-/wikis/Unsupported-Devices.md | sed -n 's!|.*\([0-9a-fA-F]\{4\}\):\([0-9a-fA-F]\{4\}\).*|.*! { .vid = 0x\1, .pid = 0x\2 },!p'
|
||||
- */
|
||||
- { .vid = 0x04f3, .pid = 0x036b },
|
||||
- { .vid = 0x04f3, .pid = 0x0c00 },
|
||||
- { .vid = 0x04f3, .pid = 0x0c4b },
|
||||
- { .vid = 0x04f3, .pid = 0x0c4c },
|
||||
- { .vid = 0x04f3, .pid = 0x0c4f },
|
||||
- { .vid = 0x04f3, .pid = 0x0c57 },
|
||||
- { .vid = 0x04f3, .pid = 0x2706 },
|
||||
- { .vid = 0x06cb, .pid = 0x0081 },
|
||||
- { .vid = 0x06cb, .pid = 0x0088 },
|
||||
- { .vid = 0x06cb, .pid = 0x008a },
|
||||
- { .vid = 0x06cb, .pid = 0x009a },
|
||||
- { .vid = 0x06cb, .pid = 0x009b },
|
||||
- { .vid = 0x06cb, .pid = 0x00a2 },
|
||||
- { .vid = 0x06cb, .pid = 0x00b7 },
|
||||
- { .vid = 0x06cb, .pid = 0x00bb },
|
||||
- { .vid = 0x06cb, .pid = 0x00be },
|
||||
- { .vid = 0x06cb, .pid = 0x00cb },
|
||||
- { .vid = 0x06cb, .pid = 0x00d8 },
|
||||
- { .vid = 0x06cb, .pid = 0x00da },
|
||||
- { .vid = 0x0a5c, .pid = 0x5801 },
|
||||
- { .vid = 0x0a5c, .pid = 0x5805 },
|
||||
- { .vid = 0x0a5c, .pid = 0x5834 },
|
||||
- { .vid = 0x0a5c, .pid = 0x5843 },
|
||||
- { .vid = 0x10a5, .pid = 0x0007 },
|
||||
- { .vid = 0x1188, .pid = 0x9545 },
|
||||
- { .vid = 0x138a, .pid = 0x0007 },
|
||||
- { .vid = 0x138a, .pid = 0x003a },
|
||||
- { .vid = 0x138a, .pid = 0x003c },
|
||||
- { .vid = 0x138a, .pid = 0x003d },
|
||||
- { .vid = 0x138a, .pid = 0x003f },
|
||||
- { .vid = 0x138a, .pid = 0x0090 },
|
||||
- { .vid = 0x138a, .pid = 0x0091 },
|
||||
- { .vid = 0x138a, .pid = 0x0092 },
|
||||
- { .vid = 0x138a, .pid = 0x0094 },
|
||||
- { .vid = 0x138a, .pid = 0x0097 },
|
||||
- { .vid = 0x138a, .pid = 0x009d },
|
||||
- { .vid = 0x138a, .pid = 0x00ab },
|
||||
- { .vid = 0x147e, .pid = 0x1002 },
|
||||
- { .vid = 0x1491, .pid = 0x0088 },
|
||||
- { .vid = 0x16d1, .pid = 0x1027 },
|
||||
- { .vid = 0x1c7a, .pid = 0x0300 },
|
||||
- { .vid = 0x1c7a, .pid = 0x0570 },
|
||||
- { .vid = 0x1c7a, .pid = 0x0575 },
|
||||
- { .vid = 0x27c6, .pid = 0x5042 },
|
||||
- { .vid = 0x27c6, .pid = 0x5110 },
|
||||
- { .vid = 0x27c6, .pid = 0x5117 },
|
||||
- { .vid = 0x27c6, .pid = 0x5201 },
|
||||
- { .vid = 0x27c6, .pid = 0x521d },
|
||||
- { .vid = 0x27c6, .pid = 0x5301 },
|
||||
- { .vid = 0x27c6, .pid = 0x530c },
|
||||
- { .vid = 0x27c6, .pid = 0x532d },
|
||||
- { .vid = 0x27c6, .pid = 0x533c },
|
||||
- { .vid = 0x27c6, .pid = 0x5381 },
|
||||
- { .vid = 0x27c6, .pid = 0x5385 },
|
||||
- { .vid = 0x27c6, .pid = 0x538c },
|
||||
- { .vid = 0x27c6, .pid = 0x538d },
|
||||
- { .vid = 0x27c6, .pid = 0x5395 },
|
||||
- { .vid = 0x27c6, .pid = 0x5584 },
|
||||
- { .vid = 0x27c6, .pid = 0x55a2 },
|
||||
- { .vid = 0x27c6, .pid = 0x55a4 },
|
||||
- { .vid = 0x27c6, .pid = 0x55b4 },
|
||||
- { .vid = 0x27c6, .pid = 0x5740 },
|
||||
- { .vid = 0x2808, .pid = 0x9338 },
|
||||
- { .vid = 0x298d, .pid = 0x2033 },
|
||||
- { .vid = 0x3538, .pid = 0x0930 },
|
||||
- { .vid = 0 },
|
||||
-};
|
||||
-
|
||||
-static const FpIdEntry blacklist_id_table[] = {
|
||||
- { .vid = 0x0483, .pid = 0x2016 },
|
||||
- /* https://bugs.freedesktop.org/show_bug.cgi?id=66659 */
|
||||
- { .vid = 0x045e, .pid = 0x00bb },
|
||||
- { .vid = 0 },
|
||||
-};
|
||||
-
|
||||
-static const FpDeviceClass whitelist = {
|
||||
- .type = FP_DEVICE_TYPE_USB,
|
||||
- .id_table = whitelist_id_table,
|
||||
- .id = "whitelist",
|
||||
- .full_name = "Hardcoded whitelist"
|
||||
-};
|
||||
-
|
||||
-GHashTable *printed = NULL;
|
||||
-
|
||||
-static void
|
||||
-print_driver (const FpDeviceClass *cls)
|
||||
-{
|
||||
- const FpIdEntry *entry;
|
||||
- gint num_printed = 0;
|
||||
-
|
||||
- if (cls->type != FP_DEVICE_TYPE_USB)
|
||||
- return;
|
||||
-
|
||||
- for (entry = cls->id_table; entry->vid != 0; entry++)
|
||||
- {
|
||||
- const FpIdEntry *bl_entry;
|
||||
- char *key;
|
||||
-
|
||||
- for (bl_entry = blacklist_id_table; bl_entry->vid != 0; bl_entry++)
|
||||
- if (entry->vid == bl_entry->vid && entry->pid == bl_entry->pid)
|
||||
- break;
|
||||
-
|
||||
- if (bl_entry->vid != 0)
|
||||
- continue;
|
||||
-
|
||||
- key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
-
|
||||
- if (g_hash_table_lookup (printed, key) != NULL)
|
||||
- {
|
||||
- if (cls == &whitelist)
|
||||
- g_warning ("%s implemented by driver %s",
|
||||
- key, (const char *) g_hash_table_lookup (printed, key));
|
||||
- g_free (key);
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- g_hash_table_insert (printed, key, (void *) cls->id);
|
||||
-
|
||||
- if (num_printed == 0)
|
||||
- g_print ("# %s\n", cls->full_name);
|
||||
-
|
||||
- g_print ("SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ATTRS{dev}==\"*\", TEST==\"power/control\", ATTR{power/control}=\"auto\"\n",
|
||||
- entry->vid, entry->pid);
|
||||
- g_print ("SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{LIBFPRINT_DRIVER}=\"%s\"\n",
|
||||
- entry->vid, entry->pid, cls->full_name);
|
||||
- num_printed++;
|
||||
- }
|
||||
-
|
||||
- if (num_printed > 0)
|
||||
- g_print ("\n");
|
||||
-}
|
||||
-
|
||||
-int
|
||||
-main (int argc, char **argv)
|
||||
-{
|
||||
- g_autoptr(GArray) drivers = fpi_get_driver_types ();
|
||||
- guint i;
|
||||
-
|
||||
- printed = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
-
|
||||
- for (i = 0; i < drivers->len; i++)
|
||||
- {
|
||||
- GType driver = g_array_index (drivers, GType, i);
|
||||
- g_autoptr(FpDeviceClass) cls = g_type_class_ref (driver);
|
||||
-
|
||||
- if (cls->type != FP_DEVICE_TYPE_USB)
|
||||
- continue;
|
||||
-
|
||||
- print_driver (cls);
|
||||
- }
|
||||
-
|
||||
- print_driver (&whitelist);
|
||||
-
|
||||
- g_hash_table_destroy (printed);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
diff --git a/libfprint/meson.build b/libfprint/meson.build
|
||||
index 4d1d30c..e385ce8 100644
|
||||
--- a/libfprint/meson.build
|
||||
+++ b/libfprint/meson.build
|
||||
@@ -295,19 +295,19 @@ libfprint_private_dep = declare_dependency(
|
||||
]
|
||||
)
|
||||
|
||||
-udev_rules = executable('fprint-list-udev-rules',
|
||||
- 'fprint-list-udev-rules.c',
|
||||
+udev_hwdb = executable('fprint-list-udev-hwdb',
|
||||
+ 'fprint-list-udev-hwdb.c',
|
||||
dependencies: libfprint_private_dep,
|
||||
link_with: libfprint_drivers,
|
||||
install: false)
|
||||
|
||||
if get_option('udev_rules')
|
||||
custom_target('udev-rules',
|
||||
- output: '60-@0@-autosuspend.rules'.format(versioned_libname),
|
||||
+ output: '60-autosuspend-@0@.hwdb'.format(versioned_libname),
|
||||
capture: true,
|
||||
- command: [ udev_rules ],
|
||||
+ command: [ udev_hwdb ],
|
||||
install: true,
|
||||
- install_dir: udev_rules_dir)
|
||||
+ install_dir: udev_hwdb_dir)
|
||||
endif
|
||||
|
||||
supported_devices = executable('fprint-list-supported-devices',
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 483f1ec..ab4ac72 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -194,11 +194,11 @@ drivers_type_func += '}'
|
||||
root_inc = include_directories('.')
|
||||
|
||||
if get_option('udev_rules')
|
||||
- udev_rules_dir = get_option('udev_rules_dir')
|
||||
+ udev_hwdb_dir = get_option('udev_hwdb_dir')
|
||||
|
||||
- if udev_rules_dir == 'auto'
|
||||
+ if udev_hwdb_dir == 'auto'
|
||||
udev_dep = dependency('udev')
|
||||
- udev_rules_dir = udev_dep.get_pkgconfig_variable('udevdir') + '/rules.d'
|
||||
+ udev_hwdb_dir = udev_dep.get_pkgconfig_variable('udevdir') + '/hwdb.d'
|
||||
endif
|
||||
endif
|
||||
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index 746efdc..414695f 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -10,8 +10,8 @@ option('udev_rules',
|
||||
description: 'Whether to create a udev rules file',
|
||||
type: 'boolean',
|
||||
value: true)
|
||||
-option('udev_rules_dir',
|
||||
- description: 'Installation path for udev rules',
|
||||
+option('udev_hwdb_dir',
|
||||
+ description: 'Installation path for udev hwdb',
|
||||
type: 'string',
|
||||
value: 'auto')
|
||||
option('gtk-examples',
|
||||
diff --git a/tests/meson.build b/tests/meson.build
|
||||
index 27bdd9f..4ebf3b7 100644
|
||||
--- a/tests/meson.build
|
||||
+++ b/tests/meson.build
|
||||
@@ -170,8 +170,8 @@ foreach test_name: unit_tests
|
||||
endforeach
|
||||
|
||||
# Run udev rule generator with fatal warnings
|
||||
-test('udev-rules',
|
||||
- udev_rules,
|
||||
+test('udev-hwdb',
|
||||
+ udev_hwdb,
|
||||
env: envs)
|
||||
|
||||
gdb = find_program('gdb', required: false)
|
||||
@@ -0,0 +1,21 @@
|
||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||
Date: Thu, 21 Jan 2021 00:57:43 +0100
|
||||
Subject: build: Ensure we process the data dir
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/018641ad
|
||||
---
|
||||
meson.build | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 415f27e..9494ebb 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -237,6 +237,7 @@ if get_option('gtk-examples')
|
||||
subdir('demo')
|
||||
endif
|
||||
|
||||
+subdir('data')
|
||||
subdir('tests')
|
||||
|
||||
pkgconfig = import('pkgconfig')
|
||||
@@ -0,0 +1,27 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Thu, 21 Jan 2021 17:36:41 +0100
|
||||
Subject: build: Explicitly mark libfprint as a shared library
|
||||
|
||||
While meson suggests to always use 'library' this leads to some unwanted
|
||||
behaviors when it comes to generate pkg-config files for it, as they
|
||||
will include `Libs.Private` / `Required.private` fields that should not
|
||||
be really part of a shared library as libfprint is meant to be used.
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/89890dbd
|
||||
---
|
||||
libfprint/meson.build | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libfprint/meson.build b/libfprint/meson.build
|
||||
index 110c458..9425e09 100644
|
||||
--- a/libfprint/meson.build
|
||||
+++ b/libfprint/meson.build
|
||||
@@ -258,7 +258,7 @@ libfprint_drivers = static_library('fprint-drivers',
|
||||
mapfile = files('libfprint.ver')
|
||||
vflag = '-Wl,--version-script,@0@/@1@'.format(meson.source_root(), mapfile[0])
|
||||
|
||||
-libfprint = library(versioned_libname.split('lib')[1],
|
||||
+libfprint = shared_library(versioned_libname.split('lib')[1],
|
||||
sources: [
|
||||
fp_enums,
|
||||
libfprint_sources,
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||
Date: Thu, 21 Jan 2021 15:34:36 +0100
|
||||
Subject: build: Skip the hwdb test if not all drivers are really enabled
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/3b83157e9
|
||||
---
|
||||
meson.build | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 4c73c00..d5081c9 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -181,6 +181,10 @@ foreach driver: drivers
|
||||
endif
|
||||
endforeach
|
||||
|
||||
+if default_drivers_are_enabled and supported_drivers != drivers
|
||||
+ default_drivers_are_enabled = false
|
||||
+endif
|
||||
+
|
||||
# Export the drivers' types to the core code
|
||||
drivers_type_list = []
|
||||
drivers_type_func = []
|
||||
@@ -0,0 +1,22 @@
|
||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||
Date: Thu, 21 Jan 2021 01:17:02 +0100
|
||||
Subject: data: Keep using versioned libname for hwdb file
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/2f6adce2
|
||||
---
|
||||
data/meson.build | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
index 975c1c3..99adf5d 100644
|
||||
--- a/data/meson.build
|
||||
+++ b/data/meson.build
|
||||
@@ -3,7 +3,7 @@ if get_option('udev_rules')
|
||||
# ninja -C <builddir> libfprint/sync-udev-hwdb
|
||||
|
||||
install_data('autosuspend.hwdb',
|
||||
- rename: '60-autosuspend-@0@.hwdb'.format(meson.project_name()),
|
||||
+ rename: '60-autosuspend-@0@.hwdb'.format(versioned_libname),
|
||||
install_dir: udev_hwdb_dir,
|
||||
)
|
||||
endif
|
||||
+437
@@ -0,0 +1,437 @@
|
||||
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
|
||||
Date: Wed, 20 Jan 2021 20:02:05 +0100
|
||||
Subject: data: Use auto-generated but hardcoded autosuspend hwdb file
|
||||
|
||||
This solves various problems:
|
||||
1. It stays the same also if some drivers have been disabled
|
||||
2. It uses a stable path for being imported by systemd
|
||||
3. It is still checked for its validity by tests
|
||||
4. It can be auto-generated using a simple command
|
||||
---
|
||||
data/autosuspend.hwdb | 262 ++++++++++++++++++++++++++++++++++++++
|
||||
data/meson.build | 9 ++
|
||||
libfprint/fprint-list-udev-hwdb.c | 5 +
|
||||
libfprint/meson.build | 24 ++--
|
||||
meson.build | 12 ++
|
||||
tests/meson.build | 5 +-
|
||||
tests/test-generated-hwdb.sh | 24 ++++
|
||||
7 files changed, 332 insertions(+), 9 deletions(-)
|
||||
create mode 100644 data/autosuspend.hwdb
|
||||
create mode 100644 data/meson.build
|
||||
create mode 100755 tests/test-generated-hwdb.sh
|
||||
|
||||
diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb
|
||||
new file mode 100644
|
||||
index 0000000..f22d16a
|
||||
--- /dev/null
|
||||
+++ b/data/autosuspend.hwdb
|
||||
@@ -0,0 +1,262 @@
|
||||
+# This file has been generated using fprint-list-udev-hwdb with all drivers enabled
|
||||
+
|
||||
+# Supported by libfprint driver upektc_img
|
||||
+usb:v147Ep2016*
|
||||
+usb:v147Ep2020*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver vfs5011
|
||||
+usb:v138Ap0010*
|
||||
+usb:v138Ap0011*
|
||||
+usb:v138Ap0015*
|
||||
+usb:v138Ap0017*
|
||||
+usb:v138Ap0018*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes3500
|
||||
+usb:v08FFp5731*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes4000
|
||||
+usb:v5501p08FF*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes1610
|
||||
+usb:v08FFp1600*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes1660
|
||||
+usb:v08FFp1660*
|
||||
+usb:v08FFp1680*
|
||||
+usb:v08FFp1681*
|
||||
+usb:v08FFp1682*
|
||||
+usb:v08FFp1683*
|
||||
+usb:v08FFp1684*
|
||||
+usb:v08FFp1685*
|
||||
+usb:v08FFp1686*
|
||||
+usb:v08FFp1687*
|
||||
+usb:v08FFp1688*
|
||||
+usb:v08FFp1689*
|
||||
+usb:v08FFp168A*
|
||||
+usb:v08FFp168B*
|
||||
+usb:v08FFp168C*
|
||||
+usb:v08FFp168D*
|
||||
+usb:v08FFp168E*
|
||||
+usb:v08FFp168F*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes2660
|
||||
+usb:v08FFp2660*
|
||||
+usb:v08FFp2680*
|
||||
+usb:v08FFp2681*
|
||||
+usb:v08FFp2682*
|
||||
+usb:v08FFp2683*
|
||||
+usb:v08FFp2684*
|
||||
+usb:v08FFp2685*
|
||||
+usb:v08FFp2686*
|
||||
+usb:v08FFp2687*
|
||||
+usb:v08FFp2688*
|
||||
+usb:v08FFp2689*
|
||||
+usb:v08FFp268A*
|
||||
+usb:v08FFp268B*
|
||||
+usb:v08FFp268C*
|
||||
+usb:v08FFp268D*
|
||||
+usb:v08FFp268E*
|
||||
+usb:v08FFp268F*
|
||||
+usb:v08FFp2691*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes2501
|
||||
+usb:v08FFp2500*
|
||||
+usb:v08FFp2580*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver aes2550
|
||||
+usb:v08FFp2550*
|
||||
+usb:v08FFp2810*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver vfs101
|
||||
+usb:v138Ap0001*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver vfs301
|
||||
+usb:v138Ap0005*
|
||||
+usb:v138Ap0008*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver vfs0050
|
||||
+usb:v138Ap0050*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver etes603
|
||||
+usb:v1C7Ap0603*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver vcom5s
|
||||
+usb:v061Ap0110*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver synaptics
|
||||
+usb:v06CBp00BD*
|
||||
+usb:v06CBp00E9*
|
||||
+usb:v06CBp00DF*
|
||||
+usb:v06CBp00F9*
|
||||
+usb:v06CBp00FC*
|
||||
+usb:v06CBp00C2*
|
||||
+usb:v06CBp00C9*
|
||||
+usb:v06CBp00E7*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver elan
|
||||
+usb:v04F3p0903*
|
||||
+usb:v04F3p0907*
|
||||
+usb:v04F3p0C01*
|
||||
+usb:v04F3p0C02*
|
||||
+usb:v04F3p0C03*
|
||||
+usb:v04F3p0C04*
|
||||
+usb:v04F3p0C05*
|
||||
+usb:v04F3p0C06*
|
||||
+usb:v04F3p0C07*
|
||||
+usb:v04F3p0C08*
|
||||
+usb:v04F3p0C09*
|
||||
+usb:v04F3p0C0A*
|
||||
+usb:v04F3p0C0B*
|
||||
+usb:v04F3p0C0C*
|
||||
+usb:v04F3p0C0D*
|
||||
+usb:v04F3p0C0E*
|
||||
+usb:v04F3p0C0F*
|
||||
+usb:v04F3p0C10*
|
||||
+usb:v04F3p0C11*
|
||||
+usb:v04F3p0C12*
|
||||
+usb:v04F3p0C13*
|
||||
+usb:v04F3p0C14*
|
||||
+usb:v04F3p0C15*
|
||||
+usb:v04F3p0C16*
|
||||
+usb:v04F3p0C17*
|
||||
+usb:v04F3p0C18*
|
||||
+usb:v04F3p0C19*
|
||||
+usb:v04F3p0C1A*
|
||||
+usb:v04F3p0C1B*
|
||||
+usb:v04F3p0C1C*
|
||||
+usb:v04F3p0C1D*
|
||||
+usb:v04F3p0C1E*
|
||||
+usb:v04F3p0C1F*
|
||||
+usb:v04F3p0C20*
|
||||
+usb:v04F3p0C21*
|
||||
+usb:v04F3p0C22*
|
||||
+usb:v04F3p0C23*
|
||||
+usb:v04F3p0C24*
|
||||
+usb:v04F3p0C25*
|
||||
+usb:v04F3p0C26*
|
||||
+usb:v04F3p0C27*
|
||||
+usb:v04F3p0C28*
|
||||
+usb:v04F3p0C29*
|
||||
+usb:v04F3p0C2A*
|
||||
+usb:v04F3p0C2B*
|
||||
+usb:v04F3p0C2C*
|
||||
+usb:v04F3p0C2D*
|
||||
+usb:v04F3p0C2E*
|
||||
+usb:v04F3p0C2F*
|
||||
+usb:v04F3p0C30*
|
||||
+usb:v04F3p0C31*
|
||||
+usb:v04F3p0C32*
|
||||
+usb:v04F3p0C33*
|
||||
+usb:v04F3p0C42*
|
||||
+usb:v04F3p0C4D*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver uru4000
|
||||
+usb:v045Ep00BC*
|
||||
+usb:v045Ep00BD*
|
||||
+usb:v045Ep00CA*
|
||||
+usb:v05BAp0007*
|
||||
+usb:v05BAp0008*
|
||||
+usb:v05BAp000A*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver upektc
|
||||
+usb:v0483p2015*
|
||||
+usb:v147Ep3001*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver upeksonly
|
||||
+usb:v147Ep1000*
|
||||
+usb:v147Ep1001*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Supported by libfprint driver goodixmoc
|
||||
+usb:v27C6p5840*
|
||||
+usb:v27C6p6496*
|
||||
+usb:v27C6p60A2*
|
||||
+usb:v27C6p63AC*
|
||||
+usb:v27C6p639C*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
+
|
||||
+# Known unsupported devices
|
||||
+usb:v04F3p036B*
|
||||
+usb:v04F3p0C00*
|
||||
+usb:v04F3p0C4B*
|
||||
+usb:v04F3p0C4C*
|
||||
+usb:v04F3p0C4F*
|
||||
+usb:v04F3p0C57*
|
||||
+usb:v04F3p2706*
|
||||
+usb:v06CBp0081*
|
||||
+usb:v06CBp0088*
|
||||
+usb:v06CBp008A*
|
||||
+usb:v06CBp009A*
|
||||
+usb:v06CBp009B*
|
||||
+usb:v06CBp00A2*
|
||||
+usb:v06CBp00B7*
|
||||
+usb:v06CBp00BB*
|
||||
+usb:v06CBp00BE*
|
||||
+usb:v06CBp00CB*
|
||||
+usb:v06CBp00D8*
|
||||
+usb:v06CBp00DA*
|
||||
+usb:v0A5Cp5801*
|
||||
+usb:v0A5Cp5805*
|
||||
+usb:v0A5Cp5834*
|
||||
+usb:v0A5Cp5843*
|
||||
+usb:v10A5p0007*
|
||||
+usb:v1188p9545*
|
||||
+usb:v138Ap0007*
|
||||
+usb:v138Ap003A*
|
||||
+usb:v138Ap003C*
|
||||
+usb:v138Ap003D*
|
||||
+usb:v138Ap003F*
|
||||
+usb:v138Ap0090*
|
||||
+usb:v138Ap0091*
|
||||
+usb:v138Ap0092*
|
||||
+usb:v138Ap0094*
|
||||
+usb:v138Ap0097*
|
||||
+usb:v138Ap009D*
|
||||
+usb:v138Ap00AB*
|
||||
+usb:v147Ep1002*
|
||||
+usb:v1491p0088*
|
||||
+usb:v16D1p1027*
|
||||
+usb:v1C7Ap0300*
|
||||
+usb:v1C7Ap0570*
|
||||
+usb:v1C7Ap0575*
|
||||
+usb:v27C6p5042*
|
||||
+usb:v27C6p5110*
|
||||
+usb:v27C6p5117*
|
||||
+usb:v27C6p5201*
|
||||
+usb:v27C6p521D*
|
||||
+usb:v27C6p5301*
|
||||
+usb:v27C6p530C*
|
||||
+usb:v27C6p532D*
|
||||
+usb:v27C6p533C*
|
||||
+usb:v27C6p5381*
|
||||
+usb:v27C6p5385*
|
||||
+usb:v27C6p538C*
|
||||
+usb:v27C6p538D*
|
||||
+usb:v27C6p5395*
|
||||
+usb:v27C6p5584*
|
||||
+usb:v27C6p55A2*
|
||||
+usb:v27C6p55A4*
|
||||
+usb:v27C6p55B4*
|
||||
+usb:v27C6p5740*
|
||||
+usb:v2808p9338*
|
||||
+usb:v298Dp2033*
|
||||
+usb:v3538p0930*
|
||||
+ ID_AUTOSUSPEND=1
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
new file mode 100644
|
||||
index 0000000..975c1c3
|
||||
--- /dev/null
|
||||
+++ b/data/meson.build
|
||||
@@ -0,0 +1,9 @@
|
||||
+if get_option('udev_rules')
|
||||
+ # This file has to be updated using
|
||||
+ # ninja -C <builddir> libfprint/sync-udev-hwdb
|
||||
+
|
||||
+ install_data('autosuspend.hwdb',
|
||||
+ rename: '60-autosuspend-@0@.hwdb'.format(meson.project_name()),
|
||||
+ install_dir: udev_hwdb_dir,
|
||||
+ )
|
||||
+endif
|
||||
diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c
|
||||
index b687085..630be0f 100644
|
||||
--- a/libfprint/fprint-list-udev-hwdb.c
|
||||
+++ b/libfprint/fprint-list-udev-hwdb.c
|
||||
@@ -168,8 +168,13 @@ int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
g_autoptr(GArray) drivers = fpi_get_driver_types ();
|
||||
+ g_autofree char *program_name = NULL;
|
||||
guint i;
|
||||
|
||||
+ program_name = g_path_get_basename (argv[0]);
|
||||
+ g_print ("# This file has been generated using %s with all drivers enabled\n",
|
||||
+ program_name);
|
||||
+
|
||||
printed = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
|
||||
|
||||
for (i = 0; i < drivers->len; i++)
|
||||
diff --git a/libfprint/meson.build b/libfprint/meson.build
|
||||
index abf2fb9..110c458 100644
|
||||
--- a/libfprint/meson.build
|
||||
+++ b/libfprint/meson.build
|
||||
@@ -301,16 +301,24 @@ udev_hwdb = executable('fprint-list-udev-hwdb',
|
||||
link_with: libfprint_drivers,
|
||||
install: false)
|
||||
|
||||
-# We always build this file; primarily so that systemd can pull it
|
||||
-# from the artefacts!
|
||||
-custom_target('udev-rules',
|
||||
- output: '60-autosuspend-@0@.hwdb'.format(meson.project_name()),
|
||||
+udev_hwdb_generator = custom_target('udev-hwdb',
|
||||
+ output: 'autosuspend.hwdb',
|
||||
+ depend_files: drivers_sources,
|
||||
capture: true,
|
||||
command: [ udev_hwdb ],
|
||||
- install: get_option('udev_rules'),
|
||||
- install_dir: udev_hwdb_dir,
|
||||
- build_by_default: true
|
||||
- )
|
||||
+ install: false,
|
||||
+)
|
||||
+
|
||||
+custom_target('sync-udev-hwdb',
|
||||
+ depends: udev_hwdb_generator,
|
||||
+ output: 'sync-udev-hwdb',
|
||||
+ install: false,
|
||||
+ command: [
|
||||
+ 'cp', '-v',
|
||||
+ udev_hwdb_generator.full_path(),
|
||||
+ meson.source_root() / 'data'
|
||||
+ ]
|
||||
+)
|
||||
|
||||
supported_devices = executable('fprint-list-supported-devices',
|
||||
'fprint-list-supported-devices.c',
|
||||
diff --git a/meson.build b/meson.build
|
||||
index db619d7..415f27e 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -136,6 +136,18 @@ if drivers.length() == 0 or drivers[0] == ''
|
||||
error('Cannot build libfprint without drivers, please specify a valid value for the drivers option')
|
||||
endif
|
||||
|
||||
+if drivers == all_drivers or drivers == default_drivers
|
||||
+ default_drivers_are_enabled = true
|
||||
+else
|
||||
+ default_drivers_are_enabled = true
|
||||
+ foreach driver: default_drivers
|
||||
+ if driver not in drivers
|
||||
+ default_drivers_are_enabled = false
|
||||
+ break
|
||||
+ endif
|
||||
+ endforeach
|
||||
+endif
|
||||
+
|
||||
nss_dep = dependency('', required: false)
|
||||
imaging_dep = dependency('', required: false)
|
||||
libfprint_conf.set10('HAVE_PIXMAN', false)
|
||||
diff --git a/tests/meson.build b/tests/meson.build
|
||||
index 4ebf3b7..8e24980 100644
|
||||
--- a/tests/meson.build
|
||||
+++ b/tests/meson.build
|
||||
@@ -5,6 +5,7 @@ envs.set('G_MESSAGES_DEBUG', 'all')
|
||||
|
||||
# Setup paths
|
||||
envs.set('MESON_SOURCE_ROOT', meson.source_root())
|
||||
+envs.set('MESON_BUILD_ROOT', meson.build_root())
|
||||
envs.prepend('LD_LIBRARY_PATH', join_paths(meson.build_root(), 'libfprint'))
|
||||
|
||||
# Set FP_DEVICE_EMULATION so that drivers can adapt (e.g. to use fixed
|
||||
@@ -170,8 +171,10 @@ foreach test_name: unit_tests
|
||||
endforeach
|
||||
|
||||
# Run udev rule generator with fatal warnings
|
||||
+envs.set('UDEV_HWDB', udev_hwdb.full_path())
|
||||
+envs.set('UDEV_HWDB_CHECK_CONTENTS', default_drivers_are_enabled ? '1' : '0')
|
||||
test('udev-hwdb',
|
||||
- udev_hwdb,
|
||||
+ find_program('test-generated-hwdb.sh'),
|
||||
env: envs)
|
||||
|
||||
gdb = find_program('gdb', required: false)
|
||||
diff --git a/tests/test-generated-hwdb.sh b/tests/test-generated-hwdb.sh
|
||||
new file mode 100755
|
||||
index 0000000..34209cb
|
||||
--- /dev/null
|
||||
+++ b/tests/test-generated-hwdb.sh
|
||||
@@ -0,0 +1,24 @@
|
||||
+#!/usr/bin/env bash
|
||||
+set -e
|
||||
+
|
||||
+[ -x "$UDEV_HWDB" ] || exit 1
|
||||
+
|
||||
+if [ "$UDEV_HWDB_CHECK_CONTENTS" == 1 ]; then
|
||||
+ generated_rules=$(mktemp "${TMPDIR:-/tmp}/libfprint-XXXXXX.hwdb")
|
||||
+else
|
||||
+ generated_rules=/dev/null
|
||||
+fi
|
||||
+
|
||||
+$UDEV_HWDB > "$generated_rules"
|
||||
+
|
||||
+if [ "$UDEV_HWDB_CHECK_CONTENTS" != 1 ]; then
|
||||
+ exit 77
|
||||
+fi
|
||||
+
|
||||
+if ! cmp "$MESON_SOURCE_ROOT/data/autosuspend.hwdb" "$generated_rules"; then
|
||||
+ echo "E: Autosuspend file needs to be re-generated!"
|
||||
+ echo " ninja -C $MESON_BUILD_ROOT libfprint/sync-udev-hwdb"
|
||||
+ exit 1
|
||||
+fi
|
||||
+
|
||||
+rm "$generated_rules"
|
||||
@@ -0,0 +1,59 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 14:19:10 +0100
|
||||
Subject: meson: Always build hwdb file
|
||||
|
||||
We want systemd to pull our hwdb. In order to ease this, always build
|
||||
the hwdb file, even if it is disabled.
|
||||
|
||||
Once systemd has merged the rules, downstream should turn off the rules
|
||||
in libfprint. The default in libfprint will also be changed to not build
|
||||
the hwdb (udev_rules option) eventually.
|
||||
|
||||
Origin: https://gitlab.freedesktop.org/libfprint/libfprint/-/commit/cbce56c1
|
||||
---
|
||||
libfprint/meson.build | 18 ++++++++++--------
|
||||
meson.build | 2 ++
|
||||
2 files changed, 12 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/libfprint/meson.build b/libfprint/meson.build
|
||||
index e385ce8..3464bf3 100644
|
||||
--- a/libfprint/meson.build
|
||||
+++ b/libfprint/meson.build
|
||||
@@ -301,14 +301,16 @@ udev_hwdb = executable('fprint-list-udev-hwdb',
|
||||
link_with: libfprint_drivers,
|
||||
install: false)
|
||||
|
||||
-if get_option('udev_rules')
|
||||
- custom_target('udev-rules',
|
||||
- output: '60-autosuspend-@0@.hwdb'.format(versioned_libname),
|
||||
- capture: true,
|
||||
- command: [ udev_hwdb ],
|
||||
- install: true,
|
||||
- install_dir: udev_hwdb_dir)
|
||||
-endif
|
||||
+# We always build this file; primarily so that systemd can pull it
|
||||
+# from the artefacts!
|
||||
+custom_target('udev-rules',
|
||||
+ output: '60-autosuspend-@0@.hwdb'.format(versioned_libname),
|
||||
+ capture: true,
|
||||
+ command: [ udev_hwdb ],
|
||||
+ install: get_option('udev_rules'),
|
||||
+ install_dir: udev_hwdb_dir,
|
||||
+ build_by_default: true
|
||||
+ )
|
||||
|
||||
supported_devices = executable('fprint-list-supported-devices',
|
||||
'fprint-list-supported-devices.c',
|
||||
diff --git a/meson.build b/meson.build
|
||||
index ab4ac72..db619d7 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -200,6 +200,8 @@ if get_option('udev_rules')
|
||||
udev_dep = dependency('udev')
|
||||
udev_hwdb_dir = udev_dep.get_pkgconfig_variable('udevdir') + '/hwdb.d'
|
||||
endif
|
||||
+else
|
||||
+ udev_hwdb_dir = false
|
||||
endif
|
||||
|
||||
if get_option('gtk-examples')
|
||||
Vendored
+13
-1
@@ -1,2 +1,14 @@
|
||||
meson-Do-not-support-drivers-known-to-fail-in-Big-Endian-.patch
|
||||
debian/Tweak-the-udev-rules-creator-for-Debian-usage.patch
|
||||
udev-rules-Print-warning-if-an-ID-is-supported.patch
|
||||
udev-rules-Remove-supported-synaptics-devices.patch
|
||||
tests-Add-check-that-no-supported-device-is-whitelisted.patch
|
||||
udev-hwdb-Prevent-devices-from-being-listed-twice.patch
|
||||
Generate-a-hwdb-instead-of-udev-rules.patch
|
||||
meson-Always-build-hwdb-file.patch
|
||||
Drop-version-from-libfprint-hwdb.patch
|
||||
data-Use-auto-generated-but-hardcoded-autosuspend-hwdb-fi.patch
|
||||
build-Ensure-we-process-the-data-dir.patch
|
||||
data-Keep-using-versioned-libname-for-hwdb-file.patch
|
||||
tests-Add-trailing-newline-to-busname-devname-sysfs-attri.patch
|
||||
build-Skip-the-hwdb-test-if-not-all-drivers-are-really-en.patch
|
||||
build-Explicitly-mark-libfprint-as-a-shared-library.patch
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 13:38:08 +0100
|
||||
Subject: tests: Add check that no supported device is whitelisted
|
||||
|
||||
---
|
||||
tests/meson.build | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/tests/meson.build b/tests/meson.build
|
||||
index 8fcae69..27bdd9f 100644
|
||||
--- a/tests/meson.build
|
||||
+++ b/tests/meson.build
|
||||
@@ -169,6 +169,11 @@ foreach test_name: unit_tests
|
||||
)
|
||||
endforeach
|
||||
|
||||
+# Run udev rule generator with fatal warnings
|
||||
+test('udev-rules',
|
||||
+ udev_rules,
|
||||
+ env: envs)
|
||||
+
|
||||
gdb = find_program('gdb', required: false)
|
||||
if gdb.found()
|
||||
add_test_setup('gdb',
|
||||
+256
@@ -0,0 +1,256 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Thu, 21 Jan 2021 12:22:08 +0100
|
||||
Subject: tests: Add trailing newline to busname/devname sysfs attributes
|
||||
|
||||
libusb 1.0.24 now expects busnum/devnum to be \n terminated. Update the
|
||||
device descriptions accordingly.
|
||||
|
||||
https://github.com/martinpitt/umockdev/issues/115
|
||||
---
|
||||
tests/aes3500/device | 16 ++++++++--------
|
||||
tests/elan/device | 12 ++++++------
|
||||
tests/goodixmoc/device | 8 ++++----
|
||||
tests/synaptics/device | 4 ++--
|
||||
tests/vfs0050/device | 4 ++--
|
||||
tests/vfs301/device | 12 ++++++------
|
||||
tests/vfs5011/device | 4 ++--
|
||||
7 files changed, 30 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/tests/aes3500/device b/tests/aes3500/device
|
||||
index 4a2a903..c662cc8 100644
|
||||
--- a/tests/aes3500/device
|
||||
+++ b/tests/aes3500/device
|
||||
@@ -35,11 +35,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0000
|
||||
A: bmAttributes=80
|
||||
-A: busnum=3
|
||||
+A: busnum=3\n
|
||||
A: configuration=
|
||||
H: descriptors=12011001FFFFFF08FF0831570000000100010902200001010080320904000002FFFFFF000705810240000007050202080000
|
||||
A: dev=189:259
|
||||
-A: devnum=4
|
||||
+A: devnum=4\n
|
||||
A: devpath=1.1.3
|
||||
L: driver=../../../../../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=5731
|
||||
@@ -106,11 +106,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=9100
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=3
|
||||
+A: busnum=3\n
|
||||
A: configuration=
|
||||
H: descriptors=12011002090001403022060000910102000109021900010100E0000904000001090000000705810301000C
|
||||
A: dev=189:258
|
||||
-A: devnum=3
|
||||
+A: devnum=3\n
|
||||
A: devpath=1.1
|
||||
L: driver=../../../../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0006
|
||||
@@ -186,11 +186,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=9100
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=3
|
||||
+A: busnum=3\n
|
||||
A: configuration=
|
||||
H: descriptors=12011002090001403022060000910102000109021900010100E0000904000001090000000705810301000C
|
||||
A: dev=189:257
|
||||
-A: devnum=2
|
||||
+A: devnum=2\n
|
||||
A: devpath=1
|
||||
L: driver=../../../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0006
|
||||
@@ -270,11 +270,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0415
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=3
|
||||
+A: busnum=3\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002090001406B1D020015040302010109021900010100E0000904000001090000000705810304000C
|
||||
A: dev=189:256
|
||||
-A: devnum=1
|
||||
+A: devnum=1\n
|
||||
A: devpath=0
|
||||
L: driver=../../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0002
|
||||
diff --git a/tests/elan/device b/tests/elan/device
|
||||
index 7374dc2..6e1e421 100644
|
||||
--- a/tests/elan/device
|
||||
+++ b/tests/elan/device
|
||||
@@ -36,11 +36,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0140
|
||||
A: bmAttributes=80
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=1201000200000008F304260C40010102000109023E0001010080320904000005FF0000000921100100012215000705810240000107050102400001070582024000010705830240000107050302400001
|
||||
A: dev=189:93
|
||||
-A: devnum=94
|
||||
+A: devnum=94\n
|
||||
A: devpath=4.4
|
||||
L: driver=../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0c26
|
||||
@@ -107,11 +107,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=5284
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=1201100209000140EF17181084520102000109021900010100E0000904000001090000000705810301000C
|
||||
A: dev=189:82
|
||||
-A: devnum=83
|
||||
+A: devnum=83\n
|
||||
A: devpath=4
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=1018
|
||||
@@ -189,11 +189,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0503
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002090001406B1D020003050302010109021900010100E0000904000001090000000705810304000C
|
||||
A: dev=189:0
|
||||
-A: devnum=1
|
||||
+A: devnum=1\n
|
||||
A: devpath=0
|
||||
L: driver=../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0002
|
||||
diff --git a/tests/goodixmoc/device b/tests/goodixmoc/device
|
||||
index 627c9dc..b008eb2 100644
|
||||
--- a/tests/goodixmoc/device
|
||||
+++ b/tests/goodixmoc/device
|
||||
@@ -37,11 +37,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0100
|
||||
A: bmAttributes=a0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=UIDCBEE4D7B_XXXX_MOC_B0
|
||||
H: descriptors=12010002EF000040C627A26000010102030109022000010103A0320904000002FF0000040705830240000007050102400000
|
||||
A: dev=189:2
|
||||
-A: devnum=3
|
||||
+A: devnum=3\n
|
||||
A: devpath=8
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=60a2
|
||||
@@ -125,11 +125,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0504
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002090001406B1D020004050302010109021900010100E0000904000001090000000705810304000C
|
||||
A: dev=189:0
|
||||
-A: devnum=1
|
||||
+A: devnum=1\n
|
||||
A: devpath=0
|
||||
L: driver=../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0002
|
||||
diff --git a/tests/synaptics/device b/tests/synaptics/device
|
||||
index 6da3eea..87c4bed 100644
|
||||
--- a/tests/synaptics/device
|
||||
+++ b/tests/synaptics/device
|
||||
@@ -34,11 +34,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0000
|
||||
A: bmAttributes=a0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002FF10FF08CB06BD0000000000010109022700010100A0320904000003FF000000070501024000000705810240000007058303080004
|
||||
A: dev=189:69
|
||||
-A: devnum=70
|
||||
+A: devnum=70\n
|
||||
A: devpath=1
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=00bd
|
||||
diff --git a/tests/vfs0050/device b/tests/vfs0050/device
|
||||
index 1bea50a..b66be4b 100644
|
||||
--- a/tests/vfs0050/device
|
||||
+++ b/tests/vfs0050/device
|
||||
@@ -38,11 +38,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0060
|
||||
A: bmAttributes=a0
|
||||
-A: busnum=1
|
||||
+A: busnum=1\n
|
||||
A: configuration=
|
||||
H: descriptors=12011001FF10FF088A13500060000000010109022E00010100A0320904000004FF00000007050102400000070581024000000705820240000007058303080004
|
||||
A: dev=189:3
|
||||
-A: devnum=4
|
||||
+A: devnum=4\n
|
||||
A: devpath=9
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0050
|
||||
diff --git a/tests/vfs301/device b/tests/vfs301/device
|
||||
index 635f795..26d3b57 100644
|
||||
--- a/tests/vfs301/device
|
||||
+++ b/tests/vfs301/device
|
||||
@@ -37,11 +37,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0c90
|
||||
A: bmAttributes=a0
|
||||
-A: busnum=2
|
||||
+A: busnum=2\n
|
||||
A: configuration=
|
||||
H: descriptors=12011001FF10FF088A130500900C0000000109022700010100A0320904000003FF000000070501024000000705810240000007058202400000
|
||||
A: dev=189:132
|
||||
-A: devnum=5
|
||||
+A: devnum=5\n
|
||||
A: devpath=1.3
|
||||
L: driver=../../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0005
|
||||
@@ -120,11 +120,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0000
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=2
|
||||
+A: busnum=2\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002090001408780200000000000000109021900010100E0000904000001090000000705810302000C
|
||||
A: dev=189:129
|
||||
-A: devnum=2
|
||||
+A: devnum=2\n
|
||||
A: devpath=1
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0020
|
||||
@@ -204,11 +204,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0504
|
||||
A: bmAttributes=e0
|
||||
-A: busnum=2
|
||||
+A: busnum=2\n
|
||||
A: configuration=
|
||||
H: descriptors=12010002090000406B1D020004050302010109021900010100E0000904000001090000000705810304000C
|
||||
A: dev=189:128
|
||||
-A: devnum=1
|
||||
+A: devnum=1\n
|
||||
A: devpath=0
|
||||
L: driver=../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0002
|
||||
diff --git a/tests/vfs5011/device b/tests/vfs5011/device
|
||||
index 4c75e59..e39a74f 100644
|
||||
--- a/tests/vfs5011/device
|
||||
+++ b/tests/vfs5011/device
|
||||
@@ -35,11 +35,11 @@ A: bNumConfigurations=1
|
||||
A: bNumInterfaces= 1
|
||||
A: bcdDevice=0078
|
||||
A: bmAttributes=a0
|
||||
-A: busnum=2
|
||||
+A: busnum=2\n
|
||||
A: configuration=
|
||||
H: descriptors=12011001FF11FF088A13170078000000010109022E00010100A0320904000004FF00000007050102400000070581024000000705820240000007058303080004
|
||||
A: dev=189:144
|
||||
-A: devnum=17
|
||||
+A: devnum=17\n
|
||||
A: devpath=6
|
||||
L: driver=../../../../../bus/usb/drivers/usb
|
||||
A: idProduct=0017
|
||||
@@ -0,0 +1,31 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Wed, 20 Jan 2021 18:02:31 +0100
|
||||
Subject: udev-hwdb: Prevent devices from being listed twice
|
||||
|
||||
The change to print a warning (for testing purposes) from commit
|
||||
944e0d03837 (udev-rules: Print warning if an ID is supported) was
|
||||
incorrect because it prevented duplicated to be suppressed if a device
|
||||
is listed by two independent drivers.
|
||||
---
|
||||
libfprint/fprint-list-udev-rules.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c
|
||||
index e574cac..050a450 100644
|
||||
--- a/libfprint/fprint-list-udev-rules.c
|
||||
+++ b/libfprint/fprint-list-udev-rules.c
|
||||
@@ -136,10 +136,11 @@ print_driver (const FpDeviceClass *cls)
|
||||
|
||||
key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
|
||||
- if (cls == &whitelist && g_hash_table_lookup (printed, key) != NULL)
|
||||
+ if (g_hash_table_lookup (printed, key) != NULL)
|
||||
{
|
||||
- g_warning ("%s implemented by driver %s",
|
||||
- key, (const char *) g_hash_table_lookup (printed, key));
|
||||
+ if (cls == &whitelist)
|
||||
+ g_warning ("%s implemented by driver %s",
|
||||
+ key, (const char *) g_hash_table_lookup (printed, key));
|
||||
g_free (key);
|
||||
continue;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 13:29:17 +0100
|
||||
Subject: udev-rules: Print warning if an ID is supported
|
||||
|
||||
---
|
||||
libfprint/fprint-list-udev-rules.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c
|
||||
index d6c884c..5f80fe1 100644
|
||||
--- a/libfprint/fprint-list-udev-rules.c
|
||||
+++ b/libfprint/fprint-list-udev-rules.c
|
||||
@@ -110,6 +110,7 @@ static const FpIdEntry blacklist_id_table[] = {
|
||||
static const FpDeviceClass whitelist = {
|
||||
.type = FP_DEVICE_TYPE_USB,
|
||||
.id_table = whitelist_id_table,
|
||||
+ .id = "whitelist",
|
||||
.full_name = "Hardcoded whitelist"
|
||||
};
|
||||
|
||||
@@ -138,13 +139,15 @@ print_driver (const FpDeviceClass *cls)
|
||||
|
||||
key = g_strdup_printf ("%04x:%04x", entry->vid, entry->pid);
|
||||
|
||||
- if (g_hash_table_lookup (printed, key) != NULL)
|
||||
+ if (cls == &whitelist && g_hash_table_lookup (printed, key) != NULL)
|
||||
{
|
||||
+ g_warning ("%s implemented by driver %s",
|
||||
+ key, (const char *) g_hash_table_lookup (printed, key));
|
||||
g_free (key);
|
||||
continue;
|
||||
}
|
||||
|
||||
- g_hash_table_insert (printed, key, GINT_TO_POINTER (1));
|
||||
+ g_hash_table_insert (printed, key, (void *) cls->id);
|
||||
|
||||
if (num_printed == 0)
|
||||
g_print ("# %s\n", cls->full_name);
|
||||
@@ -0,0 +1,25 @@
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 19 Jan 2021 13:37:51 +0100
|
||||
Subject: udev-rules: Remove supported synaptics devices
|
||||
|
||||
---
|
||||
libfprint/fprint-list-udev-rules.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/libfprint/fprint-list-udev-rules.c b/libfprint/fprint-list-udev-rules.c
|
||||
index 5f80fe1..e574cac 100644
|
||||
--- a/libfprint/fprint-list-udev-rules.c
|
||||
+++ b/libfprint/fprint-list-udev-rules.c
|
||||
@@ -45,12 +45,9 @@ static const FpIdEntry whitelist_id_table[] = {
|
||||
{ .vid = 0x06cb, .pid = 0x00b7 },
|
||||
{ .vid = 0x06cb, .pid = 0x00bb },
|
||||
{ .vid = 0x06cb, .pid = 0x00be },
|
||||
- { .vid = 0x06cb, .pid = 0x00c2 },
|
||||
- { .vid = 0x06cb, .pid = 0x00c9 },
|
||||
{ .vid = 0x06cb, .pid = 0x00cb },
|
||||
{ .vid = 0x06cb, .pid = 0x00d8 },
|
||||
{ .vid = 0x06cb, .pid = 0x00da },
|
||||
- { .vid = 0x06cb, .pid = 0x00e7 },
|
||||
{ .vid = 0x0a5c, .pid = 0x5801 },
|
||||
{ .vid = 0x0a5c, .pid = 0x5805 },
|
||||
{ .vid = 0x0a5c, .pid = 0x5834 },
|
||||
Vendored
+4
-9
@@ -5,8 +5,10 @@ export DPKG_GENSYMBOLS_CHECK_LEVEL = 2
|
||||
BUILDDIR = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)
|
||||
|
||||
# Configuration arguments
|
||||
CONFIG_ARGS = -Dudev_rules_dir=/lib/udev/rules.d -Dgtk-examples=false \
|
||||
-Ddrivers=all
|
||||
CONFIG_ARGS = \
|
||||
-Dudev_hwdb_dir=/lib/udev/hwdb.d \
|
||||
-Ddrivers=all \
|
||||
-Dgtk-examples=false
|
||||
|
||||
%:
|
||||
dh $@ --with gir
|
||||
@@ -14,12 +16,5 @@ CONFIG_ARGS = -Dudev_rules_dir=/lib/udev/rules.d -Dgtk-examples=false \
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- $(CONFIG_ARGS)
|
||||
|
||||
override_dh_install:
|
||||
mv debian/tmp/lib/udev/rules.d/60-libfprint-2-autosuspend.rules \
|
||||
debian/tmp/lib/udev/rules.d/60-libfprint-2.rules
|
||||
sed -i '/^Requires.private\|^Libs.private/ d' \
|
||||
debian/tmp/usr/lib/*/pkgconfig/libfprint-2.pc
|
||||
dh_install
|
||||
|
||||
override_dh_auto_test:
|
||||
dh_auto_test -- -C $(BUILDDIR) --timeout-multiplier 5
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
srcdir="${GBP_SOURCES_DIR:-.}"
|
||||
debpath="$(dirname "$0")"
|
||||
autosuspend_file="/tmp/autosuspend.hwdb"
|
||||
commands_lines=()
|
||||
|
||||
while IFS= read -r line; do
|
||||
if [[ $line =~ ^usb:v([A-Fa-f0-9]{4})p([A-Fa-f0-9]{4}) ]]; then
|
||||
vendor="$(echo "${BASH_REMATCH[1]}" | tr '[:upper:]' '[:lower:]')"
|
||||
product="$(echo "${BASH_REMATCH[2]}" | tr '[:upper:]' '[:lower:]')"
|
||||
commands_lines+=("\tudevadm trigger --action=add --attr-match=idVendor=$vendor --attr-match=idProduct=$product")
|
||||
fi
|
||||
done < "$autosuspend_file"
|
||||
|
||||
UDEVADM_TRIGGERS=$( IFS=$'\n'; echo -e "${commands_lines[*]}" )
|
||||
export UDEVADM_TRIGGERS
|
||||
|
||||
for i in "$debpath"/libfprint-*.post*.in; do
|
||||
out="${i%.in}"
|
||||
perl -pe 's/\@UDEVADM_TRIGGERS\@/`printenv UDEVADM_TRIGGERS`/e' "$i" > "$out"
|
||||
|
||||
if [ -n "$GBP_BRANCH" ]; then
|
||||
if ! git diff-index --quiet HEAD -- "$out"; then
|
||||
git add "$out"
|
||||
dch "${out#$srcdir}: Devices triggers updated"
|
||||
git add debian/changelog
|
||||
debcommit
|
||||
fi
|
||||
fi
|
||||
done
|
||||
@@ -53,6 +53,7 @@ struct _FpiDeviceGoodixMoc
|
||||
pgxfp_sensor_cfg_t sensorcfg;
|
||||
gint enroll_stage;
|
||||
gint max_enroll_stage;
|
||||
gint max_stored_prints;
|
||||
GCancellable *cancellable;
|
||||
GPtrArray *list_result;
|
||||
guint8 template_id[TEMPLATE_ID_SIZE];
|
||||
@@ -330,7 +331,9 @@ fp_verify_capture_cb (FpiDeviceGoodixMoc *self,
|
||||
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
||||
return;
|
||||
}
|
||||
|
||||
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||
FP_FINGER_STATUS_PRESENT,
|
||||
FP_FINGER_STATUS_NONE);
|
||||
if (resp->capture_data_resp.img_quality == 0)
|
||||
{
|
||||
fpi_ssm_mark_failed (self->task_ssm,
|
||||
@@ -341,6 +344,7 @@ fp_verify_capture_cb (FpiDeviceGoodixMoc *self,
|
||||
{
|
||||
fpi_ssm_mark_failed (self->task_ssm,
|
||||
fpi_device_retry_new (FP_DEVICE_RETRY_CENTER_FINGER));
|
||||
return;
|
||||
}
|
||||
fpi_ssm_next_state (self->task_ssm);
|
||||
}
|
||||
@@ -433,6 +437,9 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
|
||||
switch (fpi_ssm_get_cur_state (ssm))
|
||||
{
|
||||
case FP_VERIFY_CAPTURE:
|
||||
fpi_device_report_finger_status_changes (device,
|
||||
FP_FINGER_STATUS_NEEDED,
|
||||
FP_FINGER_STATUS_NONE);
|
||||
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||
true,
|
||||
(const guint8 *) ¶m,
|
||||
@@ -560,6 +567,13 @@ fp_enroll_enum_cb (FpiDeviceGoodixMoc *self,
|
||||
resp->result));
|
||||
return;
|
||||
}
|
||||
if (resp->finger_list_resp.finger_num >= self->max_stored_prints)
|
||||
{
|
||||
fpi_ssm_mark_failed (self->task_ssm,
|
||||
fpi_device_error_new (FP_DEVICE_ERROR_DATA_FULL));
|
||||
return;
|
||||
}
|
||||
|
||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||
}
|
||||
|
||||
@@ -620,7 +634,9 @@ fp_enroll_capture_cb (FpiDeviceGoodixMoc *self,
|
||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||
return;
|
||||
}
|
||||
|
||||
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||
FP_FINGER_STATUS_PRESENT,
|
||||
FP_FINGER_STATUS_NONE);
|
||||
if ((resp->capture_data_resp.img_quality < self->sensorcfg->config[4]) ||
|
||||
(resp->capture_data_resp.img_coverage < self->sensorcfg->config[5]))
|
||||
{
|
||||
@@ -742,7 +758,7 @@ fp_finger_mode_cb (FpiDeviceGoodixMoc *self,
|
||||
fpi_ssm_mark_failed (self->task_ssm, error);
|
||||
return;
|
||||
}
|
||||
/* if reach max timeout(5sec) finger not up, swtich to finger up again */
|
||||
/* if reach max timeout(5sec) finger not up, switch to finger up again */
|
||||
if (resp->finger_status.status == GX_ERROR_WAIT_FINGER_UP_TIMEOUT)
|
||||
{
|
||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_WAIT_FINGER_UP);
|
||||
@@ -755,6 +771,9 @@ fp_finger_mode_cb (FpiDeviceGoodixMoc *self,
|
||||
"Switch finger mode failed"));
|
||||
return;
|
||||
}
|
||||
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||
FP_FINGER_STATUS_NONE,
|
||||
FP_FINGER_STATUS_PRESENT);
|
||||
if (self->enroll_stage < self->max_enroll_stage)
|
||||
{
|
||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||
@@ -817,6 +836,9 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
|
||||
break;
|
||||
|
||||
case FP_ENROLL_CAPTURE:
|
||||
fpi_device_report_finger_status_changes (device,
|
||||
FP_FINGER_STATUS_NEEDED,
|
||||
FP_FINGER_STATUS_NONE);
|
||||
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||
true,
|
||||
(const guint8 *) &dummy,
|
||||
@@ -975,7 +997,7 @@ fp_init_config_cb (FpiDeviceGoodixMoc *self,
|
||||
fpi_ssm_mark_failed (self->task_ssm, error);
|
||||
return;
|
||||
}
|
||||
|
||||
self->max_stored_prints = resp->finger_config.max_stored_prints;
|
||||
fpi_ssm_next_state (self->task_ssm);
|
||||
}
|
||||
|
||||
@@ -1259,6 +1281,8 @@ gx_fp_init (FpDevice *device)
|
||||
GError *error = NULL;
|
||||
int ret = 0;
|
||||
|
||||
self->max_stored_prints = FP_MAX_FINGERNUM;
|
||||
|
||||
self->cancellable = g_cancellable_new ();
|
||||
|
||||
self->sensorcfg = g_new0 (gxfp_sensor_cfg_t, 1);
|
||||
@@ -1424,6 +1448,8 @@ static const FpIdEntry id_table[] = {
|
||||
{ .vid = 0x27c6, .pid = 0x5840, },
|
||||
{ .vid = 0x27c6, .pid = 0x6496, },
|
||||
{ .vid = 0x27c6, .pid = 0x60A2, },
|
||||
{ .vid = 0x27c6, .pid = 0x63AC, },
|
||||
{ .vid = 0x27c6, .pid = 0x639C, },
|
||||
{ .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */
|
||||
};
|
||||
|
||||
|
||||
@@ -294,6 +294,12 @@ gx_proto_parse_body (uint16_t cmd, uint8_t *buffer, uint32_t buffer_len, pgxfp_c
|
||||
break;
|
||||
|
||||
case MOC_CMD0_UPDATE_CONFIG:
|
||||
{
|
||||
presp->finger_config.status = buffer[0];
|
||||
presp->finger_config.max_stored_prints = buffer[2];
|
||||
}
|
||||
break;
|
||||
|
||||
case MOC_CMD0_COMMITENROLLMENT:
|
||||
case MOC_CMD0_DELETETEMPLATE:
|
||||
break;
|
||||
@@ -411,7 +417,7 @@ gx_proto_init_sensor_config (pgxfp_sensor_cfg_t pconfig)
|
||||
memset (pconfig, 0, sizeof (*pconfig));
|
||||
|
||||
//NOTICE: Do not change any value!
|
||||
memcpy (&pconfig->config, sensor_config, 26);
|
||||
memcpy (&pconfig->config, sensor_config, G_N_ELEMENTS (sensor_config));
|
||||
pconfig->reserved[0] = 1;
|
||||
|
||||
gx_proto_crc32_calc ((uint8_t *) pconfig, sizeof (*pconfig) - PACKAGE_CRC_SIZE, (uint8_t *) &crc32_calc);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#define PACKAGE_CRC_SIZE (4)
|
||||
#define PACKAGE_HEADER_SIZE (8)
|
||||
|
||||
#define FP_MAX_FINGERNUM (10)
|
||||
#define FP_MAX_FINGERNUM (20)
|
||||
|
||||
#define TEMPLATE_ID_SIZE (32)
|
||||
|
||||
@@ -167,6 +167,11 @@ typedef struct _fp_finger_status
|
||||
uint8_t status;
|
||||
} fp_finger_status_t, *pfp_finger_status_t;
|
||||
|
||||
typedef struct _fp_finger_config
|
||||
{
|
||||
uint8_t status;
|
||||
uint8_t max_stored_prints;
|
||||
} fp_finger_config_t, *pfp_finger_config_t;
|
||||
|
||||
typedef struct _fp_cmd_response
|
||||
{
|
||||
@@ -183,6 +188,7 @@ typedef struct _fp_cmd_response
|
||||
gxfp_enum_fingerlist_t finger_list_resp;
|
||||
gxfp_version_info_t version_info;
|
||||
fp_finger_status_t finger_status;
|
||||
fp_finger_config_t finger_config;
|
||||
};
|
||||
} gxfp_cmd_response_t, *pgxfp_cmd_response_t;
|
||||
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
|
||||
G_DEFINE_TYPE (FpiDeviceSynaptics, fpi_device_synaptics, FP_TYPE_DEVICE)
|
||||
|
||||
static void init_identify_msg (FpDevice *device);
|
||||
static void compose_and_send_identify_msg (FpDevice *device);
|
||||
|
||||
static const FpIdEntry id_table[] = {
|
||||
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xBD, },
|
||||
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xE9, },
|
||||
@@ -121,7 +124,7 @@ cmd_receive_cb (FpiUsbTransfer *transfer,
|
||||
{
|
||||
if (resp.response_id == BMKT_RSP_CANCEL_OP_OK)
|
||||
{
|
||||
fp_dbg ("Received cancellation success resonse");
|
||||
fp_dbg ("Received cancellation success response");
|
||||
fpi_ssm_mark_failed (transfer->ssm,
|
||||
g_error_new_literal (G_IO_ERROR,
|
||||
G_IO_ERROR_CANCELLED,
|
||||
@@ -451,6 +454,37 @@ parse_print_data (GVariant *data,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static FpPrint *
|
||||
create_print (FpiDeviceSynaptics *self,
|
||||
guint8 *user_id,
|
||||
guint8 finger_id)
|
||||
{
|
||||
FpPrint *print;
|
||||
g_autofree gchar *user_id_safe;
|
||||
GVariant *data = NULL;
|
||||
GVariant *uid = NULL;
|
||||
|
||||
user_id_safe = g_strndup ((char *) user_id, BMKT_MAX_USER_ID_LEN);
|
||||
|
||||
print = fp_print_new (FP_DEVICE (self));
|
||||
uid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
|
||||
user_id_safe,
|
||||
strlen (user_id_safe),
|
||||
1);
|
||||
data = g_variant_new ("(y@ay)",
|
||||
finger_id,
|
||||
uid);
|
||||
|
||||
fpi_print_set_type (print, FPI_PRINT_RAW);
|
||||
fpi_print_set_device_stored (print, TRUE);
|
||||
g_object_set (print, "fpi-data", data, NULL);
|
||||
g_object_set (print, "description", user_id_safe, NULL);
|
||||
|
||||
fpi_print_fill_from_user_id (print, user_id_safe);
|
||||
|
||||
return print;
|
||||
}
|
||||
|
||||
static void
|
||||
list_msg_cb (FpiDeviceSynaptics *self,
|
||||
bmkt_response_t *resp,
|
||||
@@ -503,10 +537,7 @@ list_msg_cb (FpiDeviceSynaptics *self,
|
||||
|
||||
for (int n = 0; n < BMKT_MAX_NUM_TEMPLATES_INTERNAL_FLASH; n++)
|
||||
{
|
||||
GVariant *data = NULL;
|
||||
GVariant *uid = NULL;
|
||||
FpPrint *print;
|
||||
gchar *userid;
|
||||
|
||||
if (get_enroll_templates_resp->templates[n].user_id_len == 0)
|
||||
continue;
|
||||
@@ -519,23 +550,9 @@ list_msg_cb (FpiDeviceSynaptics *self,
|
||||
get_enroll_templates_resp->templates[n].user_id,
|
||||
get_enroll_templates_resp->templates[n].finger_id);
|
||||
|
||||
userid = (gchar *) get_enroll_templates_resp->templates[n].user_id;
|
||||
|
||||
print = fp_print_new (FP_DEVICE (self));
|
||||
uid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
|
||||
get_enroll_templates_resp->templates[n].user_id,
|
||||
get_enroll_templates_resp->templates[n].user_id_len,
|
||||
1);
|
||||
data = g_variant_new ("(y@ay)",
|
||||
get_enroll_templates_resp->templates[n].finger_id,
|
||||
uid);
|
||||
|
||||
fpi_print_set_type (print, FPI_PRINT_RAW);
|
||||
fpi_print_set_device_stored (print, TRUE);
|
||||
g_object_set (print, "fpi-data", data, NULL);
|
||||
g_object_set (print, "description", get_enroll_templates_resp->templates[n].user_id, NULL);
|
||||
|
||||
fpi_print_fill_from_user_id (print, userid);
|
||||
print = create_print (self,
|
||||
get_enroll_templates_resp->templates[n].user_id,
|
||||
get_enroll_templates_resp->templates[n].finger_id);
|
||||
|
||||
g_ptr_array_add (self->list_result, g_object_ref_sink (print));
|
||||
}
|
||||
@@ -649,7 +666,7 @@ verify_msg_cb (FpiDeviceSynaptics *self,
|
||||
fp_info ("Verify was successful! for user: %s finger: %d score: %f",
|
||||
verify_resp->user_id, verify_resp->finger_id, verify_resp->match_result);
|
||||
fpi_device_verify_report (device, FPI_MATCH_SUCCESS, NULL, NULL);
|
||||
fpi_device_verify_complete (device, NULL);
|
||||
verify_complete_after_finger_removal (self);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -725,6 +742,12 @@ identify_msg_cb (FpiDeviceSynaptics *self,
|
||||
fp_info ("Place Finger on the Sensor!");
|
||||
break;
|
||||
|
||||
case BMKT_RSP_SEND_NEXT_USER_ID:
|
||||
{
|
||||
compose_and_send_identify_msg (device);
|
||||
break;
|
||||
}
|
||||
|
||||
case BMKT_RSP_ID_FAIL:
|
||||
if (resp->result == BMKT_SENSOR_STIMULUS_ERROR)
|
||||
{
|
||||
@@ -760,45 +783,47 @@ identify_msg_cb (FpiDeviceSynaptics *self,
|
||||
FpPrint *print = NULL;
|
||||
GPtrArray *prints = NULL;
|
||||
g_autoptr(GVariant) data = NULL;
|
||||
guint8 finger;
|
||||
const guint8 *user_id;
|
||||
gsize user_id_len = 0;
|
||||
gint cnt = 0;
|
||||
gboolean find = FALSE;
|
||||
gboolean found = FALSE;
|
||||
guint index;
|
||||
|
||||
print = create_print (self,
|
||||
resp->response.id_resp.user_id,
|
||||
resp->response.id_resp.finger_id);
|
||||
|
||||
fpi_device_get_identify_data (device, &prints);
|
||||
|
||||
for (cnt = 0; cnt < prints->len; cnt++)
|
||||
{
|
||||
print = g_ptr_array_index (prints, cnt);
|
||||
g_object_get (print, "fpi-data", &data, NULL);
|
||||
g_debug ("data is %p", data);
|
||||
parse_print_data (data, &finger, &user_id, &user_id_len);
|
||||
if (user_id)
|
||||
{
|
||||
if (memcmp (resp->response.id_resp.user_id, user_id, user_id_len) == 0)
|
||||
{
|
||||
find = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(find)
|
||||
{
|
||||
fpi_device_identify_report (device, print, print, NULL);
|
||||
fpi_device_identify_complete (device, NULL);
|
||||
}
|
||||
found = g_ptr_array_find_with_equal_func (prints,
|
||||
print,
|
||||
(GEqualFunc) fp_print_equal,
|
||||
&index);
|
||||
|
||||
if (found)
|
||||
fpi_device_identify_report (device, g_ptr_array_index (prints, index), print, NULL);
|
||||
else
|
||||
{
|
||||
fpi_device_identify_report (device, NULL, NULL, NULL);
|
||||
identify_complete_after_finger_removal (self);
|
||||
}
|
||||
fpi_device_identify_report (device, NULL, print, NULL);
|
||||
|
||||
identify_complete_after_finger_removal (self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
identify (FpDevice *device)
|
||||
{
|
||||
init_identify_msg (device);
|
||||
compose_and_send_identify_msg (device);
|
||||
}
|
||||
|
||||
static void
|
||||
init_identify_msg (FpDevice *device)
|
||||
{
|
||||
FpiDeviceSynaptics *self = FPI_DEVICE_SYNAPTICS (device);
|
||||
|
||||
self->id_idx = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
compose_and_send_identify_msg (FpDevice *device)
|
||||
{
|
||||
FpiDeviceSynaptics *self = FPI_DEVICE_SYNAPTICS (device);
|
||||
FpPrint *print = NULL;
|
||||
@@ -808,28 +833,77 @@ identify (FpDevice *device)
|
||||
guint8 finger;
|
||||
const guint8 *user_id;
|
||||
gsize user_id_len = 0;
|
||||
gint cnt = 0;
|
||||
g_autofree guint8 *payload = NULL;
|
||||
guint8 payload_len = 0;
|
||||
guint8 payloadOffset = 0;
|
||||
|
||||
fpi_device_get_identify_data (device, &prints);
|
||||
|
||||
for (cnt = 0; cnt < prints->len; cnt++)
|
||||
if (prints->len > UINT8_MAX)
|
||||
{
|
||||
print = g_ptr_array_index (prints, cnt);
|
||||
g_object_get (print, "fpi-data", &data, NULL);
|
||||
g_debug ("data is %p", data);
|
||||
if (!parse_print_data (data, &finger, &user_id, &user_id_len))
|
||||
{
|
||||
fpi_device_identify_complete (device,
|
||||
fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID));
|
||||
return;
|
||||
}
|
||||
fpi_device_identify_complete (device,
|
||||
fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID));
|
||||
return;
|
||||
}
|
||||
G_DEBUG_HERE ();
|
||||
if(self->id_idx >= prints->len)
|
||||
{
|
||||
fp_warn ("Device asked for more prints than we are providing.");
|
||||
fpi_device_identify_complete (device,
|
||||
fpi_device_error_new_msg (FP_DEVICE_ERROR_PROTO,
|
||||
"Unexpected index"));
|
||||
return;
|
||||
}
|
||||
print = g_ptr_array_index (prints, self->id_idx);
|
||||
g_object_get (print, "fpi-data", &data, NULL);
|
||||
g_debug ("data is %p", data);
|
||||
if (!parse_print_data (data, &finger, &user_id, &user_id_len))
|
||||
{
|
||||
fpi_device_identify_complete (device,
|
||||
fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID));
|
||||
return;
|
||||
}
|
||||
if(self->id_idx == 0)
|
||||
{
|
||||
/*
|
||||
* Construct payload.
|
||||
* 1st byte is total number of IDs in list.
|
||||
* 2nd byte is number of IDs in list.
|
||||
* 1 byte for each ID length, maximum id length is 100.
|
||||
* user_id_len bytes of each ID
|
||||
*/
|
||||
payload_len = 2 + 1 + user_id_len;
|
||||
payload = g_malloc0 (payload_len);
|
||||
payload[payloadOffset] = prints->len;
|
||||
payloadOffset += 1;
|
||||
payload[payloadOffset] = 1; /* send one id per message */
|
||||
payloadOffset += 1;
|
||||
payload[payloadOffset] = user_id_len;
|
||||
payloadOffset += 1;
|
||||
memcpy (&payload[payloadOffset], user_id, user_id_len);
|
||||
payloadOffset += user_id_len;
|
||||
|
||||
synaptics_sensor_cmd (self, 0, BMKT_CMD_ID_USER, NULL, 0, identify_msg_cb);
|
||||
G_DEBUG_HERE ();
|
||||
|
||||
synaptics_sensor_cmd (self, 0, BMKT_CMD_ID_USER_IN_ORDER, payload, payloadOffset, identify_msg_cb);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* 1st byte is the number of IDs
|
||||
* 1 byte for each ID length
|
||||
* id_length bytes for each ID
|
||||
*/
|
||||
payload_len = 1 + 1 + user_id_len;
|
||||
payload = g_malloc0 (payload_len);
|
||||
payload[payloadOffset] = 1; /* send one id per message */
|
||||
payloadOffset += 1;
|
||||
payload[payloadOffset] = user_id_len;
|
||||
payloadOffset += 1;
|
||||
memcpy (&payload[payloadOffset], user_id, user_id_len);
|
||||
payloadOffset += user_id_len;
|
||||
synaptics_sensor_cmd (self, self->cmd_seq_num, BMKT_CMD_ID_NEXT_USER, payload, payloadOffset, NULL);
|
||||
}
|
||||
self->id_idx++;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
enroll_msg_cb (FpiDeviceSynaptics *self,
|
||||
bmkt_response_t *resp,
|
||||
@@ -1059,6 +1133,44 @@ delete_print (FpDevice *device)
|
||||
synaptics_sensor_cmd (self, 0, BMKT_CMD_DEL_USER_FP, payload, user_id_len + 1, delete_msg_cb);
|
||||
}
|
||||
|
||||
static void
|
||||
prob_msg_cb (FpiDeviceSynaptics *self,
|
||||
bmkt_response_t *resp,
|
||||
GError *error)
|
||||
{
|
||||
GUsbDevice *usb_dev = NULL;
|
||||
g_autofree gchar *serial = NULL;
|
||||
|
||||
usb_dev = fpi_device_get_usb_device (FP_DEVICE (self));
|
||||
|
||||
if (error)
|
||||
{
|
||||
g_usb_device_close (usb_dev, NULL);
|
||||
fpi_device_probe_complete (FP_DEVICE (self), NULL, NULL,
|
||||
fpi_device_error_new_msg (FP_DEVICE_ERROR_GENERAL, "unsupported firmware version"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_strcmp0 (g_getenv ("FP_DEVICE_EMULATION"), "1") == 0)
|
||||
serial = g_strdup ("emulated-device");
|
||||
else
|
||||
serial = g_usb_device_get_string_descriptor (usb_dev,
|
||||
g_usb_device_get_serial_number_index (usb_dev),
|
||||
&error);
|
||||
|
||||
if (resp->result == BMKT_SUCCESS)
|
||||
{
|
||||
g_usb_device_close (usb_dev, NULL);
|
||||
fpi_device_probe_complete (FP_DEVICE (self), serial, NULL, error);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Probe fingerprint sensor failed with %d!", resp->result);
|
||||
g_usb_device_close (usb_dev, NULL);
|
||||
fpi_device_probe_complete (FP_DEVICE (self), serial, NULL, fpi_device_error_new (FP_DEVICE_ERROR_GENERAL));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dev_probe (FpDevice *device)
|
||||
{
|
||||
@@ -1159,40 +1271,7 @@ dev_probe (FpDevice *device)
|
||||
fp_dbg ("Target: %d", self->mis_version.target);
|
||||
fp_dbg ("Product: %d", self->mis_version.product);
|
||||
|
||||
|
||||
/* We need at least firmware version 10.1, and for 10.1 build 2989158 */
|
||||
if (self->mis_version.version_major < 10 ||
|
||||
self->mis_version.version_minor < 1 ||
|
||||
(self->mis_version.version_major == 10 &&
|
||||
self->mis_version.version_minor == 1 &&
|
||||
self->mis_version.build_num < 2989158))
|
||||
{
|
||||
fp_warn ("Firmware version %d.%d with build number %d is unsupported",
|
||||
self->mis_version.version_major,
|
||||
self->mis_version.version_minor,
|
||||
self->mis_version.build_num);
|
||||
|
||||
error = fpi_device_error_new_msg (FP_DEVICE_ERROR_GENERAL,
|
||||
"Unsupported firmware version "
|
||||
"(%d.%d with build number %d)",
|
||||
self->mis_version.version_major,
|
||||
self->mis_version.version_minor,
|
||||
self->mis_version.build_num);
|
||||
goto err_close;
|
||||
}
|
||||
|
||||
/* This is the same as the serial_number from above, hex encoded and somewhat reordered */
|
||||
/* Should we add in more, e.g. the chip revision? */
|
||||
if (g_strcmp0 (g_getenv ("FP_DEVICE_EMULATION"), "1") == 0)
|
||||
serial = g_strdup ("emulated-device");
|
||||
else
|
||||
serial = g_usb_device_get_string_descriptor (usb_dev,
|
||||
g_usb_device_get_serial_number_index (usb_dev),
|
||||
&error);
|
||||
|
||||
g_usb_device_close (usb_dev, NULL);
|
||||
|
||||
fpi_device_probe_complete (device, serial, NULL, error);
|
||||
synaptics_sensor_cmd (self, 0, BMKT_CMD_FPS_INIT, NULL, 0, prob_msg_cb);
|
||||
|
||||
return;
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@ struct _FpiDeviceSynaptics
|
||||
FpiSsm *cmd_ssm;
|
||||
FpiUsbTransfer *cmd_pending_transfer;
|
||||
gboolean cmd_complete_on_removal;
|
||||
guint8 id_idx;
|
||||
|
||||
bmkt_sensor_version_t mis_version;
|
||||
|
||||
|
||||
@@ -815,13 +815,11 @@ dev_close (FpImageDevice *dev)
|
||||
GError *error = NULL;
|
||||
FpDeviceVfs5011 *self = FPI_DEVICE_VFS5011 (dev);
|
||||
|
||||
;
|
||||
|
||||
g_usb_device_release_interface (fpi_device_get_usb_device (FP_DEVICE (dev)),
|
||||
0, 0, &error);
|
||||
|
||||
g_free (self->capture_buffer);
|
||||
g_slist_free_full (self->rows, g_free);
|
||||
g_slist_free_full (g_steal_pointer (&self->rows), g_free);
|
||||
|
||||
fpi_image_device_close_complete (dev, error);
|
||||
}
|
||||
|
||||
@@ -792,7 +792,7 @@ fp_device_close_finish (FpDevice *device,
|
||||
* in. The driver may make use of this metadata, when e.g. storing the print on
|
||||
* device memory. It is undefined whether this print is filled in by the driver
|
||||
* and returned, or whether the driver will return a newly created print after
|
||||
* enrollment successed.
|
||||
* enrollment succeeded.
|
||||
*/
|
||||
void
|
||||
fp_device_enroll (FpDevice *device,
|
||||
|
||||
@@ -760,7 +760,7 @@ fp_device_task_return_in_idle_cb (gpointer user_data)
|
||||
g_task_return_error (task, fpi_device_error_new (FP_DEVICE_ERROR_REMOVED));
|
||||
|
||||
/* NOTE: The removed signal will be emitted from the GTask
|
||||
* notify::completed if that is neccessary. */
|
||||
* notify::completed if that is necessary. */
|
||||
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
* upon success (or fails).
|
||||
*
|
||||
* Your completion callback should examine the return value of
|
||||
* fpi_ssm_get_error() in ordater to determine whether the #FpiSsm completed or
|
||||
* fpi_ssm_get_error() in order to determine whether the #FpiSsm completed or
|
||||
* failed. An error code of zero indicates successful completion.
|
||||
*/
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
project('libfprint', [ 'c', 'cpp' ],
|
||||
version: '1.90.6+tod1',
|
||||
version: '1.90.7',
|
||||
license: 'LGPLv2.1+',
|
||||
default_options: [
|
||||
'buildtype=debugoptimized',
|
||||
|
||||
+6
-1
@@ -27,7 +27,7 @@ A new 'capture' test is created by means of `capture.py` script:
|
||||
- `export LD_PRELOAD=<meson-build-dir>/libfprint/libfprint-2.so`
|
||||
- `export GI_TYPELIB_PATH=<meson-build-dir>/libfprint`
|
||||
|
||||
Also, sometimes the driver must be adopted to the emulated environment
|
||||
Also, sometimes the driver must be adapted to the emulated environment
|
||||
(mainly if it uses random numbers, see `synaptics.c` for an example).
|
||||
Set the following environment variable to enable this adaptation:
|
||||
- `export FP_DEVICE_EMULATION=1`
|
||||
@@ -41,6 +41,11 @@ A new 'capture' test is created by means of `capture.py` script:
|
||||
The following USB device is used in the example above:
|
||||
`/dev/bus/usb/001/005`.
|
||||
|
||||
For the following commands, it is assumed that the user that's
|
||||
running the commands has full access to the device node, whether
|
||||
by running the commands as `root`, or changing the permissions for
|
||||
that device node.
|
||||
|
||||
4. Record information about this device:
|
||||
|
||||
`umockdev-record /dev/bus/usb/001/005 > DRIVER/device`
|
||||
|
||||
@@ -20,6 +20,7 @@ d.open_sync()
|
||||
template = FPrint.Print.new(d)
|
||||
|
||||
def enroll_progress(*args):
|
||||
assert d.get_finger_status() == FPrint.FingerStatusFlags.NEEDED
|
||||
print('enroll progress: ' + str(args))
|
||||
|
||||
def identify_done(dev, res):
|
||||
@@ -31,7 +32,9 @@ def identify_done(dev, res):
|
||||
|
||||
# List, enroll, list, verify, identify, delete
|
||||
print("enrolling")
|
||||
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")
|
||||
|
||||
print("listing")
|
||||
@@ -40,7 +43,9 @@ print("listing done")
|
||||
assert len(stored) == 1
|
||||
assert stored[0].equal(p)
|
||||
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("verify done")
|
||||
del p
|
||||
assert verify_res == True
|
||||
|
||||
@@ -4,14 +4,16 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 01
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 40 38 0 00009C37FE5C669C2D000A01014101C10000D11BB7134A090FA1000000000100000000000003
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE011100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE01130100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE025400
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE021100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02130100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE03512000014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE035400
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
@@ -20,13 +22,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0255010C
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0355010C
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
@@ -35,19 +37,19 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550119
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550119
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550125
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550125
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -56,13 +58,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550125
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550125
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -71,13 +73,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550132
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550132
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -86,13 +88,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0255013E
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0355013E
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -101,13 +103,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0255013E
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0355013E
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -116,13 +118,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0255014B
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE0355014B
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
@@ -131,7 +133,7 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
@@ -140,13 +142,13 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550157
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550157
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE026000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE036000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
@@ -155,21 +157,21 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE02550164
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE03550164
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE02591F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE03591F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE037100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 41 0 0000FE03752301012007014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE037200
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE037600
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 35 35 0 A7FE04651E4650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE046600
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE047100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 41 0 0000FE04752301012007014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE047200
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE047600
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 35 35 0 A7FE05651E4650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE056600
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE046000
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE056000
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
||||
@@ -178,9 +180,9 @@ USBDEVFS_REAPURBNDELAY 0 3 1 0 0 35 35 0 A7FE04651E4650312D30303030303030302D302
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 39 0 0000FE0468214F2B014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 36 36 0 A7FE05811F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE05831F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE06A100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE06A200
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 39 0 0000FE0568214F2B014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 36 36 0 A7FE06811F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE06831F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE07A100
|
||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE07A200
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ test_context_remove_device_opening (void)
|
||||
g_assert_true (removed);
|
||||
g_assert_null (tctx->user_data);
|
||||
|
||||
/* Running the mainloop now will cause the open to *succeed* dispite removal! */
|
||||
/* Running the mainloop now will cause the open to *succeed* despite removal! */
|
||||
while (!open_done)
|
||||
g_main_context_iteration (NULL, TRUE);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user