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