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