| #!/usr/bin/env python | |
| # Copyright 2019 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| #### CATEGORY=Other | |
| ### Actuates the state of an external relay by writing a single byte to |tty|. | |
| ## usage: fx set-relay [--off|--on] /dev/ttyUSB0 | |
| ## | |
| ## Turn on or off a USB-connected relay on the specified device. | |
| import argparse | |
| import sys | |
| def main(): | |
| parser = argparse.ArgumentParser( | |
| 'Actuates the state of an external relay') | |
| parser.add_argument('tty', | |
| type=argparse.FileType('wb'), | |
| help='TTY to which the external relay is connected') | |
| state_parser = parser.add_mutually_exclusive_group(required=True) | |
| state_parser.add_argument('--on', dest='state', action='store_true') | |
| state_parser.add_argument('--off', dest='state', action='store_false') | |
| args = parser.parse_args() | |
| # Different relays require different sequences to turn on/off. The | |
| # sequences don't interfere with each other so just do them all. | |
| if args.state: | |
| args.tty.write(b'\xa0\x01\x00\xa1') | |
| args.tty.write(b'\x02') | |
| else: | |
| args.tty.write(b'\xa0\x01\x01\xa2') | |
| args.tty.write(b'\x01') | |
| if __name__ == '__main__': | |
| sys.exit(main()) |