1233 lines
104 KiB
Lua
1233 lines
104 KiB
Lua
--[[
|
|
Wireshark Dissector for Qualcomm MSM Interface (QMI) Protocol v0.2
|
|
|
|
Copyright (c) 2017 Daniele Palmas <dnlplm@gmail.com>
|
|
|
|
Based on:
|
|
|
|
- Wireshark Dissector for Qualcomm MSM Interface (QMI) Protocol v0.1
|
|
Copyright (c) 2012 Ilya Voronin <ivoronin@gmail.com>
|
|
found at: https://gist.github.com/ivoronin/2641557
|
|
|
|
- Code Aurora Forum's BSD/GPL licensed code:
|
|
http://www.codeaurora.org/contribute/projects/gobi/
|
|
|
|
- freedesktop.org libqmi
|
|
https://www.freedesktop.org/wiki/Software/libqmi/
|
|
|
|
How to use the dissector:
|
|
|
|
LINUX
|
|
|
|
1. Make sure to have usbmon support enabled
|
|
|
|
2. Find device in the lsusb output, e.g.:
|
|
|
|
$ lsusb
|
|
...
|
|
Bus 003 Device 022: ID 1bc7:1201 Telit Wireless Solutions
|
|
...
|
|
|
|
3. Run wireshark:
|
|
|
|
$ wireshark -X lua_script:qmi_dissector_gen.lua
|
|
|
|
4. Collect log in the appropriate usbmon device (3 in the example) and appply qmi filter
|
|
|
|
WINDOWS
|
|
|
|
1. Make sure to have usbpcap installed
|
|
|
|
2. Find device in USBPcapCMD.exe output, e.g.:
|
|
|
|
C:\Program Files\USBPcap\USBPcaCMD.exe
|
|
...
|
|
2 \\.\USBPcap4
|
|
\??\USB#ROOT_HUB20#4&244e1552&0#<f18a0e88-c30c-11d0-8815-00a0c906bed8>
|
|
[Port 2] Telit USB Composite Device 0x1201
|
|
|
|
3. Run wireshark:
|
|
|
|
"C:\Program Files\Wireshark\Wireshark.exe" -X lua_script:qmi_dissector_gen.lua
|
|
|
|
4. Collect log in the appropriate usbpcap device (4 in the example)
|
|
|
|
--]]
|
|
|
|
--- QMI-over-MBIM service UUID
|
|
|
|
qmi_over_mbim_service_uuid = ByteArray.new("d1 a3 0b c2 f9 7a 6e 43 bf 65 c7 e2 4f b0 f0 d3")
|
|
|
|
---
|
|
--- Proto declaration
|
|
---
|
|
qmi_proto = Proto("qmi", "Qualcomm MSM Interface")
|
|
|
|
--
|
|
-- Fields
|
|
--
|
|
|
|
-- Generic USB and MBIM fields for QMI-over-MBIM
|
|
usb_bInterfaceClass_f = Field.new("usb.bInterfaceClass")
|
|
mbim_control_header_message_type_f = Field.new("mbim.control.header.message_type")
|
|
|
|
-- QMI fields
|
|
|
|
local f = qmi_proto.fields
|
|
|
|
-- QMUX Header
|
|
f.tf = ProtoField.uint8("qmi.tf", "T/F", base.DEC)
|
|
f.len = ProtoField.uint16("qmi.len", "Length", base.DEC)
|
|
f.flag = ProtoField.uint8("qmi.flag", "Flag", base.HEX)
|
|
f.cid = ProtoField.uint8("qmi.cliend_id", "Client ID", base.HEX)
|
|
-- Transaction Header
|
|
f.resp_ctl = ProtoField.uint8("qmi.trans_response", "Transaction Response Bit",
|
|
base.DEC, nil, 1)
|
|
f.ind_ctl = ProtoField.uint8("qmi.trans_indication", "Transaction Indication Bit",
|
|
base.DEC, nil, 2)
|
|
f.comp_svc = ProtoField.uint8("qmi.trans_compound", "Transaction Compound Bit",
|
|
base.DEC, nil, 1)
|
|
f.resp_svc = ProtoField.uint8("qmi.trans_response", "Transaction Response Bit",
|
|
base.DEC, nil, 2)
|
|
f.ind_svc = ProtoField.uint8("qmi.trans_indication", "Transaction Indication Bit",
|
|
base.DEC, nil, 4)
|
|
f.tid_ctl = ProtoField.uint8("qmi.trans_id", "Transaction ID", base.HEX)
|
|
f.tid_svc = ProtoField.uint16("qmi.trans_id", "Transaction ID", base.HEX)
|
|
-- Message Header
|
|
f.msgid = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX)
|
|
|
|
services = { [0] = "ctl", [1] = "wds", [2] = "dms", [3] = "nas", [4] = "qos", [5] = "wms", [6] = "pds", [7] = "auth", [8] = "at", [9] = "voice", [10] = "cat2", [11] = "uim", [12] = "pbm", [14] = "rmtfs", [16] = "loc", [17] = "sar", [18] = "ims", [26] = "wda", [31] = "imsp", [33] = "imsa", [42] = "dsd", [36] = "pdc", [47] = "dpm", [226] = "oma", [227] = "fox", [231] = "gms", [232] = "gas", }
|
|
|
|
f.svcid = ProtoField.uint8("qmi.service_id", "Service ID", base.HEX, services)
|
|
ctl_messages = { [0x0020] = "Set Instance ID", [0x0021] = "Get Version Info", [0x0022] = "Allocate CID", [0x0023] = "Release CID", [0x0026] = "Set Data Format", [0x0027] = "Sync", [0xFF00] = "Internal Proxy Open", [0xFF22] = "Internal Allocate CID QRTR", [0xFF23] = "Internal Release CID QRTR", }
|
|
|
|
f.msgid_ctl = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, ctl_messages)
|
|
|
|
tlv_ctl_req = { [0x0020] = { [0x01] = 'ID', }, [0x0021] = { }, [0x0022] = { [0x01] = 'Service', }, [0x0023] = { [0x01] = 'Release Info', }, [0x0026] = { [0x01] = 'Format', [0x10] = 'Protocol', }, [0x0027] = { }, [0xFF00] = { [0x01] = 'Device Path', }, [0xFF22] = { [0x01] = 'Service', }, [0xFF23] = { [0x01] = 'Release Info', }, }
|
|
|
|
tlv_ctl_resp = { [0x0020] = { [0x02] = 'Result', [0x01] = 'Link ID', }, [0x0021] = { [0x02] = 'Result', [0x01] = 'Service list', }, [0x0022] = { [0x02] = 'Result', [0x01] = 'Allocation Info', }, [0x0023] = { [0x02] = 'Result', [0x01] = 'Release Info', }, [0x0026] = { [0x02] = 'Result', [0x10] = 'Protocol', }, [0x0027] = { [0x02] = 'Result', }, [0xFF00] = { [0x02] = 'Result', }, [0xFF22] = { [0x02] = 'Result', [0x01] = 'Allocation Info', }, [0xFF23] = { [0x02] = 'Result', [0x01] = 'Release Info', }, }
|
|
|
|
ctl_indications = { [0x0027] = "Sync", }
|
|
|
|
tlv_ctl_ind = { [0x0027] = { }, }
|
|
|
|
|
|
|
|
f.msgid_ctl_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, ctl_indications)
|
|
|
|
dms_messages = { [0x0000] = "Reset", [0x0001] = "Set Event Report", [0x0020] = "Get Capabilities", [0x0021] = "Get Manufacturer", [0x0022] = "Get Model", [0x0023] = "Get Revision", [0x0024] = "Get MSISDN", [0x0025] = "Get IDs", [0x0026] = "Get Power State", [0x0027] = "UIM Set PIN Protection", [0x0028] = "UIM Verify PIN", [0x0029] = "UIM Unblock PIN", [0x002A] = "UIM Change PIN", [0x002B] = "UIM Get PIN Status", [0x002C] = "Get Hardware Revision", [0x002D] = "Get Operating Mode", [0x002E] = "Set Operating Mode", [0x002F] = "Get Time", [0x0030] = "Get PRL Version", [0x0031] = "Get Activation State", [0x0032] = "Activate Automatic", [0x0033] = "Activate Manual", [0x0034] = "Get User Lock State", [0x0035] = "Set User Lock State", [0x0036] = "Set User Lock Code", [0x0037] = "Read User Data", [0x0038] = "Write User Data", [0x0039] = "Read ERI File", [0x003A] = "Restore Factory Defaults", [0x003B] = "Validate Service Programming Code", [0x003C] = "UIM Get ICCID", [0x003E] = "Set Firmware ID", [0x0040] = "UIM Get CK Status", [0x0041] = "UIM Set CK Protection", [0x0042] = "UIM Unblock CK", [0x0043] = "UIM Get IMSI", [0x0044] = "UIM Get State", [0x0045] = "Get Band Capabilities", [0x0046] = "Get Factory SKU", [0x0047] = "Get Firmware Preference", [0x0048] = "Set Firmware Preference", [0x0049] = "List Stored Images", [0x004A] = "Delete Stored Image", [0x004B] = "Set Time", [0x004C] = "Get Stored Image Info", [0x004D] = "Get Alt Net Config", [0x004E] = "Set Alt Net Config", [0x004F] = "Get Boot Image Download Mode", [0x0050] = "Set Boot Image Download Mode", [0x0051] = "Get Software Version", [0x0052] = "Set Service Programming Code", [0x005C] = "Get MAC Address", [0x001E] = "Get Supported Messages", [0x5556] = "HP Change Device Mode", [0x5556] = "Swi Get Current Firmware", [0x555B] = "Swi Get USB Composition", [0x555C] = "Swi Set USB Composition", [0x555E] = "Foxconn Get Firmware Version", [0x555F] = "Set FCC Authentication", [0x5562] = "Foxconn Change Device Mode", [0x5571] = "Foxconn Set FCC Authentication", [0x5571] = "Foxconn Set FCC Authentication v2", }
|
|
|
|
f.msgid_dms = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dms_messages)
|
|
|
|
tlv_dms_req = { [0x0000] = { }, [0x0001] = { [0x10] = 'Power State Reporting', [0x11] = 'Battery Level Report Limits', [0x12] = 'PIN State Reporting', [0x13] = 'Activation State Reporting', [0x14] = 'Operating Mode Reporting', [0x15] = 'UIM State Reporting', [0x16] = 'Wireless Disable State Reporting', [0x17] = 'PRL Init Reporting', }, [0x0020] = { }, [0x0021] = { }, [0x0022] = { }, [0x0023] = { }, [0x0024] = { }, [0x0025] = { }, [0x0026] = { }, [0x0027] = { [0x01] = 'Info', }, [0x0028] = { [0x01] = 'Info', }, [0x0029] = { [0x01] = 'Info', }, [0x002A] = { [0x01] = 'Info', }, [0x002B] = { }, [0x002C] = { }, [0x002D] = { }, [0x002E] = { [0x01] = 'Mode', }, [0x002F] = { }, [0x0030] = { }, [0x0031] = { }, [0x0032] = { [0x01] = 'Activation Code', }, [0x0033] = { [0x01] = 'Info', [0x11] = 'MN HA key', [0x12] = 'MN AAA key', [0x13] = 'PRL', }, [0x0034] = { }, [0x0035] = { [0x01] = 'Info', }, [0x0036] = { [0x01] = 'Info', }, [0x0037] = { }, [0x0038] = { [0x01] = 'User Data', }, [0x0039] = { }, [0x003A] = { [0x01] = 'Service Programming Code', }, [0x003B] = { [0x01] = 'Service Programming Code', }, [0x003C] = { }, [0x003E] = { }, [0x0040] = { [0x01] = 'Facility', }, [0x0041] = { [0x01] = 'Facility', }, [0x0042] = { [0x01] = 'Facility', }, [0x0043] = { }, [0x0044] = { }, [0x0045] = { }, [0x0046] = { }, [0x0047] = { }, [0x0048] = { [0x01] = 'List', [0x10] = 'Download Override', [0x11] = 'Modem Storage Index', }, [0x0049] = { }, [0x004A] = { [0x01] = 'Image Details', }, [0x004B] = { [0x01] = 'Time Value', [0x10] = 'Time Reference Type', }, [0x004C] = { [0x01] = 'Image Details', }, [0x004D] = { }, [0x004E] = { [0x01] = 'Config', }, [0x004F] = { }, [0x0050] = { [0x01] = 'Mode', }, [0x0051] = { }, [0x0052] = { [0x01] = 'Current Code', [0x02] = 'New Code', }, [0x005C] = { [0x01] = 'Device', }, [0x001E] = { }, [0x5556] = { [0x01] = 'Mode', }, [0x5556] = { }, [0x555B] = { }, [0x555C] = { [0x01] = 'Current', }, [0x555E] = { [0x01] = 'Version Type', }, [0x555F] = { }, [0x5562] = { [0x01] = 'Mode', }, [0x5571] = { [0x01] = 'Value', }, [0x5571] = { [0x01] = 'Magic String', [0x02] = 'Magic Number', }, }
|
|
|
|
tlv_dms_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x0020] = { [0x02] = 'Result', [0x01] = 'Info', }, [0x0021] = { [0x02] = 'Result', [0x01] = 'Manufacturer', }, [0x0022] = { [0x02] = 'Result', [0x01] = 'Model', }, [0x0023] = { [0x02] = 'Result', [0x01] = 'Revision', }, [0x0024] = { [0x02] = 'Result', [0x01] = 'MSISDN', }, [0x0025] = { [0x02] = 'Result', [0x10] = 'Esn', [0x11] = 'Imei', [0x12] = 'Meid', [0x13] = 'Imei Software Version', }, [0x0026] = { [0x02] = 'Result', [0x01] = 'Info', }, [0x0027] = { [0x02] = 'Result', [0x10] = 'Pin Retries Status', }, [0x0028] = { [0x02] = 'Result', [0x10] = 'Pin Retries Status', }, [0x0029] = { [0x02] = 'Result', [0x10] = 'Pin Retries Status', }, [0x002A] = { [0x02] = 'Result', [0x10] = 'Pin Retries Status', }, [0x002B] = { [0x02] = 'Result', [0x11] = 'PIN1 Status', [0x12] = 'PIN2 Status', }, [0x002C] = { [0x02] = 'Result', [0x01] = 'Revision', }, [0x002D] = { [0x02] = 'Result', [0x01] = 'Mode', [0x10] = 'Offline Reason', [0x11] = 'Hardware Restricted Mode', }, [0x002E] = { [0x02] = 'Result', }, [0x002F] = { [0x02] = 'Result', [0x01] = 'Device Time', [0x10] = 'System Time', [0x11] = 'User Time', }, [0x0030] = { [0x02] = 'Result', [0x01] = 'Version', [0x10] = 'PRL Only Preference', }, [0x0031] = { [0x02] = 'Result', [0x01] = 'Info', }, [0x0032] = { [0x02] = 'Result', }, [0x0033] = { [0x02] = 'Result', }, [0x0034] = { [0x02] = 'Result', [0x01] = 'Enabled', }, [0x0035] = { [0x02] = 'Result', }, [0x0036] = { [0x02] = 'Result', }, [0x0037] = { [0x02] = 'Result', [0x01] = 'User Data', }, [0x0038] = { [0x02] = 'Result', }, [0x0039] = { [0x02] = 'Result', [0x01] = 'ERI File', }, [0x003A] = { [0x02] = 'Result', }, [0x003B] = { [0x02] = 'Result', }, [0x003C] = { [0x02] = 'Result', [0x01] = 'ICCID', }, [0x003E] = { [0x02] = 'Result', }, [0x0040] = { [0x02] = 'Result', [0x01] = 'CK Status', [0x10] = 'Operation Blocking Facility', }, [0x0041] = { [0x02] = 'Result', [0x10] = 'Verify Retries Left', }, [0x0042] = { [0x02] = 'Result', [0x10] = 'Unblock Retries Left', }, [0x0043] = { [0x02] = 'Result', [0x01] = 'IMSI', }, [0x0044] = { [0x02] = 'Result', [0x01] = 'State', }, [0x0045] = { [0x02] = 'Result', [0x01] = 'Band Capability', [0x10] = 'LTE Band Capability', [0x12] = 'Extended LTE Band Capability', [0x13] = 'NR5G Band Capability', }, [0x0046] = { [0x02] = 'Result', [0x01] = 'SKU', }, [0x0047] = { [0x02] = 'Result', [0x01] = 'List', }, [0x0048] = { [0x02] = 'Result', [0x01] = 'Image Download List', }, [0x0049] = { [0x02] = 'Result', [0x01] = 'List', }, [0x004A] = { [0x02] = 'Result', }, [0x004B] = { [0x02] = 'Result', }, [0x004C] = { [0x02] = 'Result', [0x10] = 'Boot Version', [0x11] = 'PRI Version', [0x12] = 'OEM Lock ID', }, [0x004D] = { [0x02] = 'Result', [0x01] = 'Config', }, [0x004E] = { [0x02] = 'Result', }, [0x004F] = { [0x02] = 'Result', [0x10] = 'Mode', }, [0x0050] = { [0x02] = 'Result', }, [0x0051] = { [0x02] = 'Result', [0x01] = 'Version', }, [0x0052] = { [0x02] = 'Result', }, [0x005C] = { [0x02] = 'Result', [0x10] = 'MAC Address', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x5556] = { [0x02] = 'Result', }, [0x5556] = { [0x02] = 'Result', [0x10] = 'Model', [0x11] = 'Boot version', [0x12] = 'AMSS version', [0x13] = 'SKU ID', [0x14] = 'Package ID', [0x15] = 'Carrier ID', [0x16] = 'PRI version', [0x17] = 'Carrier', [0x18] = 'Config version', }, [0x555B] = { [0x02] = 'Result', [0x10] = 'Current', [0x11] = 'Supported', }, [0x555C] = { [0x02] = 'Result', }, [0x555E] = { [0x02] = 'Result', [0x01] = 'Version', }, [0x555F] = { [0x02] = 'Result', }, [0x5562] = { [0x02] = 'Result', }, [0x5571] = { [0x02] = 'Result', }, [0x5571] = { [0x02] = 'Result', }, }
|
|
|
|
dms_indications = { [0x0001] = "Event Report", }
|
|
|
|
tlv_dms_ind = { [0x0001] = { [0x10] = 'Power State', [0x11] = 'PIN1 Status', [0x12] = 'PIN2 Status', [0x13] = 'Activation State', [0x14] = 'Operating Mode', [0x15] = 'UIM State', [0x16] = 'Wireless Disable State', [0x17] = 'PRL Init Notification', }, }
|
|
|
|
|
|
|
|
f.msgid_dms_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dms_indications)
|
|
|
|
dpm_messages = { [0x0020] = "Open Port", [0x0021] = "Close Port", }
|
|
|
|
f.msgid_dpm = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dpm_messages)
|
|
|
|
tlv_dpm_req = { [0x0020] = { [0x10] = 'Control Ports', [0x11] = 'Hardware Data Ports', [0x12] = 'Software Data Ports', }, [0x0021] = { }, }
|
|
|
|
tlv_dpm_resp = { [0x0020] = { [0x02] = 'Result', }, [0x0021] = { [0x02] = 'Result', }, }
|
|
|
|
dpm_indications = { }
|
|
|
|
tlv_dpm_ind = { }
|
|
|
|
|
|
|
|
f.msgid_dpm_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dpm_indications)
|
|
|
|
dsd_messages = { [0x0024] = "Get System Status", [0x0025] = "System Status Change", [0x0033] = "Get APN Info", [0x0051] = "Set APN Type", }
|
|
|
|
f.msgid_dsd = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dsd_messages)
|
|
|
|
tlv_dsd_req = { [0x0024] = { }, [0x0025] = { [0x11] = 'Register Indication', }, [0x0033] = { [0x01] = 'APN Type', }, [0x0051] = { [0x01] = 'APN Type', [0x10] = 'APN Type Preference Mask', }, }
|
|
|
|
tlv_dsd_resp = { [0x0024] = { [0x02] = 'Result', [0x10] = 'Available Systems', }, [0x0025] = { [0x02] = 'Result', }, [0x0033] = { [0x02] = 'Result', [0x10] = 'APN Name', }, [0x0051] = { [0x02] = 'Result', }, }
|
|
|
|
dsd_indications = { [0x0026] = "System Status", }
|
|
|
|
tlv_dsd_ind = { [0x0026] = { [0x10] = 'Available Systems', }, }
|
|
|
|
|
|
|
|
f.msgid_dsd_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, dsd_indications)
|
|
|
|
fox_messages = { [0x555E] = "Get Firmware Version", [0x5571] = "Set FCC Authentication", }
|
|
|
|
f.msgid_fox = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, fox_messages)
|
|
|
|
tlv_fox_req = { [0x555E] = { [0x01] = 'Version Type', }, [0x5571] = { [0x01] = 'Magic String', [0x02] = 'Magic Number', }, }
|
|
|
|
tlv_fox_resp = { [0x555E] = { [0x02] = 'Result', [0x01] = 'Version', }, [0x5571] = { [0x02] = 'Result', }, }
|
|
|
|
fox_indications = { }
|
|
|
|
tlv_fox_ind = { }
|
|
|
|
|
|
|
|
f.msgid_fox_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, fox_indications)
|
|
|
|
gas_messages = { [0x0203] = "DMS Set USB Composition", [0x0204] = "DMS Get USB Composition", [0x0206] = "DMS Set Active Firmware", [0x0208] = "DMS Get Firmware List", [0x0222] = "DMS Set Firmware Auto Sim", [0x0223] = "DMS Get Firmware Auto Sim", [0x022D] = "DMS Get Ethernet PDU MAC Address", }
|
|
|
|
f.msgid_gas = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, gas_messages)
|
|
|
|
tlv_gas_req = { [0x0203] = { [0x01] = 'USB Composition', [0x02] = 'Endpoint Type', [0x03] = 'Composition Persistence', [0x04] = 'Immediate Setting', [0x05] = 'Reboot After Setting', }, [0x0204] = { }, [0x0206] = { [0x10] = 'Carrier Name', [0x11] = 'Slot Index', [0x12] = 'Version', }, [0x0208] = { [0x01] = 'Mode', [0x10] = 'Slot Index', [0x11] = 'Name', [0x12] = 'Version', }, [0x0222] = { [0x01] = 'Auto Sim Mode', [0x10] = 'Config Id', }, [0x0223] = { }, [0x022D] = { }, }
|
|
|
|
tlv_gas_resp = { [0x0203] = { [0x02] = 'Result', }, [0x0204] = { [0x02] = 'Result', [0x03] = 'USB Composition', [0x04] = 'Endpoint Type', [0x05] = 'Composition Persistence', [0x06] = 'Immediate Setting', [0x07] = 'Reboot After Setting', }, [0x0206] = { [0x02] = 'Result', }, [0x0208] = { [0x02] = 'Result', [0x01] = 'Mode', [0x10] = 'Stored Firmware 1', [0x11] = 'Stored Firmware 2', [0x12] = 'Stored Firmware 3', [0x13] = 'Stored Firmware 4', }, [0x0222] = { [0x02] = 'Result', }, [0x0223] = { [0x02] = 'Result', [0x03] = 'Auto Sim Mode', [0x10] = 'Config Id', }, [0x022D] = { [0x02] = 'Result', [0x03] = 'MAC Address 0', [0x10] = 'MAC Address 1', }, }
|
|
|
|
gas_indications = { }
|
|
|
|
tlv_gas_ind = { }
|
|
|
|
|
|
|
|
f.msgid_gas_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, gas_indications)
|
|
|
|
gms_messages = { [0x0F00] = "Test Set Value", [0x0F01] = "Test Get Value", }
|
|
|
|
f.msgid_gms = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, gms_messages)
|
|
|
|
tlv_gms_req = { [0x0F00] = { [0x01] = 'Test Mandatory Value', [0x10] = 'Test Optional Value', }, [0x0F01] = { }, }
|
|
|
|
tlv_gms_resp = { [0x0F00] = { [0x02] = 'Result', }, [0x0F01] = { [0x02] = 'Result', [0x03] = 'Test Mandatory Value', [0x10] = 'Test Optional Value', }, }
|
|
|
|
gms_indications = { }
|
|
|
|
tlv_gms_ind = { }
|
|
|
|
|
|
|
|
f.msgid_gms_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, gms_indications)
|
|
|
|
ims_messages = { [0x0047] = "Set IMS Policy Manager Settings", [0x0048] = "Get IMS Policy Manager Settings", [0x008f] = "Set IMS Services Enabled Setting", [0x0090] = "Get IMS Services Enabled Setting", [0x0098] = "Bind", }
|
|
|
|
f.msgid_ims = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, ims_messages)
|
|
|
|
tlv_ims_req = { [0x0047] = { [0x14] = 'ACS Priority', [0x15] = 'ISIM Priority', [0x16] = 'NV Priority', [0x17] = 'PCO Priority', [0x18] = 'Service Mask', [0x19] = 'APNS', }, [0x0048] = { }, [0x008f] = { [0x10] = 'IMS Voice Over LTE Enable', [0x11] = 'IMS Video Telephony Service Enable', [0x14] = 'IMS Voice WiFi Service Enable', [0x15] = 'IMS Call Mode Preference', [0x18] = 'IMS Service Enabled', [0x19] = 'IMS UT Service Enable', [0x1A] = 'IMS SMS Service Enable', [0x1C] = 'IMS USSD Service Enabled', [0x1E] = 'IMS Presence Enabled', [0x1F] = 'IMS Autoconfig Enabled', [0x20] = 'IMS XDM Client Enabled', [0x21] = 'IMS RCS Enabled', [0x25] = 'IMS Carrier Config', }, [0x0090] = { }, [0x0098] = { [0x1] = 'Binding', }, }
|
|
|
|
tlv_ims_resp = { [0x0047] = { [0x02] = 'Result', [0x10] = 'IMS Settings Error', }, [0x0048] = { [0x02] = 'Result', [0x10] = 'IMS Settings Error', [0x15] = 'ACS Priority', [0x16] = 'ISIM Priority', [0x17] = 'NV Priority', [0x18] = 'PCO Priority', [0x19] = 'Service Mask', [0x1a] = 'APNS', }, [0x008f] = { [0x02] = 'Result', }, [0x0090] = { [0x02] = 'Result', [0x11] = 'IMS Voice Service Enabled', [0x12] = 'IMS Video Telephony Service Enabled', [0x15] = 'IMS Voice WiFi Service Enabled', [0x19] = 'IMS Registration Service Enabled', [0x1a] = 'IMS UT Service Enabled', [0x1b] = 'IMS SMS Service Enabled', [0x1d] = 'IMS USSD Service Enabled', }, [0x0098] = { [0x02] = 'Result', }, }
|
|
|
|
ims_indications = { [0x0049] = "IMS Policy Manager Settings Ind", [0x0091] = "IMS Services Enabled Setting", }
|
|
|
|
tlv_ims_ind = { [0x0049] = { [0x14] = 'ACS Priority', [0x15] = 'ISIM Priority', [0x16] = 'NV Priority', [0x17] = 'PCO Priority', [0x18] = 'Service Mask', [0x19] = 'APNS', }, [0x0091] = { [0x10] = 'IMS Voice Over LTE Enable', [0x11] = 'IMS Video Telephony Service Enable', [0x14] = 'IMS Voice WiFi Service Enable', [0x18] = 'IMS Service Enabled', [0x19] = 'IMS UT Service Enable', [0x1A] = 'IMS SMS Service Enable', [0x1C] = 'IMS USSD Service Enabled', [0x1E] = 'IMS Presence Enabled', [0x1F] = 'IMS Autoconfig Enabled', [0x20] = 'IMS XDM Client Enabled', [0x21] = 'IMS RCS Enabled', [0x25] = 'IMS Carrier Config', }, }
|
|
|
|
|
|
|
|
f.msgid_ims_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, ims_indications)
|
|
|
|
imsa_messages = { [0x0020] = "Get IMS Registration Status", [0x0021] = "Get IMS Services Status", [0x0022] = "Register Indications", [0x0033] = "Bind", [0x0034] = "Get Bind", }
|
|
|
|
f.msgid_imsa = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, imsa_messages)
|
|
|
|
tlv_imsa_req = { [0x0020] = { }, [0x0021] = { }, [0x0022] = { [0x10] = 'IMS Registration Status Changed', [0x11] = 'IMS Services Status Changed', }, [0x0033] = { [0x10] = 'Binding', }, [0x0034] = { }, }
|
|
|
|
tlv_imsa_resp = { [0x0020] = { [0x02] = 'Result', [0x12] = 'IMS Registration Status', [0x11] = 'IMS Registration Error Code', [0x13] = 'IMS Registration Error Message', [0x14] = 'IMS Registration Technology', }, [0x0021] = { [0x02] = 'Result', [0x10] = 'IMS SMS Service Status', [0x11] = 'IMS Voice Service Status', [0x12] = 'IMS Video Telephony Service Status', [0x13] = 'IMS SMS Service Registration Technology', [0x14] = 'IMS Voice Service Registration Technology', [0x15] = 'IMS Video Telephony Service Registration Technology', [0x16] = 'IMS UE to TAS Service Status', [0x17] = 'IMS UE to TAS Service Registration Technology', [0x18] = 'IMS Video Share Service Status', [0x19] = 'IMS Video Share Service Registration Technology', }, [0x0022] = { [0x02] = 'Result', }, [0x0033] = { [0x02] = 'Result', }, [0x0034] = { [0x02] = 'Result', [0x10] = 'Binding', }, }
|
|
|
|
imsa_indications = { [0x0023] = "IMS Registration Status Changed", [0x0024] = "IMS Services Status Changed", }
|
|
|
|
tlv_imsa_ind = { [0x0023] = { [0x11] = 'IMS Registration Status', [0x10] = 'IMS Registration Error Code', [0x12] = 'IMS Registration Error Message', [0x13] = 'IMS Registration Technology', }, [0x0024] = { [0x10] = 'IMS SMS Service Status', [0x11] = 'IMS Voice Service Status', [0x12] = 'IMS Video Telephony Service Status', [0x13] = 'IMS SMS Service Registration Technology', [0x14] = 'IMS Voice Service Registration Technology', [0x15] = 'IMS Video Telephony Service Registration Technology', [0x16] = 'IMS UE to TAS Service Status', [0x17] = 'IMS UE to TAS Service Registration Technology', [0x18] = 'IMS Video Share Service Status', [0x19] = 'IMS Video Share Service Registration Technology', }, }
|
|
|
|
|
|
|
|
f.msgid_imsa_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, imsa_indications)
|
|
|
|
imsp_messages = { [0x0024] = "Get Enabler State", }
|
|
|
|
f.msgid_imsp = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, imsp_messages)
|
|
|
|
tlv_imsp_req = { [0x0024] = { }, }
|
|
|
|
tlv_imsp_resp = { [0x0024] = { [0x02] = 'Result', [0x10] = 'Enabler State', }, }
|
|
|
|
imsp_indications = { }
|
|
|
|
tlv_imsp_ind = { }
|
|
|
|
|
|
|
|
f.msgid_imsp_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, imsp_indications)
|
|
|
|
loc_messages = { [0x0021] = "Register Events", [0x0022] = "Start", [0x0023] = "Stop", [0x0035] = "Inject Predicted Orbits Data", [0x0036] = "Get Predicted Orbits Data Source", [0x0037] = "Get Predicted Orbits Data Validity", [0x0038] = "Inject UTC Time", [0x0039] = "Inject Position", [0x003A] = "Set Engine Lock", [0x003B] = "Get Engine Lock", [0x003E] = "Set NMEA Types", [0x003F] = "Get NMEA Types", [0x0042] = "Set Server", [0x0043] = "Get Server", [0x0044] = "Delete Assistance Data", [0x004A] = "Set Operation Mode", [0x004B] = "Get Operation Mode", [0x00A7] = "Inject Xtra Data", }
|
|
|
|
f.msgid_loc = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, loc_messages)
|
|
|
|
tlv_loc_req = { [0x0021] = { [0x01] = 'Event Registration Mask', [0x10] = 'Client String ID', [0x11] = 'Client Type', [0x12] = 'Enable Positioning Request Notification', }, [0x0022] = { [0x01] = 'Session ID', [0x10] = 'Fix Recurrence Type', [0x12] = 'Intermediate Report State', [0x13] = 'Minimum Interval between Position Reports', }, [0x0023] = { [0x01] = 'Session ID', }, [0x0035] = { [0x01] = 'Total Size', [0x02] = 'Total Parts', [0x03] = 'Part Number', [0x04] = 'Part Data', [0x10] = 'Format Type', }, [0x0036] = { }, [0x0037] = { }, [0x0038] = { [0x01] = 'UTC Time', [0x02] = 'Time Uncertainty', [0x10] = 'Time Source', }, [0x0039] = { [0x10] = 'Latitude', [0x11] = 'Longitude', [0x12] = 'Horizontal Uncertainty Circular', [0x13] = 'Horizontal Confidence', [0x14] = 'Horizontal Reliability', [0x15] = 'Altitude from Ellipsoid', [0x16] = 'Altitude from Sealevel', [0x17] = 'Vertical Uncertainty', [0x18] = 'Vertical Confidence', [0x19] = 'Vertical Reliability', [0x1A] = 'Altitude Source', [0x1B] = 'UTC Timestamp', [0x1C] = 'Timestamp Age', [0x1D] = 'Position Source', [0x1E] = 'Raw Horizontal Uncertainty Circular', [0x1F] = 'Raw Horizontal Confidence', [0x20] = 'Requested Position Injection', [0x21] = 'Position Source Provider', [0x22] = 'GPS Date Time', [0x23] = 'Time Uncertainty', [0x24] = 'Speed East North Up', [0x25] = 'Speed Uncertainty East North Up', [0x26] = 'Satellites Used', [0x27] = 'Number Satellites in Fix', }, [0x003A] = { [0x01] = 'Lock Type', }, [0x003B] = { }, [0x003E] = { [0x01] = 'NMEA Types', }, [0x003F] = { }, [0x0042] = { [0x01] = 'Server Type', [0x10] = 'IPv4', [0x11] = 'IPv6', [0x12] = 'URL', }, [0x0043] = { [0x01] = 'Server Type', [0x10] = 'Server Address Type', }, [0x0044] = { [0x01] = 'Delete All', [0x10] = 'Delete SV Info', [0x11] = 'Delete GNSS Data Mask', [0x12] = 'Delete Cell Database Mask', [0x13] = 'Delete Clock Info Mask', }, [0x004A] = { [0x01] = 'Operation Mode', }, [0x004B] = { }, [0x00A7] = { [0x01] = 'Total Size', [0x02] = 'Total Parts', [0x03] = 'Part Number', [0x04] = 'Part Data', }, }
|
|
|
|
tlv_loc_resp = { [0x0021] = { [0x02] = 'Result', }, [0x0022] = { [0x02] = 'Result', }, [0x0023] = { [0x02] = 'Result', }, [0x0035] = { [0x02] = 'Result', }, [0x0036] = { [0x02] = 'Result', }, [0x0037] = { [0x02] = 'Result', }, [0x0038] = { [0x02] = 'Result', }, [0x0039] = { [0x02] = 'Result', }, [0x003A] = { [0x02] = 'Result', }, [0x003B] = { [0x02] = 'Result', }, [0x003E] = { [0x02] = 'Result', }, [0x003F] = { [0x02] = 'Result', }, [0x0042] = { [0x02] = 'Result', }, [0x0043] = { [0x02] = 'Result', }, [0x0044] = { [0x02] = 'Result', }, [0x004A] = { [0x02] = 'Result', }, [0x004B] = { [0x02] = 'Result', }, [0x00A7] = { [0x02] = 'Result', }, }
|
|
|
|
loc_indications = { [0x0024] = "Position Report", [0x0026] = "NMEA", [0x0028] = "Inject Time Request", [0x0029] = "Inject Predicted Orbits Request", [0x002A] = "Inject Position Request", [0x002B] = "Engine State", [0x002C] = "Fix Recurrence Type", [0x0025] = "GNSS Sv Info", [0x0035] = "Inject Predicted Orbits Data", [0x0036] = "Get Predicted Orbits Data Source", [0x0037] = "Get Predicted Orbits Data Validity", [0x0038] = "Inject UTC Time", [0x0039] = "Inject Position", [0x003A] = "Set Engine Lock", [0x003B] = "Get Engine Lock", [0x003E] = "Set NMEA Types", [0x003F] = "Get NMEA Types", [0x0042] = "Set Server", [0x0043] = "Get Server", [0x0044] = "Delete Assistance Data", [0x004A] = "Set Operation Mode", [0x004B] = "Get Operation Mode", [0x00A7] = "Inject Xtra Data", }
|
|
|
|
tlv_loc_ind = { [0x0024] = { [0x01] = 'Session Status', [0x02] = 'Session ID', [0x10] = 'Latitude', [0x11] = 'Longitude', [0x12] = 'Horizontal Uncertainty Circular', [0x13] = 'Horizontal Uncertainty Elliptical Minor', [0x14] = 'Horizontal Uncertainty Elliptical Major', [0x15] = 'Horizontal Uncertainty Elliptical Azimuth', [0x16] = 'Horizontal Confidence', [0x17] = 'Horizontal Reliability', [0x18] = 'Horizontal Speed', [0x19] = 'Speed Uncertainty', [0x1A] = 'Altitude from Ellipsoid', [0x1B] = 'Altitude from Sealevel', [0x1C] = 'Vertical Uncertainty', [0x1D] = 'Vertical Confidence', [0x1E] = 'Vertical Reliability', [0x1F] = 'Vertical Speed', [0x20] = 'Heading', [0x21] = 'Heading Uncertainty', [0x22] = 'Magnetic Deviation', [0x23] = 'Technology Used', [0x24] = 'DOP', [0x25] = 'UTC Timestamp', [0x26] = 'Leap Seconds', [0x27] = 'GPS Date Time', [0x28] = 'Time Uncertainty', [0x29] = 'Time Source', [0x2A] = 'Sensor Data Usage', [0x2B] = 'Session Fix Count', [0x2C] = 'Satellites Used', [0x2D] = 'Altitude Assumed', }, [0x0026] = { [0x01] = 'NMEA String', }, [0x0028] = { [0x10] = 'Time Server Info', }, [0x0029] = { [0x1] = 'Allowed Sizes', [0x10] = 'Server List', [0x11] = 'Server Update Mask', [0x12] = 'Update Type', [0x13] = 'Update Period Seconds', [0x14] = 'File Info', }, [0x002A] = { [0x01] = 'Latitude', [0x02] = 'Longitude', [0x03] = 'Horizontal Uncertainty Circular', [0x04] = 'UTC Timestamp', }, [0x002B] = { [0x01] = 'Engine State', }, [0x002C] = { [0x10] = 'Fix Recurrence Type', }, [0x0025] = { [0x01] = 'Altitude Assumed', [0x10] = 'List', }, [0x0035] = { [0x01] = 'Indication Status', [0x10] = 'Part Number', }, [0x0036] = { [0x01] = 'Indication Status', [0x10] = 'Allowed Sizes', [0x11] = 'Server List', }, [0x0037] = { [0x01] = 'Indication Status', [0x10] = 'Validity Info', }, [0x0038] = { [0x01] = 'Indication Status', }, [0x0039] = { [0x01] = 'Indication Status', }, [0x003A] = { [0x01] = 'Indication Status', }, [0x003B] = { [0x01] = 'Indication Status', [0x10] = 'Lock Type', }, [0x003E] = { [0x01] = 'Indication Status', }, [0x003F] = { [0x01] = 'Indication Status', [0x10] = 'NMEA Types', }, [0x0042] = { [0x01] = 'Indication Status', }, [0x0043] = { [0x01] = 'Indication Status', [0x02] = 'Server Type', [0x10] = 'IPv4', [0x11] = 'IPv6', [0x12] = 'URL', }, [0x0044] = { [0x01] = 'Indication Status', }, [0x004A] = { [0x01] = 'Indication Status', }, [0x004B] = { [0x01] = 'Indication Status', [0x10] = 'Operation Mode', }, [0x00A7] = { [0x01] = 'Indication Status', [0x10] = 'Part Number', }, }
|
|
|
|
|
|
|
|
f.msgid_loc_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, loc_indications)
|
|
|
|
nas_messages = { [0x0000] = "Reset", [0x0001] = "Abort", [0x0002] = "Set Event Report", [0x0003] = "Register Indications", [0x001E] = "Get Supported Messages", [0x0020] = "Get Signal Strength", [0x0021] = "Network Scan", [0x0022] = "Initiate Network Register", [0x0023] = "Attach Detach", [0x0024] = "Get Serving System", [0x0025] = "Get Home Network", [0x0026] = "Get Preferred Networks", [0x0027] = "Set Preferred Networks", [0x002A] = "Set Technology Preference", [0x002B] = "Get Technology Preference", [0x0031] = "Get RF Band Information", [0x0033] = "Set System Selection Preference", [0x0034] = "Get System Selection Preference", [0x0039] = "Get Operator Name", [0x0043] = "Get Cell Location Info", [0x0044] = "Get PLMN Name", [0x004D] = "Get System Info", [0x004F] = "Get Signal Info", [0x0050] = "Config Signal Info", [0x006C] = "Config Signal Info v2", [0x005A] = "Get Tx Rx Info", [0x0065] = "Get CDMA Position Info", [0x0067] = "Force Network Search", [0x007D] = "Get Network Time", [0x0085] = "Incremental Network Scan", [0x0089] = "Get DRX", [0x00AC] = "Get LTE Cphy CA Info", [0x00E8] = "Get ENDC Config", [0x5556] = "Swi Get Status", }
|
|
|
|
f.msgid_nas = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, nas_messages)
|
|
|
|
tlv_nas_req = { [0x0000] = { }, [0x0001] = { [0x01] = 'Transaction ID', }, [0x0002] = { [0x10] = 'Signal Strength Indicator', [0x11] = 'RF Band Information', [0x12] = 'Registration Reject Reason', [0x13] = 'RSSI Indicator', [0x14] = 'ECIO Indicator', [0x15] = 'IO Indicator', [0x16] = 'SINR Indicator', [0x17] = 'Error Rate Indicator', [0x19] = 'ECIO Threshold', [0x1A] = 'SINR Threshold', [0x1B] = 'LTE SNR Delta', [0x1C] = 'LTE RSRP Delta', }, [0x0003] = { [0x10] = 'System Selection Preference', [0x12] = 'DDTM Events', [0x13] = 'Serving System Events', [0x14] = 'Dual Standby Preference', [0x15] = 'Subscription Info', [0x17] = 'Network Time', [0x18] = 'System Info', [0x19] = 'Signal Info', [0x1A] = 'Error Rate', [0x1B] = 'HDR New UATI Assigned', [0x1C] = 'HDR Session Closed', [0x1D] = 'Managed Roaming', [0x1E] = 'Current PLMN Name', [0x1F] = 'eMBMS Status', [0x20] = 'RF Band Information', [0x21] = 'Network Reject Information', }, [0x001E] = { }, [0x0020] = { [0x10] = 'Request Mask', }, [0x0021] = { [0x10] = 'Network Type', }, [0x0022] = { [0x01] = 'Action', [0x10] = 'Manual Registration Info 3GPP', [0x11] = 'Change Duration', [0x12] = 'MNC PCS Digit Include Status', }, [0x0023] = { [0x10] = 'Action', }, [0x0024] = { }, [0x0025] = { }, [0x0026] = { }, [0x0027] = { [0x10] = 'unknown name', [0x11] = 'unknown name', [0x12] = 'Clear Previous Preferred Networks', }, [0x002A] = { [0x01] = 'Current', }, [0x002B] = { }, [0x0031] = { }, [0x0033] = { [0x10] = 'Emergency mode', [0x11] = 'Mode Preference', [0x12] = 'Band Preference', [0x13] = 'CDMA PRL Preference', [0x14] = 'Roaming Preference', [0x15] = 'LTE Band Preference', [0x16] = 'Network Selection Preference', [0x17] = 'Change Duration', [0x18] = 'Service Domain Preference', [0x19] = 'GSM WCDMA Acquisition Order Preference', [0x1A] = 'MNC PCS Digit Include Status', [0x1D] = 'TD SCDMA Band Preference', [0x1E] = 'Acquisition Order Preference', [0x1F] = 'Network Selection Registration Restriction', [0x21] = 'Usage Preference', [0x23] = 'Voice Domain Preference', [0x24] = 'Extended LTE Band Preference', [0x2F] = 'NR5G SA Band Preference', [0x30] = 'NR5G NSA Band Preference', }, [0x0034] = { }, [0x0039] = { }, [0x0043] = { }, [0x0044] = { [0x01] = 'PLMN', [0x10] = 'Suppress SIM Error', [0x11] = 'MNC PCS Digit Include Status', [0x12] = 'Always Send PLMN Name', [0x13] = 'Use Static Table Only', [0x14] = 'CSG ID', [0x15] = 'Radio Access Technology', [0x16] = 'Send All Information', }, [0x004D] = { }, [0x004F] = { }, [0x0050] = { [0x10] = 'RSSI Threshold', [0x11] = 'ECIO Threshold', [0x12] = 'SINR Threshold', [0x13] = 'LTE SNR Threshold', [0x14] = 'IO Threshold', [0x15] = 'RSRQ Threshold', [0x16] = 'RSRP Threshold', [0x17] = 'LTE Report', [0x18] = 'RSCP Threshold', }, [0x006C] = { [0x10] = 'CDMA RSSI Threshold List', [0x11] = 'CDMA RSSI Delta', [0x12] = 'CDMA ECIO Threshold List', [0x13] = 'CDMA ECIO Delta', [0x14] = 'HDR RSSI Threshold List', [0x15] = 'HDR RSSI Delta', [0x16] = 'HDR ECIO Threshold List', [0x17] = 'HDR ECIO Delta', [0x18] = 'HDR SINR Threshold List', [0x19] = 'HDR SINR Delta', [0x1A] = 'HDR IO Threshold List', [0x1B] = 'HDR IO Delta', [0x1C] = 'GSM RSSI Threshold List', [0x1D] = 'GSM RSSI Delta', [0x1E] = 'WCDMA RSSI Threshold List', [0x1F] = 'WCDMA RSSI Delta', [0x20] = 'WCDMA ECIO Threshold List', [0x21] = 'WCDMA ECIO Delta', [0x22] = 'LTE RSSI Threshold List', [0x23] = 'LTE RSSI Delta', [0x24] = 'LTE SNR Threshold List', [0x25] = 'LTE SNR Delta', [0x26] = 'LTE RSRQ Threshold List', [0x27] = 'LTE RSRQ Delta', [0x28] = 'LTE RSRP Threshold List', [0x29] = 'LTE RSRP Delta', [0x2A] = 'LTE Report', [0x33] = 'NR5G SNR Threshold List', [0x34] = 'NR5G SNR Delta', [0x35] = 'NR5G RSRP Threshold List', [0x36] = 'NR5G RSRP Delta', [0x37] = 'NR5G Report', [0x38] = 'NR5G RSRQ Threshold List', [0x39] = 'NR5G RSRQ Delta', [0x3A] = 'WCDMA RSCP Threshold List', [0x3B] = 'WCDMA RSCP Delta', }, [0x005A] = { [0x01] = 'Radio Interface', }, [0x0065] = { }, [0x0067] = { }, [0x007D] = { }, [0x0085] = { [0x10] = 'Network Type', }, [0x0089] = { }, [0x00AC] = { }, [0x00E8] = { }, [0x5556] = { }, }
|
|
|
|
tlv_nas_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x0002] = { [0x02] = 'Result', }, [0x0003] = { [0x02] = 'Result', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x01] = 'Signal Strength', [0x10] = 'Strength List', [0x11] = 'RSSI List', [0x12] = 'ECIO List', [0x13] = 'IO', [0x14] = 'SINR', [0x15] = 'Error Rate List', [0x16] = 'RSRQ', [0x17] = 'LTE SNR', [0x18] = 'LTE RSRP', }, [0x0021] = { [0x02] = 'Result', [0x10] = 'Network Information', [0x11] = 'Radio Access Technology', [0x12] = 'MNC PCS Digit Include Status', [0x13] = 'Network Scan Result', }, [0x0022] = { [0x02] = 'Result', }, [0x0023] = { [0x02] = 'Result', }, [0x0024] = { [0x02] = 'Result', [0x01] = 'Serving System', [0x10] = 'Roaming Indicator', [0x11] = 'Data Service Capability', [0x12] = 'Current PLMN', [0x13] = 'CDMA System ID', [0x14] = 'CDMA Base Station Info', [0x15] = 'Roaming Indicator List', [0x16] = 'Default Roaming Indicator', [0x17] = 'Time Zone 3GPP2', [0x18] = 'CDMA P Rev', [0x1A] = 'Time Zone 3GPP', [0x1B] = 'Daylight Saving Time Adjustment 3GPP', [0x1C] = 'LAC 3GPP', [0x1D] = 'CID 3GPP', [0x1E] = 'Concurrent Service Info 3GPP2', [0x1F] = 'PRL Indicator 3GPP2', [0x20] = 'DTM Support', [0x21] = 'Detailed Service Status', [0x22] = 'CDMA System Info', [0x23] = 'HDR Personality', [0x24] = 'LTE TAC', [0x25] = 'Call Barring Status', [0x26] = 'UMTS Primary Scrambling Code', [0x27] = 'MNC PCS Digit Include Status', [0x29] = 'Network Name Source', }, [0x0025] = { [0x02] = 'Result', [0x01] = 'Home Network', [0x10] = 'Home System ID', [0x11] = 'Home Network 3GPP2 Ext', [0x12] = 'Home Network 3GPP MNC', [0x13] = 'Network Name Source', }, [0x0026] = { [0x02] = 'Result', [0x10] = 'unknown name', [0x11] = 'Static Preferred Networks', [0x12] = 'unknown name', [0x13] = 'Static MNC PCS Digit Include Status', }, [0x0027] = { [0x02] = 'Result', }, [0x002A] = { [0x02] = 'Result', }, [0x002B] = { [0x02] = 'Result', [0x01] = 'Active', [0x10] = 'Persistent', }, [0x0031] = { [0x02] = 'Result', [0x01] = 'List', [0x11] = 'Extended List', [0x12] = 'Bandwidth List', }, [0x0033] = { [0x02] = 'Result', }, [0x0034] = { [0x02] = 'Result', [0x10] = 'Emergency mode', [0x11] = 'Mode Preference', [0x12] = 'Band Preference', [0x13] = 'CDMA PRL Preference', [0x14] = 'Roaming Preference', [0x15] = 'LTE Band Preference', [0x16] = 'Network Selection Preference', [0x18] = 'Service Domain Preference', [0x19] = 'GSM WCDMA Acquisition Order Preference', [0x1A] = 'TD SCDMA Band Preference', [0x1C] = 'Acquisition Order Preference', [0x1B] = 'Manual Network Selection', [0x1D] = 'Network Selection Registration Restriction', [0x1F] = 'Usage Preference', [0x20] = 'Voice Domain Preference', [0x22] = 'Disabled Modes', [0x23] = 'Extended LTE Band Preference', [0x2C] = 'NR5G SA Band Preference', [0x2D] = 'NR5G NSA Band Preference', }, [0x0039] = { [0x02] = 'Result', [0x10] = 'Service Provider Name', [0x11] = 'Operator PLMN List', [0x12] = 'Operator PLMN Name', [0x13] = 'Operator String Name', [0x14] = 'NITZ Information', }, [0x0043] = { [0x02] = 'Result', [0x10] = 'GERAN Info v2', [0x11] = 'UMTS Info v2', [0x12] = 'CDMA Info', [0x13] = 'Intrafrequency LTE Info v2', [0x14] = 'Interfrequency LTE Info', [0x15] = 'LTE Info Neighboring GSM', [0x16] = 'LTE Info Neighboring WCDMA', [0x17] = 'UMTS Cell ID', [0x18] = 'UMTS Info Neighboring LTE', [0x1E] = 'LTE Info Timing Advance', [0x2E] = 'NR5G ARFCN', [0x2F] = 'NR5G Cell Information', }, [0x0044] = { [0x02] = 'Result', [0x10] = '3GPP EONS PLMN Name', [0x11] = 'Display Bit Information', [0x12] = 'Network Information', [0x13] = 'PLMN Name With Language Id', [0x14] = 'Additional Information', [0x15] = 'Network Name Source', }, [0x004D] = { [0x02] = 'Result', [0x10] = 'CDMA Service Status', [0x11] = 'HDR Service Status', [0x12] = 'GSM Service Status', [0x13] = 'WCDMA Service Status', [0x14] = 'LTE Service Status', [0x15] = 'CDMA System Info', [0x16] = 'HDR System Info', [0x17] = 'GSM System Info v2', [0x18] = 'WCDMA System Info v2', [0x19] = 'LTE System Info v2', [0x1A] = 'Additional CDMA System Info', [0x1B] = 'Additional HDR System Info', [0x1C] = 'Additional GSM System Info', [0x1D] = 'Additional WCDMA System Info', [0x1E] = 'Additional LTE System Info', [0x1F] = 'GSM Call Barring Status', [0x20] = 'WCDMA Call Barring Status', [0x21] = 'LTE Voice Support', [0x22] = 'GSM Cipher Domain', [0x23] = 'WCDMA Cipher Domain', [0x24] = 'TD SCDMA Service Status', [0x25] = 'TD SCDMA System Info v2', [0x26] = 'LTE eMBMS Coverage Info Support', [0x27] = 'SIM Reject Info', [0x29] = 'IMS Voice Support', [0x2A] = 'LTE Voice Domain', [0x2B] = 'CDMA Registration Zone ID', [0x2C] = 'GSM Routing Area Code', [0x2D] = 'WCDMA Routing Area Code', [0x2E] = 'CDMA Resolved MCC', [0x2F] = 'Network Selection Registration Restriction', [0x31] = 'LTE Registration Domain', [0x34] = 'LTE eMBMS Coverage Info Trace ID', [0x44] = 'LTE Cell Access Status', [0x4A] = 'NR5G Service Status Info', [0x4B] = 'NR5G System Info', [0x4E] = 'EUTRA with NR5G availability', [0x4F] = 'DCNR restriction Info', [0x50] = 'NR5G Tracking Area Code', }, [0x004F] = { [0x02] = 'Result', [0x10] = 'CDMA Signal Strength', [0x11] = 'HDR Signal Strength', [0x12] = 'GSM Signal Strength', [0x13] = 'WCDMA Signal Strength', [0x14] = 'LTE Signal Strength', [0x15] = 'TDMA Signal Strength', [0x16] = 'TDMA Signal Strength Extended', [0x17] = '5G Signal Strength', [0x18] = '5G Signal Strength Extended', [0x19] = 'WCDMA RSCP', }, [0x0050] = { [0x02] = 'Result', }, [0x006C] = { [0x02] = 'Result', }, [0x005A] = { [0x02] = 'Result', [0x10] = 'Rx Chain 0 Info', [0x11] = 'Rx Chain 1 Info', [0x12] = 'Tx Info', [0x15] = 'Rx Chain 2 Info', [0x16] = 'Rx Chain 3 Info', }, [0x0065] = { [0x02] = 'Result', [0x10] = 'CDMA Position Info', }, [0x0067] = { [0x02] = 'Result', }, [0x007D] = { [0x02] = 'Result', [0x10] = '3GPP2 Time', [0x11] = '3GPP Time', }, [0x0085] = { [0x02] = 'Result', }, [0x0089] = { [0x02] = 'Result', [0x10] = 'Info', }, [0x00AC] = { [0x02] = 'Result', [0x11] = 'DL Bandwidth', [0x12] = 'Phy CA Agg SCell Info', [0x13] = 'Phy CA Agg PCell Info', [0x14] = 'SCell index', [0x15] = 'Phy CA Agg Secondary Cells', }, [0x00E8] = { [0x02] = 'Result', [0x10] = 'Enabled', [0x11] = 'Immediate SCG Release', }, [0x5556] = { [0x02] = 'Result', [0x01] = 'Common Info v2', [0x10] = 'LTE Info', }, }
|
|
|
|
nas_indications = { [0x0002] = "Event Report", [0x0024] = "Serving System", [0x003A] = "Operator Name", [0x004C] = "Network Time", [0x004E] = "System Info", [0x0051] = "Signal Info", [0x0068] = "Network Reject", [0x0085] = "Incremental Network Scan", }
|
|
|
|
tlv_nas_ind = { [0x0002] = { [0x10] = 'Signal Strength', [0x11] = 'RF Band Information', [0x12] = 'Registration Reject Reason', [0x13] = 'RSSI', [0x14] = 'ECIO', [0x15] = 'IO', [0x16] = 'SINR', [0x17] = 'Error Rate', [0x18] = 'RSRQ', [0x19] = 'LTE SNR', [0x1A] = 'LTE RSRP', }, [0x0024] = { [0x01] = 'Serving System', [0x10] = 'Roaming Indicator', [0x11] = 'Data Service Capability', [0x12] = 'Current PLMN', [0x13] = 'CDMA System ID', [0x14] = 'CDMA Base Station Info', [0x15] = 'Roaming Indicator List', [0x16] = 'Default Roaming Indicator', [0x17] = 'Time Zone 3GPP2', [0x18] = 'CDMA P Rev', [0x19] = 'PLMN Name Flag 3GPP', [0x1A] = 'Time Zone 3GPP', [0x1B] = 'Daylight Saving Time Adjustment 3GPP', [0x1C] = 'Universal Time and Local Time Zone 3GPP', [0x1D] = 'LAC 3GPP', [0x1E] = 'CID 3GPP', [0x1F] = 'Concurrent Service Info 3GPP2', [0x20] = 'PRL Indicator 3GPP2', [0x21] = 'DTM Support', [0x22] = 'Detailed Service Status', [0x23] = 'CDMA System Info', [0x24] = 'HDR Personality', [0x25] = 'LTE TAC', [0x26] = 'Call Barring Status', [0x27] = 'PLMN Not Changed Indication', [0x28] = 'UMTS Primary Scrambling Code', [0x29] = 'MNC PCS Digit Include Status', [0x2B] = 'Network Name Source', }, [0x003A] = { [0x10] = 'Service Provider Name', [0x11] = 'Operator PLMN List', [0x12] = 'Operator PLMN Name', [0x13] = 'Operator String Name', [0x14] = 'NITZ Information', }, [0x004C] = { [0x01] = 'Universal Time', [0x10] = 'Timezone Offset', [0x11] = 'Daylight Savings Adjustment', [0x12] = 'Radio Interface', }, [0x004E] = { [0x10] = 'CDMA Service Status', [0x11] = 'HDR Service Status', [0x12] = 'GSM Service Status', [0x13] = 'WCDMA Service Status', [0x14] = 'LTE Service Status', [0x15] = 'CDMA System Info', [0x16] = 'HDR System Info', [0x17] = 'GSM System Info v2', [0x18] = 'WCDMA System Info v2', [0x19] = 'LTE System Info v2', [0x1A] = 'Additional CDMA System Info', [0x1B] = 'Additional HDR System Info', [0x1C] = 'Additional GSM System Info', [0x1D] = 'Additional WCDMA System Info', [0x1E] = 'Additional LTE System Info', [0x1F] = 'GSM Call Barring Status', [0x20] = 'WCDMA Call Barring Status', [0x21] = 'LTE Voice Support', [0x22] = 'GSM Cipher Domain', [0x23] = 'WCDMA Cipher Domain', [0x24] = 'PLMN Not Changed Indication', [0x25] = 'TD SCDMA Service Status', [0x26] = 'TD SCMA System Info v2', [0x27] = 'LTE eMBMS Coverage Info Support', [0x28] = 'SIM Reject Info', [0x4C] = 'NR5G Service Status Info', [0x4D] = 'NR5G System Info', [0x50] = 'EUTRA with NR5G availability', [0x51] = 'DCNR restriction Info', [0x52] = 'NR5G Tracking Area Code', }, [0x0051] = { [0x10] = 'CDMA Signal Strength', [0x11] = 'HDR Signal Strength', [0x12] = 'GSM Signal Strength', [0x13] = 'WCDMA Signal Strength', [0x14] = 'LTE Signal Strength', [0x15] = 'TDMA Signal Strength', [0x17] = '5G Signal Strength', [0x18] = '5G Signal Strength Extended', [0x19] = 'WCDMA RSCP', }, [0x0068] = { [0x01] = 'Radio Interface', [0x02] = 'Service Domain', [0x03] = 'Reject Cause', [0x10] = 'PLMN', [0x11] = 'Closed Subscriber Group', }, [0x0085] = { [0x01] = 'Status', [0x10] = 'Network Information', }, }
|
|
|
|
|
|
|
|
f.msgid_nas_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, nas_indications)
|
|
|
|
oma_messages = { [0x0000] = "Reset", [0x0001] = "Set Event Report", [0x0020] = "Start Session", [0x0021] = "Cancel Session", [0x0022] = "Get Session Info", [0x0023] = "Send Selection", [0x0024] = "Get Feature Setting", [0x0025] = "Set Feature Setting", }
|
|
|
|
f.msgid_oma = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, oma_messages)
|
|
|
|
tlv_oma_req = { [0x0000] = { }, [0x0001] = { [0x10] = 'Network Initiated Alert Reporting', [0x11] = 'Session State Reporting', }, [0x0020] = { [0x10] = 'Session Type', }, [0x0021] = { }, [0x0022] = { }, [0x0023] = { [0x10] = 'Network Initiated Alert Selection', }, [0x0024] = { }, [0x0025] = { [0x10] = 'Device Provisioning Service Update Config', [0x11] = 'PRL Update Service Config', [0x12] = 'HFA Feature Config', }, }
|
|
|
|
tlv_oma_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x0020] = { [0x02] = 'Result', }, [0x0021] = { [0x02] = 'Result', }, [0x0022] = { [0x10] = 'Session Info', [0x11] = 'Session Failed Reason', [0x12] = 'Retry Info', [0x13] = 'Network Initiated Alert', [0x02] = 'Result', }, [0x0023] = { [0x02] = 'Result', }, [0x0024] = { [0x10] = 'Device Provisioning Service Update Config', [0x11] = 'PRL Update Service Config', [0x12] = 'HFA Feature Config', [0x13] = 'HFA Feature Done State', [0x02] = 'Result', }, [0x0025] = { [0x02] = 'Result', }, }
|
|
|
|
oma_indications = { [0x0001] = "Event Report", }
|
|
|
|
tlv_oma_ind = { [0x0001] = { [0x10] = 'Network Initiated Alert', [0x11] = 'Session State', [0x12] = 'Session Fail Reason', }, }
|
|
|
|
|
|
|
|
f.msgid_oma_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, oma_indications)
|
|
|
|
pbm_messages = { [0x0001] = "Indication Register", [0x0002] = "Get Capabilities", [0x0003] = "Get All Capabilities", [0x000e] = "Get Emergency List", }
|
|
|
|
f.msgid_pbm = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pbm_messages)
|
|
|
|
tlv_pbm_req = { [0x0001] = { [0x01] = 'Event Registration Mask', }, [0x0002] = { [0x01] = 'Phonebook Information', }, [0x0003] = { }, [0x000e] = { }, }
|
|
|
|
tlv_pbm_resp = { [0x0001] = { [0x02] = 'Result', [0x10] = 'Event Registration Mask', }, [0x0002] = { [0x02] = 'Result', [0x10] = 'Capability Basic Information', [0x11] = 'Group Capability', [0x12] = 'Additional Number Capability', [0x13] = 'Email Capability', [0x14] = 'Second Name Capability', [0x15] = 'Hidden Records Capability', [0x16] = 'Grouping Information Alpha String Capability', [0x17] = 'Additional Number Alpha String Capability', }, [0x0003] = { [0x02] = 'Result', [0x10] = 'Capability Basic Information', [0x11] = 'Group Capability', [0x12] = 'Additional Number Capability', [0x13] = 'Email Capability', [0x14] = 'Second Name Capability', [0x15] = 'Hidden Records Capability', [0x16] = 'Grouping Information Alpha String Capability', [0x17] = 'Additional Number Alpha String Capability', }, [0x000e] = { [0x02] = 'Result', [0x10] = 'Hardcoded Numbers', [0x11] = 'NV Numbers', [0x12] = 'Card Numbers', [0x13] = 'Network Numbers', }, }
|
|
|
|
pbm_indications = { }
|
|
|
|
tlv_pbm_ind = { }
|
|
|
|
|
|
|
|
f.msgid_pbm_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pbm_indications)
|
|
|
|
pdc_messages = { [0x0000] = "Reset", [0x20] = "Register", [0x22] = "Get Selected Config", [0x23] = "Set Selected Config", [0x24] = "List Configs", [0x25] = "Delete Config", [0x26] = "Load Config", [0x27] = "Activate Config", [0x28] = "Get Config Info", [0x29] = "Get Config Limits", [0x2A] = "Get Default Config Info", [0x2B] = "Deactivate Config", }
|
|
|
|
f.msgid_pdc = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pdc_messages)
|
|
|
|
tlv_pdc_req = { [0x0000] = { }, [0x20] = { [0x10] = 'Enable Reporting', [0x11] = 'Enable Refresh', }, [0x22] = { [0x1] = 'Config Type', [0x10] = 'Token', }, [0x23] = { [0x01] = 'Type With Id v2', [0x10] = 'Token', }, [0x24] = { [0x10] = 'Token', [0x11] = 'Config Type', }, [0x25] = { [0x1] = 'Config Type', [0x10] = 'Token', [0x11] = 'Id', }, [0x26] = { [0x1] = 'Config Chunk', [0x10] = 'Token', }, [0x27] = { [0x1] = 'Config Type', [0x10] = 'Token', }, [0x28] = { [0x01] = 'Type With Id v2', [0x10] = 'Token', }, [0x29] = { [0x1] = 'Config Type', [0x10] = 'Token', }, [0x2A] = { [0x1] = 'Config Type', [0x10] = 'Token', }, [0x2B] = { [0x1] = 'Config Type', [0x10] = 'Token', }, }
|
|
|
|
tlv_pdc_resp = { [0x0000] = { [0x02] = 'Result', }, [0x20] = { [0x02] = 'Result', }, [0x22] = { [0x02] = 'Result', [0x10] = 'Token', }, [0x23] = { [0x02] = 'Result', [0x10] = 'Token', }, [0x24] = { [0x02] = 'Result', }, [0x25] = { [0x02] = 'Result', [0x10] = 'Token', }, [0x26] = { [0x02] = 'Result', [0x10] = 'Token', }, [0x27] = { [0x02] = 'Result', [0x10] = 'Token', }, [0x28] = { [0x02] = 'Result', }, [0x29] = { [0x02] = 'Result', [0x10] = 'Token', [0x11] = 'Maximum Size', [0x12] = 'Current Size', }, [0x2A] = { [0x02] = 'Result', [0x10] = 'Token', [0x11] = 'Version', [0x12] = 'Total Size', [0x13] = 'Description', }, [0x2B] = { [0x02] = 'Result', [0x10] = 'Token', }, }
|
|
|
|
pdc_indications = { [0x21] = "Config Change", [0x22] = "Get Selected Config", [0x23] = "Set Selected Config", [0x24] = "List Configs", [0x26] = "Load Config", [0x27] = "Activate Config", [0x28] = "Get Config Info", [0x2B] = "Deactivate Config", [0x2F] = "Refresh", }
|
|
|
|
tlv_pdc_ind = { [0x21] = { [0x01] = 'Type With Id v2', }, [0x22] = { [0x10] = 'Token', [0x01] = 'Indication Result', [0x11] = 'Active Id', [0x12] = 'Pending Id', }, [0x23] = { [0x01] = 'Indication Result', [0x10] = 'Token', }, [0x24] = { [0x10] = 'Token', [0x01] = 'Indication Result', [0x11] = 'Configs', }, [0x26] = { [0x10] = 'Token', [0x01] = 'Indication Result', [0x11] = 'Received', [0x12] = 'Remaining Size', [0x13] = 'Frame Reset', }, [0x27] = { [0x01] = 'Indication Result', [0x10] = 'Token', }, [0x28] = { [0x10] = 'Token', [0x01] = 'Indication Result', [0x11] = 'Total Size', [0x12] = 'Description', [0x13] = 'Version', }, [0x2B] = { [0x01] = 'Indication Result', [0x10] = 'Token', }, [0x2F] = { [0x01] = 'Refresh Event', [0x10] = 'Subscription ID', [0x11] = 'Slot ID', }, }
|
|
|
|
|
|
|
|
f.msgid_pdc_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pdc_indications)
|
|
|
|
pds_messages = { [0x0000] = "Reset", [0x0001] = "Set Event Report", [0x0020] = "Get GPS Service State", [0x0021] = "Set GPS Service State", [0x0029] = "Get Default Tracking Session", [0x002A] = "Set Default Tracking Session", [0x002E] = "Get AGPS Config", [0x002F] = "Set AGPS Config", [0x0030] = "Get Auto Tracking State", [0x0031] = "Set Auto Tracking State", }
|
|
|
|
f.msgid_pds = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pds_messages)
|
|
|
|
tlv_pds_req = { [0x0000] = { }, [0x0001] = { [0x10] = 'NMEA Position Reporting', [0x11] = 'Extended NMEA Position Reporting', [0x12] = 'Parsed Position Reporting', [0x13] = 'External XTRA Data Request Reporting', [0x14] = 'External Time Injection Request Reporting', [0x15] = 'External WIFI Position Request Reporting', [0x16] = 'Satellite Information Reporting', [0x17] = 'VX Network Initiated Request Reporting', [0x18] = 'SUPL Network Initiated Prompt Reporting', [0x19] = 'UMTS CP Network Initiated Prompt Reporting', [0x1A] = 'PDS Comm Event Reporting', [0x1B] = 'Accelerometer Data Streaming Ready Reporting', [0x1C] = 'Gyro Data Streaming Ready Reporting', [0x1D] = 'Time Sync Request Reporting', [0x1E] = 'Position Reliability Indicator Reporting', [0x1F] = 'Sensor Data Usage Indicator Reporting', [0x20] = 'Time Source Information Reporting', [0x21] = 'Heading Uncertainty Reporting', [0x22] = 'NMEA Debug Strings Reporting', [0x23] = 'Extended External XTRA Data Request Reporting', }, [0x0020] = { }, [0x0021] = { [0x01] = 'State', }, [0x0029] = { }, [0x002A] = { [0x01] = 'Info', }, [0x002E] = { [0x12] = 'Network Mode', }, [0x002F] = { [0x10] = 'Location Server Address', [0x11] = 'Location Server URL', [0x14] = 'Network Mode', }, [0x0030] = { }, [0x0031] = { [0x01] = 'State', }, }
|
|
|
|
tlv_pds_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x0020] = { [0x02] = 'Result', [0x01] = 'State', }, [0x0021] = { [0x02] = 'Result', }, [0x0029] = { [0x02] = 'Result', [0x01] = 'Info', }, [0x002A] = { [0x02] = 'Result', }, [0x002E] = { [0x02] = 'Result', [0x10] = 'Location Server Address', [0x11] = 'Location Server URL', }, [0x002F] = { [0x02] = 'Result', }, [0x0030] = { [0x02] = 'Result', [0x01] = 'State', }, [0x0031] = { [0x02] = 'Result', }, }
|
|
|
|
pds_indications = { [0x0001] = "Event Report", [0x0060] = "GPS Ready", }
|
|
|
|
tlv_pds_ind = { [0x0001] = { [0x10] = 'NMEA Position', [0x11] = 'Extended NMEA Position', [0x12] = 'Position Session Status', }, [0x0060] = { }, }
|
|
|
|
|
|
|
|
f.msgid_pds_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, pds_indications)
|
|
|
|
qos_messages = { [0x0000] = "Reset", [0x0026] = "Get Flow Status", [0x0027] = "Get Network Status", [0x002B] = "Bind Mux Data Port", [0x002D] = "Bind Subscription", [0x002E] = "Get Bind Subscription", [0x5556] = "Swi Read Data Stats", }
|
|
|
|
f.msgid_qos = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, qos_messages)
|
|
|
|
tlv_qos_req = { [0x0000] = { }, [0x0026] = { [0x01] = 'Qos Id', }, [0x0027] = { }, [0x002B] = { [0x10] = 'Endpoint', [0x11] = 'Mux Id', [0x12] = 'Direction', }, [0x002D] = { [0x01] = 'Subscription Id', }, [0x002E] = { }, [0x5556] = { [0x01] = 'Apn Id', }, }
|
|
|
|
tlv_qos_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0026] = { [0x02] = 'Result', [0x01] = 'Value', }, [0x0027] = { [0x02] = 'Result', [0x01] = 'QoS Supported', }, [0x002B] = { [0x02] = 'Result', }, [0x002D] = { [0x02] = 'Result', }, [0x002E] = { [0x02] = 'Result', [0x10] = 'Subscription Id', }, [0x5556] = { [0x02] = 'Result', [0x03] = 'Apn', [0x04] = 'Flow', }, }
|
|
|
|
qos_indications = { [0x0026] = "Flow Status", [0x0027] = "Network Status", }
|
|
|
|
tlv_qos_ind = { [0x0026] = { [0x01] = 'Value', }, [0x0027] = { [0x01] = 'QoS Supported', }, }
|
|
|
|
|
|
|
|
f.msgid_qos_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, qos_indications)
|
|
|
|
sar_messages = { [0x0001] = "RF Set State", [0x0002] = "RF Get State", }
|
|
|
|
f.msgid_sar = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, sar_messages)
|
|
|
|
tlv_sar_req = { [0x0001] = { [0x01] = 'State', }, [0x0002] = { }, }
|
|
|
|
tlv_sar_resp = { [0x0001] = { [0x02] = 'Result', }, [0x0002] = { [0x02] = 'Result', [0x10] = 'State', }, }
|
|
|
|
sar_indications = { }
|
|
|
|
tlv_sar_ind = { }
|
|
|
|
|
|
|
|
f.msgid_sar_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, sar_indications)
|
|
|
|
uim_messages = { [0x0000] = "Reset", [0x001E] = "Get Supported Messages", [0x0020] = "Read Transparent", [0x0021] = "Read Record", [0x0023] = "Write Record", [0x0024] = "Get File Attributes", [0x0025] = "Set PIN Protection", [0x0026] = "Verify PIN", [0x0027] = "Unblock PIN", [0x0028] = "Change PIN", [0x0029] = "Depersonalization", [0x002A] = "Refresh Register", [0x002C] = "Refresh Complete", [0x002E] = "Register Events", [0x002F] = "Get Card Status", [0x0030] = "Power Off SIM", [0x0031] = "Power On SIM", [0x0038] = "Change Provisioning Session", [0x003A] = "Get Configuration", [0x003B] = "Send APDU", [0x003F] = "Logical Channel", [0x0042] = "Open Logical Channel", [0x0044] = "Refresh Register All", [0x0046] = "Switch Slot", [0x0047] = "Get Slot Status", [0x005D] = "Remote Unlock", }
|
|
|
|
f.msgid_uim = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, uim_messages)
|
|
|
|
tlv_uim_req = { [0x0000] = { }, [0x001E] = { }, [0x0020] = { [0x01] = 'Session', [0x02] = 'File', [0x03] = 'Read Information', [0x10] = 'Response In Indication Token', [0x11] = 'Encrypt Data', }, [0x0021] = { [0x01] = 'Session', [0x02] = 'File', [0x03] = 'Record', [0x10] = 'Last Record', [0x11] = 'Response In Indication Token', }, [0x0023] = { [0x01] = 'Session', [0x02] = 'File', [0x03] = 'Write Record', [0x10] = 'Response In Indication Token', }, [0x0024] = { [0x01] = 'Session', [0x02] = 'File', [0x10] = 'Response In Indication Token', }, [0x0025] = { [0x01] = 'Session', [0x02] = 'Info', [0x11] = 'Response In Indication Token', }, [0x0026] = { [0x01] = 'Session', [0x02] = 'Info', [0x12] = 'Response In Indication Token', }, [0x0027] = { [0x01] = 'Session', [0x02] = 'Info', [0x11] = 'Response In Indication Token', }, [0x0028] = { [0x01] = 'Session', [0x02] = 'Info', [0x11] = 'Response In Indication Token', }, [0x0029] = { [0x01] = 'Info', [0x10] = 'Slot', }, [0x002A] = { [0x01] = 'Session', [0x02] = 'Info', }, [0x002C] = { [0x01] = 'Session', [0x02] = 'Info', }, [0x002E] = { [0x01] = 'Event Registration Mask', }, [0x002F] = { }, [0x0030] = { [0x01] = 'Slot', }, [0x0031] = { [0x01] = 'Slot', }, [0x0038] = { [0x01] = 'Session Change', [0x10] = 'Application Information', }, [0x003A] = { [0x10] = 'Configuration Mask', }, [0x003B] = { [0x01] = 'Slot', [0x02] = 'APDU', [0x10] = 'Channel ID', [0x11] = 'Procedure bytes', }, [0x003F] = { [0x01] = 'Slot', [0x10] = 'AID', [0x11] = 'Channel ID', [0x12] = 'File Control Information', [0x13] = 'Terminate Application', }, [0x0042] = { [0x01] = 'Slot', [0x10] = 'AID', [0x11] = 'File Control Information', }, [0x0044] = { [0x01] = 'Session', [0x02] = 'Info', }, [0x0046] = { [0x01] = 'Logical Slot', [0x02] = 'Physical Slot', }, [0x0047] = { }, [0x005D] = { [0x10] = 'SimLock Data', [0x12] = 'SimLock Extended Data', }, }
|
|
|
|
tlv_uim_resp = { [0x0000] = { [0x02] = 'Result', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x10] = 'Card Result', [0x11] = 'Read result', [0x12] = 'Response In Indication Token', [0x13] = 'Encrypted Data', }, [0x0021] = { [0x02] = 'Result', [0x10] = 'Card Result', [0x11] = 'Read Result', [0x12] = 'Additional Read Result', [0x13] = 'Response In Indication Token', }, [0x0023] = { [0x02] = 'Result', [0x10] = 'Card Result', [0x11] = 'Response In Indication Token', }, [0x0024] = { [0x02] = 'Result', [0x10] = 'Card Result', [0x11] = 'File Attributes', [0x12] = 'Response In Indication Token', }, [0x0025] = { [0x02] = 'Result', [0x10] = 'Retries Remaining', [0x12] = 'Response In Indication Token', }, [0x0026] = { [0x02] = 'Result', [0x10] = 'Retries Remaining', [0x12] = 'Response In Indication Token', [0x13] = 'Card Result', }, [0x0027] = { [0x02] = 'Result', [0x10] = 'Retries Remaining', [0x12] = 'Response In Indication Token', [0x13] = 'Card Result', }, [0x0028] = { [0x02] = 'Result', [0x10] = 'Retries Remaining', [0x12] = 'Response In Indication Token', [0x13] = 'Card Result', }, [0x0029] = { [0x02] = 'Result', [0x10] = 'Retries Remaining', }, [0x002A] = { [0x02] = 'Result', }, [0x002C] = { [0x02] = 'Result', }, [0x002E] = { [0x02] = 'Result', [0x10] = 'Event Registration Mask', }, [0x002F] = { [0x02] = 'Result', [0x10] = 'Card Status', }, [0x0030] = { [0x02] = 'Result', }, [0x0031] = { [0x02] = 'Result', }, [0x0038] = { [0x02] = 'Result', }, [0x003A] = { [0x02] = 'Result', [0x10] = 'Automatic Selection', [0x11] = 'Personalization Status', [0x12] = 'Halt Subscription', [0x13] = 'Personalization Status Other', }, [0x003B] = { [0x02] = 'Result', [0x10] = 'APDU Response', }, [0x003F] = { [0x02] = 'Result', [0x10] = 'Channel ID', [0x11] = 'Card result', [0x12] = 'Select Response', }, [0x0042] = { [0x02] = 'Result', [0x10] = 'Channel ID', [0x11] = 'Card result', [0x12] = 'Select Response', }, [0x0044] = { [0x02] = 'Result', }, [0x0046] = { [0x02] = 'Result', }, [0x0047] = { [0x02] = 'Result', [0x10] = 'Physical Slot Status', [0x11] = 'Physical Slot Information', [0x12] = 'Slot EID', }, [0x005D] = { [0x02] = 'Result', }, }
|
|
|
|
uim_indications = { [0x0032] = "Card Status", [0x0033] = "Refresh", [0x0048] = "Slot Status", }
|
|
|
|
tlv_uim_ind = { [0x0032] = { [0x10] = 'Card Status', }, [0x0033] = { [0x10] = 'Event', }, [0x0048] = { [0x10] = 'Physical Slot Status', [0x11] = 'Physical Slot Information', [0x12] = 'Slot EID', }, }
|
|
|
|
|
|
|
|
f.msgid_uim_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, uim_indications)
|
|
|
|
voice_messages = { [0x0003] = "Indication Register", [0x001E] = "Get Supported Messages", [0x0020] = "Dial Call", [0x0021] = "End Call", [0x0022] = "Answer Call", [0x002F] = "Get All Call Info", [0x0031] = "Manage Calls", [0x0033] = "Set Supplementary Service", [0x0034] = "Get Call Waiting", [0x003A] = "Originate USSD", [0x003B] = "Answer USSD", [0x003C] = "Cancel USSD", [0x0041] = "Get Config", [0x0043] = "Originate USSD No Wait", [0x0028] = "Burst DTMF", [0x0029] = "Start Continuous DTMF", [0x002A] = "Stop Continuous DTMF", }
|
|
|
|
f.msgid_voice = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, voice_messages)
|
|
|
|
tlv_voice_req = { [0x0003] = { [0x10] = 'DTMF Events', [0x11] = 'Voice Privacy Events', [0x12] = 'Supplementary Service Notification Events', [0x13] = 'Call Notification Events', [0x14] = 'Handover Events', [0x15] = 'Speech Codec Events', [0x16] = 'USSD Notification Events', [0x18] = 'Modification Events', [0x19] = 'UUS Events', [0x1A] = 'AOC Events', [0x1B] = 'Conference Events', [0x1C] = 'Extended Burst Type International Information Events', [0x1D] = 'MT Page Miss Information Events', }, [0x001E] = { }, [0x0020] = { [0x01] = 'Calling Number', }, [0x0021] = { [0x01] = 'Call ID', }, [0x0022] = { [0x01] = 'Call ID', }, [0x002F] = { }, [0x0031] = { [0x01] = 'Service Type', [0x10] = 'Call ID', }, [0x0033] = { [0x01] = 'Supplementary Service Information', }, [0x0034] = { [0x10] = 'Service Class', }, [0x003A] = { [0x01] = 'USS Data', }, [0x003B] = { [0x01] = 'USS Data', }, [0x003C] = { }, [0x0041] = { [0x10] = 'Auto Answer', [0x11] = 'Air Timer', [0x12] = 'Roam Timer', [0x13] = 'TTY Mode', [0x14] = 'Preferred Voice Service Option', [0x15] = 'AMR Status', [0x16] = 'Preferred Voice Privacy', [0x17] = 'NAM Index', [0x18] = 'Voice Domain Preference', }, [0x0043] = { [0x01] = 'USS Data', }, [0x0028] = { [0x01] = 'Data', }, [0x0029] = { [0x01] = 'Data', }, [0x002A] = { [0x01] = 'Data', }, }
|
|
|
|
tlv_voice_resp = { [0x0003] = { [0x02] = 'Result', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x10] = 'Call ID', }, [0x0021] = { [0x02] = 'Result', [0x10] = 'Call ID', }, [0x0022] = { [0x02] = 'Result', [0x10] = 'Call ID', }, [0x002F] = { [0x02] = 'Result', [0x10] = 'Call Information', [0x11] = 'Remote Party Number', [0x13] = 'Alerting Type', }, [0x0031] = { [0x02] = 'Result', }, [0x0033] = { [0x02] = 'Result', [0x15] = 'Service Status', }, [0x0034] = { [0x02] = 'Result', [0x10] = 'Service Class', }, [0x003A] = { [0x02] = 'Result', [0x10] = 'Failure Cause', [0x11] = 'Alpha Identifier', [0x12] = 'USS Data', [0x13] = 'Call Control Result Type', [0x14] = 'Call ID', [0x15] = 'Call Control Supplementary Service Type', [0x16] = 'USS Data UTF16', }, [0x003B] = { [0x02] = 'Result', }, [0x003C] = { [0x02] = 'Result', }, [0x0041] = { [0x02] = 'Result', [0x10] = 'Auto Answer Status', [0x11] = 'Air Timer Count', [0x12] = 'Roam Timer Count', [0x13] = 'Current TTY Mode', [0x14] = 'Current Preferred Voice SO', [0x15] = 'Current AMR Status', [0x16] = 'Current Voice Privacy Preference', [0x17] = 'Current Voice Domain Preference', }, [0x0043] = { [0x02] = 'Result', }, [0x0028] = { [0x02] = 'Result', [0x10] = 'Call ID', }, [0x0029] = { [0x02] = 'Result', [0x10] = 'Call ID', }, [0x002A] = { [0x02] = 'Result', [0x10] = 'Call ID', }, }
|
|
|
|
voice_indications = { [0x002E] = "All Call Status", [0x0032] = "Supplementary Service", [0x003D] = "Release USSD", [0x003E] = "USSD", [0x0043] = "Originate USSD No Wait", }
|
|
|
|
tlv_voice_ind = { [0x002E] = { [0x01] = 'Call Information', [0x10] = 'Remote Party Number', [0x12] = 'Alerting Type', }, [0x0032] = { [0x01] = 'Info', }, [0x003D] = { }, [0x003E] = { [0x01] = 'User Action', [0x10] = 'USS Data', [0x11] = 'USS Data UTF16', }, [0x0043] = { [0x10] = 'Error Code', [0x11] = 'Failure Cause', [0x12] = 'USS Data', [0x13] = 'Alpha Identifier', [0x14] = 'USS Data UTF16', }, }
|
|
|
|
|
|
|
|
f.msgid_voice_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, voice_indications)
|
|
|
|
wda_messages = { [0x001E] = "Get Supported Messages", [0x0020] = "Set Data Format", [0x0021] = "Get Data Format", [0x002f] = "Loopback Configuration", [0x0030] = "Set Capability", [0x0033] = "Get Ethernet Config", }
|
|
|
|
f.msgid_wda = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wda_messages)
|
|
|
|
tlv_wda_req = { [0x001E] = { }, [0x0020] = { [0x10] = 'QoS Format', [0x11] = 'Link Layer Protocol', [0x12] = 'Uplink Data Aggregation Protocol', [0x13] = 'Downlink Data Aggregation Protocol', [0x14] = 'NDP Signature', [0x15] = 'Downlink Data Aggregation Max Datagrams', [0x16] = 'Downlink Data Aggregation Max Size', [0x17] = 'Endpoint Info', [0x1B] = 'Uplink Data Aggregation Max Datagrams', [0x1C] = 'Uplink Data Aggregation Max Size', }, [0x0021] = { [0x10] = 'Endpoint Info', }, [0x002f] = { [0x01] = 'Loopback state', [0x10] = 'Replication factor', }, [0x0030] = { [0x01] = 'Endpoint Info', [0x15] = 'Ethernet PDU Capability', }, [0x0033] = { }, }
|
|
|
|
tlv_wda_resp = { [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x10] = 'QoS Format', [0x11] = 'Link Layer Protocol', [0x12] = 'Uplink Data Aggregation Protocol', [0x13] = 'Downlink Data Aggregation Protocol', [0x14] = 'NDP Signature', [0x15] = 'Downlink Data Aggregation Max Datagrams', [0x16] = 'Downlink Data Aggregation Max Size', [0x17] = 'Uplink Data Aggregation Max Datagrams', [0x18] = 'Uplink Data Aggregation Max Size', [0x1A] = 'Download Minimum Padding', [0x1B] = 'Flow Control', }, [0x0021] = { [0x02] = 'Result', [0x10] = 'QoS Format', [0x11] = 'Link Layer Protocol', [0x12] = 'Uplink Data Aggregation Protocol', [0x13] = 'Downlink Data Aggregation Protocol', [0x14] = 'NDP Signature', [0x15] = 'Downlink Data Aggregation Max Datagrams', [0x16] = 'Downlink Data Aggregation Max Size', [0x17] = 'Uplink Data Aggregation Max Datagrams', [0x18] = 'Uplink Data Aggregation Max Size', [0x1A] = 'Download Minimum Padding', [0x1B] = 'Flow Control', }, [0x002f] = { [0x02] = 'Result', }, [0x0030] = { [0x02] = 'Result', [0x15] = 'Ethernet PDU Capability', }, [0x0033] = { [0x02] = 'Result', [0x10] = 'Hardware Config', }, }
|
|
|
|
wda_indications = { [0x002f] = "Loopback Configuration", }
|
|
|
|
tlv_wda_ind = { [0x002f] = { [0x01] = 'Loopback state', [0x10] = 'Replication factor', }, }
|
|
|
|
|
|
|
|
f.msgid_wda_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wda_indications)
|
|
|
|
wds_messages = { [0x0000] = "Reset", [0x0001] = "Set Event Report", [0x0002] = "Abort", [0x0003] = "Indication Register", [0x001E] = "Get Supported Messages", [0x0020] = "Start Network", [0x0021] = "Stop Network", [0x0022] = "Get Packet Service Status", [0x0023] = "Get Channel Rates", [0x0024] = "Get Packet Statistics", [0x0025] = "Go Dormant", [0x0026] = "Go Active", [0x0027] = "Create Profile", [0x0028] = "Modify Profile", [0x0029] = "Delete Profile", [0x002A] = "Get Profile List", [0x002B] = "Get Profile Settings", [0x002C] = "Get Default Settings", [0x002D] = "Get Current Settings", [0x0030] = "Get Dormancy Status", [0x0034] = "Get Autoconnect Settings", [0x0037] = "Get Data Bearer Technology", [0x0044] = "Get Current Data Bearer Technology", [0x0049] = "Get Default Profile Number", [0x004A] = "Set Default Profile Number", [0x004D] = "Set IP Family", [0x0051] = "Set Autoconnect Settings", [0x006C] = "Get PDN Throttle Info", [0x0085] = "Get LTE Attach Parameters", [0x0089] = "Bind Data Port", [0x0092] = "Get Max LTE Attach PDN Number", [0x0093] = "Set LTE Attach PDN List", [0x0094] = "Get LTE Attach PDN List", [0x00A2] = "Bind Mux Data Port", [0x00A7] = "Configure Profile Event List", [0x00AF] = "Bind Subscription", [0x00B0] = "Get Bind Subscription", [0x5558] = "Swi Create Profile Indexed", }
|
|
|
|
f.msgid_wds = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wds_messages)
|
|
|
|
tlv_wds_req = { [0x0000] = { }, [0x0001] = { [0x10] = 'Channel Rate', [0x11] = 'Transfer Statistics', [0x12] = 'Data Bearer Technology', [0x13] = 'Dormancy Status', [0x14] = 'MIP Status', [0x15] = 'Current Data Bearer Technology', [0x17] = 'Data Call Status', [0x18] = 'Preferred Data System', [0x19] = 'EVDO PM Change', [0x1A] = 'Data Systems', [0x1B] = 'Uplink Flow Control', [0x1C] = 'Limited Data System Status', [0x1D] = 'PDN Filter Removals', [0x1E] = 'Extended Data Bearer Technology', }, [0x0002] = { [0x01] = 'Transaction ID', }, [0x0003] = { [0x12] = 'Report Extended IP Configuration Change', [0x19] = 'Report Profile Changes', }, [0x001E] = { }, [0x0020] = { [0x10] = 'Primary DNS Address Preference', [0x11] = 'Secondary DNS Address Preference', [0x12] = 'Primary NBNS Address Preference', [0x13] = 'Secondary NBNS Address Preference', [0x14] = 'APN', [0x15] = 'IPv4 Address Preference', [0x16] = 'Authentication Preference', [0x17] = 'Username', [0x18] = 'Password', [0x19] = 'IP Family Preference', [0x30] = 'Technology Preference', [0x31] = 'Profile Index 3GPP', [0x32] = 'Profile Index 3GPP2', [0x33] = 'Enable Autoconnect', [0x34] = 'Extended Technology Preference', [0x35] = 'Call Type', }, [0x0021] = { [0x01] = 'Packet Data Handle', [0x10] = 'Disable Autoconnect', }, [0x0022] = { }, [0x0023] = { }, [0x0024] = { [0x01] = 'Mask', }, [0x0025] = { }, [0x0026] = { }, [0x0027] = { [0x01] = 'Profile Type', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x12] = 'PDP Header Compression Type', [0x13] = 'PDP Data Compression Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x17] = 'UMTS Requested QoS', [0x18] = 'UMTS Minimum QoS', [0x19] = 'GPRS Requested QoS', [0x1A] = 'GPRS Minimum QoS', [0x1B] = 'Username', [0x1C] = 'Password', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address Preference', [0x1F] = 'PCSCF Address Using PCO', [0x20] = 'PDP Access Control', [0x21] = 'PCSCF Address Using DHCP', [0x22] = 'IMCN Flag', [0x25] = 'PDP Context Number', [0x26] = 'PDP Context Secondary Flag', [0x27] = 'PDP Context Primary ID', [0x28] = 'IPv6 Address Preference', [0x29] = 'UMTS Requested QoS With Signaling Indication Flag', [0x2A] = 'UMTS Minimum QoS With Signaling Indication Flag', [0x2B] = 'IPv6 Primary DNS Address Preference', [0x2C] = 'IPv6 Secondary DNS Address Preference', [0x2D] = 'Address Allocation Preference', [0x2E] = 'LTE QoS Parameters', [0x2F] = 'APN Disabled Flag', [0x3E] = 'Roaming Disallowed Flag', [0x50] = 'VLAN ID Type', [0xDD] = 'APN Type Mask', }, [0x0028] = { [0x01] = 'Profile Identifier', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x12] = 'PDP Header Compression Type', [0x13] = 'PDP Data Compression Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x17] = 'UMTS Requested QoS', [0x18] = 'UMTS Minimum QoS', [0x19] = 'GPRS Requested QoS', [0x1A] = 'GPRS Minimum QoS', [0x1B] = 'Username', [0x1C] = 'Password', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address Preference', [0x1F] = 'PCSCF Address Using PCO', [0x20] = 'PDP Access Control', [0x21] = 'PCSCF Address Using DHCP', [0x22] = 'IMCN Flag', [0x25] = 'PDP Context Number', [0x26] = 'PDP Context Secondary Flag', [0x27] = 'PDP Context Primary ID', [0x28] = 'IPv6 Address Preference', [0x29] = 'UMTS Requested QoS With Signaling Indication Flag', [0x2A] = 'UMTS Minimum QoS With Signaling Indication Flag', [0x2B] = 'IPv6 Primary DNS Address Preference', [0x2C] = 'IPv6 Secondary DNS Address Preference', [0x2D] = 'Address Allocation Preference', [0x2E] = 'LTE QoS Parameters', [0x2F] = 'APN Disabled Flag', [0x3E] = 'Roaming Disallowed Flag', [0x50] = 'VLAN ID Type', [0xDD] = 'APN Type Mask', [0xDE] = 'CLAT Enabled', [0xDF] = 'IPv6 Prefix Delegation', }, [0x0029] = { [0x01] = 'Profile Identifier', }, [0x002A] = { [0x10] = 'Profile Type', }, [0x002B] = { [0x01] = 'Profile ID', }, [0x002C] = { [0x01] = 'Profile Type', }, [0x002D] = { [0x10] = 'Requested Settings', }, [0x0030] = { }, [0x0034] = { }, [0x0037] = { }, [0x0044] = { }, [0x0049] = { [0x01] = 'Profile Type', }, [0x004A] = { [0x01] = 'Profile Identifier', }, [0x004D] = { [0x01] = 'Preference', }, [0x0051] = { [0x01] = 'Status', [0x10] = 'Roaming', }, [0x006C] = { [0x01] = 'Network Type', }, [0x0085] = { }, [0x0089] = { [0x01] = 'Data Port', }, [0x0092] = { }, [0x0093] = { [0x01] = 'List', [0x10] = 'Action', }, [0x0094] = { }, [0x00A2] = { [0x10] = 'Endpoint Info', [0x11] = 'Mux ID', [0x13] = 'Client Type', }, [0x00A7] = { [0x10] = 'Register', }, [0x00AF] = { [0x01] = 'Subscription Id', }, [0x00B0] = { }, [0x5558] = { [0x01] = 'Profile Identifier', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x1B] = 'Username', [0x1C] = 'Password', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address Preference', [0x25] = 'PDP Context Number', [0x2F] = 'APN Disabled Flag', [0x3E] = 'Roaming Disallowed Flag', }, }
|
|
|
|
tlv_wds_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x0002] = { [0x02] = 'Result', }, [0x0003] = { [0x02] = 'Result', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x01] = 'Packet Data Handle', [0x10] = 'Call End Reason', [0x11] = 'Verbose Call End Reason', }, [0x0021] = { [0x02] = 'Result', }, [0x0022] = { [0x02] = 'Result', [0x01] = 'Connection Status', }, [0x0023] = { [0x02] = 'Result', [0x01] = 'Channel Rates', }, [0x0024] = { [0x02] = 'Result', [0x10] = 'Tx Packets Ok', [0x11] = 'Rx Packets Ok', [0x12] = 'Tx Packets Error', [0x13] = 'Rx Packets Error', [0x14] = 'Tx Overflows', [0x15] = 'Rx Overflows', [0x19] = 'Tx Bytes Ok', [0x1A] = 'Rx Bytes Ok', [0x1B] = 'Last Call Tx Bytes Ok', [0x1C] = 'Last Call Rx Bytes Ok', [0x1D] = 'Tx Packets Dropped', [0x1E] = 'Rx Packets Dropped', }, [0x0025] = { [0x02] = 'Result', }, [0x0026] = { [0x02] = 'Result', }, [0x0027] = { [0x02] = 'Result', [0x01] = 'Profile Identifier', [0xE0] = 'Extended Error Code', }, [0x0028] = { [0x02] = 'Result', [0xE0] = 'Extended Error Code', }, [0x0029] = { [0x02] = 'Result', [0xE0] = 'Extended Error Code', }, [0x002A] = { [0x02] = 'Result', [0x01] = 'Profile List', [0xE0] = 'Extended Error Code', }, [0x002B] = { [0x02] = 'Result', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x12] = 'PDP Header Compression Type', [0x13] = 'PDP Data Compression Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x17] = 'UMTS Requested QoS', [0x18] = 'UMTS Minimum QoS', [0x19] = 'GPRS Requested QoS', [0x1A] = 'GPRS Minimum QoS', [0x1B] = 'Username', [0x1C] = 'Password', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address Preference', [0x1F] = 'PCSCF Address Using PCO', [0x20] = 'PDP Access Control', [0x21] = 'PCSCF Address Using DHCP', [0x22] = 'IMCN Flag', [0x25] = 'PDP Context Number', [0x26] = 'PDP Context Secondary Flag', [0x27] = 'PDP Context Primary ID', [0x28] = 'IPv6 Address Preference', [0x29] = 'UMTS Requested QoS With Signaling Indication Flag', [0x2A] = 'UMTS Minimum QoS With Signaling Indication Flag', [0x2B] = 'IPv6 Primary DNS Address Preference', [0x2C] = 'IPv6 Secondary DNS Address Preference', [0x2D] = 'Address Allocation Preference', [0x2E] = 'LTE QoS Parameters', [0x2F] = 'APN Disabled Flag', [0x3E] = 'Roaming Disallowed Flag', [0x50] = 'VLAN ID Type', [0xDD] = 'APN Type Mask', [0xDE] = 'CLAT Enabled', [0xDF] = 'IPv6 Prefix Delegation', [0xE0] = 'Extended Error Code', }, [0x002C] = { [0x02] = 'Result', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x12] = 'PDP Header Compression Type', [0x13] = 'PDP Data Compression Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x17] = 'UMTS Requested QoS', [0x18] = 'UMTS Minimum QoS', [0x19] = 'GPRS Requested QoS', [0x1A] = 'GPRS Minimum QoS', [0x1B] = 'Username', [0x1C] = 'Password', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address Preference', [0x1F] = 'PCSCF Address Using PCO', [0x20] = 'PDP Access Control', [0x21] = 'PCSCF Address Using DHCP', [0x22] = 'IMCN Flag', [0x25] = 'PDP Context Number', [0x26] = 'PDP Context Secondary Flag', [0x27] = 'PDP Context Primary ID', [0x28] = 'IPv6 Address Preference', [0x29] = 'UMTS Requested QoS With Signaling Indication Flag', [0x2A] = 'UMTS Minimum QoS With Signaling Indication Flag', [0x2B] = 'IPv6 Primary DNS Address Preference', [0x2C] = 'IPv6 Secondary DNS Address Preference', [0x2D] = 'Address Allocation Preference', [0x2E] = 'LTE QoS Parameters', [0x2F] = 'APN Disabled Flag', [0x50] = 'VLAN ID Type', [0xE0] = 'Extended Error Code', }, [0x002D] = { [0x02] = 'Result', [0x10] = 'Profile Name', [0x11] = 'PDP Type', [0x14] = 'APN Name', [0x15] = 'Primary IPv4 DNS Address', [0x16] = 'Secondary IPv4 DNS Address', [0x17] = 'UMTS Granted QoS', [0x19] = 'GPRS Granted QoS', [0x1B] = 'Username', [0x1D] = 'Authentication', [0x1E] = 'IPv4 Address', [0x1F] = 'Profile ID', [0x20] = 'IPv4 Gateway Address', [0x21] = 'IPv4 Gateway Subnet Mask', [0x22] = 'PCSCF Address Using PCO', [0x23] = 'PCSCF Server Address List', [0x24] = 'PCSCF Domain Name List', [0x25] = 'IPv6 Address', [0x26] = 'IPv6 Gateway Address', [0x27] = 'IPv6 Primary DNS Address', [0x28] = 'IPv6 Secondary DNS Address', [0x29] = 'MTU', [0x2A] = 'Domain Name List', [0x2B] = 'IP Family', [0x2C] = 'IMCN Flag', [0x2D] = 'Extended Technology Preference', [0x2F] = 'Operator Reserved PCO', }, [0x0030] = { [0x02] = 'Result', [0x01] = 'Dormancy Status', }, [0x0034] = { [0x02] = 'Result', [0x01] = 'Status', [0x10] = 'Roaming', }, [0x0037] = { [0x02] = 'Result', [0x01] = 'Current', [0x10] = 'Last', }, [0x0044] = { [0x02] = 'Result', [0x01] = 'Current', [0x10] = 'Last', }, [0x0049] = { [0x02] = 'Result', [0x01] = 'Index', [0xE0] = 'Extended Error Code', }, [0x004A] = { [0x02] = 'Result', [0xE0] = 'Extended Error Code', }, [0x004D] = { [0x02] = 'Result', }, [0x0051] = { [0x02] = 'Result', }, [0x006C] = { [0x02] = 'Result', [0x10] = 'Info', }, [0x0085] = { [0x02] = 'Result', [0x10] = 'APN', [0x11] = 'IP Support Type', [0x12] = 'OTA Attach Performed', }, [0x0089] = { [0x02] = 'Result', }, [0x0092] = { [0x02] = 'Result', [0x10] = 'Info', }, [0x0093] = { [0x02] = 'Result', }, [0x0094] = { [0x02] = 'Result', [0x10] = 'Current List', [0x11] = 'Pending List', }, [0x00A2] = { [0x02] = 'Result', }, [0x00A7] = { [0x02] = 'Result', }, [0x00AF] = { [0x02] = 'Result', }, [0x00B0] = { [0x02] = 'Result', [0x10] = 'Subscription Id', }, [0x5558] = { [0x02] = 'Result', [0x01] = 'Profile Identifier', }, }
|
|
|
|
wds_indications = { [0x0001] = "Event Report", [0x0022] = "Packet Service Status", [0x008C] = "Extended Ip Config", [0x0093] = "Set LTE Attach PDN List", [0x00A8] = "Profile Changed", }
|
|
|
|
tlv_wds_ind = { [0x0001] = { [0x10] = 'Tx Packets Ok', [0x11] = 'Rx Packets Ok', [0x12] = 'Tx Packets Error', [0x13] = 'Rx Packets Error', [0x14] = 'Tx Overflows', [0x15] = 'Rx Overflows', [0x16] = 'Channel Rates', [0x17] = 'Data Bearer Technology', [0x18] = 'Dormancy Status', [0x19] = 'Tx Bytes Ok', [0x1A] = 'Rx Bytes Ok', [0x1B] = 'MIP Status', [0x1D] = 'Current Data Bearer Technology', [0x1F] = 'Data Call Status', [0x20] = 'Preferred Data System', [0x22] = 'Data Call Type', [0x23] = 'EVDO Page Monitor Period Change', [0x24] = 'Data Systems', [0x25] = 'Tx Packets Dropped', [0x26] = 'Rx Packets Dropped', [0x27] = 'Uplink Flow Control Enabled', [0x28] = 'Data Call Address Family', [0x29] = 'PDN Filters Removed', [0x2A] = 'Extended Data Bearer Technology', }, [0x0022] = { [0x01] = 'Connection Status', [0x10] = 'Call End Reason', [0x11] = 'Verbose Call End Reason', [0x12] = 'IP Family', [0x14] = 'Bearer ID', [0x15] = 'XLAT Capability', [0x34] = 'Extended Technology Preference', }, [0x008C] = { [0x10] = 'Changed IP Configuration', }, [0x0093] = { [0x01] = 'Action Result', }, [0x00A8] = { [0x10] = 'Profile Event', }, }
|
|
|
|
|
|
|
|
f.msgid_wds_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wds_indications)
|
|
|
|
wms_messages = { [0x0000] = "Reset", [0x0001] = "Set Event Report", [0x001E] = "Get Supported Messages", [0x0020] = "Raw Send", [0x0021] = "Raw Write", [0x0022] = "Raw Read", [0x0023] = "Modify Tag", [0x0024] = "Delete", [0x0030] = "Get Message Protocol", [0x0031] = "List Messages", [0x0032] = "Set Routes", [0x0033] = "Get Routes", [0x0037] = "Send Ack", [0x003c] = "Set Broadcast Activation", [0x003d] = "Set Broadcast Config", [0x003e] = "Get Broadcast Config", [0x0042] = "Send From Memory Storage", [0x0047] = "Indication Register", [0x004a] = "Get Transport Network Registration Status", }
|
|
|
|
f.msgid_wms = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wms_messages)
|
|
|
|
tlv_wms_req = { [0x0000] = { }, [0x0001] = { [0x10] = 'New MT Message Indicator', }, [0x001E] = { }, [0x0020] = { [0x01] = 'Raw Message Data', [0x10] = 'CDMA Force On DC', [0x11] = 'CDMA Follow On DC', [0x12] = 'GSM WCDMA Link Timer', [0x13] = 'SMS on IMS', }, [0x0021] = { [0x01] = 'Raw Message Data', }, [0x0022] = { [0x01] = 'Message Memory Storage ID', [0x10] = 'Message Mode', [0x11] = 'SMS on IMS', }, [0x0023] = { [0x01] = 'Message Tag', [0x10] = 'Message Mode', }, [0x0024] = { [0x01] = 'Memory Storage', [0x10] = 'Memory Index', [0x11] = 'Message Tag', [0x12] = 'Message Mode', }, [0x0030] = { }, [0x0031] = { [0x01] = 'Storage Type', [0x11] = 'Message Tag', [0x12] = 'Message Mode', }, [0x0032] = { [0x01] = 'Route List', [0x10] = 'Transfer Status Report', }, [0x0033] = { }, [0x0037] = { [0x01] = 'Information', [0x10] = '3GPP2 Failure Information', [0x11] = '3GPP Failure Information', [0x12] = 'SMS on IMS', }, [0x003c] = { [0x01] = 'Activation', }, [0x003d] = { [0x01] = 'Message Mode', [0x10] = 'Channels', }, [0x003e] = { [0x01] = 'Message Mode', }, [0x0042] = { [0x01] = 'Information', [0x10] = 'SMS on IMS', }, [0x0047] = { [0x11] = 'Report Transport Network Registration Status', }, [0x004a] = { }, }
|
|
|
|
tlv_wms_resp = { [0x0000] = { [0x02] = 'Result', }, [0x0001] = { [0x02] = 'Result', }, [0x001E] = { [0x02] = 'Result', [0x10] = 'List', }, [0x0020] = { [0x02] = 'Result', [0x01] = 'Message ID', [0x10] = 'CDMA Cause Code', [0x11] = 'CDMA Error Class', [0x12] = 'GSM WCDMA Cause Info', [0x13] = 'Message Delivery Failure Type', }, [0x0021] = { [0x02] = 'Result', [0x01] = 'Memory Index', }, [0x0022] = { [0x02] = 'Result', [0x01] = 'Raw Message Data', }, [0x0023] = { [0x02] = 'Result', }, [0x0024] = { [0x02] = 'Result', }, [0x0030] = { [0x02] = 'Result', [0x01] = 'Message Protocol', }, [0x0031] = { [0x02] = 'Result', [0x01] = 'Message List', }, [0x0032] = { [0x02] = 'Result', }, [0x0033] = { [0x02] = 'Result', [0x01] = 'Route List', [0x10] = 'Transfer Status Report', }, [0x0037] = { [0x02] = 'Result', [0x10] = 'Failure Cause', }, [0x003c] = { [0x02] = 'Result', }, [0x003d] = { [0x02] = 'Result', }, [0x003e] = { [0x02] = 'Result', [0x10] = 'Config', }, [0x0042] = { [0x02] = 'Result', [0x10] = 'Message ID', [0x11] = 'CDMA Cause Code', [0x12] = 'CDMA Error Class', [0x13] = 'GSM WCDMA Cause Info', [0x14] = 'Message Delivery Failure Type', }, [0x0047] = { [0x02] = 'Result', }, [0x004a] = { [0x02] = 'Result', [0x10] = 'Registration Status', }, }
|
|
|
|
wms_indications = { [0x0001] = "Event Report", [0x0046] = "SMSC Address", [0x004B] = "Transport Network Registration Status", }
|
|
|
|
tlv_wms_ind = { [0x0001] = { [0x10] = 'MT Message', [0x11] = 'Transfer Route MT Message', [0x12] = 'Message Mode', [0x13] = 'ETWS Message', [0x14] = 'ETWS PLMN Information', [0x15] = 'SMSC Address', [0x16] = 'SMS on IMS', }, [0x0046] = { [0x01] = 'Address', }, [0x004B] = { [0x01] = 'Registration Status', }, }
|
|
|
|
|
|
|
|
f.msgid_wms_ind = ProtoField.uint16("qmi.message_id", "Message ID", base.HEX, wms_indications)
|
|
|
|
f.msglen = ProtoField.uint16("qmi.message_len", "Message Length", base.DEC)
|
|
-- TLVs
|
|
f.tlvt = ProtoField.uint8("qmi.tlv_type", "TLV Type", base.HEX)
|
|
f.tlvl = ProtoField.uint16("qmi.tlv_len", "TLV Length", base.DEC)
|
|
f.tlvv = ProtoField.bytes("qmi.tlv_value", "TLV Value")
|
|
|
|
--
|
|
-- Utils Functions
|
|
--
|
|
|
|
compare_tvb = function(a1,a2,a_len)
|
|
for i=0,a_len-1
|
|
do
|
|
if a1(i,1):uint() ~= a2(i,1):uint() then return false end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
local function getstring(finfo)
|
|
local ok, val = pcall(tostring, finfo)
|
|
if not ok then val = "(unknown)" end
|
|
return val
|
|
end
|
|
|
|
--
|
|
-- Dissector Function
|
|
--
|
|
function qmi_proto.dissector(buffer, pinfo, tree)
|
|
local is_mbim = false
|
|
local usb_bInterfaceClass = usb_bInterfaceClass_f()
|
|
|
|
-- Check if this is QMI-over-MBIM looking at the interface class that should be CDC
|
|
if getstring(usb_bInterfaceClass) == "2" or getstring(usb_bInterfaceClass) == "0x02" then
|
|
is_mbim = true
|
|
tvb_qmi_over_mbim_service_uuid = ByteArray.tvb(qmi_over_mbim_service_uuid, "qmi_over_mbim_service_uuid Tvb")
|
|
len_tvb_qmi_over_mbim_service_uuid = tvb_qmi_over_mbim_service_uuid:len()
|
|
end
|
|
|
|
-- Set offset according to operating system
|
|
local off
|
|
if package.config:sub(1,1) == '\\' then
|
|
off = 28 -- USB pcap pseudoheader: does not include setup data, so URB size depends being a request or response
|
|
setup_data = 8
|
|
else
|
|
off = 64 -- URB header size: this includes setup data or padding, so size is always the same
|
|
setup_data = 0
|
|
end
|
|
|
|
if buffer:len() - off < 12 then
|
|
-- No payload or too short (12 is a min size)
|
|
return
|
|
end
|
|
|
|
-- If this is QMI-over-MBIM check length to avoid parsing all the other MBIM messages different than the ones indicated below (off + MBIM INDICATE header size is the smallest packet)
|
|
if is_mbim and buffer:len() > (off + 44) then
|
|
local offset_mbim_service_uuid
|
|
local additional_offset_to_qmi
|
|
local mbim_control_header_message_type = mbim_control_header_message_type_f()
|
|
|
|
-- MBIM message types:
|
|
-- 0x00000003 MBIM COMMAND MSG
|
|
-- 0x80000003 MBIM COMMAND DONE
|
|
-- 0x80000007 MBIM INDICATE
|
|
if getstring(mbim_control_header_message_type) == "0x00000003" then
|
|
-- offset_mbim_service_uuid = off (that could be USBpcap pseudoheader (28) or URB header size (64)) + setup data size + USB SEND ENCAPSULATED COMMAND (8) + MBIM COMMAND MSG up to device_service_uuid (20)
|
|
offset_mbim_service_uuid = off + setup_data + 20
|
|
-- additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + remaining MBIM COMMAND MSG header to information buffer (12)
|
|
additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + 12
|
|
elseif getstring(mbim_control_header_message_type) == "0x80000003" then
|
|
-- offset_mbim_service_uuid = off (that could be USBpcap pseudoheader (28) or URB header size (64)) + MBIM COMMAND DONE up to device_service_uuid (20)
|
|
offset_mbim_service_uuid = off + 20
|
|
-- additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + remaining MBIM COMMAND DONE header to information buffer (12)
|
|
additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + 12
|
|
elseif getstring(mbim_control_header_message_type) == "0x80000007" then
|
|
-- offset_mbim_service_uuid = off (that could be USBpcap pseudoheader (28) or URB header size (64)) + MBIM INDICATE up to device_service_uuid (20)
|
|
offset_mbim_service_uuid = off + 20
|
|
-- additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + remaining MBIM INDICATE header to information buffer (8)
|
|
additional_offset_to_qmi = len_tvb_qmi_over_mbim_service_uuid + 8
|
|
else
|
|
return
|
|
end
|
|
|
|
local mbim_service_uuid = buffer(offset_mbim_service_uuid, len_tvb_qmi_over_mbim_service_uuid)
|
|
|
|
if compare_tvb(tvb_qmi_over_mbim_service_uuid, mbim_service_uuid, len_tvb_qmi_over_mbim_service_uuid) == true then
|
|
off = offset_mbim_service_uuid + additional_offset_to_qmi
|
|
end
|
|
end
|
|
|
|
local tf = buffer(off,1)
|
|
if off == 28 and tf:uint() == 0x21 then
|
|
-- In Windows we should skip the setup data part in requests
|
|
off = off + setup_data
|
|
tf = buffer(off,1) -- Now it should be 0x01, the initial byte for QMUX header
|
|
end
|
|
|
|
-- QMUX Header (6 bytes), see GobiNet/QMI.h, should always start with 0x01
|
|
if tf:uint() ~= 1 then
|
|
-- Not a QMI packet
|
|
return
|
|
end
|
|
local len = buffer(off+1,2) -- Length
|
|
if len:le_uint() ~= buffer:len() - off - 1 then
|
|
-- Length does not match
|
|
return
|
|
end
|
|
local flag = buffer(off+3,1) -- Always 0x00 (out) or 0x80 (in)
|
|
if flag:uint() ~= 0x00 and flag:uint() ~= 0x80 then
|
|
-- Not a QMI packet
|
|
return
|
|
end
|
|
local svcid = buffer(off+4,1) -- Service ID
|
|
local cid = buffer(off+5,1) -- Client ID
|
|
|
|
-- Setup protocol subtree
|
|
local qmitree = tree:add(qmi_proto, buffer(off, buffer:len() - off), "QMI")
|
|
local hdrtree = qmitree:add(qmi_proto, buffer(off, 6), "QMUX Header")
|
|
hdrtree:add(f.tf, tf)
|
|
hdrtree:add_le(f.len, len)
|
|
hdrtree:add(f.flag, flag)
|
|
hdrtree:add(f.svcid, svcid)
|
|
hdrtree:add(f.cid, cid)
|
|
off = off + 6
|
|
|
|
-- Transaction Header (2 or 3 bytes), see GobiAPI/Core/QMIBuffers.h
|
|
local responsebit
|
|
local indicationbit
|
|
if svcid:uint() == 0 then
|
|
responsebit = buffer(off, 1):bitfield(7)
|
|
indicationbit = buffer(off, 1):bitfield(6)
|
|
local thdrtree = qmitree:add(qmi_proto, buffer(off, 2), "Transaction Header")
|
|
tid = buffer(off+1,1)
|
|
thdrtree:add(f.resp_ctl, buffer(off, 1))
|
|
thdrtree:add(f.ind_ctl, buffer(off, 1))
|
|
thdrtree:add(f.tid_ctl, tid)
|
|
off = off + 2
|
|
else
|
|
responsebit = buffer(off, 1):bitfield(6)
|
|
indicationbit = buffer(off, 1):bitfield(5)
|
|
local thdrtree = qmitree:add(qmi_proto, buffer(off, 3), "Transaction Header")
|
|
tid = buffer(off+1,2)
|
|
thdrtree:add(f.comp_svc, buffer(off, 1))
|
|
thdrtree:add(f.resp_svc, buffer(off, 1))
|
|
thdrtree:add(f.ind_svc, buffer(off, 1))
|
|
thdrtree:add_le(f.tid_svc, tid)
|
|
off = off + 3
|
|
end
|
|
|
|
-- Message Header (4 bytes), see GobiAPI/Core/QMIBuffers.h
|
|
local msgstr
|
|
msgid = buffer(off, 2)
|
|
msglen = buffer(off+2, 2)
|
|
local mhdrtree = qmitree:add(qmi_proto, buffer(off, 4), "Message Header")
|
|
if svcid:uint() == 0 then
|
|
if f.msgid_ctl ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_ctl_ind, msgid)
|
|
if ctl_indications ~= nil then
|
|
msgstr = ctl_indications[msgid:le_uint()]
|
|
tlv_description = tlv_ctl_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_ctl, msgid)
|
|
if ctl_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = ctl_messages[msgid:le_uint()]
|
|
tlv_description = tlv_ctl_resp
|
|
else
|
|
msgstr = ctl_messages[msgid:le_uint()]
|
|
tlv_description = tlv_ctl_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 1 then
|
|
if f.msgid_wds ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_wds_ind, msgid)
|
|
if wds_indications ~= nil then
|
|
msgstr = wds_indications[msgid:le_uint()]
|
|
tlv_description = tlv_wds_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_wds, msgid)
|
|
if wds_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = wds_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wds_resp
|
|
else
|
|
msgstr = wds_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wds_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 2 then
|
|
if f.msgid_dms ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_dms_ind, msgid)
|
|
if dms_indications ~= nil then
|
|
msgstr = dms_indications[msgid:le_uint()]
|
|
tlv_description = tlv_dms_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_dms, msgid)
|
|
if dms_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = dms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dms_resp
|
|
else
|
|
msgstr = dms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dms_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 3 then
|
|
if f.msgid_nas ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_nas_ind, msgid)
|
|
if nas_indications ~= nil then
|
|
msgstr = nas_indications[msgid:le_uint()]
|
|
tlv_description = tlv_nas_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_nas, msgid)
|
|
if nas_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = nas_messages[msgid:le_uint()]
|
|
tlv_description = tlv_nas_resp
|
|
else
|
|
msgstr = nas_messages[msgid:le_uint()]
|
|
tlv_description = tlv_nas_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 4 then
|
|
if f.msgid_qos ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_qos_ind, msgid)
|
|
if qos_indications ~= nil then
|
|
msgstr = qos_indications[msgid:le_uint()]
|
|
tlv_description = tlv_qos_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_qos, msgid)
|
|
if qos_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = qos_messages[msgid:le_uint()]
|
|
tlv_description = tlv_qos_resp
|
|
else
|
|
msgstr = qos_messages[msgid:le_uint()]
|
|
tlv_description = tlv_qos_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 5 then
|
|
if f.msgid_wms ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_wms_ind, msgid)
|
|
if wms_indications ~= nil then
|
|
msgstr = wms_indications[msgid:le_uint()]
|
|
tlv_description = tlv_wms_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_wms, msgid)
|
|
if wms_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = wms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wms_resp
|
|
else
|
|
msgstr = wms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wms_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 6 then
|
|
if f.msgid_pds ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_pds_ind, msgid)
|
|
if pds_indications ~= nil then
|
|
msgstr = pds_indications[msgid:le_uint()]
|
|
tlv_description = tlv_pds_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_pds, msgid)
|
|
if pds_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = pds_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pds_resp
|
|
else
|
|
msgstr = pds_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pds_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 7 then
|
|
if f.msgid_auth ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_auth_ind, msgid)
|
|
if auth_indications ~= nil then
|
|
msgstr = auth_indications[msgid:le_uint()]
|
|
tlv_description = tlv_auth_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_auth, msgid)
|
|
if auth_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = auth_messages[msgid:le_uint()]
|
|
tlv_description = tlv_auth_resp
|
|
else
|
|
msgstr = auth_messages[msgid:le_uint()]
|
|
tlv_description = tlv_auth_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 8 then
|
|
if f.msgid_at ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_at_ind, msgid)
|
|
if at_indications ~= nil then
|
|
msgstr = at_indications[msgid:le_uint()]
|
|
tlv_description = tlv_at_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_at, msgid)
|
|
if at_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = at_messages[msgid:le_uint()]
|
|
tlv_description = tlv_at_resp
|
|
else
|
|
msgstr = at_messages[msgid:le_uint()]
|
|
tlv_description = tlv_at_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 9 then
|
|
if f.msgid_voice ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_voice_ind, msgid)
|
|
if voice_indications ~= nil then
|
|
msgstr = voice_indications[msgid:le_uint()]
|
|
tlv_description = tlv_voice_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_voice, msgid)
|
|
if voice_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = voice_messages[msgid:le_uint()]
|
|
tlv_description = tlv_voice_resp
|
|
else
|
|
msgstr = voice_messages[msgid:le_uint()]
|
|
tlv_description = tlv_voice_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 10 then
|
|
if f.msgid_cat2 ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_cat2_ind, msgid)
|
|
if cat2_indications ~= nil then
|
|
msgstr = cat2_indications[msgid:le_uint()]
|
|
tlv_description = tlv_cat2_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_cat2, msgid)
|
|
if cat2_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = cat2_messages[msgid:le_uint()]
|
|
tlv_description = tlv_cat2_resp
|
|
else
|
|
msgstr = cat2_messages[msgid:le_uint()]
|
|
tlv_description = tlv_cat2_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 11 then
|
|
if f.msgid_uim ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_uim_ind, msgid)
|
|
if uim_indications ~= nil then
|
|
msgstr = uim_indications[msgid:le_uint()]
|
|
tlv_description = tlv_uim_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_uim, msgid)
|
|
if uim_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = uim_messages[msgid:le_uint()]
|
|
tlv_description = tlv_uim_resp
|
|
else
|
|
msgstr = uim_messages[msgid:le_uint()]
|
|
tlv_description = tlv_uim_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 12 then
|
|
if f.msgid_pbm ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_pbm_ind, msgid)
|
|
if pbm_indications ~= nil then
|
|
msgstr = pbm_indications[msgid:le_uint()]
|
|
tlv_description = tlv_pbm_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_pbm, msgid)
|
|
if pbm_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = pbm_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pbm_resp
|
|
else
|
|
msgstr = pbm_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pbm_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 14 then
|
|
if f.msgid_rmtfs ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_rmtfs_ind, msgid)
|
|
if rmtfs_indications ~= nil then
|
|
msgstr = rmtfs_indications[msgid:le_uint()]
|
|
tlv_description = tlv_rmtfs_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_rmtfs, msgid)
|
|
if rmtfs_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = rmtfs_messages[msgid:le_uint()]
|
|
tlv_description = tlv_rmtfs_resp
|
|
else
|
|
msgstr = rmtfs_messages[msgid:le_uint()]
|
|
tlv_description = tlv_rmtfs_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 16 then
|
|
if f.msgid_loc ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_loc_ind, msgid)
|
|
if loc_indications ~= nil then
|
|
msgstr = loc_indications[msgid:le_uint()]
|
|
tlv_description = tlv_loc_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_loc, msgid)
|
|
if loc_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = loc_messages[msgid:le_uint()]
|
|
tlv_description = tlv_loc_resp
|
|
else
|
|
msgstr = loc_messages[msgid:le_uint()]
|
|
tlv_description = tlv_loc_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 17 then
|
|
if f.msgid_sar ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_sar_ind, msgid)
|
|
if sar_indications ~= nil then
|
|
msgstr = sar_indications[msgid:le_uint()]
|
|
tlv_description = tlv_sar_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_sar, msgid)
|
|
if sar_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = sar_messages[msgid:le_uint()]
|
|
tlv_description = tlv_sar_resp
|
|
else
|
|
msgstr = sar_messages[msgid:le_uint()]
|
|
tlv_description = tlv_sar_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 18 then
|
|
if f.msgid_ims ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_ims_ind, msgid)
|
|
if ims_indications ~= nil then
|
|
msgstr = ims_indications[msgid:le_uint()]
|
|
tlv_description = tlv_ims_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_ims, msgid)
|
|
if ims_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = ims_messages[msgid:le_uint()]
|
|
tlv_description = tlv_ims_resp
|
|
else
|
|
msgstr = ims_messages[msgid:le_uint()]
|
|
tlv_description = tlv_ims_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 26 then
|
|
if f.msgid_wda ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_wda_ind, msgid)
|
|
if wda_indications ~= nil then
|
|
msgstr = wda_indications[msgid:le_uint()]
|
|
tlv_description = tlv_wda_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_wda, msgid)
|
|
if wda_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = wda_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wda_resp
|
|
else
|
|
msgstr = wda_messages[msgid:le_uint()]
|
|
tlv_description = tlv_wda_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 31 then
|
|
if f.msgid_imsp ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_imsp_ind, msgid)
|
|
if imsp_indications ~= nil then
|
|
msgstr = imsp_indications[msgid:le_uint()]
|
|
tlv_description = tlv_imsp_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_imsp, msgid)
|
|
if imsp_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = imsp_messages[msgid:le_uint()]
|
|
tlv_description = tlv_imsp_resp
|
|
else
|
|
msgstr = imsp_messages[msgid:le_uint()]
|
|
tlv_description = tlv_imsp_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 33 then
|
|
if f.msgid_imsa ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_imsa_ind, msgid)
|
|
if imsa_indications ~= nil then
|
|
msgstr = imsa_indications[msgid:le_uint()]
|
|
tlv_description = tlv_imsa_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_imsa, msgid)
|
|
if imsa_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = imsa_messages[msgid:le_uint()]
|
|
tlv_description = tlv_imsa_resp
|
|
else
|
|
msgstr = imsa_messages[msgid:le_uint()]
|
|
tlv_description = tlv_imsa_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 42 then
|
|
if f.msgid_dsd ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_dsd_ind, msgid)
|
|
if dsd_indications ~= nil then
|
|
msgstr = dsd_indications[msgid:le_uint()]
|
|
tlv_description = tlv_dsd_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_dsd, msgid)
|
|
if dsd_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = dsd_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dsd_resp
|
|
else
|
|
msgstr = dsd_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dsd_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 36 then
|
|
if f.msgid_pdc ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_pdc_ind, msgid)
|
|
if pdc_indications ~= nil then
|
|
msgstr = pdc_indications[msgid:le_uint()]
|
|
tlv_description = tlv_pdc_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_pdc, msgid)
|
|
if pdc_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = pdc_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pdc_resp
|
|
else
|
|
msgstr = pdc_messages[msgid:le_uint()]
|
|
tlv_description = tlv_pdc_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 47 then
|
|
if f.msgid_dpm ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_dpm_ind, msgid)
|
|
if dpm_indications ~= nil then
|
|
msgstr = dpm_indications[msgid:le_uint()]
|
|
tlv_description = tlv_dpm_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_dpm, msgid)
|
|
if dpm_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = dpm_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dpm_resp
|
|
else
|
|
msgstr = dpm_messages[msgid:le_uint()]
|
|
tlv_description = tlv_dpm_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 226 then
|
|
if f.msgid_oma ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_oma_ind, msgid)
|
|
if oma_indications ~= nil then
|
|
msgstr = oma_indications[msgid:le_uint()]
|
|
tlv_description = tlv_oma_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_oma, msgid)
|
|
if oma_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = oma_messages[msgid:le_uint()]
|
|
tlv_description = tlv_oma_resp
|
|
else
|
|
msgstr = oma_messages[msgid:le_uint()]
|
|
tlv_description = tlv_oma_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 227 then
|
|
if f.msgid_fox ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_fox_ind, msgid)
|
|
if fox_indications ~= nil then
|
|
msgstr = fox_indications[msgid:le_uint()]
|
|
tlv_description = tlv_fox_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_fox, msgid)
|
|
if fox_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = fox_messages[msgid:le_uint()]
|
|
tlv_description = tlv_fox_resp
|
|
else
|
|
msgstr = fox_messages[msgid:le_uint()]
|
|
tlv_description = tlv_fox_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 231 then
|
|
if f.msgid_gms ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_gms_ind, msgid)
|
|
if gms_indications ~= nil then
|
|
msgstr = gms_indications[msgid:le_uint()]
|
|
tlv_description = tlv_gms_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_gms, msgid)
|
|
if gms_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = gms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_gms_resp
|
|
else
|
|
msgstr = gms_messages[msgid:le_uint()]
|
|
tlv_description = tlv_gms_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
elseif svcid:uint() == 232 then
|
|
if f.msgid_gas ~= nil then
|
|
if indicationbit == 1 then
|
|
mhdrtree:add_le(f.msgid_gas_ind, msgid)
|
|
if gas_indications ~= nil then
|
|
msgstr = gas_indications[msgid:le_uint()]
|
|
tlv_description = tlv_gas_ind
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid_gas, msgid)
|
|
if gas_messages ~= nil then
|
|
if responsebit == 1 then
|
|
msgstr = gas_messages[msgid:le_uint()]
|
|
tlv_description = tlv_gas_resp
|
|
else
|
|
msgstr = gas_messages[msgid:le_uint()]
|
|
tlv_description = tlv_gas_req
|
|
end
|
|
end
|
|
end
|
|
end
|
|
else
|
|
mhdrtree:add_le(f.msgid, msgid)
|
|
end
|
|
mhdrtree:add_le(f.msglen, msglen)
|
|
off = off + 4
|
|
|
|
-- TLVs, see GobiAPI/Core/QMIBuffers.h
|
|
local msgend = off + msglen:le_uint()
|
|
while off < msgend do
|
|
local tlvt = buffer(off, 1)
|
|
local tlvl = buffer(off+1, 2)
|
|
local tlvv = buffer(off+3, tlvl:le_uint())
|
|
local tlv_name_available = pcall(function()
|
|
tlv_name = tlv_description[msgid:le_uint()][tlvt:uint()]
|
|
end)
|
|
if not tlv_name_available then
|
|
tlv_name = "Unknown TLV"
|
|
end
|
|
if tlv_name == nil then
|
|
tlv_name = "Unknown TLV"
|
|
end
|
|
local treesize = tlvl:le_uint() + 3
|
|
local treename = string.format("TLV 0x%.2x %s", tlvt:uint(), tlv_name)
|
|
local tlvtree = qmitree:add(qmi_proto, buffer(off, treesize), treename)
|
|
tlvtree:add(f.tlvt, tlvt)
|
|
tlvtree:add_le(f.tlvl, tlvl)
|
|
tlvtree:add(f.tlvv, tlvv)
|
|
off = off + treesize
|
|
end
|
|
|
|
-- Setup columns
|
|
local svcstr = services[svcid:uint()] and
|
|
services[svcid:uint()] or string.format("0x%x", svcid:uint())
|
|
local typestr = indicationbit == 1 and
|
|
"Indication" or responsebit == 1 and "Response" or "Request"
|
|
msgstr = msgstr ~= nil and msgstr or string.format("0x%x", msgid:le_uint())
|
|
pinfo.cols.protocol:append("/QMI")
|
|
pinfo.cols.info:append(string.format(", %s %s: %s", svcstr, typestr, msgstr))
|
|
end
|
|
|
|
register_postdissector(qmi_proto)
|
|
|