| #!/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:])) |