UmberHubManager/api/examples/python/pd_request_cli/argument_parser.py

44 lines
1.7 KiB
Python
Executable File

import argparse
import sys
class CustomArgumentParser(argparse.ArgumentParser):
def __init__(self, argv=None, **kwargs):
super().__init__(**kwargs)
self.argv = argv if argv is not None else sys.argv[1:]
self.add_argument("-d", "--device", help="Acroname Device Serial Number", type=self.auto_int, metavar='', default=0)
self.add_argument("-p", "--port", help="Port to send the request on.", required=True, type=int, metavar='')
self.add_argument("-r", "--request", help="The BrainStem Power Delivery request to send", required=True, type=int, metavar='')
self.add_argument("-s", "--sop", help="SOP Selection: SOP`Debug(3), SOP``Debug(4)", required=False, type=int, metavar='', choices={0,1,2,3,4}, default=0)
self.parsed_args = self.parse_args(self.argv[1:])
self.port = self.parsed_args.port
self.request = self.parsed_args.request
self.sn = self.parsed_args.device
self.sop = self.parsed_args.sop
def print_example_usage(self):
EXAMPLE_USAGE = [ \
(""), \
("Example Usage:"), \
(" \"%s -p 2 -r 14\" - Requests \"pdRequestBatteryCapabilities\" on the given port" % (self.argv[0])), \
(" \"%s -p 3 -r 15\" - Requests \"pdRequestBatteryStatus\" on the given port" % (self.argv[0])), \
(" \"%s -p 4 -r 16\" - Requests \"pdRequestManufacturerInfoSop\" on the given port" % (self.argv[0])), \
]
for usage in EXAMPLE_USAGE:
print(usage)
def print_help(self):
super().print_help()
self.print_example_usage()
@staticmethod
def auto_int(x):
# Automatically detect the base (hex if prefixed with '0x', decimal otherwise)
return int(x, 0)