1#ifndef __QMI_OPER_H__
2#define __QMI_OPER_H__
3
4#include "qmi_header.h"
5#define DEBUG
6
7enum
8{
9    QMI_GET_CLIENT_ID			= 0,
10    QMI_RELEASE_CLIENT_ID,
11    QMI_CONNECT,
12    QMI_DISCONNECT,
13    QMI_GET_IP_ADDR,
14    QMI_SET_DATA_FORMAT,
15    QMI_SET_INSTANCE,
16    QMI_GET_VERSION,
17    QMI_MODIFY_PRO,
18};
19
20typedef struct _NDIS_QMI_STATUS{
21	UInt32           fPacketHandle;
22	UInt32           fPacketHandle1;
23	bool             fIPPacketSupport;
24	bool             fDisconnecting;
25	bool             fConnecting;
26	bool             fGetVersioning;
27	bool             fIPModeEnabled;
28	int              fConnectionStatus;
29	int              fSetInstanceIdFail;
30	UInt32           fQMI_ID;
31	UInt32           fIPAddress;
32	UInt16           fConnectionError;
33	UInt8    		 fQMIType;
34	UInt8    		 fClientID;
35	UInt8			 fLinkStatus;
36	char             fVersion[64];
37} NDIS_QMI_STATUS;
38/********************************************************************
39 *
40 *         Name:  printk_hex
41 *  Description:  print data buffer with hex which is lined by 16 bytes
42 *        Input:  buf:the data buffer to be print of
43 *                buf_size:the data buffer length.
44 *       Return:  null
45 *        Notes:
46 ********************************************************************/
47void printk_hex(UInt8 *buf,int buf_size);
48/********************************************************************
49 *
50 *         Name:  QCTL_GetClientID
51 *  Description:  get a qmi client ID
52 *        Input:  qmiType:the type of qmi,there are QMUX_TYPE_WDS
53 *                length:the pMsgBuff max length.
54 *       Output:  pMsgBuff : the buf used to generate a package.
55 *       Return:  -1 : call faled.
56 *                >0  : call success,the package length used.
57 *        Notes:
58 ********************************************************************/
59int  QCTL_GetClientID(UInt8 * pMsgBuff,UInt32 length,UInt8 qmiType);
60/********************************************************************
61 *
62 *         Name:  QCTL_ReleaseClientID
63 *  Description:  relase a qmi client ID
64 *        Input:  length:the pMsgBuff max length.
65 *                pndis_status : the input global parameters.
66 *       Output:  pMsgBuff : the buf used to generate a package.
67 *       Return:  -1 : call faled.
68 *                >0  : call success,the package length used.
69 *        Notes:
70 ********************************************************************/
71int QCTL_ReleaseClientID(UInt8* pMsgBuff,UInt32 length,NDIS_QMI_STATUS* pndis_status);
72/********************************************************************
73 *
74 *         Name:  QCTL_GetVersionReq
75 *  Description:  GET a qmi version info
76 *        Input:  length:the pMsgBuff max length.
77 *       Output:  pMsgBuff : the buf used to generate a package.
78 *       Return:  -1 : call faled.
79 *                >0  : call success,the package length used.
80 *        Notes:
81 ********************************************************************/
82int QCTL_GetVersionReq(UInt8* pMsgBuff,UInt32 length);
83/********************************************************************
84 *
85 *         Name:  QCTL_SetDataFormatReq
86 *  Description:  set a qmi data format
87 *        Input:  length:the pMsgBuff max length.
88 *       Output:  pMsgBuff : the buf used to generate a package.
89 *       Return:  -1 : call faled.
90 *                >0  : call success,the package length used.
91 *        Notes:
92 ********************************************************************/
93int QCTL_SetDataFormatReq(UInt8* pMsgBuff,UInt32 length);
94/********************************************************************
95 *
96 *         Name:  QCTL_SetInstanceId
97 *  Description:  set a qmi Instance ID
98 *        Input:  length:the pMsgBuff max length.
99 *       Output:  pMsgBuff : the buf used to generate a package.
100 *       Return:  -1 : call faled.
101 *                >0  : call success,the package length used.
102 *        Notes:
103 ********************************************************************/
104int QCTL_SetInstanceId(UInt8* pMsgBuff,UInt32 length);
105/********************************************************************
106 *
107 *         Name:  QC_WDS_GetIPAddress
108 *  Description:  get  qmi ip address
109 *        Input:  length:the pMsgBuff max length.
110 *                fClientID:the current clientID
111 *       Output:  pMsgBuff : the buf used to generate a package.
112 *       Return:  -1 : call faled.
113 *                >0  : call success,the package length used.
114 *        Notes:
115 ********************************************************************/
116int QC_WDS_GetIPAddress(UInt8* pMsgBuff,UInt32 length,UInt8 fClientID);
117
118/********************************************************************
119 *
120 *         Name:  QC_WDS_ModifyProfile
121 *  Description:  modify  profile for support ipv6 adn dulIP
122 *        Input:  length:the pMsgBuff max length;
123 *                fClientID:the current clientID
124 *               char ConnectIpMode			0 for ipv4 1 for ipv6 2 for dul
125 *                compression: auth type.
126 *       Output:  pMsgBuff : the buf used to generate a package.
127 *       Return:  -1 : call faled.
128 *                >0  : call success,the package length used.
129 *        Notes:
130 ********************************************************************/
131int QC_WDS_ModifyProfile(UInt8* pMsgBuff,
132					UInt32 length,
133					NDIS_QMI_STATUS*  pndis_status,//fClientID
134					char *accessString,
135					char *userName,
136					char *passWord,
137					UInt8 compression,
138					UInt32 ConnectIpMode);
139
140
141/********************************************************************
142 *
143 *         Name:  QC_WDS_Connect
144 *  Description:  use apn dail to internet through qmi
145 *        Input:  length:the pMsgBuff max length;
146 *                fClientID:the current clientID
147 *                accessString:apn;
148 *                userName: user name;
149 *                passWord: password;
150 *                compression: auth type.
151 *       Output:  pMsgBuff : the buf used to generate a package.
152 *       Return:  -1 : call faled.
153 *                >0  : call success,the package length used.
154 *        Notes:
155 ********************************************************************/
156int QC_WDS_Connect(UInt8* pMsgBuff,
157			UInt32 length,
158			UInt8  fClientID,
159			char *accessString,
160			char *userName,
161			char *passWord,
162					UInt8 compression,
163					UInt32 ConnectIpMode);
164/********************************************************************
165 *
166 *         Name:  QC_WDS_Disconnect
167 *  Description:  disconnect from  qmi internet.
168 *        Input:  length:the pMsgBuff max length.
169 *                pndis_status:ndis global status parameters.
170 *       Output:  pMsgBuff : the buf used to generate a package.
171 *       Return:  -1 : call faled.
172 *                >0  : call success,the package length used.
173 *        Notes:
174 ********************************************************************/
175int QC_WDS_Disconnect(UInt8* pMsgBuff,UInt32 length,NDIS_QMI_STATUS* pndis_status,UInt8 flag);
176/********************************************************************
177 *
178 *         Name:  QCTL_Procecess_GetClient_ID_Response
179 *  Description:  QCTL Procecess GetClient ID Response
180 *        Input:  pQmi:the package message get from qmi server.
181 *       Output:  fClientID : client ID getted from the package.
182 *                fQMIType  : fQMIType getted from the package.
183 *       Return:  -1 : call faled.
184 *                >0  : call success,the package length used.
185 *        Notes:
186 ********************************************************************/
187int QCTL_Procecess_GetClient_ID_Response(QCQMI * pQmi,UInt8* fClientID,UInt8* fQMIType);
188/********************************************************************
189 *
190 *         Name:  QCTL_Procecess_SetDataFormat_Response
191 *  Description:  QCTL Procecess SetDataFormat Response.
192 *        Input:  pQmi:the package message get from qmi server.
193 *       Output:  pndis_status : qmi global status parameters.
194 *       Return:  -1 : call faled.
195 *                >0  : call success,the package length used.
196 *        Notes:
197 ********************************************************************/
198int QCTL_Procecess_SetDataFormat_Response(QCQMI* pQmi,NDIS_QMI_STATUS* pndis_status);
199/********************************************************************
200 *
201 *         Name:  QCTL_Procecess_SetInstanceId_Response
202 *  Description:  QCTL Procecess SetInstanceId Response.
203 *        Input:  pQmi:the package message get from qmi server.
204 *       Output:  fSetInstanceIdFail : if get qmi id return -1,else return 1.
205 *                fQMI_ID : QMI_ID
206 *       Return:  -1 : call faled.
207 *                >0  : call success,the package length used.
208 *        Notes:
209 ********************************************************************/
210int QCTL_Procecess_SetInstanceId_Response(QCQMI* pQmi,int* fSetInstanceIdFail,UInt32* fQMI_ID);
211/********************************************************************
212 *
213 *         Name:  QCTL_Procecess_ReleaseClient_ID_Response
214 *  Description:  QCTL Procecess ReleaseClient ID Response.
215 *        Input:  pQmi:the package message get from qmi server.
216 *       Output:  fClientID : client ID getted from the package.
217 *                fQMIType  : fQMIType getted from the package.
218 *       Return:  -1 : call faled.
219 *                >0  : call success,the package length used.
220 *        Notes:
221 ********************************************************************/
222int QCTL_Procecess_ReleaseClient_ID_Response(QCQMI* pQmi,UInt8* fClientID,UInt8* fQMIType);
223/********************************************************************
224 *
225 *         Name:  QCTL_Procecess_GetVersion_Respons
226 *  Description:  QCTL Procecess GetVersion Respons.
227 *        Input:  pQmi:the package message get from qmi server.
228 *       Output:  pndis_status : qmi global status parameters.
229 *       Return:  -1 : call faled.
230 *                0  : call success
231 *        Notes:
232 ********************************************************************/
233int QCTL_Procecess_GetVersion_Respons(QCQMI* pQmi,NDIS_QMI_STATUS* pndis_status);
234 /********************************************************************
235 *
236 *         Name:  QCQMI_ProcessQMUXWDSResponse
237 *  Description:  QCQMI Process QMUX WDS Response
238 *        Input:  pQmi:the data buffer to be print of
239 *        Output: pndis_status: ndis global status parameters.
240 *       Return:  null
241 *        Notes:
242 ********************************************************************/
243int QCQMI_ProcessQMUXWDSResponse(QCQMI* pQmi,NDIS_QMI_STATUS* pndis_status);
244/********************************************************************
245 *
246 *         Name:  QC_WDS_Process_GetRunTimeSettings_Respons
247 *  Description:  QC WDS Process Get RunTime Settings Respons
248 *        Input:  pQMuxMsg:the data getted from qmi server
249 *        Output: pndis_status: ndis global status parameters.
250 *       Return:  -1 : call faled.
251 *                0  : call success
252 *        Notes:
253 ********************************************************************/
254 int  QC_WDS_Process_GetRunTimeSettings_Respons(QCQMUX_MSG_HDR* pQMuxMsg,NDIS_QMI_STATUS* pndis_status);
255 /********************************************************************
256 *
257 *         Name:  processQMIResponse
258 *  Description:  process QMI Respons
259 *        Input:  buffer:the data getted from qmi server
260 *        Output: pndis_status: ndis global status parameters.
261 *       Return:  -1 : call faled.
262 *                QMI_GET_CLIENT_ID--QMI_GET_VERSION  : call success
263 *        Notes:
264 ********************************************************************/
265int processQMIResponse(void *buffer,NDIS_QMI_STATUS* pndis_status);
266/********************************************************************
267 *
268 *         Name:  QCQMI_ProcessQMUXWDSIndication
269 *  Description:  QCQMI Process QMUX WDS Indication
270 *        Input:  pQmi:the data getted from qmi server
271 *        Output: pndis_status: ndis global status parameters.
272 *       Return:  -1 : call faled.
273 *                0  : call success
274 *        Notes:
275 ********************************************************************/
276int QCQMI_ProcessQMUXWDSIndication(QCQMI* pQmi,NDIS_QMI_STATUS* pndis_status);
277#endif
278