mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2026-06-11 02:28:05 +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
|
This file lists notable changes in each release. For the full history of all
|
||||||
changes, see ChangeLog.
|
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
|
2020-12-01: v1.90.6 release
|
||||||
|
|
||||||
This release is primarily a bugfix release for some older issues.
|
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
|
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 by calling the
|
USB readers. The list of readers used in that file is generated using the gbp
|
||||||
following awk script:
|
import hook when `gbp import-orig` (via --uscan or with a tarball) is used.
|
||||||
|
|
||||||
/plugdev/ {
|
Alternatively it can be called manually by using:
|
||||||
printf ("\tudevadm trigger --action=add " )
|
|
||||||
for (i=1;i<=NF; i++){
|
GBP_SOURCES_DIR=. debian/update-udev-triggers.sh
|
||||||
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")
|
|
||||||
}
|
|
||||||
|
|
||||||
When preparing a new upstream release, this script should be called against the
|
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
|
libfprint (1:1.90.6+tod1-0ubuntu2) hirsute; urgency=medium
|
||||||
|
|
||||||
* d/p/meson-Do-not-support-drivers-known-to-fail-in-Big-Endian-.patch:
|
* 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
|
-- 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
|
libfprint (1:1.90.5+tod1-0ubuntu1) hirsute; urgency=medium
|
||||||
|
|
||||||
* New upstream release:
|
* 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
|
-- 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
|
libfprint (1:1.90.3+tod1-0ubuntu3) hirsute; urgency=medium
|
||||||
|
|
||||||
* debian/patches:
|
* 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
|
-- 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
|
libfprint (1:1.90.2+tod1-0ubuntu1) groovy; urgency=medium
|
||||||
|
|
||||||
* New upstream release
|
* 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
|
libfprint (1:1.90.1-2) experimental; urgency=medium
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
[ Laurent Bigonville ]
|
[ Laurent Bigonville ]
|
||||||
* debian/control: Add libcairo-dev and python3 to build-dependencies as they
|
* debian/control: Add libcairo-dev and python3 to build-dependencies as they
|
||||||
are explicitly required for some tests
|
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
|
multimaint-merge = True
|
||||||
|
|
||||||
[import-orig]
|
[import-orig]
|
||||||
postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit
|
postimport = debian/gbp-post-import-hook.sh
|
||||||
|
|
||||||
[pq]
|
[pq]
|
||||||
patch-numbers = False
|
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.*
|
usr/lib/${DEB_HOST_MULTIARCH}/libfprint-[0-9].so.*
|
||||||
|
|||||||
Vendored
+78
-3
@@ -5,10 +5,12 @@ set -e
|
|||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|
||||||
if [ "$1" = "configure" -o "$1" = "upgrade" ] && command -V udevadm >/dev/null 2>&1; then
|
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>
|
# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683863#27>
|
||||||
# NOTA BENE: after the DEBHELPER section since dh_installudev
|
# NOTA BENE: after the DEBHELPER section since dh_installudev
|
||||||
# adds stuff there
|
# 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=2016
|
||||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2020
|
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=2020
|
||||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0010
|
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=1c7a --attr-match=idProduct=0603
|
||||||
udevadm trigger --action=add --attr-match=idVendor=061a --attr-match=idProduct=0110
|
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=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=0903
|
||||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0907
|
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0907
|
||||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c01
|
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=0c32
|
||||||
udevadm trigger --action=add --attr-match=idVendor=04f3 --attr-match=idProduct=0c33
|
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=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=00bc
|
||||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00bd
|
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00bd
|
||||||
udevadm trigger --action=add --attr-match=idVendor=045e --attr-match=idProduct=00ca
|
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=3001
|
||||||
udevadm trigger --action=add --attr-match=idVendor=147e --attr-match=idProduct=1000
|
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=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=0090
|
||||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0091
|
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=0094
|
||||||
udevadm trigger --action=add --attr-match=idVendor=138a --attr-match=idProduct=0097
|
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
|
fi
|
||||||
|
|
||||||
exit 0
|
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
|
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)
|
BUILDDIR = $(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)
|
||||||
|
|
||||||
# Configuration arguments
|
# Configuration arguments
|
||||||
CONFIG_ARGS = -Dudev_rules_dir=/lib/udev/rules.d -Dgtk-examples=false \
|
CONFIG_ARGS = \
|
||||||
-Ddrivers=all
|
-Dudev_hwdb_dir=/lib/udev/hwdb.d \
|
||||||
|
-Ddrivers=all \
|
||||||
|
-Dgtk-examples=false
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@ --with gir
|
dh $@ --with gir
|
||||||
@@ -14,12 +16,5 @@ CONFIG_ARGS = -Dudev_rules_dir=/lib/udev/rules.d -Dgtk-examples=false \
|
|||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
dh_auto_configure -- $(CONFIG_ARGS)
|
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:
|
override_dh_auto_test:
|
||||||
dh_auto_test -- -C $(BUILDDIR) --timeout-multiplier 5
|
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;
|
pgxfp_sensor_cfg_t sensorcfg;
|
||||||
gint enroll_stage;
|
gint enroll_stage;
|
||||||
gint max_enroll_stage;
|
gint max_enroll_stage;
|
||||||
|
gint max_stored_prints;
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
GPtrArray *list_result;
|
GPtrArray *list_result;
|
||||||
guint8 template_id[TEMPLATE_ID_SIZE];
|
guint8 template_id[TEMPLATE_ID_SIZE];
|
||||||
@@ -330,7 +331,9 @@ fp_verify_capture_cb (FpiDeviceGoodixMoc *self,
|
|||||||
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
||||||
return;
|
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)
|
if (resp->capture_data_resp.img_quality == 0)
|
||||||
{
|
{
|
||||||
fpi_ssm_mark_failed (self->task_ssm,
|
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_ssm_mark_failed (self->task_ssm,
|
||||||
fpi_device_retry_new (FP_DEVICE_RETRY_CENTER_FINGER));
|
fpi_device_retry_new (FP_DEVICE_RETRY_CENTER_FINGER));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
fpi_ssm_next_state (self->task_ssm);
|
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))
|
switch (fpi_ssm_get_cur_state (ssm))
|
||||||
{
|
{
|
||||||
case FP_VERIFY_CAPTURE:
|
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,
|
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||||
true,
|
true,
|
||||||
(const guint8 *) ¶m,
|
(const guint8 *) ¶m,
|
||||||
@@ -560,6 +567,13 @@ fp_enroll_enum_cb (FpiDeviceGoodixMoc *self,
|
|||||||
resp->result));
|
resp->result));
|
||||||
return;
|
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);
|
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);
|
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||||
return;
|
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]) ||
|
if ((resp->capture_data_resp.img_quality < self->sensorcfg->config[4]) ||
|
||||||
(resp->capture_data_resp.img_coverage < self->sensorcfg->config[5]))
|
(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);
|
fpi_ssm_mark_failed (self->task_ssm, error);
|
||||||
return;
|
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)
|
if (resp->finger_status.status == GX_ERROR_WAIT_FINGER_UP_TIMEOUT)
|
||||||
{
|
{
|
||||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_WAIT_FINGER_UP);
|
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"));
|
"Switch finger mode failed"));
|
||||||
return;
|
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)
|
if (self->enroll_stage < self->max_enroll_stage)
|
||||||
{
|
{
|
||||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
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;
|
break;
|
||||||
|
|
||||||
case FP_ENROLL_CAPTURE:
|
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,
|
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||||
true,
|
true,
|
||||||
(const guint8 *) &dummy,
|
(const guint8 *) &dummy,
|
||||||
@@ -975,7 +997,7 @@ fp_init_config_cb (FpiDeviceGoodixMoc *self,
|
|||||||
fpi_ssm_mark_failed (self->task_ssm, error);
|
fpi_ssm_mark_failed (self->task_ssm, error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
self->max_stored_prints = resp->finger_config.max_stored_prints;
|
||||||
fpi_ssm_next_state (self->task_ssm);
|
fpi_ssm_next_state (self->task_ssm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1259,6 +1281,8 @@ gx_fp_init (FpDevice *device)
|
|||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
self->max_stored_prints = FP_MAX_FINGERNUM;
|
||||||
|
|
||||||
self->cancellable = g_cancellable_new ();
|
self->cancellable = g_cancellable_new ();
|
||||||
|
|
||||||
self->sensorcfg = g_new0 (gxfp_sensor_cfg_t, 1);
|
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 = 0x5840, },
|
||||||
{ .vid = 0x27c6, .pid = 0x6496, },
|
{ .vid = 0x27c6, .pid = 0x6496, },
|
||||||
{ .vid = 0x27c6, .pid = 0x60A2, },
|
{ .vid = 0x27c6, .pid = 0x60A2, },
|
||||||
|
{ .vid = 0x27c6, .pid = 0x63AC, },
|
||||||
|
{ .vid = 0x27c6, .pid = 0x639C, },
|
||||||
{ .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */
|
{ .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;
|
break;
|
||||||
|
|
||||||
case MOC_CMD0_UPDATE_CONFIG:
|
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_COMMITENROLLMENT:
|
||||||
case MOC_CMD0_DELETETEMPLATE:
|
case MOC_CMD0_DELETETEMPLATE:
|
||||||
break;
|
break;
|
||||||
@@ -411,7 +417,7 @@ gx_proto_init_sensor_config (pgxfp_sensor_cfg_t pconfig)
|
|||||||
memset (pconfig, 0, sizeof (*pconfig));
|
memset (pconfig, 0, sizeof (*pconfig));
|
||||||
|
|
||||||
//NOTICE: Do not change any value!
|
//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;
|
pconfig->reserved[0] = 1;
|
||||||
|
|
||||||
gx_proto_crc32_calc ((uint8_t *) pconfig, sizeof (*pconfig) - PACKAGE_CRC_SIZE, (uint8_t *) &crc32_calc);
|
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_CRC_SIZE (4)
|
||||||
#define PACKAGE_HEADER_SIZE (8)
|
#define PACKAGE_HEADER_SIZE (8)
|
||||||
|
|
||||||
#define FP_MAX_FINGERNUM (10)
|
#define FP_MAX_FINGERNUM (20)
|
||||||
|
|
||||||
#define TEMPLATE_ID_SIZE (32)
|
#define TEMPLATE_ID_SIZE (32)
|
||||||
|
|
||||||
@@ -167,6 +167,11 @@ typedef struct _fp_finger_status
|
|||||||
uint8_t status;
|
uint8_t status;
|
||||||
} fp_finger_status_t, *pfp_finger_status_t;
|
} 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
|
typedef struct _fp_cmd_response
|
||||||
{
|
{
|
||||||
@@ -183,6 +188,7 @@ typedef struct _fp_cmd_response
|
|||||||
gxfp_enum_fingerlist_t finger_list_resp;
|
gxfp_enum_fingerlist_t finger_list_resp;
|
||||||
gxfp_version_info_t version_info;
|
gxfp_version_info_t version_info;
|
||||||
fp_finger_status_t finger_status;
|
fp_finger_status_t finger_status;
|
||||||
|
fp_finger_config_t finger_config;
|
||||||
};
|
};
|
||||||
} gxfp_cmd_response_t, *pgxfp_cmd_response_t;
|
} gxfp_cmd_response_t, *pgxfp_cmd_response_t;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,9 @@
|
|||||||
|
|
||||||
G_DEFINE_TYPE (FpiDeviceSynaptics, fpi_device_synaptics, FP_TYPE_DEVICE)
|
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[] = {
|
static const FpIdEntry id_table[] = {
|
||||||
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xBD, },
|
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xBD, },
|
||||||
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xE9, },
|
{ .vid = SYNAPTICS_VENDOR_ID, .pid = 0xE9, },
|
||||||
@@ -121,7 +124,7 @@ cmd_receive_cb (FpiUsbTransfer *transfer,
|
|||||||
{
|
{
|
||||||
if (resp.response_id == BMKT_RSP_CANCEL_OP_OK)
|
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,
|
fpi_ssm_mark_failed (transfer->ssm,
|
||||||
g_error_new_literal (G_IO_ERROR,
|
g_error_new_literal (G_IO_ERROR,
|
||||||
G_IO_ERROR_CANCELLED,
|
G_IO_ERROR_CANCELLED,
|
||||||
@@ -451,6 +454,37 @@ parse_print_data (GVariant *data,
|
|||||||
return TRUE;
|
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
|
static void
|
||||||
list_msg_cb (FpiDeviceSynaptics *self,
|
list_msg_cb (FpiDeviceSynaptics *self,
|
||||||
bmkt_response_t *resp,
|
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++)
|
for (int n = 0; n < BMKT_MAX_NUM_TEMPLATES_INTERNAL_FLASH; n++)
|
||||||
{
|
{
|
||||||
GVariant *data = NULL;
|
|
||||||
GVariant *uid = NULL;
|
|
||||||
FpPrint *print;
|
FpPrint *print;
|
||||||
gchar *userid;
|
|
||||||
|
|
||||||
if (get_enroll_templates_resp->templates[n].user_id_len == 0)
|
if (get_enroll_templates_resp->templates[n].user_id_len == 0)
|
||||||
continue;
|
continue;
|
||||||
@@ -519,23 +550,9 @@ list_msg_cb (FpiDeviceSynaptics *self,
|
|||||||
get_enroll_templates_resp->templates[n].user_id,
|
get_enroll_templates_resp->templates[n].user_id,
|
||||||
get_enroll_templates_resp->templates[n].finger_id);
|
get_enroll_templates_resp->templates[n].finger_id);
|
||||||
|
|
||||||
userid = (gchar *) get_enroll_templates_resp->templates[n].user_id;
|
print = create_print (self,
|
||||||
|
get_enroll_templates_resp->templates[n].user_id,
|
||||||
print = fp_print_new (FP_DEVICE (self));
|
get_enroll_templates_resp->templates[n].finger_id);
|
||||||
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);
|
|
||||||
|
|
||||||
g_ptr_array_add (self->list_result, g_object_ref_sink (print));
|
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",
|
fp_info ("Verify was successful! for user: %s finger: %d score: %f",
|
||||||
verify_resp->user_id, verify_resp->finger_id, verify_resp->match_result);
|
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_report (device, FPI_MATCH_SUCCESS, NULL, NULL);
|
||||||
fpi_device_verify_complete (device, NULL);
|
verify_complete_after_finger_removal (self);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -725,6 +742,12 @@ identify_msg_cb (FpiDeviceSynaptics *self,
|
|||||||
fp_info ("Place Finger on the Sensor!");
|
fp_info ("Place Finger on the Sensor!");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BMKT_RSP_SEND_NEXT_USER_ID:
|
||||||
|
{
|
||||||
|
compose_and_send_identify_msg (device);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case BMKT_RSP_ID_FAIL:
|
case BMKT_RSP_ID_FAIL:
|
||||||
if (resp->result == BMKT_SENSOR_STIMULUS_ERROR)
|
if (resp->result == BMKT_SENSOR_STIMULUS_ERROR)
|
||||||
{
|
{
|
||||||
@@ -760,45 +783,47 @@ identify_msg_cb (FpiDeviceSynaptics *self,
|
|||||||
FpPrint *print = NULL;
|
FpPrint *print = NULL;
|
||||||
GPtrArray *prints = NULL;
|
GPtrArray *prints = NULL;
|
||||||
g_autoptr(GVariant) data = NULL;
|
g_autoptr(GVariant) data = NULL;
|
||||||
guint8 finger;
|
gboolean found = FALSE;
|
||||||
const guint8 *user_id;
|
guint index;
|
||||||
gsize user_id_len = 0;
|
|
||||||
gint cnt = 0;
|
print = create_print (self,
|
||||||
gboolean find = FALSE;
|
resp->response.id_resp.user_id,
|
||||||
|
resp->response.id_resp.finger_id);
|
||||||
|
|
||||||
fpi_device_get_identify_data (device, &prints);
|
fpi_device_get_identify_data (device, &prints);
|
||||||
|
|
||||||
for (cnt = 0; cnt < prints->len; cnt++)
|
found = g_ptr_array_find_with_equal_func (prints,
|
||||||
{
|
print,
|
||||||
print = g_ptr_array_index (prints, cnt);
|
(GEqualFunc) fp_print_equal,
|
||||||
g_object_get (print, "fpi-data", &data, NULL);
|
&index);
|
||||||
g_debug ("data is %p", data);
|
|
||||||
parse_print_data (data, &finger, &user_id, &user_id_len);
|
if (found)
|
||||||
if (user_id)
|
fpi_device_identify_report (device, g_ptr_array_index (prints, index), print, NULL);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
fpi_device_identify_report (device, NULL, print, NULL);
|
||||||
fpi_device_identify_report (device, NULL, NULL, NULL);
|
|
||||||
identify_complete_after_finger_removal (self);
|
identify_complete_after_finger_removal (self);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
identify (FpDevice *device)
|
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);
|
FpiDeviceSynaptics *self = FPI_DEVICE_SYNAPTICS (device);
|
||||||
FpPrint *print = NULL;
|
FpPrint *print = NULL;
|
||||||
@@ -808,28 +833,77 @@ identify (FpDevice *device)
|
|||||||
guint8 finger;
|
guint8 finger;
|
||||||
const guint8 *user_id;
|
const guint8 *user_id;
|
||||||
gsize user_id_len = 0;
|
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);
|
fpi_device_get_identify_data (device, &prints);
|
||||||
|
if (prints->len > UINT8_MAX)
|
||||||
for (cnt = 0; cnt < prints->len; cnt++)
|
|
||||||
{
|
{
|
||||||
print = g_ptr_array_index (prints, cnt);
|
fpi_device_identify_complete (device,
|
||||||
g_object_get (print, "fpi-data", &data, NULL);
|
fpi_device_error_new (FP_DEVICE_ERROR_DATA_INVALID));
|
||||||
g_debug ("data is %p", data);
|
return;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
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
|
static void
|
||||||
enroll_msg_cb (FpiDeviceSynaptics *self,
|
enroll_msg_cb (FpiDeviceSynaptics *self,
|
||||||
bmkt_response_t *resp,
|
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);
|
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
|
static void
|
||||||
dev_probe (FpDevice *device)
|
dev_probe (FpDevice *device)
|
||||||
{
|
{
|
||||||
@@ -1159,40 +1271,7 @@ dev_probe (FpDevice *device)
|
|||||||
fp_dbg ("Target: %d", self->mis_version.target);
|
fp_dbg ("Target: %d", self->mis_version.target);
|
||||||
fp_dbg ("Product: %d", self->mis_version.product);
|
fp_dbg ("Product: %d", self->mis_version.product);
|
||||||
|
|
||||||
|
synaptics_sensor_cmd (self, 0, BMKT_CMD_FPS_INIT, NULL, 0, prob_msg_cb);
|
||||||
/* 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);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ struct _FpiDeviceSynaptics
|
|||||||
FpiSsm *cmd_ssm;
|
FpiSsm *cmd_ssm;
|
||||||
FpiUsbTransfer *cmd_pending_transfer;
|
FpiUsbTransfer *cmd_pending_transfer;
|
||||||
gboolean cmd_complete_on_removal;
|
gboolean cmd_complete_on_removal;
|
||||||
|
guint8 id_idx;
|
||||||
|
|
||||||
bmkt_sensor_version_t mis_version;
|
bmkt_sensor_version_t mis_version;
|
||||||
|
|
||||||
|
|||||||
@@ -815,13 +815,11 @@ dev_close (FpImageDevice *dev)
|
|||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
FpDeviceVfs5011 *self = FPI_DEVICE_VFS5011 (dev);
|
FpDeviceVfs5011 *self = FPI_DEVICE_VFS5011 (dev);
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
g_usb_device_release_interface (fpi_device_get_usb_device (FP_DEVICE (dev)),
|
g_usb_device_release_interface (fpi_device_get_usb_device (FP_DEVICE (dev)),
|
||||||
0, 0, &error);
|
0, 0, &error);
|
||||||
|
|
||||||
g_free (self->capture_buffer);
|
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);
|
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
|
* 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
|
* 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
|
* and returned, or whether the driver will return a newly created print after
|
||||||
* enrollment successed.
|
* enrollment succeeded.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
fp_device_enroll (FpDevice *device,
|
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));
|
g_task_return_error (task, fpi_device_error_new (FP_DEVICE_ERROR_REMOVED));
|
||||||
|
|
||||||
/* NOTE: The removed signal will be emitted from the GTask
|
/* 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;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@
|
|||||||
* upon success (or fails).
|
* upon success (or fails).
|
||||||
*
|
*
|
||||||
* Your completion callback should examine the return value of
|
* 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.
|
* failed. An error code of zero indicates successful completion.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
project('libfprint', [ 'c', 'cpp' ],
|
project('libfprint', [ 'c', 'cpp' ],
|
||||||
version: '1.90.6+tod1',
|
version: '1.90.7',
|
||||||
license: 'LGPLv2.1+',
|
license: 'LGPLv2.1+',
|
||||||
default_options: [
|
default_options: [
|
||||||
'buildtype=debugoptimized',
|
'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 LD_PRELOAD=<meson-build-dir>/libfprint/libfprint-2.so`
|
||||||
- `export GI_TYPELIB_PATH=<meson-build-dir>/libfprint`
|
- `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).
|
(mainly if it uses random numbers, see `synaptics.c` for an example).
|
||||||
Set the following environment variable to enable this adaptation:
|
Set the following environment variable to enable this adaptation:
|
||||||
- `export FP_DEVICE_EMULATION=1`
|
- `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:
|
The following USB device is used in the example above:
|
||||||
`/dev/bus/usb/001/005`.
|
`/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:
|
4. Record information about this device:
|
||||||
|
|
||||||
`umockdev-record /dev/bus/usb/001/005 > DRIVER/device`
|
`umockdev-record /dev/bus/usb/001/005 > DRIVER/device`
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ d.open_sync()
|
|||||||
template = FPrint.Print.new(d)
|
template = FPrint.Print.new(d)
|
||||||
|
|
||||||
def enroll_progress(*args):
|
def enroll_progress(*args):
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NEEDED
|
||||||
print('enroll progress: ' + str(args))
|
print('enroll progress: ' + str(args))
|
||||||
|
|
||||||
def identify_done(dev, res):
|
def identify_done(dev, res):
|
||||||
@@ -31,7 +32,9 @@ def identify_done(dev, res):
|
|||||||
|
|
||||||
# List, enroll, list, verify, identify, delete
|
# List, enroll, list, verify, identify, delete
|
||||||
print("enrolling")
|
print("enrolling")
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
p = d.enroll_sync(template, None, enroll_progress, None)
|
p = d.enroll_sync(template, None, enroll_progress, None)
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
print("enroll done")
|
print("enroll done")
|
||||||
|
|
||||||
print("listing")
|
print("listing")
|
||||||
@@ -40,7 +43,9 @@ print("listing done")
|
|||||||
assert len(stored) == 1
|
assert len(stored) == 1
|
||||||
assert stored[0].equal(p)
|
assert stored[0].equal(p)
|
||||||
print("verifying")
|
print("verifying")
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
verify_res, verify_print = d.verify_sync(p)
|
verify_res, verify_print = d.verify_sync(p)
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
print("verify done")
|
print("verify done")
|
||||||
del p
|
del p
|
||||||
assert verify_res == True
|
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 129 0 0 40 38 0 00009C37FE5C669C2D000A01014101C10000D11BB7134A090FA1000000000100000000000003
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE011100
|
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 129 0 0 266 7 0 0000FE01130100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 37 37 0 A7FE02512000014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE021100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE025400
|
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 1 131 0 0 7 7 0 06000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 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 3 129 0 0 266 7 0 0000FE00910100
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
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 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 1 131 0 0 7 7 0 06000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 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 3 129 0 0 266 7 0 0000FE00910100
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
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 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 1 131 0 0 7 7 0 06000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000000
|
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 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 1 131 0 0 7 7 0 05000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910100
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 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 3 129 0 0 266 7 0 0000FE00910100
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000000
|
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 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 1 131 0 0 7 7 0 06000000000000
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 3 129 0 0 266 7 0 0000FE00910101
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 06000000000100
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 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 3 129 0 0 266 7 0 0000FE00910100
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000100
|
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 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 1 131 0 0 7 7 0 05000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 7 0 0000FE00910101
|
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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE037100
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE047100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 41 0 0000FE03752301012007014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 41 0 0000FE04752301012007014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE037200
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE047200
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE037600
|
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE047600
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 35 35 0 A7FE04651E4650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 35 35 0 A7FE05651E4650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE046600
|
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 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 1 131 0 0 7 7 0 06000000000100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 1 1 0 A8
|
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 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 3 129 0 0 266 7 0 0000FE00910100
|
||||||
USBDEVFS_REAPURBNDELAY 0 1 131 0 0 7 7 0 05000000000100
|
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 1 0 0 1 1 0 A8
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 39 0 0000FE0468214F2B014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 39 0 0000FE0568214F2B014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 36 36 0 A7FE05811F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 36 36 0 A7FE06811F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE05831F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 37 0 0000FE06831F014650312D30303030303030302D302D30303030303030302D6E6F626F6479
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE06A100
|
USBDEVFS_REAPURBNDELAY 0 3 1 0 0 5 5 0 A7FE07A100
|
||||||
USBDEVFS_REAPURBNDELAY 0 3 129 0 0 266 6 0 0000FE06A200
|
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_true (removed);
|
||||||
g_assert_null (tctx->user_data);
|
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)
|
while (!open_done)
|
||||||
g_main_context_iteration (NULL, TRUE);
|
g_main_context_iteration (NULL, TRUE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user