From dc97b8737636783cb9e460d4169977eaaec2b3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Baczma=C5=84ski?= Date: Mon, 31 Jul 2023 19:18:08 +0200 Subject: [PATCH] [thci] fix for ncs thci issues (#9328) After recent reference device release, two THCI issues have been found. This commit adds `"` around command arguments that have escapable characters (like `ot networkname aa\ bb`), and skips lines containing only ANSI escape codes in commissioning logs. Signed-off-by: Maciej Baczmanski --- tools/harness-thci/OpenThread.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tools/harness-thci/OpenThread.py b/tools/harness-thci/OpenThread.py index 47e83479e..ed31a172d 100644 --- a/tools/harness-thci/OpenThread.py +++ b/tools/harness-thci/OpenThread.py @@ -832,8 +832,15 @@ class OpenThreadTHCI(object): [str]: The modified string with escaped characters. """ escapable_chars = '\\ \t\r\n' + escapable_chars_present = False + for char in escapable_chars: - string = string.replace(char, '\\%s' % char) + if char in string: + string = string.replace(char, '\\%s' % char) + escapable_chars_present = True + + if self._cmdPrefix == ZEPHYR_PREFIX and escapable_chars_present: + string = '"' + string + '"' return string @API @@ -2338,15 +2345,16 @@ class OpenThreadTHCI(object): EncryptedPacket.TLVsLength = int(infoValue) payloadLineCount = (int(infoValue) + bytesInEachLine - 1) / bytesInEachLine while payloadLineCount > 0: - payloadLineCount = payloadLineCount - 1 payloadLine = rawLogs.get() - payloadSplit = payloadLine.split('|') - for block in range(1, 3): - payloadBlock = payloadSplit[block] - payloadValues = payloadBlock.split(' ') - for num in range(1, 9): - if '..' not in payloadValues[num]: - payload.append(int(payloadValues[num], 16)) + if '|' in payloadLine: + payloadLineCount = payloadLineCount - 1 + payloadSplit = payloadLine.split('|') + for block in range(1, 3): + payloadBlock = payloadSplit[block] + payloadValues = payloadBlock.split(' ') + for num in range(1, 9): + if '..' not in payloadValues[num]: + payload.append(int(payloadValues[num], 16)) EncryptedPacket.TLVs = (PlatformPackets.read(EncryptedPacket.Type, payload) if payload != [] else [])