From 061b4d202c74aaef25ac926cdb991c96a19e5d2d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 25 Jun 2012 12:48:01 -0500 Subject: [PATCH] decode: handle FUNCTION_CLASS_INTERFACE requests like CONTROL_TRANSFER The Novatel USB551L uses these to send data to the device, but the data is QMUX. --- decode/packet.py | 6 +++--- decode/qmux.py | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/decode/packet.py b/decode/packet.py index 1259b124..695828d8 100644 --- a/decode/packet.py +++ b/decode/packet.py @@ -43,7 +43,7 @@ funcs = { "-- URB_FUNCTION_CONTROL_TRANSFER:": (URBF_CONTROL, True, "C"), "-- URB_FUNCTION_SET_FEATURE_TO_DEVICE:": (URBF_SET_FEATURE, False, None), "-- URB_FUNCTION_ABORT_PIPE:": (URBF_SET_FEATURE, False, None), - "-- URB_FUNCTION_CLASS_INTERFACE:": (URBF_CLASS_IFACE, False, None), + "-- URB_FUNCTION_CLASS_INTERFACE:": (URBF_CLASS_IFACE, True, "C"), "-- URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE:": (URBF_CLEAR_FEATURE, False, None) } @@ -127,7 +127,7 @@ class Packet: if self.func == URBF_TRANSFER: self.protocol = self.transfer_prot - elif self.func == URBF_CONTROL: + elif self.func == URBF_CONTROL or self.func == URBF_CLASS_IFACE: self.protocol = self.control_prot if self.protocol: @@ -140,7 +140,7 @@ class Packet: self.in_data = True return False # not done; need more lines - if line.find("UrbLink = ") >= 0: + if line.find("UrbLink = ") >= 0 or line.find("UrbLink =") >= 0: if self.in_data: self.in_data = False diff --git a/decode/qmux.py b/decode/qmux.py index b26d5345..a5543ac2 100644 --- a/decode/qmux.py +++ b/decode/qmux.py @@ -65,6 +65,8 @@ class Tlv: cmd = svc[1][self.cmdno] except KeyError: pass + except TypeError: + pass tlvlist = None if self.direction == TP_REQUEST: tlvlist = cmd[1] @@ -184,6 +186,8 @@ def show(data, prefix, direction): scmd = qmi_cmd_to_string(cmdno, service) except KeyError: pass + except TypeError: + pass print prefix + " Cmd: 0x%04x (%s)" % (cmdno, scmd) print prefix + " Size: 0x%04x" % size