Commit Graph

1171 Commits

Author SHA1 Message Date
Marco Trevisan (Treviño) 2f3d9240b7 tod-symbols: Define other macros that could be useful in future 2022-10-13 19:46:26 +02:00
Marco Trevisan (Treviño) c36310fed1 tod: Force libfprint-tod to be a shared library and link whole with private
Also unset the private library if set and make libfprint to only link
with the tod one.

This fixes the issue we had with wrong symbols shared by multiple
libraries
2022-10-13 19:45:17 +02:00
Marco Trevisan (Treviño) c04d15bbf1 fp-device: Move FpDevice private functions to public library
This these functions are not really needed by anything else than
FpDevice, so move them back to the cpp file, so that we don't expose
them in the private library, given that we don't need them
2022-10-13 19:42:50 +02:00
Marco Trevisan (Treviño) 8e7e5bf710 tests: Add tests to ensure that we don't duplicate symbols in libraries
We have an issue where some symbols are exposed by both the tod library
and the public one, and this may lead to big issues like GType's being
defined multiple times.

So add a test checking whether this is working

See: 3v1n0/libfprint#1
2022-10-13 19:41:39 +02:00
Marco Trevisan (Treviño) 4824380f79 Revert "fpi-device: Avoid using device action strings"
This reverts commit fbffb62ecb.
2022-10-13 14:09:25 +02:00
Marco Trevisan (Treviño) fbffb62ecb fpi-device: Avoid using device action strings
It may cause initializing a type twice in some cases, and thus some
hard-locking, let's just avoid it since we don't care about full debug
strings here.
2022-07-17 17:34:23 +02:00
Marco Trevisan (Treviño) 0d5c897b3d tod: Add wrapper for goodix-tod not handling identification with no prints
Newer fprintd supports duplicate-detection, this implies sending to the
device an empty prints gallery, expecting the device to give us a
matched print against its storage.

In case the device has no storage we're doing this anyway, but goodix
doesn't handle this properly, so let's just ignore the case if no prints
are passed.
2022-07-17 17:34:23 +02:00
Marco Trevisan (Treviño) 8c5a4e3b41 libfprint-tod.ver: Use explicit versioning for old symbols
Given that we won't go in the past, it's better to be explicit in
using versions for symbols so that all new symbols will be added to the
latest listed release, while others won't be moved from where they are.
2022-02-15 13:07:35 +01:00
Marco Trevisan (Treviño) 31f8d8c067 libfprint-tod.ver: Add new APIs to 1.94 symbols 2022-02-15 13:07:35 +01:00
Marco Trevisan (Treviño) f3187ad9f4 tod: Ensure we install tod-macros.h header 2022-02-15 13:06:35 +01:00
Marco Trevisan (Treviño) 6b894dbd5c Merge tag 'v1.94.3' into tod
2021-11-02: v1.94.3 release

Highlights:
 * Ensure idle mainloop before completing enumeration (fprintd#119)
 * It is now possible to extend already enrolled prints
 * elanspi: Fix timeout error with some hardware (#438)
 * elanspi: Fix cancellation issues
 * goodixmoc: Return matching device print; fixes duplicate checking (#444)
 * goodixmoc: Support clearing the storage (usually unused)

Git-EVTag-v0-SHA512: 779b560b97bc7da5972d9a4854be5b74f8d310a22ac782fde50fa02c869cf93cc11254d75519076ac8ee59f81c8a9fc0466030eb249519827343ab84eb45e640
2022-02-14 17:03:21 +01:00
Benjamin Berg 6f5ba3cbb5 udev-hwdb: Update unsupported device list 2022-02-11 19:36:22 +01:00
Devyn Cairns 3568051686 goodixmoc: support for clear_storage
The internal storage of this device can get messed up by other operating
systems, so it's handy to be able to clear it.

I'm not 100% sure whether the commands I've sent to the device are
exactly what is supposed to be used (just a guess), but it did seem to
work, and it even fixed another issue I had.
2022-02-11 18:08:53 +00:00
Benjamin Berg 9ce6ed4164 goodixmoc: Report recognized print after a match failure
The API should return the recognized print, even if none of the prints
given in the gallery (or the one passed to verify) matched. Without this
the garbage-collection of left-over prints does not work, causing issues
after reinstall.

Fixes: #444
2022-02-03 14:49:49 +01:00
Benjamin Berg e0fd178bec goodixmoc: Log which the ID that produced the duplicate 2022-02-03 14:49:49 +01:00
Benjamin Berg ae5696a9bb goodixmoc: Change error message for corrupted headers
Otherwise you can't tell from the log whether parsing the body or header
failed.
2022-02-03 14:49:49 +01:00
Benjamin Berg 038c7108a6 goodixmoc: Further template parsing fixes
In commit 5c28654d9 ("goodixmoc: Fix print template parsing") the length
check for the verify and duplicate check responses by requiring two
extra bytes at the end of the message.

There were also issues in other places where the length was not checked
correctly, including a scenario that could cause a read beyond the end
of the buffer.

Related: #444
2022-02-03 14:49:44 +01:00
Aris Lin eb1013cdb6 synaptics: Remove PID 0xC9 2022-01-28 19:25:24 +08:00
mincrmatt12 5beac0ded7 elanspi: Try to avoid cancellation problems 2021-12-23 05:35:38 +00:00
mincrmatt12 7565562903 elanspi: Adjust register tables (fixes #438)
New values taken from a newer version of the official driver.
2021-12-22 00:20:57 -05:00
Dmitrii Shcherbakov 999bca076c Allow FpPrint data to be extended on enrollment.
* Allow FPI_PRINT_NBIS to be extended rather than overridden if a user
  supplies an existing FpPrint template with data;
* Prints will only be extended if a device has the required feature.
  For image-based devices this feature is added by default since they
  typically do not have storage (this can be overridden at the child
  class level).

Extending an existing FpPrint requires passing a template print with
existing data during the enrollment process. This is done because the
caller is responsible for maintaining the fingerprint database and doing
the necessary deserialization operations if needed. The existing
example program is updated to show how to do that.
2021-12-16 12:53:41 +01:00
Benjamin Berg c3ef68fa5e context: Ensure mainloop is idle before enumeration completes
This ensures that we have processed all hotplug events before
considering enumeration to be complete. This is important due to USB
persist being turned off. At resume time, devices will disappear and
immediately re-appear. In this situatoin, enumerate could first see the
old state with a removed device resulting in it to not be discovered.

As a hotplug event is semingly emitted by the kernel immediately, we
can simply make sure to process this hotplug event before returning
from enumerate.

Closes: fprintd#119
2021-12-14 19:33:50 +01:00
Matthew Mirvish 0b37a36874 doc: Fix broken documentation for FpiDeviceUdevSubtypeFlags enum
Added description and fixed incorrect name in comment, so now gtkdoc
actually shows useful information.
2021-12-14 19:33:41 +01:00
Marco Trevisan (Treviño) d46c34b21c Merge tag 'v1.94.2' into tod
Tag 1.94.2

Git-EVTag-v0-SHA512: 3eed67186b9533300d5ba70ce9abc36055068c3eafa663a48c655ef0e8c7a6928bb7cd875a7ae1860a65324fb806da79d83ca3c97a0640b10dc92dc497f04f11
2021-12-14 19:32:04 +01:00
Benjamin Berg e198b04222 elanspi: Silence some SSMs that may log excessively otherwise 2021-12-02 13:54:59 +01:00
Benjamin Berg 3981c42d3e ssm: Add API to silence most state change debug messages
Otherwise tightly looping SSMs (primarily SPI transfers), will flood the
logs in inappropriate ways.
2021-12-02 13:54:59 +01:00
Benjamin Berg 31afd3ba5c elanspi: Move debug print so that it contains all information
Two of the printed variables were only calculated after the message was
printed, making the logged information less useful than it could be.
2021-12-02 13:53:54 +01:00
Benjamin Berg 05fd2c58cb context: Ensure mainloop is idle before enumeration completes
This ensures that we have processed all hotplug events before
considering enumeration to be complete. This is important due to USB
persist being turned off. At resume time, devices will disappear and
immediately re-appear. In this situatoin, enumerate could first see the
old state with a removed device resulting in it to not be discovered.

As a hotplug event is semingly emitted by the kernel immediately, we
can simply make sure to process this hotplug event before returning
from enumerate.

Closes: fprintd#119
2021-12-01 15:29:18 +00:00
Matthew Mirvish a033154b2e doc: Fix broken documentation for FpiDeviceUdevSubtypeFlags enum
Added description and fixed incorrect name in comment, so now gtkdoc
actually shows useful information.
2021-11-15 17:10:44 -05:00
Benjamin Berg 2cfff27729 udev-hwdb: Update unsupported device list 2021-11-02 16:28:13 +01:00
Marco Trevisan (Treviño) 608a9f10df libfprint: Use a macro to easily compute TOD padding 2021-10-31 23:09:30 +01:00
Marco Trevisan (Treviño) ec8a9ba0fd fpi-device: Adjust padding based on actual gpointer size
In some architectures pointer size is different. So let's adapt it to it
2021-10-31 22:31:01 +01:00
Marco Trevisan (Treviño) 77ff30e19d tod: Mark symbols that were added in 1.90 series as part of TOD 1.0.0
Otherwise we'd cause the symbols to disappear on such versions
2021-10-28 19:22:21 +02:00
Marco Trevisan (Treviño) 1153fc85a5 Merge with libfprint 1.94.1 and followup fixup commits 2021-10-28 15:46:02 +02:00
Benjamin Berg 17ff49f85c goodixmoc: Fix template struct for required length calculation
The length is only a single byte in the transfer. However, the struct
had a uint32_t in that place, breaking the sizeof() calculation and
seemingly creating issues for certain lengths of user id strings (which
depend on the username).

Fix this by changing the type to uint8_t. Also add the initial 0x43
prefix byte and a byte of apparent padding that the struct contains.
Leave the two reserved bytes at the end, as they seem to actually have a
meaning (i.e. they are seemingly send in listings).

This effectively makes the struct one byte smaller, bringing it down to
127 bytes from 128 bytes.

Closes: #428, #404
2021-10-27 06:54:47 +00:00
boger 5e934a4fa0 goodixmoc: add PID 63CC
63CC: Dell Latitude series fingerprint sensor
2021-10-20 20:11:05 +08:00
hermanlin 5d0a3eab5c elanmoc: add PID 0x0c7d
Signed-off-by: hermanlin <herman.lin@emc.com.tw>
2021-10-12 14:02:48 +08:00
Benjamin Berg 46669e9f53 goodixmoc: Do not run identify step during enroll
While useful, there are advantages for this to be done by the
surrounding code (i.e. fprintd). As such, remove the identify stage from
the goodix driver and rely on fprintd doing it for us.

One can probably argue that neither solution is perfect. Ideally, we
would probably return the information required to delete the old print
to the upper stack and let the driver/device handle the duplicate
checking.

However, for now this works well. We may need to reconsider this if we
get devices that do the duplicate checking transparently and just throw
an enroll error.

NOTE: The driver did not report any progress for the identify step. As
such, the number of enroll steps reported by the device remain the same.

Closes: #415
2021-09-24 14:24:47 +02:00
Benjamin Berg a949594050 goodixmoc: Returned device print matched by verify/identify
This is needed for the fprintd duplicate checking code. The information
is needed to delete stale prints automatically from the device.

Related: #415
2021-09-21 19:13:02 +02:00
boger f579a77bfd goodixmoc: add PID 63BC
63BC: Dell XPS series fingerprint sensor
2021-09-17 19:28:51 +08:00
Benjamin Berg 03deb3011b udev-hwdb: Update unsupported device list 2021-09-17 12:54:02 +02:00
Benjamin Berg c7650b6ec9 udev-hwdb: Set ID_PERSIST=0 in hwdb
See https://github.com/systemd/systemd/pull/20756
2021-09-17 12:46:29 +02:00
Aris Lin 128d809227 synaptics: add new PID 0x0123, 0x0126, and 0x0129 2021-09-17 12:42:51 +02:00
Benjamin Berg d763f8f41a elanmoc: Fix warning
Really, it shouldn't matter, as there is no return. But adding the NULL
initializer does not harm either.
2021-09-15 15:54:25 +02:00
Bastien Nocera e2511095d1 device: Export kernel device from FpDevice
This is inelegant, but allows API consumers to match the FpDevice with
an OS device.
2021-09-15 13:24:08 +00:00
Benjamin Berg c162b895c0 uru4000: Fix transfer type on interrupt endpoint
It appears the kernel automatically "fixes" this mistake and it works.
the transfer in question is an interrupt transfer and should be submitted
as such. Do that in order to make things more correct and so that the
test can run.
2021-09-08 20:37:00 +02:00
Bastien Nocera 83541a2ddc Revert "device: Export kernel device from FpDevice"
This reverts commit 8f93aef122.
2021-09-06 17:34:22 +02:00
Bastien Nocera 8f93aef122 device: Export kernel device from FpDevice
This is inelegant, but allows API consumers to match the FpDevice with
an OS device.
2021-09-06 17:32:05 +02:00
Bastien Nocera 8dfa12e41d fp-context: Fix typo in API docs 2021-09-03 20:58:25 +00:00
Marco Trevisan (Treviño) c63455d289 TOD: Add wrappers for SSM functions that are not compatible with 1.90
Expose new versioned symbols that work with previous API so that we can
keep compatibility with old drivers without having to recompile them.

We disable the GCancellable API in delayed SSM actions since that was
something that wasn't really needed and prone to errors, instead of
just re-implementing it as it was in the TOD case.
2021-09-03 20:18:36 +02:00