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

  1. Windows invokes WBF/WBDI interfaces in the wrapper.
  2. Adapter and CBiometricDevice logic manage WDF requests, capture threads, power/wake, pairing, device update and customer behavior.
  3. vfmCoreEntry bridges those operations into niseCore.
  4. VFM coordinates sensor acquisition, matcher operations and template storage through abstract APIs.
  5. niseCore sensor modules allocate/send firmware commands, map reply status, and drive firmware/IOTA update state.
  6. PAL isolates runtime, cryptography and USB/SPI transport.
  7. biometrics-include defines 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.