diff options
author | Dan Williams <dcbw@redhat.com> | 2012-06-25 12:48:01 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-06-25 12:48:47 -0500 |
commit | 061b4d202c74aaef25ac926cdb991c96a19e5d2d (patch) | |
tree | 4d048a4811d3033d5cf39bd749b7e8d18ca339c1 | |
parent | d20f33b5c9bf0c187725d96e90acd673a120a409 (diff) |
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.
-rw-r--r-- | decode/packet.py | 6 | ||||
-rw-r--r-- | 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 |