From c69c47be6dbe7df68f689090b2cda4ffb387a5e3 Mon Sep 17 00:00:00 2001 From: chenxinyuanchen <chenxinyuanchen@xiaomi.com> Date: Thu, 9 Feb 2023 15:03:01 +0800 Subject: [PATCH 1/2] edlclient: get hwid and pkhash only when programmer not specified Also add exception catch when formatting serial num. so it will not break the next stage. Signed-off-by: chenxinyuanchen <chenxinyuanchen@xiaomi.com> --- edlclient/Library/firehose.py | 14 ++++++++++++-- edlclient/Library/sahara.py | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/edlclient/Library/firehose.py b/edlclient/Library/firehose.py index 488c48a..2e41a11 100755 --- a/edlclient/Library/firehose.py +++ b/edlclient/Library/firehose.py @@ -5,6 +5,7 @@ import binascii import io import platform +import re import time import json from struct import unpack @@ -1106,8 +1107,17 @@ class firehose(metaclass=LogBase): self.serial = int(serial, 16) except Exception as err: # pylint: disable=broad-except self.debug(str(err)) - serial = line.split(": ")[2] - self.serial = int(serial.split(" ")[0]) + try: + serial = line.split(": ")[2] + self.serial = int(serial.split(" ")[0]) + except Exception as err1: + self.debug(str(err1)) + try: + # Firehose return format: "Chip serial num (0x%lx) Chip ID (0x%x)" + serial_re = re.findall("Chip serial num \\(0x(.*?)\\)", line) + self.serial = int(serial_re[0], 16) + except Exception as err2: + self.error(err2) if supfunc and "end of supported functions" not in line.lower(): rs = line.replace("\n", "") if rs != "": diff --git a/edlclient/Library/sahara.py b/edlclient/Library/sahara.py index d2d86a2..a8c39c7 100755 --- a/edlclient/Library/sahara.py +++ b/edlclient/Library/sahara.py @@ -212,10 +212,12 @@ class sahara(metaclass=LogBase): if self.enter_command_mode(): self.serial = self.cmdexec_get_serial_num() self.serials = "{:08x}".format(self.serial) - self.hwid = self.cmdexec_get_msm_hwid() - self.pkhash = self.cmdexec_get_pkhash() # if self.version>=2.4: # self.sblversion = "{:08x}".format(self.cmdexec_get_sbl_version()) + if self.programmer == "": + self.hwid = self.cmdexec_get_msm_hwid() + self.pkhash = self.cmdexec_get_pkhash() + if self.hwid is not None: self.hwidstr = "{:016x}".format(self.hwid) self.msm_id = int(self.hwidstr[2:8], 16) From 4f7275119bafaf45761ce338b93ae1d469f4f0e6 Mon Sep 17 00:00:00 2001 From: chenxinyuanchen <chenxinyuanchen@xiaomi.com> Date: Thu, 9 Feb 2023 16:33:44 +0800 Subject: [PATCH 2/2] qc_diag: should get 'id' instead of 'image_id' Signed-off-by: chenxinyuanchen <chenxinyuanchen@xiaomi.com> --- edlclient/Tools/qc_diag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/edlclient/Tools/qc_diag.py b/edlclient/Tools/qc_diag.py index 0229fc8..605516a 100755 --- a/edlclient/Tools/qc_diag.py +++ b/edlclient/Tools/qc_diag.py @@ -337,7 +337,7 @@ class qcdiag(metaclass=LogBase): e = ElementTree.parse(nvxml).getroot() for atype in e.findall("nv"): name = atype.get("name") - identifier = int(atype.get("image_id")) + identifier = int(atype.get("id")) self.nvlist[identifier] = name def prettyprint(self, data):