[PATCH 23/34] lsusb.py: Usb* classes: call read() automatically from constructor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Mantas Mikulėnas <grawity@xxxxxxxxx>
---
 lsusb.py.in | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/lsusb.py.in b/lsusb.py.in
index e9e18dc..09363d3 100644
--- a/lsusb.py.in
+++ b/lsusb.py.in
@@ -238,16 +238,18 @@ def find_dev(driver, usbname):
 
 class UsbEndpoint:
 	"Container for USB endpoint info"
-	def __init__(self, parent = None, indent = 18):
+	def __init__(self, parent, fname, indent=18):
 		self.parent = parent
 		self.indent = indent
-		self.fname = ""
+		self.fname = fname
 		self.epaddr = 0
 		self.len = 0
 		self.ival = ""
 		self.type = ""
 		self.attr = 0
 		self.max = 0
+		if self.fname:
+			self.read(self.fname)
 
 	def read(self, fname):
 		fullpath = ""
@@ -271,11 +273,11 @@ class UsbEndpoint:
 
 class UsbInterface:
 	"Container for USB interface info"
-	def __init__(self, parent = None, level = 1):
+	def __init__(self, parent, fname, level=1):
 		self.parent = parent
 		self.level = level
 		self.fullpath = ""
-		self.fname = ""
+		self.fname = fname
 		self.iclass = 0
 		self.isclass = 0
 		self.iproto = 0
@@ -284,6 +286,9 @@ class UsbInterface:
 		self.devname = ""
 		self.protoname = ""
 		self.eps = []
+		if self.fname:
+			self.read(self.fname)
+
 	def read(self, fname):
 		fullpath = ""
 		if self.parent:
@@ -302,10 +307,9 @@ class UsbInterface:
 			pass
 		self.protoname = find_usb_class(self.iclass, self.isclass, self.iproto)
 		if showeps:
-			for epfnm in os.listdir(prefix + fullpath):
-				if epfnm[:3] == "ep_":
-					ep = UsbEndpoint(self, self.level+len(self.fname))
-					ep.read(epfnm)
+			for dirent in os.listdir(prefix + fullpath):
+				if dirent[:3] == "ep_":
+					ep = UsbEndpoint(self, dirent, self.level + len(self.fname))
 					self.eps.append(ep)
 
 	def __str__(self):
@@ -326,10 +330,10 @@ class UsbInterface:
 
 class UsbDevice:
 	"Container for USB device info"
-	def __init__(self, parent = None, level = 0):
+	def __init__(self, parent, fname, level=0):
 		self.parent = parent
 		self.level = level
-		self.fname = ""
+		self.fname = fname
 		self.fullpath = ""
 		self.iclass = 0
 		self.isclass = 0
@@ -346,6 +350,9 @@ class UsbDevice:
 		self.devname = ""
 		self.interfaces = []
 		self.children = []
+		if self.fname:
+			self.read(self.fname)
+			self.readchildren()
 
 	def read(self, fname):
 		self.fname = fname
@@ -402,13 +409,10 @@ class UsbDevice:
 			if not dirent[0:1].isdigit():
 				continue
 			if os.access(prefix + dirent + "/bInterfaceClass", os.R_OK):
-				iface = UsbInterface(self, self.level+1)
-				iface.read(dirent)
+				iface = UsbInterface(self, dirent, self.level+1)
 				self.interfaces.append(iface)
 			else:
-				usbdev = UsbDevice(self, self.level+1)
-				usbdev.read(dirent)
-				usbdev.readchildren()
+				usbdev = UsbDevice(self, dirent, self.level+1)
 				self.children.append(usbdev)
 		usbsortkey = lambda obj: [int(x) for x in re.split(r"[-:.]", obj.fname)]
 		self.interfaces.sort(key=usbsortkey)
@@ -438,8 +442,7 @@ class UsbDevice:
 			else:
 				strg += "\n"
 				if showeps:
-					ep = UsbEndpoint(self, self.level+len(self.fname))
-					ep.read("ep_00")
+					ep = UsbEndpoint(self, "ep_00", self.level+len(self.fname))
 					strg += str(ep)
 				if showint:	
 					for iface in self.interfaces:
@@ -472,9 +475,7 @@ def read_usb():
 	for dirent in os.listdir(prefix):
 		if not dirent[0:3] == "usb":
 			continue
-		usbdev = UsbDevice(None, 0)
-		usbdev.read(dirent)
-		usbdev.readchildren()
+		usbdev = UsbDevice(None, dirent, 0)
 		root_hubs.append(usbdev)
 	root_hubs.sort(key=lambda x: int(x.fname[3:]))
 	for usbdev in root_hubs:
-- 
2.21.0




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux