task 44: there is no API to design
fprintd, gazed, sailfish-fpd and biometryd are the same interface four times. Take that shape and face and finger become one surface with two backends. Mapped every call onto the recovered TA commands; the gaps are persistence and the auth token, both already named.
This commit is contained in:
parent
d09978df14
commit
34cc8e97f9
1 changed files with 40 additions and 0 deletions
|
|
@ -301,6 +301,46 @@ instruments, not the factor.
|
|||
| libfprint match-on-chip | Supported upstream — device features cover on-device storage and identify, so match-on-chip is not fighting the framework. |
|
||||
| FPC over QSEE, natively on Linux | **Nobody has done it.** No prior art found. |
|
||||
|
||||
### The primitives all agree, which settles the API
|
||||
|
||||
Cloned to `Pixel3Arch/references/biometrics/`: `fprintd`, `libfprint` (with
|
||||
`wrobelda/goodix-qsee` fetched as a remote branch), `sailfish-fpd-community`,
|
||||
`biometryd`.
|
||||
|
||||
Reading their interfaces side by side, they are the same API three times over —
|
||||
and TASK-12's `gazed` is a fourth. `fprintd` has `Claim`/`Release`,
|
||||
`VerifyStart`/`VerifyStop`, `EnrollStart`/`EnrollStop`, `ListEnrolledFingers`,
|
||||
`DeleteEnrolledFinger`, signals `VerifyStatus`/`VerifyFingerMatched`/
|
||||
`EnrollStatus`, properties `finger-present`/`finger-needed`/
|
||||
`num-enroll-stages`. `gazed` has `claim/release`, `verify_start/stop`,
|
||||
`enroll_start/stop` with a status signal carrying capture quality. Sailfish
|
||||
adds the enum worth stealing wholesale: `FPACQUIRED_GOOD`/`PARTIAL`/
|
||||
`INSUFFICIENT`/`IMAGER_DIRTY`/`TOO_SLOW`/`TOO_FAST`.
|
||||
|
||||
So there is no API to design. Take that shape, and the face factor and the
|
||||
finger factor become the same surface with two backends — which is what
|
||||
symmetry with TASK-12 was supposed to mean.
|
||||
|
||||
It maps onto the recovered protocol without a gap:
|
||||
|
||||
| daemon call | TA commands |
|
||||
|---|---|
|
||||
| `EnrollStart` | 11/6 `load_empty_db` (first run), 11/9 `set_active_fingerprint_set`, 11/0 `begin_enrol` |
|
||||
| enroll stage | 10/4 `qualify_capture` → 11/1 `enrol`; remaining count drives `num-enroll-stages` |
|
||||
| `EnrollStop` | 11/2 `end_enrol` |
|
||||
| `VerifyStart` | 10/3 `wakeup_setup`, then on IRQ 10/1 `check_finger_lost` → 10/4 → 11/3 `identify` |
|
||||
| `ListEnrolledFingers` | 11/7 `get_template_ids` |
|
||||
| `DeleteEnrolledFinger` | 11/8 `delete_template` |
|
||||
| `finger-present` | 10/1 `check_finger_lost` |
|
||||
| acquired quality | capture/qualify return codes → the Sailfish enum |
|
||||
| persistence | target 2, via the supplicant — see below |
|
||||
|
||||
`wrobelda/goodix-qsee` is the structural template for the backend: 1,418 lines
|
||||
split into `-transport.c` (the TEE channel), `-sensor.c` (the misc device),
|
||||
`-token.c` (the auth token), `-proto.h` (the command table) and the driver
|
||||
proper. Those four files are exactly our four layers — `/dev/qseecom`, the
|
||||
`fpc1020` input device, target 3, and `fpc-ta-protocol.md`.
|
||||
|
||||
### The listener is a separate owner, and that is a constraint
|
||||
|
||||
Templates only persist through target 2, which goes out to a QSEE listener. The
|
||||
|
|
|
|||
Loading…
Reference in a new issue