| #!/usr/bin/env python3 |
| # Copyright 2020 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """This is a mock ectool command for fingerprint testing.""" |
| |
| from __future__ import print_function |
| |
| import argparse |
| import sys |
| |
| |
| MOCK_VERSION_STR = """\ |
| RO version: bloonchipper_v2.0.5938-197506c1 |
| RW version: bloonchipper_v2.0.23521-642195b |
| RW cros fwid: bloonchipper_15749.0.0 |
| Firmware copy: RW |
| Build info: bloonchipper_v2.0.23521-642195b boringssl:v0.0.7276-e0d601a57\ |
| cryptoc:v1.9308_26_0.14-0dd6790 private:v2.1.9999-642195ba\ |
| fpc:v2.1.9999-642195ba bloonchipper_15749.0.0 2024-01-12 17:15:27\ |
| @chromeos-release-builder-us-central1-a-x32-30-5d0f |
| Tool version: v2.0.24267-7420a2d0ef 2024-03-15 23:46:59\ |
| @chromeos-release-builder-us-central1-b-x32-19-j5aj\ |
| """ |
| |
| |
| def cmd_fpframe(): |
| """Provides the last fingerprint capture frame to stdout.""" |
| print("Act like I am a raw fingerprint image file.") |
| sys.exit(0) |
| |
| |
| def cmd_fpmode(): |
| """Shows the current fingerprint subsystem's state/mode.""" |
| print("FP mode: (0x0)") |
| sys.exit(0) |
| |
| |
| def cmd_version(): |
| """Shows the current fingerprint subsystem's version information.""" |
| print(MOCK_VERSION_STR) |
| sys.exit(0) |
| |
| |
| def get_parser() -> argparse.ArgumentParser: |
| """Return the complete argument parser for ectool.""" |
| parser = argparse.ArgumentParser(description=__doc__) |
| |
| parser.add_argument("--name") |
| parser_subparsers = parser.add_subparsers(dest="action") |
| |
| # fpmode |
| parser_fpmode = parser_subparsers.add_parser("fpmode") |
| parser_fpmode.description = cmd_fpmode.__doc__ |
| parser_fpmode.set_defaults(func=cmd_fpmode) |
| # fpmode capture vendor |
| parser_fpmode_subparsers = parser_fpmode.add_subparsers(dest="fpmode") |
| parser_fpmode_subparsers.add_parser("capture").add_argument( |
| "capture_type", |
| choices=["vendor", "pattern0", "pattern1"], |
| ) |
| # fpmode fingerup |
| parser_fpmode_subparsers.add_parser("fingerup") |
| |
| # fpframe raw |
| parser_fpframe = parser_subparsers.add_parser("fpframe") |
| parser_fpframe.description = cmd_fpframe.__doc__ |
| parser_fpframe.set_defaults(func=cmd_fpframe) |
| parser_fpframe.add_argument("option", choices=["raw"]) |
| |
| # version |
| parser_version = parser_subparsers.add_parser("version") |
| parser_version.description = cmd_version.__doc__ |
| parser_version.set_defaults(func=cmd_version) |
| return parser |
| |
| |
| def main(argv: list): |
| """Run argument parser and launch subcommand.""" |
| parser = get_parser() |
| opts = parser.parse_args(argv) |
| |
| if opts.name != "cros_fp": |
| parser.error("--name=cros_fp must be specified") |
| |
| opts.func() |
| |
| |
| if __name__ == "__main__": |
| sys.exit(main(sys.argv[1:])) |