diff --git a/tools/otci/otci/connectors.py b/tools/otci/otci/connectors.py index 7d8a34241..713fbc311 100644 --- a/tools/otci/otci/connectors.py +++ b/tools/otci/otci/connectors.py @@ -159,7 +159,7 @@ class OtCliSerial(OtCliHandler): line = self.__linebuffer + line self.__linebuffer = b'' - return line.decode('utf-8').rstrip('\r\n') + return line.decode('utf-8', errors='ignore').rstrip('\r\n') return None diff --git a/tools/otci/otci/otci.py b/tools/otci/otci/otci.py index a51a8656a..ca14133a5 100644 --- a/tools/otci/otci/otci.py +++ b/tools/otci/otci/otci.py @@ -47,7 +47,9 @@ class OTCI(object): manipulate an OpenThread device. """ - __exec_command_retry = 0 + DEFAULT_EXEC_COMMAND_RETRY = 4 # A command is retried 4 times if failed. + + __exec_command_retry = DEFAULT_EXEC_COMMAND_RETRY def __init__(self, otcmd: OTCommandHandler): """ @@ -278,7 +280,12 @@ class OTCI(object): for line in output[2:]: fields = line.strip().split('|') - _, J, netname, extpanid, panid, extaddr, ch, dbm, lqi, _ = fields + try: + _, J, netname, extpanid, panid, extaddr, ch, dbm, lqi, _ = fields + except Exception: + logging.warning('ignored output: %r', line) + continue + networks.append({ 'joinable': bool(int(J)), 'network_name': netname.strip(),