// SPDX-License-Identifier: GPL-3.0-only // SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts® // lint-disable-file fixed-width-types /* fingerprintd — the daemon shell. Nothing here talks to hardware yet. The core (Fingerprintd:Sfs and the modules that follow it) is being ported from the fp6 harness one wire format at a time, each landing with tests that run without a phone; this entry point exists so the executable target builds alongside them and so the version constant that gates a package publish has a home. What this will own, and why it has to be one long-lived process: * the sensor rail (gpio29), reset (gpio74) and IRQ (gpio75) — one sensor reset buys exactly one trustlet init, so whatever powers the sensor must also hold the session; * the QTEE session on /dev/tee0: client env, the QSEECOM-compat loader, and the focal64 trustlet, loaded once; * the storage listeners QTEE calls back into — gpfile 0x7000 and RPMB 0x2000 — served from a supplicant thread that must outlive every request, because QTEE's listener table is global and an id is taken for as long as the registration is held; * net.reactivated.Fprint, so pam_fprintd and the desktop need no changes. */ import std; import Fingerprintd; namespace { // Bumping this is what publishes a package: the registry answers 409 for a // version it already has, which a build treats as a no-op. constexpr const char* Version = "0.0.1"; } int main(int argc, char** argv) { std::span args(argv, static_cast(argc)); for (std::string_view a : args.subspan(1)) { if (a == "--version") { std::println("fingerprintd {}", Version); return 0; } } std::println(std::cerr, "fingerprintd {}: no runtime yet -- the core is still being " "ported. Run `crafter-build test` for what does work.", Version); return 1; }