Cross-repository architecture
flowchart TB subgraph Driver_Project[Synaptics Fingerprint Driver project scope] OS[Windows WBF / applications] --> WBF[WBF adapters and WBDI driver] WBF --> Core[niseCore VFM] Core --> Match[Matcher] Core --> Stg[Template storage] Core --> Sns[Sensor interface] Sns --> PAL[PAL transport / runtime / crypto] PAL --> ABI[biometrics-include command ABI] Matrix[customers.json] -. selects refs and project .-> WBF Matrix -. selects refs .-> Core Matrix -. selects include .-> ABI Delivery[Build / validate / sign / release] --> WBF Matrix --> Delivery Tests[utest specs + source extraction] -. validates .-> WBF Tests -. validates .-> Core end subgraph External_Firmware[Firmware-team scope — external] FWCmd[Firmware command handlers] FWState[Sensor state machine / algorithms] FWUpdate[Bootloader, MFW and configuration storage] FWCmd --> FWState FWCmd --> FWUpdate end ABI -->|packed command / payload contract| FWCmd FWCmd -->|status / reply / event contract| ABI
Runtime dependency direction
- Windows invokes WBF/WBDI interfaces in the wrapper.
- Adapter and
CBiometricDevicelogic manage WDF requests, capture threads, power/wake, pairing, device update and customer behavior. vfmCoreEntrybridges those operations into niseCore.- VFM coordinates sensor acquisition, matcher operations and template storage through abstract APIs.
- niseCore sensor modules allocate/send firmware commands, map reply status, and drive firmware/IOTA update state.
- PAL isolates runtime, cryptography and USB/SPI transport.
biometrics-includedefines the packed host/firmware ABI; firmware implementation and internal algorithms remain external.
See driver–firmware integration for ownership, command behavior, update sequence and joint validation.
Build-time dependency direction
The customer matrix supplies a compatible niseCore ref, WBF ref, include ref and WBF CustomerProjects name. The driver build workflow passes those inputs to a pinned automation action, which compiles with the selected EWDK/target, validates, signs and publishes the package.
Architectural invariants
- The three source refs in a customer row form one delivery baseline; substituting only one ref is a compatibility change.
- Host/firmware command IDs, payload layouts, status semantics and update compatibility must remain aligned even though firmware source is external.
- WBF asynchronous requests must finish or cancel exactly once; utest focuses on capture/notify-wake transitions.
- Customer properties configure common components; they should not create undocumented fork-only behavior.
- A host-only unit test does not prove firmware behavior; end-to-end acceptance needs exact driver, device and firmware versions.
- Signing credentials and private configuration stay outside source and Wiki output.
Repository diagrams
Each repository has a mandatory source-grounded diagram: niseCore, WBF, build/release, utest, and include contracts.