From 49a1a0283ae3dd8d91d09fe59ac2d08589de98dc Mon Sep 17 00:00:00 2001 From: Andrew Kay Date: Fri, 17 Jul 2020 08:28:42 -0500 Subject: [PATCH] Refactor interface creation --- oec/__main__.py | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/oec/__main__.py b/oec/__main__.py index 993711b..c23b54f 100644 --- a/oec/__main__.py +++ b/oec/__main__.py @@ -3,6 +3,7 @@ import time import signal import logging import argparse +from contextlib import contextmanager from serial import Serial from coax import SerialInterface @@ -32,6 +33,23 @@ def _get_keymap(terminal_id, extended_id): return keymap +@contextmanager +def _create_interface(args): + with Serial(args.serial_port, 115200) as serial: + serial.reset_input_buffer() + serial.reset_output_buffer() + + # Allow the interface firmware time to start. + time.sleep(3) + + interface = SerialInterface(serial) + + firmware_version = interface.reset() + + print(f'Interface firmware version {firmware_version}') + + yield interface + def _create_session(args, terminal): if args.emulator == 'tn3270': return TN3270Session(terminal, args.host, args.port) @@ -83,21 +101,7 @@ def main(): args = parser.parse_args() - with Serial(args.serial_port, 115200) as serial: - serial.reset_input_buffer() - serial.reset_output_buffer() - - # Allow the interface firmware time to start. - time.sleep(3) - - # Initialize the interface. - interface = SerialInterface(serial) - - firmware_version = interface.reset() - - print(f'Interface firmware version {firmware_version}') - - # Initialize and start the controller. + with _create_interface(args) as interface: create_session = lambda terminal: _create_session(args, terminal) controller = Controller(interface, _get_keymap, create_session)