Refactor interface creation

This commit is contained in:
Andrew Kay
2020-07-17 08:28:42 -05:00
parent 5310bbd8e6
commit 49a1a0283a

View File

@@ -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)