xref: /OK3568_Linux_fs/app/forlinx/quectelCM/MPQMUX.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*===========================================================================
2 
3                             M P Q M U X. H
4 DESCRIPTION:
5 
6     This file provides support for QMUX.
7 
8 INITIALIZATION AND SEQUENCING REQUIREMENTS:
9 
10 Copyright (C) 2011 by Qualcomm Technologies, Incorporated.  All Rights Reserved.
11 ===========================================================================*/
12 
13 #ifndef MPQMUX_H
14 #define MPQMUX_H
15 
16 #include "MPQMI.h"
17 
18 #pragma pack(push, 1)
19 
20 #define QMIWDS_SET_EVENT_REPORT_REQ           0x0001
21 #define QMIWDS_SET_EVENT_REPORT_RESP          0x0001
22 #define QMIWDS_EVENT_REPORT_IND               0x0001
23 #define QMIWDS_START_NETWORK_INTERFACE_REQ    0x0020
24 #define QMIWDS_START_NETWORK_INTERFACE_RESP   0x0020
25 #define QMIWDS_STOP_NETWORK_INTERFACE_REQ     0x0021
26 #define QMIWDS_STOP_NETWORK_INTERFACE_RESP    0x0021
27 #define QMIWDS_GET_PKT_SRVC_STATUS_REQ        0x0022
28 #define QMIWDS_GET_PKT_SRVC_STATUS_RESP       0x0022
29 #define QMIWDS_GET_PKT_SRVC_STATUS_IND        0x0022
30 #define QMIWDS_GET_CURRENT_CHANNEL_RATE_REQ   0x0023
31 #define QMIWDS_GET_CURRENT_CHANNEL_RATE_RESP  0x0023
32 #define QMIWDS_GET_PKT_STATISTICS_REQ         0x0024
33 #define QMIWDS_GET_PKT_STATISTICS_RESP        0x0024
34 #define QMIWDS_MODIFY_PROFILE_SETTINGS_REQ    0x0028
35 #define QMIWDS_MODIFY_PROFILE_SETTINGS_RESP   0x0028
36 #define QMIWDS_GET_PROFILE_SETTINGS_REQ         0x002B
37 #define QMIWDS_GET_PROFILE_SETTINGS_RESP        0x002B
38 #define QMIWDS_GET_DEFAULT_SETTINGS_REQ       0x002C
39 #define QMIWDS_GET_DEFAULT_SETTINGS_RESP      0x002C
40 #define QMIWDS_GET_RUNTIME_SETTINGS_REQ       0x002D
41 #define QMIWDS_GET_RUNTIME_SETTINGS_RESP      0x002D
42 #define QMIWDS_GET_MIP_MODE_REQ               0x002F
43 #define QMIWDS_GET_MIP_MODE_RESP              0x002F
44 #define QMIWDS_GET_DATA_BEARER_REQ            0x0037
45 #define QMIWDS_GET_DATA_BEARER_RESP           0x0037
46 #define QMIWDS_DUN_CALL_INFO_REQ              0x0038
47 #define QMIWDS_DUN_CALL_INFO_RESP             0x0038
48 #define QMIWDS_DUN_CALL_INFO_IND              0x0038
49 #define QMIWDS_SET_CLIENT_IP_FAMILY_PREF_REQ  0x004D
50 #define QMIWDS_SET_CLIENT_IP_FAMILY_PREF_RESP 0x004D
51 #define QMIWDS_SET_AUTO_CONNECT_REQ     0x0051
52 #define QMIWDS_SET_AUTO_CONNECT_RESP     0x0051
53 #define QMIWDS_BIND_MUX_DATA_PORT_REQ         0x00A2
54 #define QMIWDS_BIND_MUX_DATA_PORT_RESP        0x00A2
55 
56 
57 // Stats masks
58 #define QWDS_STAT_MASK_TX_PKT_OK 0x00000001
59 #define QWDS_STAT_MASK_RX_PKT_OK 0x00000002
60 #define QWDS_STAT_MASK_TX_PKT_ER 0x00000004
61 #define QWDS_STAT_MASK_RX_PKT_ER 0x00000008
62 #define QWDS_STAT_MASK_TX_PKT_OF 0x00000010
63 #define QWDS_STAT_MASK_RX_PKT_OF 0x00000020
64 
65 // TLV Types for xfer statistics
66 #define TLV_WDS_TX_GOOD_PKTS      0x10
67 #define TLV_WDS_RX_GOOD_PKTS      0x11
68 #define TLV_WDS_TX_ERROR          0x12
69 #define TLV_WDS_RX_ERROR          0x13
70 #define TLV_WDS_TX_OVERFLOW       0x14
71 #define TLV_WDS_RX_OVERFLOW       0x15
72 #define TLV_WDS_CHANNEL_RATE      0x16
73 #define TLV_WDS_DATA_BEARER       0x17
74 #define TLV_WDS_DORMANCY_STATUS   0x18
75 
76 #define QWDS_PKT_DATA_UNKNOW    0x00
77 #define QWDS_PKT_DATA_DISCONNECTED    0x01
78 #define QWDS_PKT_DATA_CONNECTED        0x02
79 #define QWDS_PKT_DATA_SUSPENDED        0x03
80 #define QWDS_PKT_DATA_AUTHENTICATING   0x04
81 
82 #define QMIWDS_ADMIN_SET_DATA_FORMAT_REQ      0x0020
83 #define QMIWDS_ADMIN_SET_DATA_FORMAT_RESP     0x0020
84 #define QMIWDS_ADMIN_GET_DATA_FORMAT_REQ      0x0021
85 #define QMIWDS_ADMIN_GET_DATA_FORMAT_RESP     0x0021
86 #define QMIWDS_ADMIN_SET_QMAP_SETTINGS_REQ    0x002B
87 #define QMIWDS_ADMIN_SET_QMAP_SETTINGS_RESP   0x002B
88 #define QMIWDS_ADMIN_GET_QMAP_SETTINGS_REQ    0x002C
89 #define QMIWDS_ADMIN_GET_QMAP_SETTINGS_RESP   0x002C
90 #define QMI_WDA_SET_LOOPBACK_CONFIG_REQ       0x002F
91 #define QMI_WDA_SET_LOOPBACK_CONFIG_RESP      0x002F
92 #define QMI_WDA_SET_LOOPBACK_CONFIG_IND       0x002F
93 
94 #define NETWORK_DESC_ENCODING_OCTET       0x00
95 #define NETWORK_DESC_ENCODING_EXTPROTOCOL 0x01
96 #define NETWORK_DESC_ENCODING_7BITASCII   0x02
97 #define NETWORK_DESC_ENCODING_IA5         0x03
98 #define NETWORK_DESC_ENCODING_UNICODE     0x04
99 #define NETWORK_DESC_ENCODING_SHIFTJIS    0x05
100 #define NETWORK_DESC_ENCODING_KOREAN      0x06
101 #define NETWORK_DESC_ENCODING_LATINH      0x07
102 #define NETWORK_DESC_ENCODING_LATIN       0x08
103 #define NETWORK_DESC_ENCODING_GSM7BIT     0x09
104 #define NETWORK_DESC_ENCODING_GSMDATA     0x0A
105 #define NETWORK_DESC_ENCODING_UNKNOWN     0xFF
106 
107 typedef struct _QMIWDS_ADMIN_SET_DATA_FORMAT
108 {
109    USHORT Type;             // QMUX type 0x0000
110    USHORT Length;
111 } __attribute__ ((packed)) QMIWDS_ADMIN_SET_DATA_FORMAT, *PQMIWDS_ADMIN_SET_DATA_FORMAT;
112 
113 typedef struct _QMIWDS_ADMIN_SET_DATA_FORMAT_TLV_QOS
114 {
115    UCHAR  TLVType;
116    USHORT TLVLength;
117    UCHAR  QOSSetting;
118 } __attribute__ ((packed)) QMIWDS_ADMIN_SET_DATA_FORMAT_TLV_QOS, *PQMIWDS_ADMIN_SET_DATA_FORMAT_TLV_QOS;
119 
120 typedef struct _QMIWDS_ADMIN_SET_DATA_FORMAT_TLV
121 {
122    UCHAR  TLVType;
123    USHORT TLVLength;
124    ULONG  Value;
125 } __attribute__ ((packed)) QMIWDS_ADMIN_SET_DATA_FORMAT_TLV, *PQMIWDS_ADMIN_SET_DATA_FORMAT_TLV;
126 
127 typedef struct _QMIWDS_ENDPOINT_TLV
128 {
129    UCHAR  TLVType;
130    USHORT TLVLength;
131    ULONG  ep_type;
132    ULONG  iface_id;
133 } __attribute__ ((packed)) QMIWDS_ENDPOINT_TLV, *PQMIWDS_ENDPOINT_TLV;
134 
135 typedef struct _QMIWDS_ADMIN_SET_DATA_FORMAT_REQ_MSG
136 {
137    USHORT Type;
138    USHORT Length;
139     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV_QOS QosDataFormatTlv;
140     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV UnderlyingLinkLayerProtocolTlv;
141     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV UplinkDataAggregationProtocolTlv;
142     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV DownlinkDataAggregationProtocolTlv;
143     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV DownlinkDataAggregationMaxDatagramsTlv;
144     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV DownlinkDataAggregationMaxSizeTlv;
145     QMIWDS_ENDPOINT_TLV epTlv;
146 #ifdef QUECTEL_UL_DATA_AGG
147     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV DlMinimumPassingTlv;
148     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV UplinkDataAggregationMaxDatagramsTlv;
149     QMIWDS_ADMIN_SET_DATA_FORMAT_TLV UplinkDataAggregationMaxSizeTlv;
150 #endif
151 } __attribute__ ((packed)) QMIWDS_ADMIN_SET_DATA_FORMAT_REQ_MSG, *PQMIWDS_ADMIN_SET_DATA_FORMAT_REQ_MSG;
152 
153 typedef struct _QMI_U8_TLV
154 {
155    UCHAR  TLVType;
156    USHORT TLVLength;
157    UCHAR  TLVVaule;
158 } __attribute__ ((packed)) QMI_U8_TLV, *PQMI_U8_TLV;
159 
160 typedef struct _QMI_U32_TLV
161 {
162    UCHAR  TLVType;
163    USHORT TLVLength;
164    ULONG  TLVVaule;
165 } __attribute__ ((packed)) QMI_U32_TLV, *PQMI_U32_TLV;
166 
167 typedef struct _QMI_WDA_SET_LOOPBACK_CONFIG_REQ_MSG {
168 	USHORT Type;
169 	USHORT Length;
170 	QMI_U8_TLV loopback_state; //0x01
171 	QMI_U32_TLV replication_factor; //0x10
172 } __attribute__ ((packed)) QMI_WDA_SET_LOOPBACK_CONFIG_REQ_MSG, *PQMI_WDA_SET_LOOPBACK_CONFIG_REQ_MSG;
173 
174 typedef struct _QMI_WDA_SET_LOOPBACK_CONFIG_IND_MSG
175 {
176    USHORT Type;
177    USHORT Length;
178    QMI_U8_TLV loopback_state; //0x01
179    QMI_U32_TLV replication_factor; //0x10
180 } __attribute__ ((packed)) QMI_WDA_SET_LOOPBACK_CONFIG_IND_MSG, *PQMI_WDA_SET_LOOPBACK_CONFIG_IND_MSG;
181 
182 #if 0
183 typedef enum _QMI_RETURN_CODES {
184    QMI_SUCCESS = 0,
185    QMI_SUCCESS_NOT_COMPLETE,
186    QMI_FAILURE
187 }QMI_RETURN_CODES;
188 
189 typedef struct _QMIWDS_GET_PKT_SRVC_STATUS_REQ_MSG
190 {
191    USHORT Type;    // 0x0022
192    USHORT Length;  // 0x0000
193 } QMIWDS_GET_PKT_SRVC_STATUS_REQ_MSG, *PQMIWDS_GET_PKT_SRVC_STATUS_REQ_MSG;
194 
195 typedef struct _QMIWDS_GET_PKT_SRVC_STATUS_RESP_MSG
196 {
197    USHORT Type;
198    USHORT Length;
199    UCHAR  TLVType;
200    USHORT TLVLength;
201    USHORT QMUXResult;
202    USHORT QMUXError;
203    UCHAR  TLVType2;
204    USHORT TLVLength2;
205    UCHAR  ConnectionStatus; // 0x01: QWDS_PKT_DATAC_DISCONNECTED
206                             // 0x02: QWDS_PKT_DATA_CONNECTED
207                             // 0x03: QWDS_PKT_DATA_SUSPENDED
208                             // 0x04: QWDS_PKT_DATA_AUTHENTICATING
209 } QMIWDS_GET_PKT_SRVC_STATUS_RESP_MSG, *PQMIWDS_GET_PKT_SRVC_STATUS_RESP_MSG;
210 
211 typedef struct _QMIWDS_GET_PKT_SRVC_STATUS_IND_MSG
212 {
213    USHORT Type;
214    USHORT Length;
215    UCHAR  TLVType;
216    USHORT TLVLength;
217    UCHAR  ConnectionStatus; // 0x01: QWDS_PKT_DATAC_DISCONNECTED
218                             // 0x02: QWDS_PKT_DATA_CONNECTED
219                             // 0x03: QWDS_PKT_DATA_SUSPENDED
220    UCHAR  ReconfigRequired; // 0x00: No need to reconfigure
221                             // 0x01: Reconfiguration required
222 } QMIWDS_GET_PKT_SRVC_STATUS_IND_MSG, *PQMIWDS_GET_PKT_SRVC_STATUS_IND_MSG;
223 
224 typedef struct _WDS_PKT_SRVC_IP_FAMILY_TLV
225 {
226    UCHAR  TLVType;     // 0x12
227    USHORT TLVLength;   // 1
228    UCHAR  IpFamily;    // IPV4-0x04, IPV6-0x06
229 } WDS_PKT_SRVC_IP_FAMILY_TLV, *PWDS_PKT_SRVC_IP_FAMILY_TLV;
230 
231 typedef struct _QMIWDS_DUN_CALL_INFO_REQ_MSG
232 {
233    USHORT Type;
234    USHORT Length;
235    UCHAR  TLVType;
236    USHORT TLVLength;
237    ULONG  Mask;
238    UCHAR  TLV2Type;
239    USHORT TLV2Length;
240    UCHAR  ReportConnectionStatus;
241 } QMIWDS_DUN_CALL_INFO_REQ_MSG, *PQMIWDS_DUN_CALL_INFO_REQ_MSG;
242 
243 typedef struct _QMIWDS_DUN_CALL_INFO_RESP_MSG
244 {
245    USHORT Type;
246    USHORT Length;
247    UCHAR  TLVType;
248    USHORT TLVLength;
249    USHORT QMUXResult;
250    USHORT QMUXError;
251 } QMIWDS_DUN_CALL_INFO_RESP_MSG, *PQMIWDS_DUN_CALL_INFO_RESP_MSG;
252 
253 typedef struct _QMIWDS_DUN_CALL_INFO_IND_MSG
254 {
255    UCHAR  TLVType;
256    USHORT TLVLength;
257    UCHAR  ConnectionStatus;
258 } QMIWDS_DUN_CALL_INFO_IND_MSG, *PQMIWDS_DUN_CALL_INFO_IND_MSG;
259 
260 typedef struct _QMIWDS_GET_CURRENT_CHANNEL_RATE_REQ_MSG
261 {
262    USHORT Type;             // QMUX type 0x0040
263    USHORT Length;
264 } QMIWDS_GET_CURRENT_CHANNEL_RATE_REQ_MSG, *PQMIWDS_GET_CURRENT_CHANNEL_RATE_REQ_MSG;
265 
266 typedef struct _QMIWDS_GET_CURRENT_CHANNEL_RATE_RESP_MSG
267 {
268    USHORT Type;             // QMUX type 0x0040
269    USHORT Length;
270    UCHAR  TLVType;          // 0x02
271    USHORT TLVLength;        // 4
272    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
273                             // QMI_RESULT_FAILURE
274    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
275                             // QMI_ERR_NO_MEMORY
276                             // QMI_ERR_INTERNAL
277                             // QMI_ERR_FAULT
278 
279    UCHAR  TLV2Type;         // 0x01
280    USHORT TLV2Length;       // 16
281    //ULONG  CallHandle;       // Context corresponding to reported channel
282    ULONG  CurrentTxRate;       // bps
283    ULONG  CurrentRxRate;       // bps
284    ULONG  ServingSystemTxRate; // bps
285    ULONG  ServingSystemRxRate; // bps
286 
287 } QMIWDS_GET_CURRENT_CHANNEL_RATE_RESP_MSG, *PQMIWDS_GET_CURRENT_CHANNEL_RATE_RESP;
288 
289 #define QWDS_EVENT_REPORT_MASK_RATES 0x01
290 #define QWDS_EVENT_REPORT_MASK_STATS 0x02
291 
292 #ifdef QCUSB_MUX_PROTOCOL
293 #error code not present
294 #endif // QCUSB_MUX_PROTOCOL
295 
296 typedef struct _QMIWDS_SET_EVENT_REPORT_REQ_MSG
297 {
298    USHORT Type;             // QMUX type 0x0042
299    USHORT Length;
300 
301    UCHAR  TLVType;          // 0x10 -- current channel rate indicator
302    USHORT TLVLength;        // 1
303    UCHAR  Mode;             // 0-do not report; 1-report when rate changes
304 
305    UCHAR  TLV2Type;         // 0x11
306    USHORT TLV2Length;       // 5
307    UCHAR  StatsPeriod;      // seconds between reports; 0-do not report
308    ULONG  StatsMask;        //
309 
310    UCHAR  TLV3Type;          // 0x12 -- current data bearer indicator
311    USHORT TLV3Length;        // 1
312    UCHAR  Mode3;             // 0-do not report; 1-report when changes
313 
314    UCHAR  TLV4Type;          // 0x13 -- dormancy status indicator
315    USHORT TLV4Length;        // 1
316    UCHAR  DormancyStatus;    // 0-do not report; 1-report when changes
317 } QMIWDS_SET_EVENT_REPORT_REQ_MSG, *PQMIWDS_SET_EVENT_REPORT_REQ_MSG;
318 
319 typedef struct _QMIWDS_SET_EVENT_REPORT_RESP_MSG
320 {
321    USHORT Type;             // QMUX type 0x0042
322    USHORT Length;
323 
324    UCHAR  TLVType;          // 0x02 result code
325    USHORT TLVLength;        // 4
326    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
327                             // QMI_RESULT_FAILURE
328    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
329                             // QMI_ERR_NO_MEMORY
330                             // QMI_ERR_INTERNAL
331                             // QMI_ERR_NO_BATTERY
332                             // QMI_ERR_FAULT
333 } QMIWDS_SET_EVENT_REPORT_RESP_MSG, *PQMIWDS_SET_EVENT_REPORT_RESP_MSG;
334 
335 typedef struct _QMIWDS_EVENT_REPORT_IND_MSG
336 {
337    USHORT Type;             // QMUX type 0x0001
338    USHORT Length;
339 } QMIWDS_EVENT_REPORT_IND_MSG, *PQMIWDS_EVENT_REPORT_IND_MSG;
340 
341 // PQCTLV_PKT_STATISTICS
342 
343 typedef struct _QMIWDS_EVENT_REPORT_IND_CHAN_RATE_TLV
344 {
345    UCHAR  Type;
346    USHORT Length;  // 8
347    ULONG  TxRate;
348    ULONG  RxRate;
349 } QMIWDS_EVENT_REPORT_IND_CHAN_RATE_TLV, *PQMIWDS_EVENT_REPORT_IND_CHAN_RATE_TLV;
350 
351 #ifdef QCUSB_MUX_PROTOCOL
352 #error code not present
353 #endif // QCUSB_MUX_PROTOCOL
354 
355 typedef struct _QMIWDS_GET_PKT_STATISTICS_REQ_MSG
356 {
357    USHORT Type;             // QMUX type 0x0041
358    USHORT Length;
359    UCHAR  TLVType;          // 0x01
360    USHORT TLVLength;        // 4
361    ULONG  StateMask;        // 0x00000001  tx success packets
362                             // 0x00000002  rx success packets
363                             // 0x00000004  rx packet errors (checksum)
364                             // 0x00000008  rx packets dropped (memory)
365 
366 } QMIWDS_GET_PKT_STATISTICS_REQ_MSG, *PQMIWDS_GET_PKT_STATISTICS_REQ_MSG;
367 
368 typedef struct _QMIWDS_GET_PKT_STATISTICS_RESP_MSG
369 {
370    USHORT Type;             // QMUX type 0x0041
371    USHORT Length;
372    UCHAR  TLVType;          // 0x02
373    USHORT TLVLength;        // 4
374    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
375                             // QMI_RESULT_FAILURE
376    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
377                             // QMI_ERR_NO_MEMORY
378                             // QMI_ERR_INTERNAL
379                             // QMI_ERR_FAULT
380 } QMIWDS_GET_PKT_STATISTICS_RESP_MSG, *PQMIWDS_GET_PKT_STATISTICS_RESP_MSG;
381 
382 // optional TLV for stats
383 typedef struct _QCTLV_PKT_STATISTICS
384 {
385    UCHAR  TLVType;          // see above definitions for TLV types
386    USHORT TLVLength;        // 4
387    ULONG  Count;
388 } QCTLV_PKT_STATISTICS, *PQCTLV_PKT_STATISTICS;
389 #endif
390 
391 //#ifdef QC_IP_MODE
392 
393 /*
394     • Bit 0 – Profile identifier
395     • Bit 1 – Profile name
396     • Bit 2 – PDP type
397     • Bit 3 – APN name
398     • Bit 4 – DNS address
399     • Bit 5 – UMTS/GPRS granted QoS
400     • Bit 6 – Username
401     • Bit 7 – Authentication Protocol
402     • Bit 8 – IP address
403     • Bit 9 – Gateway information (address and subnet mask)
404     • Bit 10 – PCSCF address using a PCO flag
405     • Bit 11 – PCSCF server address list
406     • Bit 12 – PCSCF domain name list
407     • Bit 13 – MTU
408     • Bit 14 – Domain name list
409     • Bit 15 – IP family
410     • Bit 16 – IM_CM flag
411     • Bit 17 – Technology name
412     • Bit 18 – Operator reserved PCO
413 */
414 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_IPV4DNS_ADDR       (1 << 4)
415 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_IPV4_ADDR          (1 << 8)
416 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_IPV4GATEWAY_ADDR   (1 << 9)
417 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_MTU                (1 << 13)
418 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_PCSCF_SV_ADDR      (1 << 11)
419 #define QMIWDS_GET_RUNTIME_SETTINGS_MASK_PCSCF_DOM_NAME     (1 << 14)
420 
421 typedef struct _QMIWDS_GET_RUNTIME_SETTINGS_REQ_MSG
422 {
423    USHORT Type;            // QMIWDS_GET_RUNTIME_SETTINGS_REQ
424    USHORT Length;
425    UCHAR  TLVType;         // 0x10
426    USHORT TLVLength;       // 0x0004
427    ULONG  Mask;            // mask, bit 8: IP addr -- 0x0100
428 } __attribute__ ((packed)) QMIWDS_GET_RUNTIME_SETTINGS_REQ_MSG, *PQMIWDS_GET_RUNTIME_SETTINGS_REQ_MSG;
429 
430 typedef struct _QMIWDS_BIND_MUX_DATA_PORT_REQ_MSG
431 {
432    USHORT Type;
433    USHORT Length;
434    UCHAR  TLVType;
435    USHORT TLVLength;
436    ULONG  ep_type;
437    ULONG  iface_id;
438    UCHAR  TLV2Type;
439    USHORT TLV2Length;
440    UCHAR  MuxId;
441    UCHAR  TLV3Type;
442    USHORT TLV3Length;
443    ULONG  client_type;
444 } __attribute__ ((packed)) QMIWDS_BIND_MUX_DATA_PORT_REQ_MSG, *PQMIWDS_BIND_MUX_DATA_PORT_REQ_MSG;
445 
446 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4PRIMARYDNS 0x15
447 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4SECONDARYDNS 0x16
448 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4 0x1E
449 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4GATEWAY 0x20
450 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4SUBNET 0x21
451 
452 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV6             0x25
453 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV6GATEWAY      0x26
454 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV6PRIMARYDNS   0x27
455 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV6SECONDARYDNS 0x28
456 #define QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_MTU              0x29
457 
458 typedef struct _QMIWDS_GET_RUNTIME_SETTINGS_TLV_MTU
459 {
460    UCHAR  TLVType;         // QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_MTU
461    USHORT TLVLength;       // 4
462    ULONG  Mtu;             // MTU
463 } __attribute__ ((packed)) QMIWDS_GET_RUNTIME_SETTINGS_TLV_MTU, *PQMIWDS_GET_RUNTIME_SETTINGS_TLV_MTU;
464 
465 typedef struct _QMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV4_ADDR
466 {
467    UCHAR  TLVType;         // QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV4
468    USHORT TLVLength;       // 4
469    ULONG  IPV4Address;     // address
470 } __attribute__ ((packed)) QMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV4_ADDR, *PQMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV4_ADDR;
471 
472 typedef struct _QMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV6_ADDR
473 {
474    UCHAR  TLVType;         // QMIWDS_GET_RUNTIME_SETTINGS_TLV_TYPE_IPV6
475    USHORT TLVLength;       // 16
476    UCHAR  IPV6Address[16]; // address
477    UCHAR  PrefixLength;    // prefix length
478 } __attribute__ ((packed)) QMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV6_ADDR, *PQMIWDS_GET_RUNTIME_SETTINGS_TLV_IPV6_ADDR;
479 
480 typedef struct _QMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV6_ADDR
481 {
482 	UCHAR TLVType;
483 	USHORT TLVLength;
484 	UCHAR PCSCFNumber;
485 } __attribute__ ((packed)) QMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV6_ADDR, *PQMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV6_ADDR;
486 
487 typedef struct _QMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV4_ADDR
488 {
489 	UCHAR TLVType;
490 	USHORT TLVLength;
491 	UCHAR PCSCFNumber;
492 } __attribute__ ((packed)) QMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV4_ADDR, *PQMIWDS_GET_RUNNING_SETTINGS_PCSCF_IPV4_ADDR;
493 
494 typedef struct _QMIWDS_GET_RUNTIME_SETTINGS_RESP_MSG
495 {
496    USHORT Type;            // QMIWDS_GET_RUNTIME_SETTINGS_RESP
497    USHORT Length;
498    UCHAR  TLVType;         // QCTLV_TYPE_RESULT_CODE
499    USHORT TLVLength;       // 0x0004
500    USHORT QMUXResult;      // result code
501    USHORT QMUXError;       // error code
502 } __attribute__ ((packed)) QMIWDS_GET_RUNTIME_SETTINGS_RESP_MSG, *PQMIWDS_GET_RUNTIME_SETTINGS_RESP_MSG;
503 
504 //#endif // QC_IP_MODE
505 
506 typedef struct _QMIWDS_IP_FAMILY_TLV
507 {
508    UCHAR  TLVType;          // 0x12
509    USHORT TLVLength;        // 1
510    UCHAR  IpFamily;         // IPV4-0x04, IPV6-0x06
511 } __attribute__ ((packed)) QMIWDS_IP_FAMILY_TLV, *PQMIWDS_IP_FAMILY_TLV;
512 
513 typedef struct _QMIWDS_PKT_SRVC_TLV
514 {
515    UCHAR  TLVType;
516    USHORT TLVLength;
517    UCHAR  ConnectionStatus;
518    UCHAR  ReconfigReqd;
519 } __attribute__ ((packed)) QMIWDS_PKT_SRVC_TLV, *PQMIWDS_PKT_SRVC_TLV;
520 
521 typedef struct _QMIWDS_CALL_END_REASON_TLV
522 {
523    UCHAR  TLVType;
524    USHORT TLVLength;
525    USHORT CallEndReason;
526 } __attribute__ ((packed)) QMIWDS_CALL_END_REASON_TLV, *PQMIWDS_CALL_END_REASON_TLV;
527 
528 typedef struct _QMIWDS_CALL_END_REASON_V_TLV
529 {
530    UCHAR  TLVType;
531    USHORT TLVLength;
532    USHORT CallEndReasonType;
533    USHORT CallEndReason;
534 } __attribute__ ((packed)) QMIWDS_CALL_END_REASON_V_TLV, *PQMIWDS_CALL_END_REASON_V_TLV;
535 
536 typedef struct _QMIWDS_SET_CLIENT_IP_FAMILY_PREF_REQ_MSG
537 {
538    USHORT Type;             // QMUX type 0x004D
539    USHORT Length;
540    UCHAR  TLVType;          // 0x01
541    USHORT TLVLength;        // 1
542    UCHAR  IpPreference;     // IPV4-0x04, IPV6-0x06
543 } __attribute__ ((packed)) QMIWDS_SET_CLIENT_IP_FAMILY_PREF_REQ_MSG, *PQMIWDS_SET_CLIENT_IP_FAMILY_PREF_REQ_MSG;
544 
545 typedef struct _QMIWDS_SET_CLIENT_IP_FAMILY_PREF_RESP_MSG
546 {
547    USHORT Type;             // QMUX type 0x0037
548    USHORT Length;
549    UCHAR  TLVType;          // 0x02
550    USHORT TLVLength;        // 4
551    USHORT QMUXResult;       // QMI_RESULT_SUCCESS, QMI_RESULT_FAILURE
552    USHORT QMUXError;        // QMI_ERR_INTERNAL, QMI_ERR_MALFORMED_MSG, QMI_ERR_INVALID_ARG
553 } __attribute__ ((packed)) QMIWDS_SET_CLIENT_IP_FAMILY_PREF_RESP_MSG, *PQMIWDS_SET_CLIENT_IP_FAMILY_PREF_RESP_MSG;
554 
555 typedef struct _QMIWDS_SET_AUTO_CONNECT_REQ_MSG
556 {
557    USHORT Type;             // QMUX type 0x0051
558    USHORT Length;
559    UCHAR  TLVType;          // 0x01
560    USHORT TLVLength;        // 1
561    UCHAR  autoconnect_setting;     //  0x00 ?C Disabled, 0x01 ?C Enabled, 0x02 ?C Paused (resume on power cycle)
562 } __attribute__ ((packed)) QMIWDS_SET_AUTO_CONNECT_REQ_MSG, *PQMIWDS_SET_AUTO_CONNECT_REQ_MSG;
563 
564 #if 0
565 typedef struct _QMIWDS_GET_MIP_MODE_REQ_MSG
566 {
567    USHORT Type;             // QMUX type 0x0040
568    USHORT Length;
569 } QMIWDS_GET_MIP_MODE_REQ_MSG, *PQMIWDS_GET_MIP_MODE_REQ_MSG;
570 
571 typedef struct _QMIWDS_GET_MIP_MODE_RESP_MSG
572 {
573    USHORT Type;             // QMUX type 0x0040
574    USHORT Length;
575    UCHAR  TLVType;          // 0x02
576    USHORT TLVLength;        // 4
577    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
578                             // QMI_RESULT_FAILURE
579    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
580                             // QMI_ERR_NO_MEMORY
581                             // QMI_ERR_INTERNAL
582                             // QMI_ERR_FAULT
583 
584    UCHAR  TLV2Type;         // 0x01
585    USHORT TLV2Length;       // 20
586    UCHAR  MipMode;          //
587 } QMIWDS_GET_MIP_MODE_RESP_MSG, *PQMIWDS_GET_MIP_MODE_RESP_MSG;
588 #endif
589 
590 typedef struct _QMIWDS_TECHNOLOGY_PREFERECE
591 {
592    UCHAR  TLVType;
593    USHORT TLVLength;
594    UCHAR  TechPreference;
595 } __attribute__ ((packed)) QMIWDS_TECHNOLOGY_PREFERECE, *PQMIWDS_TECHNOLOGY_PREFERECE;
596 
597 typedef struct _QMIWDS_PROFILE_IDENTIFIER
598 {
599    UCHAR  TLVType;
600    USHORT TLVLength;
601    UCHAR  ProfileIndex;
602 } __attribute__ ((packed)) QMIWDS_PROFILE_IDENTIFIER, *PQMIWDS_PROFILE_IDENTIFIER;
603 
604 #if 0
605 typedef struct _QMIWDS_IPADDRESS
606 {
607    UCHAR  TLVType;
608    USHORT TLVLength;
609    ULONG  IPv4Address;
610 }QMIWDS_IPADDRESS, *PQMIWDS_IPADDRESS;
611 
612 /*
613 typedef struct _QMIWDS_UMTS_QOS
614 {
615    UCHAR  TLVType;
616    USHORT TLVLength;
617    UCHAR  TrafficClass;
618    ULONG  MaxUplinkBitRate;
619    ULONG  MaxDownlinkBitRate;
620    ULONG  GuarUplinkBitRate;
621    ULONG  GuarDownlinkBitRate;
622    UCHAR  QOSDevOrder;
623    ULONG  MAXSDUSize;
624    UCHAR  SDUErrorRatio;
625    UCHAR  ResidualBerRatio;
626    UCHAR  DeliveryErrorSDUs;
627    ULONG  TransferDelay;
628    ULONG  TrafficHndPri;
629 }QMIWDS_UMTS_QOS, *PQMIWDS_UMTS_QOS;
630 
631 typedef struct _QMIWDS_GPRS_QOS
632 {
633    UCHAR  TLVType;
634    USHORT TLVLength;
635    ULONG  PrecedenceClass;
636    ULONG  DelayClass;
637    ULONG  ReliabilityClass;
638    ULONG  PeekThroClass;
639    ULONG  MeanThroClass;
640 }QMIWDS_GPRS_QOS, *PQMIWDS_GPRS_QOS;
641 */
642 #endif
643 
644 typedef struct _QMIWDS_PROFILENAME
645 {
646    UCHAR  TLVType;
647    USHORT TLVLength;
648    UCHAR  ProfileName;
649 } __attribute__ ((packed)) QMIWDS_PROFILENAME, *PQMIWDS_PROFILENAME;
650 
651 typedef struct _QMIWDS_PDPTYPE
652 {
653    UCHAR  TLVType;
654    USHORT TLVLength;
655 // 0 ?C PDP-IP (IPv4)
656 // 1 ?C PDP-PPP
657 // 2 ?C PDP-IPv6
658 // 3 ?C PDP-IPv4v6
659     UCHAR  PdpType;
660 } __attribute__ ((packed)) QMIWDS_PDPTYPE, *PQMIWDS_PDPTYPE;
661 
662 typedef struct _QMIWDS_USERNAME
663 {
664    UCHAR  TLVType;
665    USHORT TLVLength;
666    UCHAR  UserName;
667 } __attribute__ ((packed)) QMIWDS_USERNAME, *PQMIWDS_USERNAME;
668 
669 typedef struct _QMIWDS_PASSWD
670 {
671    UCHAR  TLVType;
672    USHORT TLVLength;
673    UCHAR  Passwd;
674 } __attribute__ ((packed)) QMIWDS_PASSWD, *PQMIWDS_PASSWD;
675 
676 typedef struct _QMIWDS_AUTH_PREFERENCE
677 {
678    UCHAR  TLVType;
679    USHORT TLVLength;
680    UCHAR  AuthPreference;
681 } __attribute__ ((packed)) QMIWDS_AUTH_PREFERENCE, *PQMIWDS_AUTH_PREFERENCE;
682 
683 typedef struct _QMIWDS_APNNAME
684 {
685    UCHAR  TLVType;
686    USHORT TLVLength;
687    UCHAR  ApnName;
688 } __attribute__ ((packed)) QMIWDS_APNNAME, *PQMIWDS_APNNAME;
689 
690 typedef struct _QMIWDS_AUTOCONNECT
691 {
692    UCHAR  TLVType;
693    USHORT TLVLength;
694    UCHAR  AutoConnect;
695 } __attribute__ ((packed)) QMIWDS_AUTOCONNECT, *PQMIWDS_AUTOCONNECT;
696 
697 typedef struct _QMIWDS_START_NETWORK_INTERFACE_REQ_MSG
698 {
699    USHORT Type;
700    USHORT Length;
701 } __attribute__ ((packed)) QMIWDS_START_NETWORK_INTERFACE_REQ_MSG, *PQMIWDS_START_NETWORK_INTERFACE_REQ_MSG;
702 
703 typedef struct _QMIWDS_CALLENDREASON
704 {
705    UCHAR  TLVType;
706    USHORT TLVLength;
707    USHORT Reason;
708 }__attribute__ ((packed)) QMIWDS_CALLENDREASON, *PQMIWDS_CALLENDREASON;
709 
710 typedef struct _QMIWDS_START_NETWORK_INTERFACE_RESP_MSG
711 {
712    USHORT Type;             // QMUX type 0x0040
713    USHORT Length;
714    UCHAR  TLVType;          // 0x02
715    USHORT TLVLength;        // 4
716    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
717                             // QMI_RESULT_FAILURE
718    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
719                             // QMI_ERR_NO_MEMORY
720                             // QMI_ERR_INTERNAL
721                             // QMI_ERR_FAULT
722 
723    UCHAR  TLV2Type;         // 0x01
724    USHORT TLV2Length;       // 20
725    ULONG  Handle;          //
726 } __attribute__ ((packed)) QMIWDS_START_NETWORK_INTERFACE_RESP_MSG, *PQMIWDS_START_NETWORK_INTERFACE_RESP_MSG;
727 
728 typedef struct _QMIWDS_STOP_NETWORK_INTERFACE_REQ_MSG
729 {
730    USHORT Type;
731    USHORT Length;
732    UCHAR  TLVType;
733    USHORT TLVLength;
734    ULONG  Handle;
735 } __attribute__ ((packed)) QMIWDS_STOP_NETWORK_INTERFACE_REQ_MSG, *PQMIWDS_STOP_NETWORK_INTERFACE_REQ_MSG;
736 
737 typedef struct _QMIWDS_STOP_NETWORK_INTERFACE_RESP_MSG
738 {
739    USHORT Type;             // QMUX type 0x0040
740    USHORT Length;
741    UCHAR  TLVType;          // 0x02
742    USHORT TLVLength;        // 4
743    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
744                             // QMI_RESULT_FAILURE
745    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
746                             // QMI_ERR_NO_MEMORY
747                             // QMI_ERR_INTERNAL
748                             // QMI_ERR_FAULT
749 
750 } __attribute__ ((packed)) QMIWDS_STOP_NETWORK_INTERFACE_RESP_MSG, *PQMIWDS_STOP_NETWORK_INTERFACE_RESP_MSG;
751 
752 typedef struct _QMIWDS_GET_DEFAULT_SETTINGS_REQ_MSG
753 {
754    USHORT Type;
755    USHORT Length;
756    UCHAR  TLVType;
757    USHORT TLVLength;
758    UCHAR  ProfileType;
759 } __attribute__ ((packed)) QMIWDS_GET_DEFAULT_SETTINGS_REQ_MSG, *PQMIWDS_GET_DEFAULT_SETTINGS_REQ_MSG;
760 
761 typedef struct _QMIWDS_GET_DEFAULT_SETTINGS_RESP_MSG
762 {
763    USHORT Type;
764    USHORT Length;
765    UCHAR  TLVType;
766    USHORT TLVLength;
767    USHORT QMUXResult;
768    USHORT QMUXError;
769 } __attribute__ ((packed)) QMIWDS_GET_DEFAULT_SETTINGS_RESP_MSG, *PQMIWDS_GET_DEFAULT_SETTINGS_RESP_MSG;
770 
771 typedef struct _QMIWDS_MODIFY_PROFILE_SETTINGS_REQ_MSG
772 {
773    USHORT Type;
774    USHORT Length;
775    UCHAR  TLVType;
776    USHORT TLVLength;
777    UCHAR  ProfileType;
778    UCHAR  ProfileIndex;
779 } __attribute__ ((packed)) QMIWDS_MODIFY_PROFILE_SETTINGS_REQ_MSG, *PQMIWDS_MODIFY_PROFILE_SETTINGS_REQ_MSG;
780 
781 typedef struct _QMIWDS_MODIFY_PROFILE_SETTINGS_RESP_MSG
782 {
783    USHORT Type;
784    USHORT Length;
785    UCHAR  TLVType;
786    USHORT TLVLength;
787    USHORT QMUXResult;
788    USHORT QMUXError;
789 } __attribute__ ((packed)) QMIWDS_MODIFY_PROFILE_SETTINGS_RESP_MSG, *PQMIWDS_MODIFY_PROFILE_SETTINGS_RESP_MSG;
790 
791 typedef struct _QMIWDS_GET_PROFILE_SETTINGS_REQ_MSG
792 {
793    USHORT Type;
794    USHORT Length;
795    UCHAR  TLVType;
796    USHORT TLVLength;
797    UCHAR  ProfileType;
798    UCHAR  ProfileIndex;
799 } __attribute__ ((packed)) QMIWDS_GET_PROFILE_SETTINGS_REQ_MSG, *PQMIWDS_GET_PROFILE_SETTINGS_REQ_MSG;
800 
801 #if 0
802 typedef struct _QMIWDS_EVENT_REPORT_IND_DATA_BEARER_TLV
803 {
804    UCHAR  Type;
805    USHORT Length;
806    UCHAR  DataBearer;
807 } QMIWDS_EVENT_REPORT_IND_DATA_BEARER_TLV, *PQMIWDS_EVENT_REPORT_IND_DATA_BEARER_TLV;
808 
809 typedef struct _QMIWDS_EVENT_REPORT_IND_DORMANCY_STATUS_TLV
810 {
811    UCHAR  Type;
812    USHORT Length;
813    UCHAR  DormancyStatus;
814 } QMIWDS_EVENT_REPORT_IND_DORMANCY_STATUS_TLV, *PQMIWDS_EVENT_REPORT_IND_DORMANCY_STATUS_TLV;
815 
816 
817 typedef struct _QMIWDS_GET_DATA_BEARER_REQ_MSG
818 {
819    USHORT Type;             // QMUX type 0x0037
820    USHORT Length;
821 } QMIWDS_GET_DATA_BEARER_REQ_MSG, *PQMIWDS_GET_DATA_BEARER_REQ_MSG;
822 
823 typedef struct _QMIWDS_GET_DATA_BEARER_RESP_MSG
824 {
825    USHORT Type;             // QMUX type 0x0037
826    USHORT Length;
827    UCHAR  TLVType;          // 0x02
828    USHORT TLVLength;        // 4
829    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
830                             // QMI_RESULT_FAILURE
831    USHORT QMUXError;        // QMI_ERR_INTERNAL
832                             // QMI_ERR_MALFORMED_MSG
833                             // QMI_ERR_NO_MEMORY
834                             // QMI_ERR_OUT_OF_CALL
835                             // QMI_ERR_INFO_UNAVAILABLE
836    UCHAR  TLV2Type;         // 0x01
837    USHORT TLV2Length;       //
838    UCHAR  Technology;       //
839 } QMIWDS_GET_DATA_BEARER_RESP_MSG, *PQMIWDS_GET_DATA_BEARER_RESP_MSG;
840 #endif
841 
842 // ======================= DMS ==============================
843 #define QMIDMS_SET_EVENT_REPORT_REQ           0x0001
844 #define QMIDMS_SET_EVENT_REPORT_RESP          0x0001
845 #define QMIDMS_EVENT_REPORT_IND               0x0001
846 #define QMIDMS_GET_DEVICE_CAP_REQ             0x0020
847 #define QMIDMS_GET_DEVICE_CAP_RESP            0x0020
848 #define QMIDMS_GET_DEVICE_MFR_REQ             0x0021
849 #define QMIDMS_GET_DEVICE_MFR_RESP            0x0021
850 #define QMIDMS_GET_DEVICE_MODEL_ID_REQ        0x0022
851 #define QMIDMS_GET_DEVICE_MODEL_ID_RESP       0x0022
852 #define QMIDMS_GET_DEVICE_REV_ID_REQ          0x0023
853 #define QMIDMS_GET_DEVICE_REV_ID_RESP         0x0023
854 #define QMIDMS_GET_MSISDN_REQ                 0x0024
855 #define QMIDMS_GET_MSISDN_RESP                0x0024
856 #define QMIDMS_GET_DEVICE_SERIAL_NUMBERS_REQ  0x0025
857 #define QMIDMS_GET_DEVICE_SERIAL_NUMBERS_RESP 0x0025
858 #define QMIDMS_UIM_SET_PIN_PROTECTION_REQ     0x0027
859 #define QMIDMS_UIM_SET_PIN_PROTECTION_RESP    0x0027
860 #define QMIDMS_UIM_VERIFY_PIN_REQ             0x0028
861 #define QMIDMS_UIM_VERIFY_PIN_RESP            0x0028
862 #define QMIDMS_UIM_UNBLOCK_PIN_REQ            0x0029
863 #define QMIDMS_UIM_UNBLOCK_PIN_RESP           0x0029
864 #define QMIDMS_UIM_CHANGE_PIN_REQ             0x002A
865 #define QMIDMS_UIM_CHANGE_PIN_RESP            0x002A
866 #define QMIDMS_UIM_GET_PIN_STATUS_REQ         0x002B
867 #define QMIDMS_UIM_GET_PIN_STATUS_RESP        0x002B
868 #define QMIDMS_GET_DEVICE_HARDWARE_REV_REQ    0x002C
869 #define QMIDMS_GET_DEVICE_HARDWARE_REV_RESP   0x002C
870 #define QMIDMS_GET_OPERATING_MODE_REQ         0x002D
871 #define QMIDMS_GET_OPERATING_MODE_RESP        0x002D
872 #define QMIDMS_SET_OPERATING_MODE_REQ         0x002E
873 #define QMIDMS_SET_OPERATING_MODE_RESP        0x002E
874 #define QMIDMS_GET_ACTIVATED_STATUS_REQ       0x0031
875 #define QMIDMS_GET_ACTIVATED_STATUS_RESP      0x0031
876 #define QMIDMS_ACTIVATE_AUTOMATIC_REQ         0x0032
877 #define QMIDMS_ACTIVATE_AUTOMATIC_RESP        0x0032
878 #define QMIDMS_ACTIVATE_MANUAL_REQ            0x0033
879 #define QMIDMS_ACTIVATE_MANUAL_RESP           0x0033
880 #define QMIDMS_UIM_GET_ICCID_REQ              0x003C
881 #define QMIDMS_UIM_GET_ICCID_RESP             0x003C
882 #define QMIDMS_UIM_GET_CK_STATUS_REQ          0x0040
883 #define QMIDMS_UIM_GET_CK_STATUS_RESP         0x0040
884 #define QMIDMS_UIM_SET_CK_PROTECTION_REQ      0x0041
885 #define QMIDMS_UIM_SET_CK_PROTECTION_RESP     0x0041
886 #define QMIDMS_UIM_UNBLOCK_CK_REQ             0x0042
887 #define QMIDMS_UIM_UNBLOCK_CK_RESP            0x0042
888 #define QMIDMS_UIM_GET_IMSI_REQ               0x0043
889 #define QMIDMS_UIM_GET_IMSI_RESP              0x0043
890 #define QMIDMS_UIM_GET_STATE_REQ              0x0044
891 #define QMIDMS_UIM_GET_STATE_RESP             0x0044
892 #define QMIDMS_GET_BAND_CAP_REQ               0x0045
893 #define QMIDMS_GET_BAND_CAP_RESP              0x0045
894 
895 #if 0
896 typedef struct _QMIDMS_GET_DEVICE_MFR_REQ_MSG
897 {
898    USHORT Type;             // QMUX type 0x0003
899    USHORT Length;
900 } QMIDMS_GET_DEVICE_MFR_REQ_MSG, *PQMIDMS_GET_DEVICE_MFR_REQ_MSG;
901 
902 typedef struct _QMIDMS_GET_DEVICE_MFR_RESP_MSG
903 {
904    USHORT Type;             // QMUX type 0x0003
905    USHORT Length;
906    UCHAR  TLVType;          // 0x02 - result code
907    USHORT TLVLength;        // 4
908    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
909                             // QMI_RESULT_FAILURE
910    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
911                             // QMI_ERR_NO_MEMORY
912                             // QMI_ERR_INTERNAL
913                             // QMI_ERR_FAULT
914    UCHAR  TLV2Type;         // 0x01 - required parameter
915    USHORT TLV2Length;       // length of the mfr string
916    UCHAR  DeviceManufacturer; // first byte of string
917 } QMIDMS_GET_DEVICE_MFR_RESP_MSG, *PQMIDMS_GET_DEVICE_MFR_RESP_MSG;
918 
919 typedef struct _QMIDMS_GET_DEVICE_MODEL_ID_REQ_MSG
920 {
921    USHORT Type;             // QMUX type 0x0004
922    USHORT Length;
923 } QMIDMS_GET_DEVICE_MODEL_ID_REQ_MSG, *PQMIDMS_GET_DEVICE_MODEL_ID_REQ_MSG;
924 
925 typedef struct _QMIDMS_GET_DEVICE_MODEL_ID_RESP_MSG
926 {
927    USHORT Type;             // QMUX type 0x0004
928    USHORT Length;
929    UCHAR  TLVType;          // 0x02 - result code
930    USHORT TLVLength;        // 4
931    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
932                             // QMI_RESULT_FAILURE
933    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
934                             // QMI_ERR_NO_MEMORY
935                             // QMI_ERR_INTERNAL
936                             // QMI_ERR_FAULT
937    UCHAR  TLV2Type;         // 0x01 - required parameter
938    USHORT TLV2Length;       // length of the modem id string
939    UCHAR  DeviceModelID;    // device model id
940 } QMIDMS_GET_DEVICE_MODEL_ID_RESP_MSG, *PQMIDMS_GET_DEVICE_MODEL_ID_RESP_MSG;
941 #endif
942 
943 typedef struct _QMIDMS_GET_DEVICE_REV_ID_REQ_MSG
944 {
945    USHORT Type;             // QMUX type 0x0005
946    USHORT Length;
947 } __attribute__ ((packed)) QMIDMS_GET_DEVICE_REV_ID_REQ_MSG, *PQMIDMS_GET_DEVICE_REV_ID_REQ_MSG;
948 
949 typedef struct _DEVICE_REV_ID
950 {
951    UCHAR  TLVType;
952    USHORT TLVLength;
953    UCHAR  RevisionID;
954 } __attribute__ ((packed)) DEVICE_REV_ID, *PDEVICE_REV_ID;
955 
956 #if 0
957 typedef struct _QMIDMS_GET_DEVICE_REV_ID_RESP_MSG
958 {
959    USHORT Type;             // QMUX type 0x0023
960    USHORT Length;
961    UCHAR  TLVType;          // 0x02 - result code
962    USHORT TLVLength;        // 4
963    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
964                             // QMI_RESULT_FAILURE
965    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
966                             // QMI_ERR_NO_MEMORY
967                             // QMI_ERR_INTERNAL
968                             // QMI_ERR_FAULT
969 } QMIDMS_GET_DEVICE_REV_ID_RESP_MSG, *PQMIDMS_GET_DEVICE_REV_ID_RESP_MSG;
970 
971 typedef struct _QMIDMS_GET_MSISDN_REQ_MSG
972 {
973    USHORT Type;             // QMUX type 0x0024
974    USHORT Length;
975 } QMIDMS_GET_MSISDN_REQ_MSG, *PQMIDMS_GET_MSISDN_REQ_MSG;
976 
977 typedef struct _QCTLV_DEVICE_VOICE_NUMBERS
978 {
979    UCHAR  TLVType;            // as defined above
980    USHORT TLVLength;          // 4/7/7
981    UCHAR  VoideNumberString; // ESN, IMEI, or MEID
982 
983 } QCTLV_DEVICE_VOICE_NUMBERS, *PQCTLV_DEVICE_VOICE_NUMBERS;
984 
985 
986 typedef struct _QMIDMS_GET_MSISDN_RESP_MSG
987 {
988    USHORT Type;             // QMUX type 0x0024
989    USHORT Length;
990    UCHAR  TLVType;          // 0x02 - result code
991    USHORT TLVLength;        // 4
992    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
993                             // QMI_RESULT_FAILURE
994    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
995 } QMIDMS_GET_MSISDN_RESP_MSG, *PQMIDMS_GET_MSISDN_RESP_MSG;
996 #endif
997 
998 typedef struct _QMIDMS_UIM_GET_IMSI_REQ_MSG
999 {
1000    USHORT Type;
1001    USHORT Length;
1002 } __attribute__ ((packed)) QMIDMS_UIM_GET_IMSI_REQ_MSG, *PQMIDMS_UIM_GET_IMSI_REQ_MSG;
1003 
1004 typedef struct _QMIDMS_UIM_GET_IMSI_RESP_MSG
1005 {
1006    USHORT Type;
1007    USHORT Length;
1008    UCHAR  TLVType;
1009    USHORT TLVLength;
1010    USHORT QMUXResult;
1011    USHORT QMUXError;
1012    UCHAR  TLV2Type;
1013    USHORT TLV2Length;
1014    UCHAR IMSI;
1015 } __attribute__ ((packed)) QMIDMS_UIM_GET_IMSI_RESP_MSG, *PQMIDMS_UIM_GET_IMSI_RESP_MSG;
1016 
1017 #if 0
1018 typedef struct _QMIDMS_GET_DEVICE_SERIAL_NUMBERS_REQ_MSG
1019 {
1020    USHORT Type;             // QMUX type 0x0007
1021    USHORT Length;
1022 } QMIDMS_GET_DEVICE_SERIAL_NUMBERS_REQ_MSG, *PQMIDMS_GET_DEVICE_SERIAL_NUMBERS_REQ_MSG;
1023 
1024 #define QCTLV_TYPE_SER_NUM_ESN  0x10
1025 #define QCTLV_TYPE_SER_NUM_IMEI 0x11
1026 #define QCTLV_TYPE_SER_NUM_MEID 0x12
1027 
1028 typedef struct _QCTLV_DEVICE_SERIAL_NUMBER
1029 {
1030    UCHAR  TLVType;            // as defined above
1031    USHORT TLVLength;          // 4/7/7
1032    UCHAR  SerialNumberString; // ESN, IMEI, or MEID
1033 
1034 } QCTLV_DEVICE_SERIAL_NUMBER, *PQCTLV_DEVICE_SERIAL_NUMBER;
1035 
1036 typedef struct _QMIDMS_GET_DEVICE_SERIAL_NUMBERS_RESP_MSG
1037 {
1038    USHORT Type;             // QMUX type 0x0007
1039    USHORT Length;
1040    UCHAR  TLVType;          // 0x02 - result code
1041    USHORT TLVLength;        // 4
1042    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
1043                             // QMI_RESULT_FAILURE
1044    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
1045                             // QMI_ERR_NO_MEMORY
1046                             // QMI_ERR_INTERNAL
1047                             // QMI_ERR_FAULT
1048   // followed by optional TLV
1049 } QMIDMS_GET_DEVICE_SERIAL_NUMBERS_RESP_MSG, *PQMIDMS_GET_DEVICE_SERIAL_NUMBERS_RESP;
1050 
1051 typedef struct _QMIDMS_GET_DMS_BAND_CAP
1052 {
1053    USHORT  Type;
1054    USHORT  Length;
1055 } QMIDMS_GET_BAND_CAP_REQ_MSG, *PQMIDMS_GET_BAND_CAP_REQ_MSG;
1056 
1057 typedef struct _QMIDMS_GET_BAND_CAP_RESP_MSG
1058 {
1059    USHORT Type;
1060    USHORT Length;
1061    UCHAR  TLVType;          // 0x02 - result code
1062    USHORT TLVLength;        // 4
1063    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1064                             // QMI_RESULT_FAILURE
1065    USHORT QMUXError;        // QMI_ERR_NONE
1066                             // QMI_ERR_INTERNAL
1067                             // QMI_ERR_MALFORMED_MSG
1068                             // QMI_ERR_NO_MEMORY
1069 
1070    UCHAR  TLV2Type;         // 0x01
1071    USHORT TLV2Length;       // 2
1072    ULONG64 BandCap;
1073 } QMIDMS_GET_BAND_CAP_RESP_MSG, *PQMIDMS_GET_BAND_CAP_RESP;
1074 
1075 typedef struct _QMIDMS_GET_DEVICE_CAP_REQ_MSG
1076 {
1077    USHORT Type;             // QMUX type 0x0002
1078    USHORT Length;
1079 } QMIDMS_GET_DEVICE_CAP_REQ_MSG, *PQMIDMS_GET_DEVICE_CAP_REQ_MSG;
1080 
1081 typedef struct _QMIDMS_GET_DEVICE_CAP_RESP_MSG
1082 {
1083    USHORT Type;             // QMUX type 0x0002
1084    USHORT Length;
1085    UCHAR  TLVType;          // 0x02 - result code
1086    USHORT TLVLength;        // 4
1087    USHORT QMUXResult;       // QMUX_RESULT_SUCCESS
1088                             // QMUX_RESULT_FAILURE
1089    USHORT QMUXError;        // QMUX_ERR_INVALID_ARG
1090                             // QMUX_ERR_NO_MEMORY
1091                             // QMUX_ERR_INTERNAL
1092                             // QMUX_ERR_FAULT
1093    UCHAR  TLV2Type;         // 0x01
1094    USHORT TLV2Length;       // 2
1095 
1096    ULONG  MaxTxChannelRate;
1097    ULONG  MaxRxChannelRate;
1098    UCHAR  VoiceCap;
1099    UCHAR  SimCap;
1100 
1101    UCHAR  RadioIfListCnt;   // #elements in radio interface list
1102    UCHAR  RadioIfList;      // N 1-byte elements
1103 } QMIDMS_GET_DEVICE_CAP_RESP_MSG, *PQMIDMS_GET_DEVICE_CAP_RESP_MSG;
1104 
1105 typedef struct _QMIDMS_GET_ACTIVATED_STATUS_REQ_MSG
1106 {
1107    USHORT Type;             // QMUX type 0x0002
1108    USHORT Length;
1109 } QMIDMS_GET_ACTIVATED_STATUS_REQ_MSG, *PQMIDMS_GET_ACTIVATES_STATUD_REQ_MSG;
1110 
1111 typedef struct _QMIDMS_GET_ACTIVATED_STATUS_RESP_MSG
1112 {
1113    USHORT Type;             // QMUX type 0x0002
1114    USHORT Length;
1115    UCHAR  TLVType;          // 0x02 - result code
1116    USHORT TLVLength;        // 4
1117    USHORT QMUXResult;       // QMUX_RESULT_SUCCESS
1118                             // QMUX_RESULT_FAILURE
1119    USHORT QMUXError;        // QMUX_ERR_INVALID_ARG
1120                             // QMUX_ERR_NO_MEMORY
1121                             // QMUX_ERR_INTERNAL
1122                             // QMUX_ERR_FAULT
1123    UCHAR  TLV2Type;         // 0x01
1124    USHORT TLV2Length;       // 2
1125 
1126    USHORT ActivatedStatus;
1127 } QMIDMS_GET_ACTIVATED_STATUS_RESP_MSG, *PQMIDMS_GET_ACTIVATED_STATUS_RESP_MSG;
1128 
1129 typedef struct _QMIDMS_GET_OPERATING_MODE_REQ_MSG
1130 {
1131    USHORT Type;             // QMUX type 0x0002
1132    USHORT Length;
1133 } QMIDMS_GET_OPERATING_MODE_REQ_MSG, *PQMIDMS_GET_OPERATING_MODE_REQ_MSG;
1134 
1135 typedef struct _OFFLINE_REASON
1136 {
1137    UCHAR  TLVType;
1138    USHORT TLVLength;
1139    USHORT OfflineReason;
1140 } OFFLINE_REASON, *POFFLINE_REASON;
1141 
1142 typedef struct _HARDWARE_RESTRICTED_MODE
1143 {
1144    UCHAR  TLVType;
1145    USHORT TLVLength;
1146    UCHAR  HardwareControlledMode;
1147 } HARDWARE_RESTRICTED_MODE, *PHARDWARE_RESTRICTED_MODE;
1148 
1149 typedef struct _QMIDMS_GET_OPERATING_MODE_RESP_MSG
1150 {
1151    USHORT Type;             // QMUX type 0x0002
1152    USHORT Length;
1153    UCHAR  TLVType;          // 0x02 - result code
1154    USHORT TLVLength;        // 4
1155    USHORT QMUXResult;       // QMUX_RESULT_SUCCESS
1156                             // QMUX_RESULT_FAILURE
1157    USHORT QMUXError;        // QMUX_ERR_INVALID_ARG
1158                             // QMUX_ERR_NO_MEMORY
1159                             // QMUX_ERR_INTERNAL
1160                             // QMUX_ERR_FAULT
1161    UCHAR  TLV2Type;         // 0x01
1162    USHORT TLV2Length;       // 2
1163 
1164    UCHAR  OperatingMode;
1165 } QMIDMS_GET_OPERATING_MODE_RESP_MSG, *PQMIDMS_GET_OPERATING_MODE_RESP_MSG;
1166 
1167 typedef struct _QMIDMS_UIM_GET_ICCID_REQ_MSG
1168 {
1169    USHORT Type;             // QMUX type 0x0024
1170    USHORT Length;
1171 } QMIDMS_UIM_GET_ICCID_REQ_MSG, *PQMIDMS_UIM_GET_ICCID_REQ_MSG;
1172 
1173 typedef struct _QMIDMS_UIM_GET_ICCID_RESP_MSG
1174 {
1175    USHORT Type;             // QMUX type 0x0024
1176    USHORT Length;
1177    UCHAR  TLVType;          // 0x02 - result code
1178    USHORT TLVLength;        // 4
1179    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1180                             // QMI_RESULT_FAILURE
1181    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1182                             // QMI_ERR_NO_MEMORY
1183                             // QMI_ERR_INTERNAL
1184                             // QMI_ERR_FAULT
1185    UCHAR  TLV2Type;         // 0x01 - required parameter
1186    USHORT TLV2Length;       // var
1187    UCHAR  ICCID;      // String of voice number
1188 } QMIDMS_UIM_GET_ICCID_RESP_MSG, *PQMIDMS_UIM_GET_ICCID_RESP_MSG;
1189 #endif
1190 
1191 typedef struct _QMIDMS_SET_OPERATING_MODE_REQ_MSG
1192 {
1193    USHORT Type;             // QMUX type 0x0002
1194    USHORT Length;
1195    UCHAR  TLVType;          // 0x02 - result code
1196    USHORT TLVLength;        // 4
1197    UCHAR  OperatingMode;
1198 } __attribute__ ((packed)) QMIDMS_SET_OPERATING_MODE_REQ_MSG, *PQMIDMS_SET_OPERATING_MODE_REQ_MSG;
1199 
1200 typedef struct _QMIDMS_SET_OPERATING_MODE_RESP_MSG
1201 {
1202    USHORT Type;             // QMUX type 0x0002
1203    USHORT Length;
1204    UCHAR  TLVType;          // 0x02 - result code
1205    USHORT TLVLength;        // 4
1206    USHORT QMUXResult;       // QMUX_RESULT_SUCCESS
1207                             // QMUX_RESULT_FAILURE
1208    USHORT QMUXError;        // QMUX_ERR_INVALID_ARG
1209                             // QMUX_ERR_NO_MEMORY
1210                             // QMUX_ERR_INTERNAL
1211                             // QMUX_ERR_FAULT
1212 } __attribute__ ((packed)) QMIDMS_SET_OPERATING_MODE_RESP_MSG, *PQMIDMS_SET_OPERATING_MODE_RESP_MSG;
1213 
1214 #if 0
1215 typedef struct _QMIDMS_ACTIVATE_AUTOMATIC_REQ_MSG
1216 {
1217    USHORT Type;             // QMUX type 0x0024
1218    USHORT Length;
1219    UCHAR  TLVType;          // 0x02 - result code
1220    USHORT TLVLength;        //
1221    UCHAR  ActivateCodelen;
1222    UCHAR  ActivateCode;
1223 } QMIDMS_ACTIVATE_AUTOMATIC_REQ_MSG, *PQMIDMS_ACTIVATE_AUTOMATIC_REQ_MSG;
1224 
1225 typedef struct _QMIDMS_ACTIVATE_AUTOMATIC_RESP_MSG
1226 {
1227    USHORT Type;             // QMUX type 0x0024
1228    USHORT Length;
1229    UCHAR  TLVType;          // 0x02 - result code
1230    USHORT TLVLength;        // 4
1231    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1232                             // QMI_RESULT_FAILURE
1233    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1234                             // QMI_ERR_NO_MEMORY
1235                             // QMI_ERR_INTERNAL
1236                             // QMI_ERR_FAULT
1237 } QMIDMS_ACTIVATE_AUTOMATIC_RESP_MSG, *PQMIDMS_ACTIVATE_AUTOMATIC_RESP_MSG;
1238 
1239 
1240 typedef struct _SPC_MSG
1241 {
1242    UCHAR SPC[6];
1243    USHORT SID;
1244 } SPC_MSG, *PSPC_MSG;
1245 
1246 typedef struct _MDN_MSG
1247 {
1248    UCHAR MDNLEN;
1249    UCHAR MDN;
1250 } MDN_MSG, *PMDN_MSG;
1251 
1252 typedef struct _MIN_MSG
1253 {
1254    UCHAR MINLEN;
1255    UCHAR MIN;
1256 } MIN_MSG, *PMIN_MSG;
1257 
1258 typedef struct _PRL_MSG
1259 {
1260    UCHAR  TLVType;          // 0x02 - result code
1261    USHORT TLVLength;        //
1262    USHORT PRLLEN;
1263    UCHAR PRL;
1264 } PRL_MSG, *PPRL_MSG;
1265 
1266 typedef struct _MN_HA_KEY_MSG
1267 {
1268    UCHAR  TLVType;          // 0x02 - result code
1269    USHORT TLVLength;        //
1270    UCHAR MN_HA_KEY_LEN;
1271    UCHAR MN_HA_KEY;
1272 } MN_HA_KEY_MSG, *PMN_HA_KEY_MSG;
1273 
1274 typedef struct _MN_AAA_KEY_MSG
1275 {
1276    UCHAR  TLVType;          // 0x02 - result code
1277    USHORT TLVLength;        //
1278    UCHAR MN_AAA_KEY_LEN;
1279    UCHAR MN_AAA_KEY;
1280 } MN_AAA_KEY_MSG, *PMN_AAA_KEY_MSG;
1281 
1282 typedef struct _QMIDMS_ACTIVATE_MANUAL_REQ_MSG
1283 {
1284    USHORT Type;             // QMUX type 0x0024
1285    USHORT Length;
1286    UCHAR  TLVType;          // 0x02 - result code
1287    USHORT TLVLength;        //
1288    UCHAR  Value;
1289 } QMIDMS_ACTIVATE_MANUAL_REQ_MSG, *PQMIDMS_ACTIVATE_MANUAL_REQ_MSG;
1290 
1291 typedef struct _QMIDMS_ACTIVATE_MANUAL_RESP_MSG
1292 {
1293    USHORT Type;             // QMUX type 0x0024
1294    USHORT Length;
1295    UCHAR  TLVType;          // 0x02 - result code
1296    USHORT TLVLength;        // 4
1297    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1298                             // QMI_RESULT_FAILURE
1299    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1300                             // QMI_ERR_NO_MEMORY
1301                             // QMI_ERR_INTERNAL
1302                             // QMI_ERR_FAULT
1303 } QMIDMS_ACTIVATE_MANUAL_RESP_MSG, *PQMIDMS_ACTIVATE_MANUAL_RESP_MSG;
1304 #endif
1305 
1306 typedef struct _QMIDMS_UIM_GET_STATE_REQ_MSG
1307 {
1308    USHORT Type;
1309    USHORT Length;
1310 } __attribute__ ((packed)) QMIDMS_UIM_GET_STATE_REQ_MSG, *PQMIDMS_UIM_GET_STATE_REQ_MSG;
1311 
1312 typedef struct _QMIDMS_UIM_GET_STATE_RESP_MSG
1313 {
1314    USHORT Type;
1315    USHORT Length;
1316    UCHAR  TLVType;
1317    USHORT TLVLength;
1318    USHORT QMUXResult;
1319    USHORT QMUXError;
1320    UCHAR  TLV2Type;
1321    USHORT TLV2Length;
1322    UCHAR  UIMState;
1323 } __attribute__ ((packed)) QMIDMS_UIM_GET_STATE_RESP_MSG, *PQMIDMS_UIM_GET_STATE_RESP_MSG;
1324 
1325 typedef struct _QMIDMS_UIM_GET_PIN_STATUS_REQ_MSG
1326 {
1327    USHORT Type;             // QMUX type 0x0024
1328    USHORT Length;
1329 } __attribute__ ((packed)) QMIDMS_UIM_GET_PIN_STATUS_REQ_MSG, *PQMIDMS_UIM_GET_PIN_STATUS_REQ_MSG;
1330 
1331 typedef struct _QMIDMS_UIM_PIN_STATUS
1332 {
1333    UCHAR  TLVType;
1334    USHORT TLVLength;
1335    UCHAR  PINStatus;
1336    UCHAR  PINVerifyRetriesLeft;
1337    UCHAR  PINUnblockRetriesLeft;
1338 } __attribute__ ((packed)) QMIDMS_UIM_PIN_STATUS, *PQMIDMS_UIM_PIN_STATUS;
1339 
1340 #define QMI_PIN_STATUS_NOT_INIT      0
1341 #define QMI_PIN_STATUS_NOT_VERIF     1
1342 #define QMI_PIN_STATUS_VERIFIED      2
1343 #define QMI_PIN_STATUS_DISABLED      3
1344 #define QMI_PIN_STATUS_BLOCKED       4
1345 #define QMI_PIN_STATUS_PERM_BLOCKED  5
1346 #define QMI_PIN_STATUS_UNBLOCKED     6
1347 #define QMI_PIN_STATUS_CHANGED       7
1348 
1349 
1350 typedef struct _QMIDMS_UIM_GET_PIN_STATUS_RESP_MSG
1351 {
1352    USHORT Type;             // QMUX type 0x0024
1353    USHORT Length;
1354    UCHAR  TLVType;          // 0x02 - result code
1355    USHORT TLVLength;        // 4
1356    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1357                             // QMI_RESULT_FAILURE
1358    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1359                             // QMI_ERR_NO_MEMORY
1360                             // QMI_ERR_INTERNAL
1361                             // QMI_ERR_FAULT
1362    UCHAR PinStatus;
1363 } __attribute__ ((packed)) QMIDMS_UIM_GET_PIN_STATUS_RESP_MSG, *PQMIDMS_UIM_GET_PIN_STATUS_RESP_MSG;
1364 
1365 #if 0
1366 typedef struct _QMIDMS_UIM_GET_CK_STATUS_REQ_MSG
1367 {
1368    USHORT Type;
1369    USHORT Length;
1370    UCHAR  TLVType;
1371    USHORT TLVLength;
1372    UCHAR  Facility;
1373 } QMIDMS_UIM_GET_CK_STATUS_REQ_MSG, *PQMIDMS_UIM_GET_CK_STATUS_REQ_MSG;
1374 
1375 
1376 typedef struct _QMIDMS_UIM_CK_STATUS
1377 {
1378    UCHAR  TLVType;
1379    USHORT TLVLength;
1380    UCHAR  FacilityStatus;
1381    UCHAR  FacilityVerifyRetriesLeft;
1382    UCHAR  FacilityUnblockRetriesLeft;
1383 } QMIDMS_UIM_CK_STATUS, *PQMIDMS_UIM_CK_STATUS;
1384 
1385 typedef struct _QMIDMS_UIM_CK_OPERATION_STATUS
1386 {
1387    UCHAR  TLVType;
1388    USHORT TLVLength;
1389    UCHAR  OperationBlocking;
1390 } QMIDMS_UIM_CK_OPERATION_STATUS, *PQMIDMS_UIM_CK_OPERATION_STATUS;
1391 
1392 typedef struct _QMIDMS_UIM_GET_CK_STATUS_RESP_MSG
1393 {
1394    USHORT Type;
1395    USHORT Length;
1396    UCHAR  TLVType;
1397    USHORT TLVLength;
1398    USHORT QMUXResult;
1399    USHORT QMUXError;
1400    UCHAR  CkStatus;
1401 } QMIDMS_UIM_GET_CK_STATUS_RESP_MSG, *PQMIDMS_UIM_GET_CK_STATUS_RESP_MSG;
1402 #endif
1403 
1404 typedef struct _QMIDMS_UIM_VERIFY_PIN_REQ_MSG
1405 {
1406    USHORT Type;             // QMUX type 0x0024
1407    USHORT Length;
1408    UCHAR  TLVType;          // 0x02 - result code
1409    USHORT TLVLength;        // 4
1410    UCHAR  PINID;
1411    UCHAR  PINLen;
1412    UCHAR  PINValue;
1413 } __attribute__ ((packed)) QMIDMS_UIM_VERIFY_PIN_REQ_MSG, *PQMIDMS_UIM_VERIFY_PIN_REQ_MSG;
1414 
1415 typedef struct _QMIDMS_UIM_VERIFY_PIN_RESP_MSG
1416 {
1417    USHORT Type;             // QMUX type 0x0024
1418    USHORT Length;
1419    UCHAR  TLVType;          // 0x02 - result code
1420    USHORT TLVLength;        // 4
1421    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1422                             // QMI_RESULT_FAILURE
1423    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1424                             // QMI_ERR_NO_MEMORY
1425                             // QMI_ERR_INTERNAL
1426                             // QMI_ERR_FAULT
1427    UCHAR  TLV2Type;
1428    USHORT TLV2Length;
1429    UCHAR  PINVerifyRetriesLeft;
1430    UCHAR  PINUnblockRetriesLeft;
1431 } __attribute__ ((packed)) QMIDMS_UIM_VERIFY_PIN_RESP_MSG, *PQMIDMS_UIM_VERIFY_PIN_RESP_MSG;
1432 
1433 #if 0
1434 typedef struct _QMIDMS_UIM_SET_PIN_PROTECTION_REQ_MSG
1435 {
1436    USHORT Type;             // QMUX type 0x0024
1437    USHORT Length;
1438    UCHAR  TLVType;          // 0x02 - result code
1439    USHORT TLVLength;        // 4
1440    UCHAR  PINID;
1441    UCHAR  ProtectionSetting;
1442    UCHAR  PINLen;
1443    UCHAR  PINValue;
1444 } QMIDMS_UIM_SET_PIN_PROTECTION_REQ_MSG, *PQMIDMS_UIM_SET_PIN_PROTECTION_REQ_MSG;
1445 
1446 typedef struct _QMIDMS_UIM_SET_PIN_PROTECTION_RESP_MSG
1447 {
1448    USHORT Type;             // QMUX type 0x0024
1449    USHORT Length;
1450    UCHAR  TLVType;          // 0x02 - result code
1451    USHORT TLVLength;        // 4
1452    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1453                             // QMI_RESULT_FAILURE
1454    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1455                             // QMI_ERR_NO_MEMORY
1456                             // QMI_ERR_INTERNAL
1457                             // QMI_ERR_FAULT
1458    UCHAR  TLV2Type;
1459    USHORT TLV2Length;
1460    UCHAR  PINVerifyRetriesLeft;
1461    UCHAR  PINUnblockRetriesLeft;
1462 } QMIDMS_UIM_SET_PIN_PROTECTION_RESP_MSG, *PQMIDMS_UIM_SET_PIN_PROTECTION_RESP_MSG;
1463 
1464 typedef struct _QMIDMS_UIM_SET_CK_PROTECTION_REQ_MSG
1465 {
1466    USHORT Type;
1467    USHORT Length;
1468    UCHAR  TLVType;
1469    USHORT TLVLength;
1470    UCHAR  Facility;
1471    UCHAR  FacilityState;
1472    UCHAR  FacliltyLen;
1473    UCHAR  FacliltyValue;
1474 } QMIDMS_UIM_SET_CK_PROTECTION_REQ_MSG, *PQMIDMS_UIM_SET_CK_PROTECTION_REQ_MSG;
1475 
1476 typedef struct _QMIDMS_UIM_SET_CK_PROTECTION_RESP_MSG
1477 {
1478    USHORT Type;
1479    USHORT Length;
1480    UCHAR  TLVType;
1481    USHORT TLVLength;
1482    USHORT QMUXResult;
1483    USHORT QMUXError;
1484    UCHAR  TLV2Type;
1485    USHORT TLV2Length;
1486    UCHAR  FacilityRetriesLeft;
1487 } QMIDMS_UIM_SET_CK_PROTECTION_RESP_MSG, *PQMIDMS_UIM_SET_CK_PROTECTION_RESP_MSG;
1488 
1489 
1490 typedef struct _UIM_PIN
1491 {
1492    UCHAR  PinLength;
1493    UCHAR  PinValue;
1494 } UIM_PIN, *PUIM_PIN;
1495 
1496 typedef struct _QMIDMS_UIM_CHANGE_PIN_REQ_MSG
1497 {
1498    USHORT Type;             // QMUX type 0x0024
1499    USHORT Length;
1500    UCHAR  TLVType;          // 0x02 - result code
1501    USHORT TLVLength;        // 4
1502    UCHAR  PINID;
1503    UCHAR  PinDetails;
1504 } QMIDMS_UIM_CHANGE_PIN_REQ_MSG, *PQMIDMS_UIM_CHANGE_PIN_REQ_MSG;
1505 
1506 typedef struct QMIDMS_UIM_CHANGE_PIN_RESP_MSG
1507 {
1508    USHORT Type;             // QMUX type 0x0024
1509    USHORT Length;
1510    UCHAR  TLVType;          // 0x02 - result code
1511    USHORT TLVLength;        // 4
1512    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1513                             // QMI_RESULT_FAILURE
1514    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1515                             // QMI_ERR_NO_MEMORY
1516                             // QMI_ERR_INTERNAL
1517                             // QMI_ERR_FAULT
1518    UCHAR  TLV2Type;
1519    USHORT TLV2Length;
1520    UCHAR  PINVerifyRetriesLeft;
1521    UCHAR  PINUnblockRetriesLeft;
1522 } QMIDMS_UIM_CHANGE_PIN_RESP_MSG, *PQMIDMS_UIM_CHANGE_PIN_RESP_MSG;
1523 
1524 typedef struct _UIM_PUK
1525 {
1526    UCHAR  PukLength;
1527    UCHAR  PukValue;
1528 } UIM_PUK, *PUIM_PUK;
1529 
1530 typedef struct _QMIDMS_UIM_UNBLOCK_PIN_REQ_MSG
1531 {
1532    USHORT Type;             // QMUX type 0x0024
1533    USHORT Length;
1534    UCHAR  TLVType;          // 0x02 - result code
1535    USHORT TLVLength;        // 4
1536    UCHAR  PINID;
1537    UCHAR  PinDetails;
1538 } QMIDMS_UIM_UNBLOCK_PIN_REQ_MSG, *PQMIDMS_UIM_BLOCK_PIN_REQ_MSG;
1539 
1540 typedef struct QMIDMS_UIM_UNBLOCK_PIN_RESP_MSG
1541 {
1542    USHORT Type;             // QMUX type 0x0024
1543    USHORT Length;
1544    UCHAR  TLVType;          // 0x02 - result code
1545    USHORT TLVLength;        // 4
1546    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
1547                             // QMI_RESULT_FAILURE
1548    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
1549                             // QMI_ERR_NO_MEMORY
1550                             // QMI_ERR_INTERNAL
1551                             // QMI_ERR_FAULT
1552    UCHAR  TLV2Type;
1553    USHORT TLV2Length;
1554    UCHAR  PINVerifyRetriesLeft;
1555    UCHAR  PINUnblockRetriesLeft;
1556 } QMIDMS_UIM_UNBLOCK_PIN_RESP_MSG, *PQMIDMS_UIM_UNBLOCK_PIN_RESP_MSG;
1557 
1558 typedef struct _QMIDMS_UIM_UNBLOCK_CK_REQ_MSG
1559 {
1560    USHORT Type;
1561    USHORT Length;
1562    UCHAR  TLVType;
1563    USHORT TLVLength;
1564    UCHAR  Facility;
1565    UCHAR  FacliltyUnblockLen;
1566    UCHAR  FacliltyUnblockValue;
1567 } QMIDMS_UIM_UNBLOCK_CK_REQ_MSG, *PQMIDMS_UIM_BLOCK_CK_REQ_MSG;
1568 
1569 typedef struct QMIDMS_UIM_UNBLOCK_CK_RESP_MSG
1570 {
1571    USHORT Type;
1572    USHORT Length;
1573    UCHAR  TLVType;
1574    USHORT TLVLength;
1575    USHORT QMUXResult;
1576    USHORT QMUXError;
1577    UCHAR  TLV2Type;
1578    USHORT TLV2Length;
1579    UCHAR  FacilityUnblockRetriesLeft;
1580 } QMIDMS_UIM_UNBLOCK_CK_RESP_MSG, *PQMIDMS_UIM_UNBLOCK_CK_RESP_MSG;
1581 
1582 typedef struct _QMIDMS_SET_EVENT_REPORT_REQ_MSG
1583 {
1584    USHORT Type;
1585    USHORT Length;
1586 } QMIDMS_SET_EVENT_REPORT_REQ_MSG, *PQMIDMS_SET_EVENT_REPORT_REQ_MSG;
1587 
1588 typedef struct _QMIDMS_SET_EVENT_REPORT_RESP_MSG
1589 {
1590    USHORT Type;             // QMUX type 0x0003
1591    USHORT Length;
1592    UCHAR  TLVType;          // 0x02 - result code
1593    USHORT TLVLength;        // 4
1594    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
1595                             // QMI_RESULT_FAILURE
1596    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
1597 } QMIDMS_SET_EVENT_REPORT_RESP_MSG, *PQMIDMS_SET_EVENT_REPORT_RESP_MSG;
1598 
1599 typedef struct _PIN_STATUS
1600 {
1601    UCHAR  TLVType;
1602    USHORT TLVLength;
1603    UCHAR  ReportPinState;
1604 } PIN_STATUS, *PPIN_STATUS;
1605 
1606 typedef struct _POWER_STATUS
1607 {
1608    UCHAR TLVType;
1609    USHORT TLVLength;
1610    UCHAR PowerStatus;
1611    UCHAR BatteryLvl;
1612 } POWER_STATUS, *PPOWER_STATUS;
1613 
1614 typedef struct _ACTIVATION_STATE
1615 {
1616    UCHAR TLVType;
1617    USHORT TLVLength;
1618    USHORT ActivationState;
1619 } ACTIVATION_STATE, *PACTIVATION_STATE;
1620 
1621 typedef struct _ACTIVATION_STATE_REQ
1622 {
1623    UCHAR TLVType;
1624    USHORT TLVLength;
1625    UCHAR ActivationState;
1626 } ACTIVATION_STATE_REQ, *PACTIVATION_STATE_REQ;
1627 
1628 typedef struct _OPERATING_MODE
1629 {
1630    UCHAR TLVType;
1631    USHORT TLVLength;
1632    UCHAR OperatingMode;
1633 } OPERATING_MODE, *POPERATING_MODE;
1634 
1635 typedef struct _UIM_STATE
1636 {
1637    UCHAR TLVType;
1638    USHORT TLVLength;
1639    UCHAR UIMState;
1640 } UIM_STATE, *PUIM_STATE;
1641 
1642 typedef struct _WIRELESS_DISABLE_STATE
1643 {
1644    UCHAR TLVType;
1645    USHORT TLVLength;
1646    UCHAR WirelessDisableState;
1647 } WIRELESS_DISABLE_STATE, *PWIRELESS_DISABLE_STATE;
1648 
1649 typedef struct _QMIDMS_EVENT_REPORT_IND_MSG
1650 {
1651    USHORT Type;
1652    USHORT Length;
1653 } QMIDMS_EVENT_REPORT_IND_MSG, *PQMIDMS_EVENT_REPORT_IND_MSG;
1654 #endif
1655 
1656 // ============================ END OF DMS ===============================
1657 
1658 // ======================= QOS ==============================
1659 typedef struct _MPIOC_DEV_INFO MPIOC_DEV_INFO, *PMPIOC_DEV_INFO;
1660 
1661 #define QMI_QOS_SET_EVENT_REPORT_REQ  0x0001
1662 #define QMI_QOS_SET_EVENT_REPORT_RESP 0x0001
1663 #define QMI_QOS_EVENT_REPORT_IND      0x0001
1664 
1665 #if 0
1666 typedef struct _QMI_QOS_SET_EVENT_REPORT_REQ_MSG
1667 {
1668    USHORT Type;             // QMUX type 0x0001
1669    USHORT Length;
1670    // UCHAR  TLVType;          // 0x01 - physical link state
1671    // USHORT TLVLength;        // 1
1672    // UCHAR  PhyLinkStatusRpt; // 0-enable; 1-disable
1673    UCHAR  TLVType2;         // 0x02 = global flow reporting
1674    USHORT TLVLength2;       // 1
1675    UCHAR  GlobalFlowRpt;    // 1-enable; 0-disable
1676 } QMI_QOS_SET_EVENT_REPORT_REQ_MSG, *PQMI_QOS_SET_EVENT_REPORT_REQ_MSG;
1677 
1678 typedef struct _QMI_QOS_SET_EVENT_REPORT_RESP_MSG
1679 {
1680    USHORT Type;             // QMUX type 0x0010
1681    USHORT Length;
1682    UCHAR  TLVType;          // 0x02 - result code
1683    USHORT TLVLength;        // 4
1684    USHORT QMUXResult;       // QMUX_RESULT_SUCCESS
1685                             // QMUX_RESULT_FAILURE
1686    USHORT QMUXError;        // QMUX_ERR_INVALID_ARG
1687                             // QMUX_ERR_NO_MEMORY
1688                             // QMUX_ERR_INTERNAL
1689                             // QMUX_ERR_FAULT
1690 } QMI_QOS_SET_EVENT_REPORT_RESP_MSG, *PQMI_QOS_SET_EVENT_REPORT_RESP_MSG;
1691 
1692 typedef struct _QMI_QOS_EVENT_REPORT_IND_MSG
1693 {
1694    USHORT Type;             // QMUX type 0x0001
1695    USHORT Length;
1696    UCHAR  TLVs;
1697 } QMI_QOS_EVENT_REPORT_IND_MSG, *PQMI_QOS_EVENT_REPORT_IND_MSG;
1698 
1699 #define QOS_EVENT_RPT_IND_FLOW_ACTIVATED 0x01
1700 #define QOS_EVENT_RPT_IND_FLOW_MODIFIED  0x02
1701 #define QOS_EVENT_RPT_IND_FLOW_DELETED   0x03
1702 #define QOS_EVENT_RPT_IND_FLOW_SUSPENDED 0x04
1703 #define QOS_EVENT_RPT_IND_FLOW_ENABLED   0x05
1704 #define QOS_EVENT_RPT_IND_FLOW_DISABLED  0x06
1705 
1706 #define QOS_EVENT_RPT_IND_TLV_PHY_LINK_STATE_TYPE 0x01
1707 #define QOS_EVENT_RPT_IND_TLV_GLOBAL_FL_RPT_STATE 0x10
1708 #define QOS_EVENT_RPT_IND_TLV_GLOBAL_FL_RPT_TYPE  0x10
1709 #define QOS_EVENT_RPT_IND_TLV_TX_FLOW_TYPE        0x11
1710 #define QOS_EVENT_RPT_IND_TLV_RX_FLOW_TYPE        0x12
1711 #define QOS_EVENT_RPT_IND_TLV_TX_FILTER_TYPE      0x13
1712 #define QOS_EVENT_RPT_IND_TLV_RX_FILTER_TYPE      0x14
1713 #define QOS_EVENT_RPT_IND_TLV_FLOW_SPEC           0x10
1714 #define QOS_EVENT_RPT_IND_TLV_FILTER_SPEC         0x10
1715 
1716 typedef struct _QOS_EVENT_RPT_IND_TLV_PHY_LINK_STATE
1717 {
1718    UCHAR  TLVType;       // 0x01
1719    USHORT TLVLength;     // 1
1720    UCHAR  PhyLinkState;  // 0-dormant, 1-active
1721 } QOS_EVENT_RPT_IND_TLV_PHY_LINK_STATE, *PQOS_EVENT_RPT_IND_TLV_PHY_LINK_STATE;
1722 
1723 typedef struct _QOS_EVENT_RPT_IND_TLV_GLOBAL_FL_RPT
1724 {
1725    UCHAR  TLVType;       // 0x10
1726    USHORT TLVLength;     // 6
1727    ULONG  QosId;
1728    UCHAR  NewFlow;       // 1: newly added flow; 0: existing flow
1729    UCHAR  StateChange;   // 1: activated; 2: modified; 3: deleted;
1730                          // 4: suspended(delete); 5: enabled; 6: disabled
1731 } QOS_EVENT_RPT_IND_TLV_GLOBAL_FL_RPT, *PQOS_EVENT_RPT_IND_TLV_GLOBAL_FL_RPT;
1732 
1733 // QOS Flow
1734 
1735 typedef struct _QOS_EVENT_RPT_IND_TLV_FLOW
1736 {
1737    UCHAR  TLVType;       // 0x10-TX flow; 0x11-RX flow
1738    USHORT TLVLength;     // var
1739    // embedded TLV's
1740 } QOS_EVENT_RPT_IND_TLV_TX_FLOW, *PQOS_EVENT_RPT_IND_TLV_TX_FLOW;
1741 
1742 #define QOS_FLOW_TLV_IP_FLOW_IDX_TYPE                    0x10
1743 #define QOS_FLOW_TLV_IP_FLOW_TRAFFIC_CLASS_TYPE          0x11
1744 #define QOS_FLOW_TLV_IP_FLOW_DATA_RATE_MIN_MAX_TYPE      0x12
1745 #define QOS_FLOW_TLV_IP_FLOW_DATA_RATE_TOKEN_BUCKET_TYPE 0x13
1746 #define QOS_FLOW_TLV_IP_FLOW_LATENCY_TYPE                0x14
1747 #define QOS_FLOW_TLV_IP_FLOW_JITTER_TYPE                 0x15
1748 #define QOS_FLOW_TLV_IP_FLOW_PKT_ERR_RATE_TYPE           0x16
1749 #define QOS_FLOW_TLV_IP_FLOW_MIN_PKT_SIZE_TYPE           0x17
1750 #define QOS_FLOW_TLV_IP_FLOW_MAX_PKT_SIZE_TYPE           0x18
1751 #define QOS_FLOW_TLV_IP_FLOW_3GPP_BIT_ERR_RATE_TYPE      0x19
1752 #define QOS_FLOW_TLV_IP_FLOW_3GPP_TRAF_PRIORITY_TYPE     0x1A
1753 #define QOS_FLOW_TLV_IP_FLOW_3GPP2_PROFILE_ID_TYPE       0x1B
1754 
1755 typedef struct _QOS_FLOW_TLV_IP_FLOW_IDX
1756 {
1757    UCHAR  TLVType;       // 0x10
1758    USHORT TLVLength;     // 1
1759    UCHAR  IpFlowIndex;
1760 }  QOS_FLOW_TLV_IP_FLOW_IDX, *PQOS_FLOW_TLV_IP_FLOW_IDX;
1761 
1762 typedef struct _QOS_FLOW_TLV_IP_FLOW_TRAFFIC_CLASS
1763 {
1764    UCHAR  TLVType;       // 0x11
1765    USHORT TLVLength;     // 1
1766    UCHAR  TrafficClass;
1767 }  QOS_FLOW_TLV_IP_FLOW_TRAFFIC_CLASS, *PQOS_FLOW_TLV_IP_FLOW_TRAFFIC_CLASS;
1768 
1769 typedef struct _QOS_FLOW_TLV_IP_FLOW_DATA_RATE_MIN_MAX
1770 {
1771    UCHAR  TLVType;       // 0x12
1772    USHORT TLVLength;     // 8
1773    ULONG  DataRateMax;
1774    ULONG  GuaranteedRate;
1775 }  QOS_FLOW_TLV_IP_FLOW_DATA_RATE_MIN_MAX, *PQOS_FLOW_TLV_IP_FLOW_DATA_RATE_MIN_MAX;
1776 
1777 typedef struct _QOS_FLOW_TLV_IP_FLOW_DATA_RATE_TOKEN_BUCKET
1778 {
1779    UCHAR  TLVType;       // 0x13
1780    USHORT TLVLength;     // 12
1781    ULONG  PeakRate;
1782    ULONG  TokenRate;
1783    ULONG  BucketSize;
1784 }  QOS_FLOW_TLV_IP_FLOW_DATA_RATE_TOKEN_BUCKET, *PQOS_FLOW_TLV_IP_FLOW_DATA_RATE_TOKEN_BUCKET;
1785 
1786 typedef struct _QOS_FLOW_TLV_IP_FLOW_LATENCY
1787 {
1788    UCHAR  TLVType;       // 0x14
1789    USHORT TLVLength;     // 4
1790    ULONG  IpFlowLatency;
1791 }  QOS_FLOW_TLV_IP_FLOW_LATENCY, *PQOS_FLOW_TLV_IP_FLOW_LATENCY;
1792 
1793 typedef struct _QOS_FLOW_TLV_IP_FLOW_JITTER
1794 {
1795    UCHAR  TLVType;       // 0x15
1796    USHORT TLVLength;     // 4
1797    ULONG  IpFlowJitter;
1798 }  QOS_FLOW_TLV_IP_FLOW_JITTER, *PQOS_FLOW_TLV_IP_FLOW_JITTER;
1799 
1800 typedef struct _QOS_FLOW_TLV_IP_FLOW_PKT_ERR_RATE
1801 {
1802    UCHAR  TLVType;       // 0x16
1803    USHORT TLVLength;     // 4
1804    USHORT ErrRateMultiplier;
1805    USHORT ErrRateExponent;
1806 }  QOS_FLOW_TLV_IP_FLOW_PKT_ERR_RATE, *PQOS_FLOW_TLV_IP_FLOW_PKT_ERR_RATE;
1807 
1808 typedef struct _QOS_FLOW_TLV_IP_FLOW_MIN_PKT_SIZE
1809 {
1810    UCHAR  TLVType;       // 0x17
1811    USHORT TLVLength;     // 4
1812    ULONG  MinPolicedPktSize;
1813 }  QOS_FLOW_TLV_IP_FLOW_MIN_PKT_SIZE, *PQOS_FLOW_TLV_IP_FLOW_MIN_PKT_SIZE;
1814 
1815 typedef struct _QOS_FLOW_TLV_IP_FLOW_MAX_PKT_SIZE
1816 {
1817    UCHAR  TLVType;       // 0x18
1818    USHORT TLVLength;     // 4
1819    ULONG  MaxAllowedPktSize;
1820 }  QOS_FLOW_TLV_IP_FLOW_MAX_PKT_SIZE, *PQOS_FLOW_TLV_IP_FLOW_MAX_PKT_SIZE;
1821 
1822 typedef struct _QOS_FLOW_TLV_IP_FLOW_3GPP_BIT_ERR_RATE
1823 {
1824    UCHAR  TLVType;       // 0x19
1825    USHORT TLVLength;     // 1
1826    UCHAR  ResidualBitErrorRate;
1827 }  QOS_FLOW_TLV_IP_FLOW_3GPP_BIT_ERR_RATE, *PQOS_FLOW_TLV_IP_FLOW_3GPP_BIT_ERR_RATE;
1828 
1829 typedef struct _QOS_FLOW_TLV_IP_FLOW_3GPP_TRAF_PRIORITY
1830 {
1831    UCHAR  TLVType;       // 0x1A
1832    USHORT TLVLength;     // 1
1833    UCHAR  TrafficHandlingPriority;
1834 }  QOS_FLOW_TLV_IP_FLOW_3GPP_TRAF_PRIORITY, *PQOS_FLOW_TLV_IP_FLOW_3GPP_TRAF_PRIORITY;
1835 
1836 typedef struct _QOS_FLOW_TLV_IP_FLOW_3GPP2_PROFILE_ID
1837 {
1838    UCHAR  TLVType;       // 0x1B
1839    USHORT TLVLength;     // 2
1840    USHORT ProfileId;
1841 }  QOS_FLOW_TLV_IP_FLOW_3GPP2_PROFILE_ID, *PQOS_FLOW_TLV_IP_FLOW_3GPP2_PROFILE_ID;
1842 
1843 // QOS Filter
1844 
1845 #define QOS_FILTER_TLV_IP_FILTER_IDX_TYPE          0x10
1846 #define QOS_FILTER_TLV_IP_VERSION_TYPE             0x11
1847 #define QOS_FILTER_TLV_IPV4_SRC_ADDR_TYPE          0x12
1848 #define QOS_FILTER_TLV_IPV4_DEST_ADDR_TYPE         0x13
1849 #define QOS_FILTER_TLV_NEXT_HDR_PROTOCOL_TYPE      0x14
1850 #define QOS_FILTER_TLV_IPV4_TYPE_OF_SERVICE_TYPE   0x15
1851 #define QOS_FILTER_TLV_TCP_UDP_PORT_SRC_TCP_TYPE   0x1B
1852 #define QOS_FILTER_TLV_TCP_UDP_PORT_DEST_TCP_TYPE  0x1C
1853 #define QOS_FILTER_TLV_TCP_UDP_PORT_SRC_UDP_TYPE   0x1D
1854 #define QOS_FILTER_TLV_TCP_UDP_PORT_DEST_UDP_TYPE  0x1E
1855 #define QOS_FILTER_TLV_ICMP_FILTER_MSG_TYPE_TYPE   0x1F
1856 #define QOS_FILTER_TLV_ICMP_FILTER_MSG_CODE_TYPE   0x20
1857 #define QOS_FILTER_TLV_TCP_UDP_PORT_SRC_TYPE       0x24
1858 #define QOS_FILTER_TLV_TCP_UDP_PORT_DEST_TYPE      0x25
1859 
1860 typedef struct _QOS_EVENT_RPT_IND_TLV_FILTER
1861 {
1862    UCHAR  TLVType;       // 0x12-TX filter; 0x13-RX filter
1863    USHORT TLVLength;     // var
1864    // embedded TLV's
1865 } QOS_EVENT_RPT_IND_TLV_RX_FILTER, *PQOS_EVENT_RPT_IND_TLV_RX_FILTER;
1866 
1867 typedef struct _QOS_FILTER_TLV_IP_FILTER_IDX
1868 {
1869    UCHAR  TLVType;       // 0x10
1870    USHORT TLVLength;     // 1
1871    UCHAR  IpFilterIndex;
1872 }  QOS_FILTER_TLV_IP_FILTER_IDX, *PQOS_FILTER_TLV_IP_FILTER_IDX;
1873 
1874 typedef struct _QOS_FILTER_TLV_IP_VERSION
1875 {
1876    UCHAR  TLVType;       // 0x11
1877    USHORT TLVLength;     // 1
1878    UCHAR  IpVersion;
1879 }  QOS_FILTER_TLV_IP_VERSION, *PQOS_FILTER_TLV_IP_VERSION;
1880 
1881 typedef struct _QOS_FILTER_TLV_IPV4_SRC_ADDR
1882 {
1883    UCHAR  TLVType;       // 0x12
1884    USHORT TLVLength;     // 8
1885    ULONG  IpSrcAddr;
1886    ULONG  IpSrcSubnetMask;
1887 }  QOS_FILTER_TLV_IPV4_SRC_ADDR, *PQOS_FILTER_TLV_IPV4_SRC_ADDR;
1888 
1889 typedef struct _QOS_FILTER_TLV_IPV4_DEST_ADDR
1890 {
1891    UCHAR  TLVType;       // 0x13
1892    USHORT TLVLength;     // 8
1893    ULONG  IpDestAddr;
1894    ULONG  IpDestSubnetMask;
1895 }  QOS_FILTER_TLV_IPV4_DEST_ADDR, *PQOS_FILTER_TLV_IPV4_DEST_ADDR;
1896 
1897 typedef struct _QOS_FILTER_TLV_NEXT_HDR_PROTOCOL
1898 {
1899    UCHAR  TLVType;       // 0x14
1900    USHORT TLVLength;     // 1
1901    UCHAR  NextHdrProtocol;
1902 }  QOS_FILTER_TLV_NEXT_HDR_PROTOCOL, *PQOS_FILTER_TLV_NEXT_HDR_PROTOCOL;
1903 
1904 typedef struct _QOS_FILTER_TLV_IPV4_TYPE_OF_SERVICE
1905 {
1906    UCHAR  TLVType;       // 0x15
1907    USHORT TLVLength;     // 2
1908    UCHAR  Ipv4TypeOfService;
1909    UCHAR  Ipv4TypeOfServiceMask;
1910 }  QOS_FILTER_TLV_IPV4_TYPE_OF_SERVICE, *PQOS_FILTER_TLV_IPV4_TYPE_OF_SERVICE;
1911 
1912 typedef struct _QOS_FILTER_TLV_TCP_UDP_PORT
1913 {
1914    UCHAR  TLVType;       // source port: 0x1B-TCP; 0x1D-UDP
1915                          // dest port:   0x1C-TCP; 0x1E-UDP
1916    USHORT TLVLength;     // 4
1917    USHORT FilterPort;
1918    USHORT FilterPortRange;
1919 }  QOS_FILTER_TLV_TCP_UDP_PORT, *PQOS_FILTER_TLV_TCP_UDP_PORT;
1920 
1921 typedef struct _QOS_FILTER_TLV_ICMP_FILTER_MSG_TYPE
1922 {
1923    UCHAR  TLVType;       // 0x1F
1924    USHORT TLVLength;     // 1
1925    UCHAR  IcmpFilterMsgType;
1926 }  QOS_FILTER_TLV_ICMP_FILTER_MSG_TYPE, *PQOS_FILTER_TLV_ICMP_FILTER_MSG_TYPE;
1927 
1928 typedef struct _QOS_FILTER_TLV_ICMP_FILTER_MSG_CODE
1929 {
1930    UCHAR  TLVType;       // 0x20
1931    USHORT TLVLength;     // 1
1932    UCHAR  IcmpFilterMsgCode;
1933 }  QOS_FILTER_TLV_ICMP_FILTER_MSG_CODE, *PQOS_FILTER_TLV_ICMP_FILTER_MSG_CODE;
1934 
1935 #define QOS_FILTER_PRECEDENCE_INVALID  256
1936 #define QOS_FILTER_TLV_PRECEDENCE_TYPE 0x22
1937 #define QOS_FILTER_TLV_ID_TYPE         0x23
1938 
1939 typedef struct _QOS_FILTER_TLV_PRECEDENCE
1940 {
1941    UCHAR  TLVType;    // 0x22
1942    USHORT TLVLength;  // 2
1943    USHORT Precedence; // precedence of the filter
1944 }  QOS_FILTER_TLV_PRECEDENCE, *PQOS_FILTER_TLV_PRECEDENCE;
1945 
1946 typedef struct _QOS_FILTER_TLV_ID
1947 {
1948    UCHAR  TLVType;    // 0x23
1949    USHORT TLVLength;  // 2
1950    USHORT FilterId;   // filter ID
1951 }  QOS_FILTER_TLV_ID, *PQOS_FILTER_TLV_ID;
1952 
1953 #ifdef QCQOS_IPV6
1954 
1955 #define QOS_FILTER_TLV_IPV6_SRC_ADDR_TYPE          0x16
1956 #define QOS_FILTER_TLV_IPV6_DEST_ADDR_TYPE         0x17
1957 #define QOS_FILTER_TLV_IPV6_NEXT_HDR_PROTOCOL_TYPE 0x14  // same as IPV4
1958 #define QOS_FILTER_TLV_IPV6_TRAFFIC_CLASS_TYPE     0x19
1959 #define QOS_FILTER_TLV_IPV6_FLOW_LABEL_TYPE        0x1A
1960 
1961 typedef struct _QOS_FILTER_TLV_IPV6_SRC_ADDR
1962 {
1963    UCHAR  TLVType;       // 0x16
1964    USHORT TLVLength;     // 17
1965    UCHAR  IpSrcAddr[16];
1966    UCHAR  IpSrcAddrPrefixLen;  // [0..128]
1967 }  QOS_FILTER_TLV_IPV6_SRC_ADDR, *PQOS_FILTER_TLV_IPV6_SRC_ADDR;
1968 
1969 typedef struct _QOS_FILTER_TLV_IPV6_DEST_ADDR
1970 {
1971    UCHAR  TLVType;       // 0x17
1972    USHORT TLVLength;     // 17
1973    UCHAR  IpDestAddr[16];
1974    UCHAR  IpDestAddrPrefixLen;  // [0..128]
1975 }  QOS_FILTER_TLV_IPV6_DEST_ADDR, *PQOS_FILTER_TLV_IPV6_DEST_ADDR;
1976 
1977 #define QOS_FILTER_IPV6_NEXT_HDR_PROTOCOL_TCP 0x06
1978 #define QOS_FILTER_IPV6_NEXT_HDR_PROTOCOL_UDP 0x11
1979 
1980 typedef struct _QOS_FILTER_TLV_IPV6_TRAFFIC_CLASS
1981 {
1982    UCHAR  TLVType;       // 0x19
1983    USHORT TLVLength;     // 2
1984    UCHAR  TrafficClass;
1985    UCHAR  TrafficClassMask; // compare the first 6 bits only
1986 }  QOS_FILTER_TLV_IPV6_TRAFFIC_CLASS, *PQOS_FILTER_TLV_IPV6_TRAFFIC_CLASS;
1987 
1988 typedef struct _QOS_FILTER_TLV_IPV6_FLOW_LABEL
1989 {
1990    UCHAR  TLVType;       // 0x1A
1991    USHORT TLVLength;     // 4
1992    ULONG  FlowLabel;
1993 }  QOS_FILTER_TLV_IPV6_FLOW_LABEL, *PQOS_FILTER_TLV_IPV6_FLOW_LABEL;
1994 
1995 #endif // QCQOS_IPV6
1996 #endif
1997 
1998 // ======================= WMS ==============================
1999 #define QMIWMS_SET_EVENT_REPORT_REQ           0x0001
2000 #define QMIWMS_SET_EVENT_REPORT_RESP          0x0001
2001 #define QMIWMS_EVENT_REPORT_IND               0x0001
2002 #define QMIWMS_RAW_SEND_REQ                   0x0020
2003 #define QMIWMS_RAW_SEND_RESP                  0x0020
2004 #define QMIWMS_RAW_WRITE_REQ                  0x0021
2005 #define QMIWMS_RAW_WRITE_RESP                 0x0021
2006 #define QMIWMS_RAW_READ_REQ                   0x0022
2007 #define QMIWMS_RAW_READ_RESP                  0x0022
2008 #define QMIWMS_MODIFY_TAG_REQ                 0x0023
2009 #define QMIWMS_MODIFY_TAG_RESP                0x0023
2010 #define QMIWMS_DELETE_REQ                     0x0024
2011 #define QMIWMS_DELETE_RESP                    0x0024
2012 #define QMIWMS_GET_MESSAGE_PROTOCOL_REQ       0x0030
2013 #define QMIWMS_GET_MESSAGE_PROTOCOL_RESP      0x0030
2014 #define QMIWMS_LIST_MESSAGES_REQ              0x0031
2015 #define QMIWMS_LIST_MESSAGES_RESP             0x0031
2016 #define QMIWMS_GET_SMSC_ADDRESS_REQ           0x0034
2017 #define QMIWMS_GET_SMSC_ADDRESS_RESP          0x0034
2018 #define QMIWMS_SET_SMSC_ADDRESS_REQ           0x0035
2019 #define QMIWMS_SET_SMSC_ADDRESS_RESP          0x0035
2020 #define QMIWMS_GET_STORE_MAX_SIZE_REQ         0x0036
2021 #define QMIWMS_GET_STORE_MAX_SIZE_RESP        0x0036
2022 
2023 
2024 #define WMS_MESSAGE_PROTOCOL_CDMA             0x00
2025 #define WMS_MESSAGE_PROTOCOL_WCDMA            0x01
2026 
2027 #if 0
2028 typedef struct _QMIWMS_GET_MESSAGE_PROTOCOL_REQ_MSG
2029 {
2030    USHORT Type;             // QMUX type 0x0003
2031    USHORT Length;
2032 } QMIWMS_GET_MESSAGE_PROTOCOL_REQ_MSG, *PQMIWMS_GET_MESSAGE_PROTOCOL_REQ_MSG;
2033 
2034 typedef struct _QMIWMS_GET_MESSAGE_PROTOCOL_RESP_MSG
2035 {
2036    USHORT Type;
2037    USHORT Length;
2038    UCHAR  TLVType;
2039    USHORT TLVLength;
2040    USHORT QMUXResult;
2041    USHORT QMUXError;
2042    UCHAR  TLV2Type;
2043    USHORT TLV2Length;
2044    UCHAR  MessageProtocol;
2045 } QMIWMS_GET_MESSAGE_PROTOCOL_RESP_MSG, *PQMIWMS_GET_MESSAGE_PROTOCOL_RESP_MSG;
2046 
2047 typedef struct _QMIWMS_GET_STORE_MAX_SIZE_REQ_MSG
2048 {
2049    USHORT Type;
2050    USHORT Length;
2051    UCHAR  TLVType;
2052    USHORT TLVLength;
2053    UCHAR  StorageType;
2054 } QMIWMS_GET_STORE_MAX_SIZE_REQ_MSG, *PQMIWMS_GET_STORE_MAX_SIZE_REQ_MSG;
2055 
2056 typedef struct _QMIWMS_GET_STORE_MAX_SIZE_RESP_MSG
2057 {
2058    USHORT Type;
2059    USHORT Length;
2060    UCHAR  TLVType;
2061    USHORT TLVLength;
2062    USHORT QMUXResult;
2063    USHORT QMUXError;
2064    UCHAR  TLV2Type;
2065    USHORT TLV2Length;
2066    ULONG  MemStoreMaxSize;
2067 } QMIWMS_GET_STORE_MAX_SIZE_RESP_MSG, *PQMIWMS_GET_STORE_MAX_SIZE_RESP_MSG;
2068 
2069 typedef struct _REQUEST_TAG
2070 {
2071    UCHAR  TLVType;
2072    USHORT TLVLength;
2073    UCHAR  TagType;
2074 } REQUEST_TAG, *PREQUEST_TAG;
2075 
2076 typedef struct _QMIWMS_LIST_MESSAGES_REQ_MSG
2077 {
2078    USHORT Type;
2079    USHORT Length;
2080    UCHAR  TLVType;
2081    USHORT TLVLength;
2082    UCHAR  StorageType;
2083 } QMIWMS_LIST_MESSAGES_REQ_MSG, *PQMIWMS_LIST_MESSAGES_REQ_MSG;
2084 
2085 typedef struct _QMIWMS_MESSAGE
2086 {
2087    ULONG  MessageIndex;
2088    UCHAR  TagType;
2089 } QMIWMS_MESSAGE, *PQMIWMS_MESSAGE;
2090 
2091 typedef struct _QMIWMS_LIST_MESSAGES_RESP_MSG
2092 {
2093    USHORT Type;
2094    USHORT Length;
2095    UCHAR  TLVType;
2096    USHORT TLVLength;
2097    USHORT QMUXResult;
2098    USHORT QMUXError;
2099    UCHAR  TLV2Type;
2100    USHORT TLV2Length;
2101    ULONG  NumMessages;
2102 } QMIWMS_LIST_MESSAGES_RESP_MSG, *PQMIWMS_LIST_MESSAGES_RESP_MSG;
2103 
2104 typedef struct _QMIWMS_RAW_READ_REQ_MSG
2105 {
2106    USHORT Type;
2107    USHORT Length;
2108    UCHAR  TLVType;
2109    USHORT TLVLength;
2110    UCHAR  StorageType;
2111    ULONG  MemoryIndex;
2112 } QMIWMS_RAW_READ_REQ_MSG, *PQMIWMS_RAW_READ_REQ_MSG;
2113 
2114 typedef struct _QMIWMS_RAW_READ_RESP_MSG
2115 {
2116    USHORT Type;
2117    USHORT Length;
2118    UCHAR  TLVType;
2119    USHORT TLVLength;
2120    USHORT QMUXResult;
2121    USHORT QMUXError;
2122    UCHAR  TLV2Type;
2123    USHORT TLV2Length;
2124    UCHAR  TagType;
2125    UCHAR  Format;
2126    USHORT MessageLength;
2127    UCHAR  Message;
2128 } QMIWMS_RAW_READ_RESP_MSG, *PQMIWMS_RAW_READ_RESP_MSG;
2129 
2130 typedef struct _QMIWMS_MODIFY_TAG_REQ_MSG
2131 {
2132    USHORT Type;
2133    USHORT Length;
2134    UCHAR  TLVType;
2135    USHORT TLVLength;
2136    UCHAR  StorageType;
2137    ULONG  MemoryIndex;
2138    UCHAR  TagType;
2139 } QMIWMS_MODIFY_TAG_REQ_MSG, *PQMIWMS_MODIFY_TAG_REQ_MSG;
2140 
2141 typedef struct _QMIWMS_MODIFY_TAG_RESP_MSG
2142 {
2143    USHORT Type;
2144    USHORT Length;
2145    UCHAR  TLVType;
2146    USHORT TLVLength;
2147    USHORT QMUXResult;
2148    USHORT QMUXError;
2149 } QMIWMS_MODIFY_TAG_RESP_MSG, *PQMIWMS_MODIFY_TAG_RESP_MSG;
2150 
2151 typedef struct _QMIWMS_RAW_SEND_REQ_MSG
2152 {
2153    USHORT Type;
2154    USHORT Length;
2155    UCHAR  TLVType;
2156    USHORT TLVLength;
2157    UCHAR  SmsFormat;
2158    USHORT SmsLength;
2159    UCHAR  SmsMessage;
2160 } QMIWMS_RAW_SEND_REQ_MSG, *PQMIWMS_RAW_SEND_REQ_MSG;
2161 
2162 typedef struct _RAW_SEND_CAUSE_CODE
2163 {
2164    UCHAR  TLVType;
2165    USHORT TLVLength;
2166    USHORT CauseCode;
2167 } RAW_SEND_CAUSE_CODE, *PRAW_SEND_CAUSE_CODE;
2168 
2169 
2170 typedef struct _QMIWMS_RAW_SEND_RESP_MSG
2171 {
2172    USHORT Type;
2173    USHORT Length;
2174    UCHAR  TLVType;
2175    USHORT TLVLength;
2176    USHORT QMUXResult;
2177    USHORT QMUXError;
2178 } QMIWMS_RAW_SEND_RESP_MSG, *PQMIWMS_RAW_SEND_RESP_MSG;
2179 
2180 
2181 typedef struct _WMS_DELETE_MESSAGE_INDEX
2182 {
2183    UCHAR  TLVType;
2184    USHORT TLVLength;
2185    ULONG  MemoryIndex;
2186 } WMS_DELETE_MESSAGE_INDEX, *PWMS_DELETE_MESSAGE_INDEX;
2187 
2188 typedef struct _WMS_DELETE_MESSAGE_TAG
2189 {
2190    UCHAR  TLVType;
2191    USHORT TLVLength;
2192    UCHAR  MessageTag;
2193 } WMS_DELETE_MESSAGE_TAG, *PWMS_DELETE_MESSAGE_TAG;
2194 
2195 typedef struct _QMIWMS_DELETE_REQ_MSG
2196 {
2197    USHORT Type;
2198    USHORT Length;
2199    UCHAR  TLVType;
2200    USHORT TLVLength;
2201    UCHAR  StorageType;
2202 } QMIWMS_DELETE_REQ_MSG, *PQMIWMS_DELETE_REQ_MSG;
2203 
2204 typedef struct _QMIWMS_DELETE_RESP_MSG
2205 {
2206    USHORT Type;
2207    USHORT Length;
2208    UCHAR  TLVType;
2209    USHORT TLVLength;
2210    USHORT QMUXResult;
2211    USHORT QMUXError;
2212 } QMIWMS_DELETE_RESP_MSG, *PQMIWMS_DELETE_RESP_MSG;
2213 
2214 
2215 typedef struct _QMIWMS_GET_SMSC_ADDRESS_REQ_MSG
2216 {
2217    USHORT Type;
2218    USHORT Length;
2219 } QMIWMS_GET_SMSC_ADDRESS_REQ_MSG, *PQMIWMS_GET_SMSC_ADDRESS_REQ_MSG;
2220 
2221 typedef struct _QMIWMS_SMSC_ADDRESS
2222 {
2223    UCHAR  TLVType;
2224    USHORT TLVLength;
2225    UCHAR  SMSCAddressType[3];
2226    UCHAR  SMSCAddressLength;
2227    UCHAR  SMSCAddressDigits;
2228 } QMIWMS_SMSC_ADDRESS, *PQMIWMS_SMSC_ADDRESS;
2229 
2230 
2231 typedef struct _QMIWMS_GET_SMSC_ADDRESS_RESP_MSG
2232 {
2233    USHORT Type;
2234    USHORT Length;
2235    UCHAR  TLVType;
2236    USHORT TLVLength;
2237    USHORT QMUXResult;
2238    USHORT QMUXError;
2239    UCHAR  SMSCAddress;
2240 } QMIWMS_GET_SMSC_ADDRESS_RESP_MSG, *PQMIWMS_GET_SMSC_ADDRESS_RESP_MSG;
2241 
2242 typedef struct _QMIWMS_SET_SMSC_ADDRESS_REQ_MSG
2243 {
2244    USHORT Type;
2245    USHORT Length;
2246    UCHAR  TLVType;
2247    USHORT TLVLength;
2248    UCHAR  SMSCAddress;
2249 } QMIWMS_SET_SMSC_ADDRESS_REQ_MSG, *PQMIWMS_SET_SMSC_ADDRESS_REQ_MSG;
2250 
2251 typedef struct _QMIWMS_SET_SMSC_ADDRESS_RESP_MSG
2252 {
2253    USHORT Type;
2254    USHORT Length;
2255    UCHAR  TLVType;
2256    USHORT TLVLength;
2257    USHORT QMUXResult;
2258    USHORT QMUXError;
2259 } QMIWMS_SET_SMSC_ADDRESS_RESP_MSG, *PQMIWMS_SET_SMSC_ADDRESS_RESP_MSG;
2260 
2261 typedef struct _QMIWMS_SET_EVENT_REPORT_REQ_MSG
2262 {
2263    USHORT Type;
2264    USHORT Length;
2265    UCHAR  TLVType;
2266    USHORT TLVLength;
2267    UCHAR  ReportNewMessage;
2268 } QMIWMS_SET_EVENT_REPORT_REQ_MSG, *PQMIWMS_SET_EVENT_REPORT_REQ_MSG;
2269 
2270 typedef struct _QMIWMS_SET_EVENT_REPORT_RESP_MSG
2271 {
2272    USHORT Type;
2273    USHORT Length;
2274    UCHAR  TLVType;
2275    USHORT TLVLength;
2276    USHORT QMUXResult;
2277    USHORT QMUXError;
2278 } QMIWMS_SET_EVENT_REPORT_RESP_MSG, *PQMIWMS_SET_EVENT_REPORT_RESP_MSG;
2279 
2280 typedef struct _QMIWMS_EVENT_REPORT_IND_MSG
2281 {
2282    USHORT Type;
2283    USHORT Length;
2284    UCHAR  TLVType;
2285    USHORT TLVLength;
2286    UCHAR  StorageType;
2287    ULONG  StorageIndex;
2288 } QMIWMS_EVENT_REPORT_IND_MSG, *PQMIWMS_EVENT_REPORT_IND_MSG;
2289 #endif
2290 
2291 // ======================= End of WMS ==============================
2292 
2293 
2294 // ======================= NAS ==============================
2295 #define QMINAS_SET_EVENT_REPORT_REQ             0x0002
2296 #define QMINAS_SET_EVENT_REPORT_RESP            0x0002
2297 #define QMINAS_EVENT_REPORT_IND                 0x0002
2298 #define QMINAS_GET_SIGNAL_STRENGTH_REQ          0x0020
2299 #define QMINAS_GET_SIGNAL_STRENGTH_RESP         0x0020
2300 #define QMINAS_PERFORM_NETWORK_SCAN_REQ         0x0021
2301 #define QMINAS_PERFORM_NETWORK_SCAN_RESP        0x0021
2302 #define QMINAS_INITIATE_NW_REGISTER_REQ         0x0022
2303 #define QMINAS_INITIATE_NW_REGISTER_RESP        0x0022
2304 #define QMINAS_INITIATE_ATTACH_REQ              0x0023
2305 #define QMINAS_INITIATE_ATTACH_RESP             0x0023
2306 #define QMINAS_GET_SERVING_SYSTEM_REQ           0x0024
2307 #define QMINAS_GET_SERVING_SYSTEM_RESP          0x0024
2308 #define QMINAS_SERVING_SYSTEM_IND               0x0024
2309 #define QMINAS_GET_HOME_NETWORK_REQ             0x0025
2310 #define QMINAS_GET_HOME_NETWORK_RESP            0x0025
2311 #define QMINAS_GET_PREFERRED_NETWORK_REQ        0x0026
2312 #define QMINAS_GET_PREFERRED_NETWORK_RESP       0x0026
2313 #define QMINAS_SET_PREFERRED_NETWORK_REQ        0x0027
2314 #define QMINAS_SET_PREFERRED_NETWORK_RESP       0x0027
2315 #define QMINAS_GET_FORBIDDEN_NETWORK_REQ        0x0028
2316 #define QMINAS_GET_FORBIDDEN_NETWORK_RESP       0x0028
2317 #define QMINAS_SET_FORBIDDEN_NETWORK_REQ        0x0029
2318 #define QMINAS_SET_FORBIDDEN_NETWORK_RESP       0x0029
2319 #define QMINAS_SET_TECHNOLOGY_PREF_REQ          0x002A
2320 #define QMINAS_SET_TECHNOLOGY_PREF_RESP         0x002A
2321 #define QMINAS_GET_RF_BAND_INFO_REQ             0x0031
2322 #define QMINAS_GET_RF_BAND_INFO_RESP            0x0031
2323 #define QMINAS_GET_PLMN_NAME_REQ                0x0044
2324 #define QMINAS_GET_PLMN_NAME_RESP               0x0044
2325 #define QUECTEL_PACKET_TRANSFER_START_IND 0X100
2326 #define QUECTEL_PACKET_TRANSFER_END_IND 0X101
2327 #define QMINAS_GET_SYS_INFO_REQ                 0x004D
2328 #define QMINAS_GET_SYS_INFO_RESP                0x004D
2329 #define QMINAS_SYS_INFO_IND                     0x004D
2330 #define QMINAS_GET_SIG_INFO_REQ                 0x004F
2331 #define QMINAS_GET_SIG_INFO_RESP                0x004F
2332 
2333 typedef struct _QMINAS_GET_HOME_NETWORK_REQ_MSG
2334 {
2335    USHORT Type;             // QMUX type 0x0003
2336    USHORT Length;
2337 } __attribute__ ((packed)) QMINAS_GET_HOME_NETWORK_REQ_MSG, *PQMINAS_GET_HOME_NETWORK_REQ_MSG;
2338 
2339 typedef struct _HOME_NETWORK_SYSTEMID
2340 {
2341    UCHAR  TLVType;
2342    USHORT TLVLength;
2343    USHORT SystemID;
2344    USHORT NetworkID;
2345 } __attribute__ ((packed)) HOME_NETWORK_SYSTEMID, *PHOME_NETWORK_SYSTEMID;
2346 
2347 typedef struct _HOME_NETWORK
2348 {
2349    UCHAR  TLVType;
2350    USHORT TLVLength;
2351    USHORT MobileCountryCode;
2352    USHORT MobileNetworkCode;
2353    UCHAR  NetworkDesclen;
2354    UCHAR  NetworkDesc;
2355 } __attribute__ ((packed)) HOME_NETWORK, *PHOME_NETWORK;
2356 
2357 #if 0
2358 typedef struct _HOME_NETWORK_EXT
2359 {
2360    UCHAR  TLVType;
2361    USHORT TLVLength;
2362    USHORT MobileCountryCode;
2363    USHORT MobileNetworkCode;
2364    UCHAR  NetworkDescDisp;
2365    UCHAR  NetworkDescEncoding;
2366    UCHAR  NetworkDesclen;
2367    UCHAR  NetworkDesc;
2368 } HOME_NETWORK_EXT, *PHOME_NETWORK_EXT;
2369 
2370 typedef struct _QMINAS_GET_HOME_NETWORK_RESP_MSG
2371 {
2372    USHORT Type;
2373    USHORT Length;
2374    UCHAR  TLVType;
2375    USHORT TLVLength;
2376    USHORT QMUXResult;
2377    USHORT QMUXError;
2378 } QMINAS_GET_HOME_NETWORK_RESP_MSG, *PQMINAS_GET_HOME_NETWORK_RESP_MSG;
2379 
2380 typedef struct _QMINAS_GET_PREFERRED_NETWORK_REQ_MSG
2381 {
2382    USHORT Type;             // QMUX type 0x0003
2383    USHORT Length;
2384 } QMINAS_GET_PREFERRED_NETWORK_REQ_MSG, *PQMINAS_GET_PREFERRED_NETWORK_REQ_MSG;
2385 
2386 
2387 typedef struct _PREFERRED_NETWORK
2388 {
2389    USHORT MobileCountryCode;
2390    USHORT MobileNetworkCode;
2391    USHORT RadioAccess;
2392 } PREFERRED_NETWORK, *PPREFERRED_NETWORK;
2393 
2394 typedef struct _QMINAS_GET_PREFERRED_NETWORK_RESP_MSG
2395 {
2396    USHORT Type;             // QMUX type 0x0003
2397    USHORT Length;
2398    UCHAR  TLVType;          // 0x02 - result code
2399    USHORT TLVLength;        // 4
2400    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2401                             // QMI_RESULT_FAILURE
2402    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2403                             // QMI_ERR_NO_MEMORY
2404                             // QMI_ERR_INTERNAL
2405                             // QMI_ERR_FAULT
2406    UCHAR  TLV2Type;         // 0x01 - required parameter
2407    USHORT TLV2Length;       // length of the mfr string
2408    USHORT NumPreferredNetwork;
2409 } QMINAS_GET_PREFERRED_NETWORK_RESP_MSG, *PQMINAS_GET_PREFERRED_NETWORK_RESP_MSG;
2410 
2411 typedef struct _QMINAS_GET_FORBIDDEN_NETWORK_REQ_MSG
2412 {
2413    USHORT Type;             // QMUX type 0x0003
2414    USHORT Length;
2415 } QMINAS_GET_FORBIDDEN_NETWORK_REQ_MSG, *PQMINAS_GET_FORBIDDEN_NETWORK_REQ_MSG;
2416 
2417 typedef struct _FORBIDDEN_NETWORK
2418 {
2419    USHORT MobileCountryCode;
2420    USHORT MobileNetworkCode;
2421 } FORBIDDEN_NETWORK, *PFORBIDDEN_NETWORK;
2422 
2423 typedef struct _QMINAS_GET_FORBIDDEN_NETWORK_RESP_MSG
2424 {
2425    USHORT Type;             // QMUX type 0x0003
2426    USHORT Length;
2427    UCHAR  TLVType;          // 0x02 - result code
2428    USHORT TLVLength;        // 4
2429    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2430                             // QMI_RESULT_FAILURE
2431    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2432                             // QMI_ERR_NO_MEMORY
2433                             // QMI_ERR_INTERNAL
2434                             // QMI_ERR_FAULT
2435    UCHAR  TLV2Type;         // 0x01 - required parameter
2436    USHORT TLV2Length;       // length of the mfr string
2437    USHORT NumForbiddenNetwork;
2438 } QMINAS_GET_FORBIDDEN_NETWORK_RESP_MSG, *PQMINAS_GET_FORBIDDEN_NETWORK_RESP_MSG;
2439 
2440 typedef struct _QMINAS_GET_SERVING_SYSTEM_REQ_MSG
2441 {
2442    USHORT Type;             // QMUX type 0x0003
2443    USHORT Length;
2444 } QMINAS_GET_SERVING_SYSTEM_REQ_MSG, *PQMINAS_GET_SERVING_SYSTEM_REQ_MSG;
2445 
2446 typedef struct _QMINAS_ROAMING_INDICATOR_MSG
2447 {
2448    UCHAR  TLVType;         // 0x01 - required parameter
2449    USHORT TLVLength;       // length of the mfr string
2450    UCHAR  RoamingIndicator;
2451 } QMINAS_ROAMING_INDICATOR_MSG, *PQMINAS_ROAMING_INDICATOR_MSG;
2452 #endif
2453 
2454 typedef struct _QMINAS_DATA_CAP
2455 {
2456    UCHAR  TLVType;         // 0x01 - required parameter
2457    USHORT TLVLength;       // length of the mfr string
2458    UCHAR  DataCapListLen;
2459    UCHAR  DataCap;
2460 } __attribute__ ((packed)) QMINAS_DATA_CAP, *PQMINAS_DATA_CAP;
2461 
2462 typedef struct _QMINAS_CURRENT_PLMN_MSG
2463 {
2464    UCHAR  TLVType;         // 0x01 - required parameter
2465    USHORT TLVLength;       // length of the mfr string
2466    USHORT MobileCountryCode;
2467    USHORT MobileNetworkCode;
2468    UCHAR  NetworkDesclen;
2469    UCHAR  NetworkDesc;
2470 } __attribute__ ((packed)) QMINAS_CURRENT_PLMN_MSG, *PQMINAS_CURRENT_PLMN_MSG;
2471 
2472 typedef struct _QMINAS_GET_SERVING_SYSTEM_RESP_MSG
2473 {
2474    USHORT Type;
2475    USHORT Length;
2476    UCHAR  TLVType;
2477    USHORT TLVLength;
2478    USHORT QMUXResult;
2479    USHORT QMUXError;
2480 } __attribute__ ((packed)) QMINAS_GET_SERVING_SYSTEM_RESP_MSG, *PQMINAS_GET_SERVING_SYSTEM_RESP_MSG;
2481 
2482 typedef struct _SERVING_SYSTEM
2483 {
2484    UCHAR  TLVType;
2485    USHORT TLVLength;
2486    UCHAR  RegistrationState;
2487    UCHAR  CSAttachedState;
2488    UCHAR  PSAttachedState;
2489    UCHAR  RegistredNetwork;
2490    UCHAR  InUseRadioIF;
2491    UCHAR  RadioIF;
2492 } __attribute__ ((packed)) SERVING_SYSTEM, *PSERVING_SYSTEM;
2493 
2494 typedef struct _QMINAS_GET_SYS_INFO_RESP_MSG
2495 {
2496    USHORT Type;
2497    USHORT Length;
2498    UCHAR  TLVType;
2499    USHORT TLVLength;
2500    USHORT QMUXResult;
2501    USHORT QMUXError;
2502 } __attribute__ ((packed)) QMINAS_GET_SYS_INFO_RESP_MSG, *PQMINAS_GET_SYS_INFO_RESP_MSG;
2503 
2504 typedef struct _QMINAS_SYS_INFO_IND_MSG
2505 {
2506    USHORT Type;
2507    USHORT Length;
2508 } __attribute__ ((packed)) QMINAS_SYS_INFO_IND_MSG, *PQMINAS_SYS_INFO_IND_MSG;
2509 
2510 typedef struct _SERVICE_STATUS_INFO
2511 {
2512    UCHAR  TLVType;
2513    USHORT TLVLength;
2514    UCHAR  SrvStatus;
2515    UCHAR  true_srv_status;
2516    UCHAR  IsPrefDataPath;
2517 } __attribute__ ((packed)) SERVICE_STATUS_INFO, *PSERVICE_STATUS_INFO;
2518 
2519 typedef struct _CDMA_SYSTEM_INFO
2520 {
2521    UCHAR  TLVType;
2522    USHORT TLVLength;
2523    UCHAR  SrvDomainValid;
2524    UCHAR  SrvDomain;
2525    UCHAR  SrvCapabilityValid;
2526    UCHAR  SrvCapability;
2527    UCHAR  RoamStatusValid;
2528    UCHAR  RoamStatus;
2529    UCHAR  IsSysForbiddenValid;
2530    UCHAR  IsSysForbidden;
2531    UCHAR  IsSysPrlMatchValid;
2532    UCHAR  IsSysPrlMatch;
2533    UCHAR  PRevInUseValid;
2534    UCHAR  PRevInUse;
2535    UCHAR  BSPRevValid;
2536    UCHAR  BSPRev;
2537    UCHAR  CCSSupportedValid;
2538    UCHAR  CCSSupported;
2539    UCHAR  CDMASysIdValid;
2540    USHORT SID;
2541    USHORT NID;
2542    UCHAR  BSInfoValid;
2543    USHORT BaseID;
2544    ULONG  BaseLAT;
2545    ULONG  BaseLONG;
2546    UCHAR  PacketZoneValid;
2547    USHORT PacketZone;
2548    UCHAR  NetworkIdValid;
2549    UCHAR  MCC[3];
2550    UCHAR  MNC[3];
2551 } __attribute__ ((packed)) CDMA_SYSTEM_INFO, *PCDMA_SYSTEM_INFO;
2552 
2553 typedef struct _HDR_SYSTEM_INFO
2554 {
2555    UCHAR  TLVType;
2556    USHORT TLVLength;
2557    UCHAR  SrvDomainValid;
2558    UCHAR  SrvDomain;
2559    UCHAR  SrvCapabilityValid;
2560    UCHAR  SrvCapability;
2561    UCHAR  RoamStatusValid;
2562    UCHAR  RoamStatus;
2563    UCHAR  IsSysForbiddenValid;
2564    UCHAR  IsSysForbidden;
2565    UCHAR  IsSysPrlMatchValid;
2566    UCHAR  IsSysPrlMatch;
2567    UCHAR  HdrPersonalityValid;
2568    UCHAR  HdrPersonality;
2569    UCHAR  HdrActiveProtValid;
2570    UCHAR  HdrActiveProt;
2571    UCHAR  is856SysIdValid;
2572    UCHAR  is856SysId[16];
2573 } __attribute__ ((packed)) HDR_SYSTEM_INFO, *PHDR_SYSTEM_INFO;
2574 
2575 typedef struct _GSM_SYSTEM_INFO
2576 {
2577    UCHAR  TLVType;
2578    USHORT TLVLength;
2579    UCHAR  SrvDomainValid;
2580    UCHAR  SrvDomain;
2581    UCHAR  SrvCapabilityValid;
2582    UCHAR  SrvCapability;
2583    UCHAR  RoamStatusValid;
2584    UCHAR  RoamStatus;
2585    UCHAR  IsSysForbiddenValid;
2586    UCHAR  IsSysForbidden;
2587    UCHAR  LacValid;
2588    USHORT Lac;
2589    UCHAR  CellIdValid;
2590    ULONG  CellId;
2591    UCHAR  RegRejectInfoValid;
2592    UCHAR  RejectSrvDomain;
2593    UCHAR  RejCause;
2594    UCHAR  NetworkIdValid;
2595    UCHAR  MCC[3];
2596    UCHAR  MNC[3];
2597    UCHAR  EgprsSuppValid;
2598    UCHAR  EgprsSupp;
2599    UCHAR  DtmSuppValid;
2600    UCHAR  DtmSupp;
2601 } __attribute__ ((packed)) GSM_SYSTEM_INFO, *PGSM_SYSTEM_INFO;
2602 
2603 typedef struct _WCDMA_SYSTEM_INFO
2604 {
2605    UCHAR  TLVType;
2606    USHORT TLVLength;
2607    UCHAR  SrvDomainValid;
2608    UCHAR  SrvDomain;
2609    UCHAR  SrvCapabilityValid;
2610    UCHAR  SrvCapability;
2611    UCHAR  RoamStatusValid;
2612    UCHAR  RoamStatus;
2613    UCHAR  IsSysForbiddenValid;
2614    UCHAR  IsSysForbidden;
2615    UCHAR  LacValid;
2616    USHORT Lac;
2617    UCHAR  CellIdValid;
2618    ULONG  CellId;
2619    UCHAR  RegRejectInfoValid;
2620    UCHAR  RejectSrvDomain;
2621    UCHAR  RejCause;
2622    UCHAR  NetworkIdValid;
2623    UCHAR  MCC[3];
2624    UCHAR  MNC[3];
2625    UCHAR  HsCallStatusValid;
2626    UCHAR  HsCallStatus;
2627    UCHAR  HsIndValid;
2628    UCHAR  HsInd;
2629    UCHAR  PscValid;
2630    UCHAR  Psc;
2631 } __attribute__ ((packed)) WCDMA_SYSTEM_INFO, *PWCDMA_SYSTEM_INFO;
2632 
2633 typedef struct _LTE_SYSTEM_INFO
2634 {
2635    UCHAR  TLVType;
2636    USHORT TLVLength;
2637    UCHAR  SrvDomainValid;
2638    UCHAR  SrvDomain;
2639    UCHAR  SrvCapabilityValid;
2640    UCHAR  SrvCapability;
2641    UCHAR  RoamStatusValid;
2642    UCHAR  RoamStatus;
2643    UCHAR  IsSysForbiddenValid;
2644    UCHAR  IsSysForbidden;
2645    UCHAR  LacValid;
2646    USHORT Lac;
2647    UCHAR  CellIdValid;
2648    ULONG  CellId;
2649    UCHAR  RegRejectInfoValid;
2650    UCHAR  RejectSrvDomain;
2651    UCHAR  RejCause;
2652    UCHAR  NetworkIdValid;
2653    UCHAR  MCC[3];
2654    UCHAR  MNC[3];
2655    UCHAR  TacValid;
2656    USHORT Tac;
2657 } __attribute__ ((packed)) LTE_SYSTEM_INFO, *PLTE_SYSTEM_INFO;
2658 
2659 typedef struct _TDSCDMA_SYSTEM_INFO
2660 {
2661    UCHAR  TLVType;
2662    USHORT TLVLength;
2663    UCHAR  SrvDomainValid;
2664    UCHAR  SrvDomain;
2665    UCHAR  SrvCapabilityValid;
2666    UCHAR  SrvCapability;
2667    UCHAR  RoamStatusValid;
2668    UCHAR  RoamStatus;
2669    UCHAR  IsSysForbiddenValid;
2670    UCHAR  IsSysForbidden;
2671    UCHAR  LacValid;
2672    USHORT Lac;
2673    UCHAR  CellIdValid;
2674    ULONG  CellId;
2675    UCHAR  RegRejectInfoValid;
2676    UCHAR  RejectSrvDomain;
2677    UCHAR  RejCause;
2678    UCHAR  NetworkIdValid;
2679    UCHAR  MCC[3];
2680    UCHAR  MNC[3];
2681    UCHAR  HsCallStatusValid;
2682    UCHAR  HsCallStatus;
2683    UCHAR  HsIndValid;
2684    UCHAR  HsInd;
2685    UCHAR  CellParameterIdValid;
2686    USHORT CellParameterId;
2687    UCHAR  CellBroadcastCapValid;
2688    ULONG  CellBroadcastCap;
2689    UCHAR  CsBarStatusValid;
2690    ULONG  CsBarStatus;
2691    UCHAR  PsBarStatusValid;
2692    ULONG  PsBarStatus;
2693    UCHAR  CipherDomainValid;
2694    UCHAR  CipherDomain;
2695 } __attribute__ ((packed)) TDSCDMA_SYSTEM_INFO, *PTDSCDMA_SYSTEM_INFO;
2696 
2697 typedef enum {
2698   NAS_SYS_SRV_STATUS_NO_SRV_V01 = 0,
2699   NAS_SYS_SRV_STATUS_LIMITED_V01 = 1,
2700   NAS_SYS_SRV_STATUS_SRV_V01 = 2,
2701   NAS_SYS_SRV_STATUS_LIMITED_REGIONAL_V01 = 3,
2702   NAS_SYS_SRV_STATUS_PWR_SAVE_V01 = 4,
2703 }nas_service_status_enum_type_v01;
2704 
2705 typedef enum {
2706   SYS_SRV_DOMAIN_NO_SRV_V01 = 0,
2707   SYS_SRV_DOMAIN_CS_ONLY_V01 = 1,
2708   SYS_SRV_DOMAIN_PS_ONLY_V01 = 2,
2709   SYS_SRV_DOMAIN_CS_PS_V01 = 3,
2710   SYS_SRV_DOMAIN_CAMPED_V01 = 4,
2711 }nas_service_domain_enum_type_v01;
2712 
2713 typedef struct {
2714   UCHAR  TLVType;
2715   USHORT TLVLength;
2716 
2717   uint8_t srv_domain_valid;
2718   uint8_t srv_domain;
2719   uint8_t srv_capability_valid;
2720   uint8_t srv_capability;
2721   uint8_t roam_status_valid;
2722   uint8_t roam_status;
2723   uint8_t is_sys_forbidden_valid;
2724   uint8_t is_sys_forbidden;
2725 
2726   uint8_t lac_valid;
2727   uint16_t lac;
2728   uint8_t cell_id_valid;
2729   uint32_t cell_id;
2730   uint8_t reg_reject_info_valid;
2731   uint8_t reject_srv_domain;
2732   uint8_t rej_cause;
2733   uint8_t network_id_valid;
2734   UCHAR MCC[3];
2735   UCHAR MNC[3];
2736 
2737   uint8_t tac_valid;
2738   uint16_t tac;
2739 } __attribute__ ((packed)) NR5G_SYSTEM_INFO, *PNR5G_SYSTEM_INFO;
2740 
2741 #if 0
2742 typedef struct _QMINAS_SERVING_SYSTEM_IND_MSG
2743 {
2744    USHORT Type;
2745    USHORT Length;
2746 } QMINAS_SERVING_SYSTEM_IND_MSG, *PQMINAS_SERVING_SYSTEM_IND_MSG;
2747 
2748 typedef struct _QMINAS_SET_PREFERRED_NETWORK_REQ_MSG
2749 {
2750    USHORT Type;             // QMUX type 0x0003
2751    USHORT Length;
2752    UCHAR  TLVType;          // 0x02 - result code
2753    USHORT TLVLength;        // 4
2754    USHORT NumPreferredNetwork;
2755    USHORT MobileCountryCode;
2756    USHORT MobileNetworkCode;
2757    USHORT RadioAccess;
2758 } QMINAS_SET_PREFERRED_NETWORK_REQ_MSG, *PQMINAS_SET_PREFERRED_NETWORK_REQ_MSG;
2759 
2760 typedef struct _QMINAS_SET_PREFERRED_NETWORK_RESP_MSG
2761 {
2762    USHORT Type;             // QMUX type 0x0003
2763    USHORT Length;
2764    UCHAR  TLVType;          // 0x02 - result code
2765    USHORT TLVLength;        // 4
2766    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2767                             // QMI_RESULT_FAILURE
2768    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2769                             // QMI_ERR_NO_MEMORY
2770                             // QMI_ERR_INTERNAL
2771                             // QMI_ERR_FAULT
2772 } QMINAS_SET_PREFERRED_NETWORK_RESP_MSG, *PQMINAS_SET_PREFERRED_NETWORK_RESP_MSG;
2773 
2774 typedef struct _QMINAS_SET_FORBIDDEN_NETWORK_REQ_MSG
2775 {
2776    USHORT Type;             // QMUX type 0x0003
2777    USHORT Length;
2778    UCHAR  TLVType;          // 0x02 - result code
2779    USHORT TLVLength;        // 4
2780    USHORT NumForbiddenNetwork;
2781    USHORT MobileCountryCode;
2782    USHORT MobileNetworkCode;
2783 } QMINAS_SET_FORBIDDEN_NETWORK_REQ_MSG, *PQMINAS_SET_FORBIDDEN_NETWORK_REQ_MSG;
2784 
2785 typedef struct _QMINAS_SET_FORBIDDEN_NETWORK_RESP_MSG
2786 {
2787    USHORT Type;             // QMUX type 0x0003
2788    USHORT Length;
2789    UCHAR  TLVType;          // 0x02 - result code
2790    USHORT TLVLength;        // 4
2791    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2792                             // QMI_RESULT_FAILURE
2793    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2794                             // QMI_ERR_NO_MEMORY
2795                             // QMI_ERR_INTERNAL
2796                             // QMI_ERR_FAULT
2797 } QMINAS_SET_FORBIDDEN_NETWORK_RESP_MSG, *PQMINAS_SET_FORBIDDEN_NETWORK_RESP_MSG;
2798 
2799 typedef struct _QMINAS_PERFORM_NETWORK_SCAN_REQ_MSG
2800 {
2801    USHORT Type;             // QMUX type 0x0003
2802    USHORT Length;
2803 } QMINAS_PERFORM_NETWORK_SCAN_REQ_MSG, *PQMINAS_PERFORM_NETWORK_SCAN_REQ_MSG;
2804 
2805 typedef struct _VISIBLE_NETWORK
2806 {
2807    USHORT MobileCountryCode;
2808    USHORT MobileNetworkCode;
2809    UCHAR  NetworkStatus;
2810    UCHAR  NetworkDesclen;
2811 } VISIBLE_NETWORK, *PVISIBLE_NETWORK;
2812 
2813 typedef struct _QMINAS_PERFORM_NETWORK_SCAN_RESP_MSG
2814 {
2815    USHORT Type;             // QMUX type 0x0003
2816    USHORT Length;
2817    UCHAR  TLVType;          // 0x02 - result code
2818    USHORT TLVLength;        // 4
2819    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2820                             // QMI_RESULT_FAILURE
2821    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2822                             // QMI_ERR_NO_MEMORY
2823                             // QMI_ERR_INTERNAL
2824                             // QMI_ERR_FAULT
2825 } QMINAS_PERFORM_NETWORK_SCAN_RESP_MSG, *PQMINAS_PERFORM_NETWORK_SCAN_RESP_MSG;
2826 
2827 typedef struct _QMINAS_PERFORM_NETWORK_SCAN_NETWORK_INFO
2828 {
2829    UCHAR  TLVType;         // 0x010 - required parameter
2830    USHORT TLVLength;       // length
2831    USHORT NumNetworkInstances;
2832 } QMINAS_PERFORM_NETWORK_SCAN_NETWORK_INFO, *PQMINAS_PERFORM_NETWORK_SCAN_NETWORK_INFO;
2833 
2834 typedef struct _QMINAS_PERFORM_NETWORK_SCAN_RAT_INFO
2835 {
2836    UCHAR  TLVType;         // 0x011 - required parameter
2837    USHORT TLVLength;       // length
2838    USHORT NumInst;
2839 } QMINAS_PERFORM_NETWORK_SCAN_RAT_INFO, *PQMINAS_PERFORM_NETWORK_SCAN_RAT_INFO;
2840 
2841 typedef struct _QMINAS_PERFORM_NETWORK_SCAN_RAT
2842 {
2843    USHORT MCC;
2844    USHORT MNC;
2845    UCHAR  RAT;
2846 } QMINAS_PERFORM_NETWORK_SCAN_RAT, *PQMINAS_PERFORM_NETWORK_SCAN_RAT;
2847 
2848 
2849 typedef struct _QMINAS_MANUAL_NW_REGISTER
2850 {
2851    UCHAR  TLV2Type;          // 0x02 - result code
2852    USHORT TLV2Length;        // 4
2853    USHORT MobileCountryCode;
2854    USHORT MobileNetworkCode;
2855    UCHAR  RadioAccess;
2856 } QMINAS_MANUAL_NW_REGISTER, *PQMINAS_MANUAL_NW_REGISTER;
2857 
2858 typedef struct _QMINAS_INITIATE_NW_REGISTER_REQ_MSG
2859 {
2860    USHORT Type;             // QMUX type 0x0003
2861    USHORT Length;
2862    UCHAR  TLVType;          // 0x02 - result code
2863    USHORT TLVLength;        // 4
2864    UCHAR  RegisterAction;
2865 } QMINAS_INITIATE_NW_REGISTER_REQ_MSG, *PQMINAS_INITIATE_NW_REGISTER_REQ_MSG;
2866 
2867 typedef struct _QMINAS_INITIATE_NW_REGISTER_RESP_MSG
2868 {
2869    USHORT Type;             // QMUX type 0x0003
2870    USHORT Length;
2871    UCHAR  TLVType;          // 0x02 - result code
2872    USHORT TLVLength;        // 4
2873    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2874                             // QMI_RESULT_FAILURE
2875    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2876                             // QMI_ERR_NO_MEMORY
2877                             // QMI_ERR_INTERNAL
2878                             // QMI_ERR_FAULT
2879 } QMINAS_INITIATE_NW_REGISTER_RESP_MSG, *PQMINAS_INITIATE_NW_REGISTER_RESP_MSG;
2880 
2881 typedef struct _QMINAS_SET_TECHNOLOGY_PREF_REQ_MSG
2882 {
2883    USHORT Type;             // QMUX type 0x0003
2884    USHORT Length;
2885    UCHAR  TLVType;          // 0x02 - result code
2886    USHORT TLVLength;        // 4
2887    USHORT TechPref;
2888    UCHAR  Duration;
2889 } QMINAS_SET_TECHNOLOGY_PREF_REQ_MSG, *PQMINAS_SET_TECHNOLOGY_PREF_REQ_MSG;
2890 
2891 typedef struct _QMINAS_SET_TECHNOLOGY_PREF_RESP_MSG
2892 {
2893    USHORT Type;             // QMUX type 0x0003
2894    USHORT Length;
2895    UCHAR  TLVType;          // 0x02 - result code
2896    USHORT TLVLength;        // 4
2897    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2898                             // QMI_RESULT_FAILURE
2899    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2900                             // QMI_ERR_NO_MEMORY
2901                             // QMI_ERR_INTERNAL
2902                             // QMI_ERR_FAULT
2903 } QMINAS_SET_TECHNOLOGY_PREF_RESP_MSG, *PQMINAS_SET_TECHNOLOGY_PREF_RESP_MSG;
2904 
2905 typedef struct _QMINAS_GET_SIGNAL_STRENGTH_REQ_MSG
2906 {
2907    USHORT Type;             // QMUX type 0x0003
2908    USHORT Length;
2909 } QMINAS_GET_SIGNAL_STRENGTH_REQ_MSG, *PQMINAS_GET_SIGNAL_STRENGTH_REQ_MSG;
2910 
2911 typedef struct _QMINAS_SIGNAL_STRENGTH
2912 {
2913    CHAR   SigStrength;
2914    UCHAR  RadioIf;
2915 } QMINAS_SIGNAL_STRENGTH, *PQMINAS_SIGNAL_STRENGTH;
2916 
2917 typedef struct _QMINAS_SIGNAL_STRENGTH_LIST
2918 {
2919    UCHAR  TLV3Type;
2920    USHORT TLV3Length;
2921    USHORT NumInstance;
2922 } QMINAS_SIGNAL_STRENGTH_LIST, *PQMINAS_SIGNAL_STRENGTH_LIST;
2923 
2924 
2925 typedef struct _QMINAS_GET_SIGNAL_STRENGTH_RESP_MSG
2926 {
2927    USHORT Type;             // QMUX type 0x0003
2928    USHORT Length;
2929    UCHAR  TLVType;          // 0x02 - result code
2930    USHORT TLVLength;        // 4
2931    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2932                             // QMI_RESULT_FAILURE
2933    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2934                             // QMI_ERR_NO_MEMORY
2935                             // QMI_ERR_INTERNAL
2936                             // QMI_ERR_FAULT
2937    UCHAR  TLV2Type;
2938    USHORT TLV2Length;
2939    CHAR   SignalStrength;
2940    UCHAR  RadioIf;
2941 } QMINAS_GET_SIGNAL_STRENGTH_RESP_MSG, *PQMINAS_GET_SIGNAL_STRENGTH_RESP_MSG;
2942 
2943 
2944 typedef struct _QMINAS_SET_EVENT_REPORT_REQ_MSG
2945 {
2946    USHORT Type;
2947    USHORT Length;
2948    UCHAR  TLVType;
2949    USHORT TLVLength;
2950    UCHAR  ReportSigStrength;
2951    UCHAR  NumTresholds;
2952    CHAR   TresholdList[2];
2953 } QMINAS_SET_EVENT_REPORT_REQ_MSG, *PQMINAS_SET_EVENT_REPORT_REQ_MSG;
2954 
2955 typedef struct _QMINAS_SET_EVENT_REPORT_RESP_MSG
2956 {
2957    USHORT Type;             // QMUX type 0x0003
2958    USHORT Length;
2959    UCHAR  TLVType;          // 0x02 - result code
2960    USHORT TLVLength;        // 4
2961    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
2962                             // QMI_RESULT_FAILURE
2963    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
2964                             // QMI_ERR_NO_MEMORY
2965                             // QMI_ERR_INTERNAL
2966                             // QMI_ERR_FAULT
2967 } QMINAS_SET_EVENT_REPORT_RESP_MSG, *PQMINAS_SET_EVENT_REPORT_RESP_MSG;
2968 
2969 typedef struct _QMINAS_SIGNAL_STRENGTH_TLV
2970 {
2971    UCHAR  TLVType;
2972    USHORT TLVLength;
2973    CHAR   SigStrength;
2974    UCHAR  RadioIf;
2975 } QMINAS_SIGNAL_STRENGTH_TLV, *PQMINAS_SIGNAL_STRENGTH_TLV;
2976 
2977 typedef struct _QMINAS_REJECT_CAUSE_TLV
2978 {
2979    UCHAR  TLVType;
2980    USHORT TLVLength;
2981    UCHAR  ServiceDomain;
2982    USHORT RejectCause;
2983 } QMINAS_REJECT_CAUSE_TLV, *PQMINAS_REJECT_CAUSE_TLV;
2984 
2985 typedef struct _QMINAS_EVENT_REPORT_IND_MSG
2986 {
2987    USHORT Type;
2988    USHORT Length;
2989 } QMINAS_EVENT_REPORT_IND_MSG, *PQMINAS_EVENT_REPORT_IND_MSG;
2990 
2991 typedef struct _QMINAS_GET_RF_BAND_INFO_REQ_MSG
2992 {
2993    USHORT Type;
2994    USHORT Length;
2995 } QMINAS_GET_RF_BAND_INFO_REQ_MSG, *PQMINAS_GET_RF_BAND_INFO_REQ_MSG;
2996 
2997 typedef struct _QMINASRF_BAND_INFO
2998 {
2999    UCHAR  RadioIf;
3000    USHORT ActiveBand;
3001    USHORT ActiveChannel;
3002 } QMINASRF_BAND_INFO, *PQMINASRF_BAND_INFO;
3003 
3004 typedef struct _QMINAS_GET_RF_BAND_INFO_RESP_MSG
3005 {
3006    USHORT Type;             // QMUX type 0x0003
3007    USHORT Length;
3008    UCHAR  TLVType;          // 0x02 - result code
3009    USHORT TLVLength;        // 4
3010    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
3011                             // QMI_RESULT_FAILURE
3012    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
3013                             // QMI_ERR_NO_MEMORY
3014                             // QMI_ERR_INTERNAL
3015                             // QMI_ERR_FAULT
3016    UCHAR  TLV2Type;
3017    USHORT TLV2Length;
3018    UCHAR  NumInstances;
3019 } QMINAS_GET_RF_BAND_INFO_RESP_MSG, *PQMINAS_GET_RF_BAND_INFO_RESP_MSG;
3020 
3021 
3022 typedef struct _QMINAS_GET_PLMN_NAME_REQ_MSG
3023 {
3024    USHORT Type;
3025    USHORT Length;
3026    UCHAR  TLVType;
3027    USHORT TLVLength;
3028    USHORT MCC;
3029    USHORT MNC;
3030 } QMINAS_GET_PLMN_NAME_REQ_MSG, *PQMINAS_GET_PLMN_NAME_REQ_MSG;
3031 
3032 typedef struct _QMINAS_GET_PLMN_NAME_RESP_MSG
3033 {
3034    USHORT Type;
3035    USHORT Length;
3036    UCHAR  TLVType;          // 0x02 - result code
3037    USHORT TLVLength;        // 4
3038    USHORT QMUXResult;       // QMI_RESULT_SUCCESS
3039                             // QMI_RESULT_FAILURE
3040    USHORT QMUXError;        // QMI_ERR_INVALID_ARG
3041                             // QMI_ERR_NO_MEMORY
3042                             // QMI_ERR_INTERNAL
3043                             // QMI_ERR_FAULT
3044 } QMINAS_GET_PLMN_NAME_RESP_MSG, *PQMINAS_GET_PLMN_NAME_RESP_MSG;
3045 
3046 typedef struct _QMINAS_GET_PLMN_NAME_SPN
3047 {
3048    UCHAR  TLVType;
3049    USHORT TLVLength;
3050    UCHAR  SPN_Enc;
3051    UCHAR  SPN_Len;
3052 } QMINAS_GET_PLMN_NAME_SPN, *PQMINAS_GET_PLMN_NAME_SPN;
3053 
3054 typedef struct _QMINAS_GET_PLMN_NAME_PLMN
3055 {
3056    UCHAR  PLMN_Enc;
3057    UCHAR  PLMN_Ci;
3058    UCHAR  PLMN_SpareBits;
3059    UCHAR  PLMN_Len;
3060 } QMINAS_GET_PLMN_NAME_PLMN, *PQMINAS_GET_PLMN_NAME_PLMN;
3061 
3062 typedef struct _QMINAS_INITIATE_ATTACH_REQ_MSG
3063 {
3064    USHORT Type;
3065    USHORT Length;
3066    UCHAR  TLVType;
3067    USHORT TLVLength;
3068    UCHAR  PsAttachAction;
3069 } QMINAS_INITIATE_ATTACH_REQ_MSG, *PQMINAS_INITIATE_ATTACH_REQ_MSG;
3070 
3071 typedef struct _QMINAS_INITIATE_ATTACH_RESP_MSG
3072 {
3073    USHORT Type;             // QMUX type 0x0003
3074    USHORT Length;
3075    UCHAR  TLVType;          // 0x02 - result code
3076    USHORT TLVLength;        // 4
3077    USHORT QMUXResult;      // QMI_RESULT_SUCCESS
3078                             // QMI_RESULT_FAILURE
3079    USHORT QMUXError;       // QMI_ERR_INVALID_ARG
3080                             // QMI_ERR_NO_MEMORY
3081                             // QMI_ERR_INTERNAL
3082                             // QMI_ERR_FAULT
3083 } QMINAS_INITIATE_ATTACH_RESP_MSG, *PQMINAS_INITIATE_ATTACH_RESP_MSG;
3084 #endif
3085 typedef struct {
3086     UCHAR  TLVType;
3087     USHORT TLVLength;
3088     CHAR rssi;
3089     SHORT ecio;
3090 } __attribute__ ((packed)) QMINAS_SIG_INFO_CDMA_TLV_MSG, *PQMINAS_SIG_INFO_CDMA_TLV_MSG;
3091 
3092 typedef struct {
3093     UCHAR  TLVType;
3094     USHORT TLVLength;
3095     CHAR rssi;
3096     SHORT ecio;
3097     CHAR sinr;
3098     INT io;
3099 } __attribute__ ((packed)) QMINAS_SIG_INFO_HDR_TLV_MSG, *PQMINAS_SIG_INFO_HDR_TLV_MSG;
3100 
3101 typedef struct {
3102     UCHAR  TLVType;
3103     USHORT TLVLength;
3104     CHAR rssi;
3105 } __attribute__ ((packed)) QMINAS_SIG_INFO_GSM_TLV_MSG, *PQMINAS_SIG_INFO_GSM_TLV_MSG;
3106 
3107 typedef struct {
3108     UCHAR  TLVType;
3109     USHORT TLVLength;
3110     CHAR rssi;
3111     SHORT ecio;
3112 } __attribute__ ((packed)) QMINAS_SIG_INFO_WCDMA_TLV_MSG, *PQMINAS_SIG_INFO_WCDMA_TLV_MSG;
3113 
3114 typedef struct {
3115     UCHAR  TLVType;
3116     USHORT TLVLength;
3117     CHAR rssi;
3118     CHAR rsrq;
3119     SHORT rsrp;
3120     SHORT snr;
3121 } __attribute__ ((packed)) QMINAS_SIG_INFO_LTE_TLV_MSG, *PQMINAS_SIG_INFO_LTE_TLV_MSG;
3122 
3123 typedef struct {
3124     UCHAR  TLVType;
3125     USHORT TLVLength;
3126     CHAR rscp;
3127 } __attribute__ ((packed)) QMINAS_SIG_INFO_TDSCDMA_TLV_MSG, *PQMINAS_SIG_INFO_TDSCDMA_TLV_MSG;
3128 
3129 typedef struct {
3130     UCHAR  TLVType;
3131     USHORT TLVLength;
3132     SHORT rsrp;
3133     SHORT snr;
3134 } __attribute__ ((packed)) QMINAS_SIG_INFO_5G_NSA_TLV_MSG, *PQMINAS_SIG_INFO_5G_NSA_TLV_MSG;
3135 
3136 typedef struct {
3137     UCHAR  TLVType;
3138     USHORT TLVLength;
3139     SHORT nr5g_rsrq;
3140 } __attribute__ ((packed)) QMINAS_SIG_INFO_5G_SA_TLV_MSG, *PQMINAS_SIG_INFO_5G_SA_TLV_MSG;
3141 // ======================= End of NAS ==============================
3142 
3143 // ======================= UIM ==============================
3144 #define QMIUIM_READ_TRANSPARENT_REQ      0x0020
3145 #define QMIUIM_READ_TRANSPARENT_RESP     0x0020
3146 #define QMIUIM_READ_TRANSPARENT_IND      0x0020
3147 #define QMIUIM_READ_RECORD_REQ           0x0021
3148 #define QMIUIM_READ_RECORD_RESP          0x0021
3149 #define QMIUIM_READ_RECORD_IND           0x0021
3150 #define QMIUIM_WRITE_TRANSPARENT_REQ     0x0022
3151 #define QMIUIM_WRITE_TRANSPARENT_RESP    0x0022
3152 #define QMIUIM_WRITE_TRANSPARENT_IND     0x0022
3153 #define QMIUIM_WRITE_RECORD_REQ          0x0023
3154 #define QMIUIM_WRITE_RECORD_RESP         0x0023
3155 #define QMIUIM_WRITE_RECORD_IND          0x0023
3156 #define QMIUIM_SET_PIN_PROTECTION_REQ    0x0025
3157 #define QMIUIM_SET_PIN_PROTECTION_RESP   0x0025
3158 #define QMIUIM_SET_PIN_PROTECTION_IND    0x0025
3159 #define QMIUIM_VERIFY_PIN_REQ            0x0026
3160 #define QMIUIM_VERIFY_PIN_RESP           0x0026
3161 #define QMIUIM_VERIFY_PIN_IND            0x0026
3162 #define QMIUIM_UNBLOCK_PIN_REQ           0x0027
3163 #define QMIUIM_UNBLOCK_PIN_RESP          0x0027
3164 #define QMIUIM_UNBLOCK_PIN_IND           0x0027
3165 #define QMIUIM_CHANGE_PIN_REQ            0x0028
3166 #define QMIUIM_CHANGE_PIN_RESP           0x0028
3167 #define QMIUIM_CHANGE_PIN_IND            0x0028
3168 #define QMIUIM_DEPERSONALIZATION_REQ     0x0029
3169 #define QMIUIM_DEPERSONALIZATION_RESP    0x0029
3170 #define QMIUIM_EVENT_REG_REQ             0x002E
3171 #define QMIUIM_EVENT_REG_RESP            0x002E
3172 #define QMIUIM_GET_CARD_STATUS_REQ       0x002F
3173 #define QMIUIM_GET_CARD_STATUS_RESP      0x002F
3174 #define QMIUIM_STATUS_CHANGE_IND         0x0032
3175 
3176 
3177 typedef struct _QMIUIM_GET_CARD_STATUS_RESP_MSG
3178 {
3179    USHORT Type;
3180    USHORT Length;
3181    UCHAR  TLVType;
3182    USHORT TLVLength;
3183    USHORT QMUXResult;
3184    USHORT QMUXError;
3185 } __attribute__ ((packed)) QMIUIM_GET_CARD_STATUS_RESP_MSG, *PQMIUIM_GET_CARD_STATUS_RESP_MSG;
3186 
3187 #define UIM_CARD_STATE_ABSENT     0x00
3188 #define UIM_CARD_STATE_PRESENT    0x01
3189 #define UIM_CARD_STATE_ERROR      0x02
3190 
3191 typedef struct _QMIUIM_CARD_STATUS
3192 {
3193    UCHAR  TLVType;
3194    USHORT TLVLength;
3195    USHORT IndexGWPri;
3196    USHORT Index1XPri;
3197    USHORT IndexGWSec;
3198    USHORT Index1XSec;
3199    UCHAR  NumSlot;
3200    UCHAR  CardState;
3201    UCHAR  UPINState;
3202    UCHAR  UPINRetries;
3203    UCHAR  UPUKRetries;
3204    UCHAR  ErrorCode;
3205    UCHAR  NumApp;
3206    UCHAR  AppType;
3207    UCHAR  AppState;
3208    UCHAR  PersoState;
3209    UCHAR  PersoFeature;
3210    UCHAR  PersoRetries;
3211    UCHAR  PersoUnblockRetries;
3212    UCHAR  AIDLength;
3213 } __attribute__ ((packed)) QMIUIM_CARD_STATUS, *PQMIUIM_CARD_STATUS;
3214 
3215 typedef struct _QMIUIM_PIN_STATE
3216 {
3217    UCHAR  UnivPIN;
3218    UCHAR  PIN1State;
3219    UCHAR  PIN1Retries;
3220    UCHAR  PUK1Retries;
3221    UCHAR  PIN2State;
3222    UCHAR  PIN2Retries;
3223    UCHAR  PUK2Retries;
3224 } __attribute__ ((packed)) QMIUIM_PIN_STATE, *PQMIUIM_PIN_STATE;
3225 
3226 typedef struct _QMIUIM_VERIFY_PIN_REQ_MSG
3227 {
3228    USHORT Type;
3229    USHORT Length;
3230    UCHAR  TLVType;
3231    USHORT TLVLength;
3232    UCHAR  Session_Type;
3233    UCHAR  Aid_Len;
3234    UCHAR  TLV2Type;
3235    USHORT TLV2Length;
3236    UCHAR  PINID;
3237    UCHAR  PINLen;
3238    UCHAR  PINValue;
3239 } __attribute__ ((packed)) QMIUIM_VERIFY_PIN_REQ_MSG, *PQMIUIM_VERIFY_PIN_REQ_MSG;
3240 
3241 typedef struct _QMIUIM_VERIFY_PIN_RESP_MSG
3242 {
3243    USHORT Type;
3244    USHORT Length;
3245    UCHAR  TLVType;
3246    USHORT TLVLength;
3247    USHORT QMUXResult;
3248    USHORT QMUXError;
3249    UCHAR  TLV2Type;
3250    USHORT TLV2Length;
3251    UCHAR  PINVerifyRetriesLeft;
3252    UCHAR  PINUnblockRetriesLeft;
3253 } __attribute__ ((packed)) QMIUIM_VERIFY_PIN_RESP_MSG, *PQMIUIM_VERIFY_PIN_RESP_MSG;
3254 
3255 typedef struct _QMIUIM_READ_TRANSPARENT_REQ_MSG
3256 {
3257    USHORT Type;
3258    USHORT Length;
3259    UCHAR  TLVType;
3260    USHORT TLVLength;
3261    UCHAR  Session_Type;
3262    UCHAR  Aid_Len;
3263    UCHAR  TLV2Type;
3264    USHORT TLV2Length;
3265    USHORT file_id;
3266    UCHAR  path_len;
3267    UCHAR  path[];
3268 } __attribute__ ((packed)) QMIUIM_READ_TRANSPARENT_REQ_MSG, *PQMIUIM_READ_TRANSPARENT_REQ_MSG;
3269 
3270 typedef struct _READ_TRANSPARENT_TLV
3271 {
3272    UCHAR  TLVType;
3273    USHORT TLVLength;
3274    USHORT Offset;
3275    USHORT Length;
3276 } __attribute__ ((packed)) READ_TRANSPARENT_TLV, *PREAD_TRANSPARENT_TLV;
3277 
3278 typedef struct _QMIUIM_CONTENT
3279 {
3280    UCHAR  TLVType;
3281    USHORT TLVLength;
3282    USHORT content_len;
3283    UCHAR  content[];
3284 } __attribute__ ((packed)) QMIUIM_CONTENT, *PQMIUIM_CONTENT;
3285 
3286 typedef struct _QMIUIM_READ_TRANSPARENT_RESP_MSG
3287 {
3288    USHORT Type;
3289    USHORT Length;
3290    UCHAR  TLVType;
3291    USHORT TLVLength;
3292    USHORT QMUXResult;
3293    USHORT QMUXError;
3294 } __attribute__ ((packed)) QMIUIM_READ_TRANSPARENT_RESP_MSG, *PQMIUIM_READ_TRANSPARENT_RESP_MSG;
3295 
3296 typedef struct _QMUX_MSG
3297 {
3298    QCQMUX_HDR QMUXHdr;
3299    union
3300    {
3301       // Message Header
3302       QCQMUX_MSG_HDR                           QMUXMsgHdr;
3303       QCQMUX_MSG_HDR_RESP                      QMUXMsgHdrResp;
3304 
3305       // QMIWDS Message
3306 #if 0
3307       QMIWDS_GET_PKT_SRVC_STATUS_REQ_MSG        PacketServiceStatusReq;
3308       QMIWDS_GET_PKT_SRVC_STATUS_RESP_MSG       PacketServiceStatusRsp;
3309       QMIWDS_GET_PKT_SRVC_STATUS_IND_MSG        PacketServiceStatusInd;
3310       QMIWDS_EVENT_REPORT_IND_MSG               EventReportInd;
3311       QMIWDS_GET_CURRENT_CHANNEL_RATE_REQ_MSG   GetCurrChannelRateReq;
3312       QMIWDS_GET_CURRENT_CHANNEL_RATE_RESP_MSG  GetCurrChannelRateRsp;
3313       QMIWDS_GET_PKT_STATISTICS_REQ_MSG         GetPktStatsReq;
3314       QMIWDS_GET_PKT_STATISTICS_RESP_MSG        GetPktStatsRsp;
3315       QMIWDS_SET_EVENT_REPORT_REQ_MSG           EventReportReq;
3316       QMIWDS_SET_EVENT_REPORT_RESP_MSG          EventReportRsp;
3317 #endif
3318       //#ifdef QC_IP_MODE
3319       QMIWDS_GET_RUNTIME_SETTINGS_REQ_MSG       GetRuntimeSettingsReq;
3320       QMIWDS_GET_RUNTIME_SETTINGS_RESP_MSG      GetRuntimeSettingsRsp;
3321       //#endif // QC_IP_MODE
3322       QMIWDS_SET_CLIENT_IP_FAMILY_PREF_REQ_MSG  SetClientIpFamilyPrefReq;
3323       QMIWDS_SET_CLIENT_IP_FAMILY_PREF_RESP_MSG SetClientIpFamilyPrefResp;
3324       QMIWDS_SET_AUTO_CONNECT_REQ_MSG SetAutoConnectReq;
3325 #if 0
3326       QMIWDS_GET_MIP_MODE_REQ_MSG               GetMipModeReq;
3327       QMIWDS_GET_MIP_MODE_RESP_MSG              GetMipModeResp;
3328 #endif
3329       QMIWDS_START_NETWORK_INTERFACE_REQ_MSG    StartNwInterfaceReq;
3330       QMIWDS_START_NETWORK_INTERFACE_RESP_MSG   StartNwInterfaceResp;
3331       QMIWDS_STOP_NETWORK_INTERFACE_REQ_MSG     StopNwInterfaceReq;
3332       QMIWDS_STOP_NETWORK_INTERFACE_RESP_MSG    StopNwInterfaceResp;
3333       QMIWDS_GET_DEFAULT_SETTINGS_REQ_MSG       GetDefaultSettingsReq;
3334       QMIWDS_GET_DEFAULT_SETTINGS_RESP_MSG      GetDefaultSettingsResp;
3335       QMIWDS_MODIFY_PROFILE_SETTINGS_REQ_MSG    ModifyProfileSettingsReq;
3336       QMIWDS_MODIFY_PROFILE_SETTINGS_RESP_MSG   ModifyProfileSettingsResp;
3337       QMIWDS_GET_PROFILE_SETTINGS_REQ_MSG    GetProfileSettingsReq;
3338 #if 0
3339       QMIWDS_GET_DATA_BEARER_REQ_MSG            GetDataBearerReq;
3340       QMIWDS_GET_DATA_BEARER_RESP_MSG           GetDataBearerResp;
3341       QMIWDS_DUN_CALL_INFO_REQ_MSG              DunCallInfoReq;
3342       QMIWDS_DUN_CALL_INFO_RESP_MSG             DunCallInfoResp;
3343 #endif
3344       QMIWDS_BIND_MUX_DATA_PORT_REQ_MSG         BindMuxDataPortReq;
3345 
3346       // QMIDMS Messages
3347 #if 0
3348       QMIDMS_GET_DEVICE_MFR_REQ_MSG             GetDeviceMfrReq;
3349       QMIDMS_GET_DEVICE_MFR_RESP_MSG            GetDeviceMfrRsp;
3350       QMIDMS_GET_DEVICE_MODEL_ID_REQ_MSG        GetDeviceModeIdReq;
3351       QMIDMS_GET_DEVICE_MODEL_ID_RESP_MSG       GetDeviceModeIdRsp;
3352       QMIDMS_GET_DEVICE_REV_ID_REQ_MSG          GetDeviceRevIdReq;
3353       QMIDMS_GET_DEVICE_REV_ID_RESP_MSG         GetDeviceRevIdRsp;
3354       QMIDMS_GET_MSISDN_REQ_MSG                 GetMsisdnReq;
3355       QMIDMS_GET_MSISDN_RESP_MSG                GetMsisdnRsp;
3356       QMIDMS_GET_DEVICE_SERIAL_NUMBERS_REQ_MSG  GetDeviceSerialNumReq;
3357       QMIDMS_GET_DEVICE_SERIAL_NUMBERS_RESP_MSG GetDeviceSerialNumRsp;
3358       QMIDMS_GET_DEVICE_CAP_REQ_MSG             GetDeviceCapReq;
3359       QMIDMS_GET_DEVICE_CAP_RESP_MSG            GetDeviceCapResp;
3360       QMIDMS_GET_BAND_CAP_REQ_MSG               GetBandCapReq;
3361       QMIDMS_GET_BAND_CAP_RESP_MSG              GetBandCapRsp;
3362       QMIDMS_GET_ACTIVATED_STATUS_REQ_MSG       GetActivatedStatusReq;
3363       QMIDMS_GET_ACTIVATED_STATUS_RESP_MSG      GetActivatedStatusResp;
3364       QMIDMS_GET_OPERATING_MODE_REQ_MSG         GetOperatingModeReq;
3365       QMIDMS_GET_OPERATING_MODE_RESP_MSG        GetOperatingModeResp;
3366 #endif
3367       QMIDMS_SET_OPERATING_MODE_REQ_MSG         SetOperatingModeReq;
3368       QMIDMS_SET_OPERATING_MODE_RESP_MSG        SetOperatingModeResp;
3369 #if 0
3370       QMIDMS_UIM_GET_ICCID_REQ_MSG              GetICCIDReq;
3371       QMIDMS_UIM_GET_ICCID_RESP_MSG             GetICCIDResp;
3372       QMIDMS_ACTIVATE_AUTOMATIC_REQ_MSG         ActivateAutomaticReq;
3373       QMIDMS_ACTIVATE_AUTOMATIC_RESP_MSG        ActivateAutomaticResp;
3374       QMIDMS_ACTIVATE_MANUAL_REQ_MSG            ActivateManualReq;
3375       QMIDMS_ACTIVATE_MANUAL_RESP_MSG           ActivateManualResp;
3376 #endif
3377       QMIDMS_UIM_GET_PIN_STATUS_REQ_MSG         UIMGetPinStatusReq;
3378       QMIDMS_UIM_GET_PIN_STATUS_RESP_MSG        UIMGetPinStatusResp;
3379       QMIDMS_UIM_VERIFY_PIN_REQ_MSG             UIMVerifyPinReq;
3380       QMIDMS_UIM_VERIFY_PIN_RESP_MSG            UIMVerifyPinResp;
3381 #if 0
3382       QMIDMS_UIM_SET_PIN_PROTECTION_REQ_MSG     UIMSetPinProtectionReq;
3383       QMIDMS_UIM_SET_PIN_PROTECTION_RESP_MSG    UIMSetPinProtectionResp;
3384       QMIDMS_UIM_CHANGE_PIN_REQ_MSG             UIMChangePinReq;
3385       QMIDMS_UIM_CHANGE_PIN_RESP_MSG            UIMChangePinResp;
3386       QMIDMS_UIM_UNBLOCK_PIN_REQ_MSG            UIMUnblockPinReq;
3387       QMIDMS_UIM_UNBLOCK_PIN_RESP_MSG           UIMUnblockPinResp;
3388       QMIDMS_SET_EVENT_REPORT_REQ_MSG           DmsSetEventReportReq;
3389       QMIDMS_SET_EVENT_REPORT_RESP_MSG          DmsSetEventReportResp;
3390       QMIDMS_EVENT_REPORT_IND_MSG               DmsEventReportInd;
3391 #endif
3392       QMIDMS_UIM_GET_STATE_REQ_MSG              UIMGetStateReq;
3393       QMIDMS_UIM_GET_STATE_RESP_MSG             UIMGetStateResp;
3394       QMIDMS_UIM_GET_IMSI_REQ_MSG               UIMGetIMSIReq;
3395       QMIDMS_UIM_GET_IMSI_RESP_MSG              UIMGetIMSIResp;
3396 #if 0
3397       QMIDMS_UIM_GET_CK_STATUS_REQ_MSG          UIMGetCkStatusReq;
3398       QMIDMS_UIM_GET_CK_STATUS_RESP_MSG         UIMGetCkStatusResp;
3399       QMIDMS_UIM_SET_CK_PROTECTION_REQ_MSG      UIMSetCkProtectionReq;
3400       QMIDMS_UIM_SET_CK_PROTECTION_RESP_MSG     UIMSetCkProtectionResp;
3401       QMIDMS_UIM_UNBLOCK_CK_REQ_MSG             UIMUnblockCkReq;
3402       QMIDMS_UIM_UNBLOCK_CK_RESP_MSG            UIMUnblockCkResp;
3403 #endif
3404 
3405       // QMIQOS Messages
3406 #if 0
3407       QMI_QOS_SET_EVENT_REPORT_REQ_MSG          QosSetEventReportReq;
3408       QMI_QOS_SET_EVENT_REPORT_RESP_MSG         QosSetEventReportRsp;
3409       QMI_QOS_EVENT_REPORT_IND_MSG              QosEventReportInd;
3410 #endif
3411 
3412       // QMIWMS Messages
3413 #if 0
3414       QMIWMS_GET_MESSAGE_PROTOCOL_REQ_MSG       GetMessageProtocolReq;
3415       QMIWMS_GET_MESSAGE_PROTOCOL_RESP_MSG      GetMessageProtocolResp;
3416       QMIWMS_GET_SMSC_ADDRESS_REQ_MSG           GetSMSCAddressReq;
3417       QMIWMS_GET_SMSC_ADDRESS_RESP_MSG          GetSMSCAddressResp;
3418       QMIWMS_SET_SMSC_ADDRESS_REQ_MSG           SetSMSCAddressReq;
3419       QMIWMS_SET_SMSC_ADDRESS_RESP_MSG          SetSMSCAddressResp;
3420       QMIWMS_GET_STORE_MAX_SIZE_REQ_MSG         GetStoreMaxSizeReq;
3421       QMIWMS_GET_STORE_MAX_SIZE_RESP_MSG        GetStoreMaxSizeResp;
3422       QMIWMS_LIST_MESSAGES_REQ_MSG              ListMessagesReq;
3423       QMIWMS_LIST_MESSAGES_RESP_MSG             ListMessagesResp;
3424       QMIWMS_RAW_READ_REQ_MSG                   RawReadMessagesReq;
3425       QMIWMS_RAW_READ_RESP_MSG                  RawReadMessagesResp;
3426       QMIWMS_SET_EVENT_REPORT_REQ_MSG           WmsSetEventReportReq;
3427       QMIWMS_SET_EVENT_REPORT_RESP_MSG          WmsSetEventReportResp;
3428       QMIWMS_EVENT_REPORT_IND_MSG               WmsEventReportInd;
3429       QMIWMS_DELETE_REQ_MSG                     WmsDeleteReq;
3430       QMIWMS_DELETE_RESP_MSG                    WmsDeleteResp;
3431       QMIWMS_RAW_SEND_REQ_MSG                   RawSendMessagesReq;
3432       QMIWMS_RAW_SEND_RESP_MSG                  RawSendMessagesResp;
3433       QMIWMS_MODIFY_TAG_REQ_MSG                 WmsModifyTagReq;
3434       QMIWMS_MODIFY_TAG_RESP_MSG                WmsModifyTagResp;
3435 #endif
3436 
3437       // QMINAS Messages
3438 #if 0
3439       QMINAS_GET_HOME_NETWORK_REQ_MSG           GetHomeNetworkReq;
3440       QMINAS_GET_HOME_NETWORK_RESP_MSG          GetHomeNetworkResp;
3441       QMINAS_GET_PREFERRED_NETWORK_REQ_MSG      GetPreferredNetworkReq;
3442       QMINAS_GET_PREFERRED_NETWORK_RESP_MSG     GetPreferredNetworkResp;
3443       QMINAS_GET_FORBIDDEN_NETWORK_REQ_MSG      GetForbiddenNetworkReq;
3444       QMINAS_GET_FORBIDDEN_NETWORK_RESP_MSG     GetForbiddenNetworkResp;
3445       QMINAS_GET_SERVING_SYSTEM_REQ_MSG         GetServingSystemReq;
3446 #endif
3447       QMINAS_GET_SERVING_SYSTEM_RESP_MSG        GetServingSystemResp;
3448       QMINAS_GET_SYS_INFO_RESP_MSG              GetSysInfoResp;
3449       QMINAS_SYS_INFO_IND_MSG                   NasSysInfoInd;
3450 #if 0
3451       QMINAS_SERVING_SYSTEM_IND_MSG             NasServingSystemInd;
3452       QMINAS_SET_PREFERRED_NETWORK_REQ_MSG      SetPreferredNetworkReq;
3453       QMINAS_SET_PREFERRED_NETWORK_RESP_MSG     SetPreferredNetworkResp;
3454       QMINAS_SET_FORBIDDEN_NETWORK_REQ_MSG      SetForbiddenNetworkReq;
3455       QMINAS_SET_FORBIDDEN_NETWORK_RESP_MSG     SetForbiddenNetworkResp;
3456       QMINAS_PERFORM_NETWORK_SCAN_REQ_MSG       PerformNetworkScanReq;
3457       QMINAS_PERFORM_NETWORK_SCAN_RESP_MSG      PerformNetworkScanResp;
3458       QMINAS_INITIATE_NW_REGISTER_REQ_MSG       InitiateNwRegisterReq;
3459       QMINAS_INITIATE_NW_REGISTER_RESP_MSG      InitiateNwRegisterResp;
3460       QMINAS_SET_TECHNOLOGY_PREF_REQ_MSG        SetTechnologyPrefReq;
3461       QMINAS_SET_TECHNOLOGY_PREF_RESP_MSG       SetTechnologyPrefResp;
3462       QMINAS_GET_SIGNAL_STRENGTH_REQ_MSG        GetSignalStrengthReq;
3463       QMINAS_GET_SIGNAL_STRENGTH_RESP_MSG       GetSignalStrengthResp;
3464       QMINAS_SET_EVENT_REPORT_REQ_MSG           SetEventReportReq;
3465       QMINAS_SET_EVENT_REPORT_RESP_MSG          SetEventReportResp;
3466       QMINAS_EVENT_REPORT_IND_MSG               NasEventReportInd;
3467       QMINAS_GET_RF_BAND_INFO_REQ_MSG           GetRFBandInfoReq;
3468       QMINAS_GET_RF_BAND_INFO_RESP_MSG          GetRFBandInfoResp;
3469       QMINAS_INITIATE_ATTACH_REQ_MSG            InitiateAttachReq;
3470       QMINAS_INITIATE_ATTACH_RESP_MSG           InitiateAttachResp;
3471       QMINAS_GET_PLMN_NAME_REQ_MSG              GetPLMNNameReq;
3472       QMINAS_GET_PLMN_NAME_RESP_MSG             GetPLMNNameResp;
3473 #endif
3474 
3475       // QMIUIM Messages
3476       QMIUIM_GET_CARD_STATUS_RESP_MSG           UIMGetCardStatus;
3477       QMIUIM_VERIFY_PIN_REQ_MSG                 UIMUIMVerifyPinReq;
3478       QMIUIM_VERIFY_PIN_RESP_MSG                UIMUIMVerifyPinResp;
3479 #if 0
3480       QMIUIM_SET_PIN_PROTECTION_REQ_MSG         UIMUIMSetPinProtectionReq;
3481       QMIUIM_SET_PIN_PROTECTION_RESP_MSG        UIMUIMSetPinProtectionResp;
3482       QMIUIM_CHANGE_PIN_REQ_MSG                 UIMUIMChangePinReq;
3483       QMIUIM_CHANGE_PIN_RESP_MSG                UIMUIMChangePinResp;
3484       QMIUIM_UNBLOCK_PIN_REQ_MSG                UIMUIMUnblockPinReq;
3485       QMIUIM_UNBLOCK_PIN_RESP_MSG               UIMUIMUnblockPinResp;
3486 #endif
3487       QMIUIM_READ_TRANSPARENT_REQ_MSG           UIMUIMReadTransparentReq;
3488       QMIUIM_READ_TRANSPARENT_RESP_MSG          UIMUIMReadTransparentResp;
3489 
3490       QMIWDS_ADMIN_SET_DATA_FORMAT_REQ_MSG      SetDataFormatReq;
3491       QMI_WDA_SET_LOOPBACK_CONFIG_REQ_MSG       SetLoopBackReq;
3492       QMI_WDA_SET_LOOPBACK_CONFIG_IND_MSG       SetLoopBackInd;
3493    };
3494 } __attribute__ ((packed)) QMUX_MSG, *PQMUX_MSG;
3495 
3496 #pragma pack(pop)
3497 
3498 #endif // MPQMUX_H
3499