86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
import icsneopy
|
|
import argparse
|
|
|
|
|
|
def main():
|
|
parser = get_parser()
|
|
args = parser.parse_args()
|
|
run_test(args)
|
|
|
|
|
|
def find_device(serial: str) -> icsneopy.Device:
|
|
devices = icsneopy.find_all_devices()
|
|
for d in devices:
|
|
if d.get_serial() == serial:
|
|
print(f"opening device {serial}")
|
|
return d
|
|
return None
|
|
|
|
|
|
def run_test(args):
|
|
# find the device
|
|
d = find_device(args.serial)
|
|
if d is None:
|
|
print(f"error: unable to find device {args.serial}")
|
|
exit(1)
|
|
|
|
# open the device
|
|
if not d.open():
|
|
print(f"error: unable to open device {args.serial}")
|
|
exit(1)
|
|
|
|
# check if TC10 is supported
|
|
if not d.supports_tc10():
|
|
print(f"error: device does not support TC10 {args.serial}")
|
|
exit(1)
|
|
|
|
# send the request on all networks
|
|
for n in args.networks:
|
|
net = getattr(icsneopy.Network.NetID, n)
|
|
if args.send_wake:
|
|
print(f"requesting TC10 wake on network {net}")
|
|
if not d.request_tc10_wake(net):
|
|
print(f"error: unable to send TC10 wake on device {args.serial}")
|
|
exit(1)
|
|
elif args.send_sleep:
|
|
print(f"requesting TC10 sleep on network {net}")
|
|
if not d.request_tc10_sleep(net):
|
|
print(f"error: unable to send TC10 sleep on device {args.serial}")
|
|
exit(1)
|
|
|
|
# close the device
|
|
print(f"closing device {args.serial}")
|
|
d.close()
|
|
|
|
|
|
def get_parser():
|
|
parser = argparse.ArgumentParser(description="TC10 wake request")
|
|
parser.add_argument(
|
|
"serial",
|
|
help="The serial number of the device",
|
|
)
|
|
parser.add_argument(
|
|
"--networks",
|
|
nargs="+",
|
|
help="List of icsneopy networks to use. Multiple networks accepted, e.g. '--networks ETHERNET_01 AE_01'",
|
|
required=True,
|
|
),
|
|
group = parser.add_mutually_exclusive_group(required=True)
|
|
group.add_argument(
|
|
"--send-wake",
|
|
help="Trigger TC10 wake on the selected networks",
|
|
action="store_true",
|
|
default=False,
|
|
)
|
|
group.add_argument(
|
|
"--send-sleep",
|
|
help="Trigger TC10 sleep on the selected networks",
|
|
action="store_true",
|
|
default=False,
|
|
)
|
|
return parser
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|