[PATCH v3] config-tools: improve the message of 95-usb.py


Yang, Yu-chu
 

From: yuchuyang <yu-chu.yang@...>

Improve the logging message of extracting USB device information.

v2->v3
add device name to logging message.

Signed-off-by: yuchuyang <yu-chu.yang@...>
---
.../board_inspector/extractors/95-usb.py | 34 +++++++++++--------
1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/misc/config_tools/board_inspector/extractors/95-usb.py b/misc/config_tools/board_inspector/extractors/95-usb.py
index 99daa256f..a12d3adbd 100644
--- a/misc/config_tools/board_inspector/extractors/95-usb.py
+++ b/misc/config_tools/board_inspector/extractors/95-usb.py
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#

-import os, re
+import os, re, logging

from extractors.helpers import add_child, get_node

@@ -11,23 +11,29 @@ USB_DEVICES_PATH = "/sys/bus/usb/devices"
USB_DEVICES_REGEX = r"^\d-\d$" # only devices connecting to root hub

def extract(args, board_etree):
+ usbdevices = set(os.popen('lsusb').read().split('\n'))
dev_regex = re.compile(USB_DEVICES_REGEX)
for dev in os.listdir(USB_DEVICES_PATH):
m = dev_regex.match(dev)
if m:
d = m.group(0)
devpath = os.path.join(USB_DEVICES_PATH, d)
- with open(os.path.join(devpath, 'devnum'), 'r') as f:
- devnum = f.read().strip()
- with open(os.path.join(devpath, 'busnum'), 'r') as f:
- busnum = f.read().strip()
- cmd_out = os.popen('lsusb -s {b}:{d}'.format(b=busnum, d=devnum)).read()
- desc = cmd_out.split(':', maxsplit=1)[1].strip('\n')
-
- with open(devpath + '/port/firmware_node/path') as f:
- acpi_path = f.read().strip()
- usb_port_node = get_node(board_etree, f"//device[acpi_object='{acpi_path}']")
- if usb_port_node is not None:
- add_child(usb_port_node, "usb_device", location=d,
- description=d + desc)
+ try:
+ with open(os.path.join(devpath, 'devnum'), 'r') as f:
+ devnum = f.read().strip()
+ with open(os.path.join(devpath, 'busnum'), 'r') as f:
+ busnum = f.read().strip()
+ cmd_out = os.popen('lsusb -s {b}:{d}'.format(b=busnum, d=devnum)).read()
+ desc = cmd_out.split(':', maxsplit=1)[1].strip('\n')

+ with open(devpath + '/port/firmware_node/path') as f:
+ acpi_path = f.read().strip()
+ usb_port_node = get_node(board_etree, f"//device[acpi_object='{acpi_path}']")
+ if usb_port_node is not None:
+ add_child(usb_port_node, "usb_device", location=d,
+ description=d + desc)
+ except Exception as e:
+ latest_usbdevices = set(os.popen('lsusb').read().split('\n'))
+ removed_usbdevices = usbdevices - latest_usbdevices
+ for usb in removed_usbdevices:
+ logging.error(f'{e}: please check if the USB device "{usb.split("ID ")[1]}" is connected or has been removed.')
--
2.25.1