From a6a79ea0f242150770b91e4f924ec6c107486803 Mon Sep 17 00:00:00 2001 From: Andrew Kay Date: Wed, 19 Jun 2019 21:17:31 -0500 Subject: [PATCH] Retry READ_EXTENDED_ID command as it appears to fail frequently on the first request --- oec/controller.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/oec/controller.py b/oec/controller.py index 89e23fd..f450a9b 100644 --- a/oec/controller.py +++ b/oec/controller.py @@ -110,12 +110,21 @@ class Controller: except ProtocolError as error: self.logger.warning(f'READ_TERMINAL_ID protocol error: {error}', exc_info=error) - try: - extended_id = read_extended_id(self.interface) - 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) + # 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)