mirror of
https://github.com/lowobservable/oec.git
synced 2026-01-11 23:53:04 +00:00
Move read_terminal_ids to terminal - clean up controller
This commit is contained in:
parent
f233cc41ba
commit
e5a163bf84
@ -5,11 +5,10 @@ oec.controller
|
||||
|
||||
import time
|
||||
import logging
|
||||
from coax import poll, poll_ack, read_terminal_id, read_extended_id, \
|
||||
KeystrokePollResponse, ReceiveTimeout, ReceiveError, \
|
||||
ProtocolError
|
||||
from coax import poll, poll_ack, KeystrokePollResponse, ReceiveTimeout, \
|
||||
ReceiveError, ProtocolError
|
||||
|
||||
from .terminal import Terminal
|
||||
from .terminal import Terminal, read_terminal_ids
|
||||
from .session import SessionDisconnectedError
|
||||
from .vt100 import VT100Session
|
||||
|
||||
@ -70,7 +69,7 @@ class Controller:
|
||||
self.logger.info('Terminal attached')
|
||||
|
||||
# Read the terminal identifiers.
|
||||
(terminal_id, extended_id) = self._read_terminal_ids()
|
||||
(terminal_id, extended_id) = read_terminal_ids(self.interface)
|
||||
|
||||
self.logger.info(f'Terminal ID = {terminal_id}, Extended ID = {extended_id}')
|
||||
|
||||
@ -92,35 +91,6 @@ class Controller:
|
||||
|
||||
self.session.start()
|
||||
|
||||
def _read_terminal_ids(self):
|
||||
terminal_id = None
|
||||
extended_id = None
|
||||
|
||||
try:
|
||||
terminal_id = read_terminal_id(self.interface)
|
||||
except ReceiveError as error:
|
||||
self.logger.warning(f'READ_TERMINAL_ID receive error: {error}', exc_info=error)
|
||||
except ProtocolError as error:
|
||||
self.logger.warning(f'READ_TERMINAL_ID protocol error: {error}', exc_info=error)
|
||||
|
||||
# Retry the READ_EXTENDED_ID command as it appears to fail frequently on the
|
||||
# first request - unlike the READ_TERMINAL_ID command,
|
||||
extended_id = None
|
||||
|
||||
for attempt in range(3):
|
||||
try:
|
||||
extended_id = read_extended_id(self.interface)
|
||||
|
||||
break
|
||||
except ReceiveError as error:
|
||||
self.logger.warning(f'READ_EXTENDED_ID receive error: {error}', exc_info=error)
|
||||
except ProtocolError as error:
|
||||
self.logger.warning(f'READ_EXTENDED_ID protocol error: {error}', exc_info=error)
|
||||
|
||||
time.sleep(0.25)
|
||||
|
||||
return (terminal_id, extended_id.hex() if extended_id is not None else None)
|
||||
|
||||
def _handle_terminal_detached(self):
|
||||
self.logger.info('Terminal detached')
|
||||
|
||||
@ -130,6 +100,11 @@ class Controller:
|
||||
self.terminal = None
|
||||
self.session = None
|
||||
|
||||
def _handle_session_disconnected(self):
|
||||
self.logger.info('Session disconnected')
|
||||
|
||||
self.session = None
|
||||
|
||||
def _handle_poll_response(self, poll_response):
|
||||
if isinstance(poll_response, KeystrokePollResponse):
|
||||
self._handle_keystroke_poll_response(poll_response)
|
||||
@ -159,8 +134,3 @@ class Controller:
|
||||
|
||||
if self.session:
|
||||
self.session.handle_key(key, modifiers, scan_code)
|
||||
|
||||
def _handle_session_disconnected(self):
|
||||
self.logger.info('Session disconnected')
|
||||
|
||||
self.session = None
|
||||
|
||||
@ -3,11 +3,17 @@ oec.terminal
|
||||
~~~~~~~~~~~~
|
||||
"""
|
||||
|
||||
import time
|
||||
import logging
|
||||
from coax import read_terminal_id, read_extended_id, ReceiveError, ProtocolError
|
||||
|
||||
from .display import Dimensions, Display
|
||||
from .keyboard import Keyboard
|
||||
from .keymap_3278_2 import KEYMAP as KEYMAP_3278_2
|
||||
from .keymap_3483 import KEYMAP as KEYMAP_3483
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
MODEL_DIMENSIONS = {
|
||||
2: Dimensions(24, 80),
|
||||
3: Dimensions(32, 80),
|
||||
@ -31,8 +37,37 @@ def get_keymap(terminal_id, extended_id):
|
||||
|
||||
return keymap
|
||||
|
||||
def read_terminal_ids(interface, extended_id_retry_attempts=3):
|
||||
terminal_id = None
|
||||
extended_id = None
|
||||
|
||||
try:
|
||||
terminal_id = read_terminal_id(interface)
|
||||
except ReceiveError as error:
|
||||
logger.warning(f'READ_TERMINAL_ID receive error: {error}', exc_info=error)
|
||||
except ProtocolError as error:
|
||||
logger.warning(f'READ_TERMINAL_ID protocol error: {error}', exc_info=error)
|
||||
|
||||
# Retry the READ_EXTENDED_ID command as it appears to fail frequently on the
|
||||
# first request - unlike the READ_TERMINAL_ID command,
|
||||
extended_id = None
|
||||
|
||||
for attempt in range(extended_id_retry_attempts):
|
||||
try:
|
||||
extended_id = read_extended_id(interface)
|
||||
|
||||
break
|
||||
except ReceiveError as error:
|
||||
logger.warning(f'READ_EXTENDED_ID receive error: {error}', exc_info=error)
|
||||
except ProtocolError as error:
|
||||
logger.warning(f'READ_EXTENDED_ID protocol error: {error}', exc_info=error)
|
||||
|
||||
time.sleep(0.25)
|
||||
|
||||
return (terminal_id, extended_id.hex() if extended_id is not None else None)
|
||||
|
||||
class Terminal:
|
||||
"""Terminal information, devices and helpers."""
|
||||
"""Terminal information and devices."""
|
||||
|
||||
def __init__(self, interface, terminal_id, extended_id):
|
||||
self.interface = interface
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user