mrp_net.h
5.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#ifndef __MRP_PAL_NET_H__
#define __MRP_PAL_NET_H__
typedef struct
{
uint8 authentication_type;
uint8 user_name[32];
uint8 password[32];
uint8 dns[4];
uint8 apn[100];
}T_DSM_DATA_ACCOUNT;
#if (MTK_VERSION >= 0x0936)
#define DSM_SET_GPRS_ACCOUT_DEFAULT_VALUE \
myMsgPtr->gprs_account.dcomp_algo = 0x02; \
myMsgPtr->gprs_account.hcomp_algo = 0x02; \
myMsgPtr->gprs_account.pdp_type = 0x21;\
myMsgPtr->gprs_account.pdp_addr_len = 0x01;
#else
#define DSM_SET_GPRS_ACCOUT_DEFAULT_VALUE
#endif
extern int32 gDsmUseNVdataAccount;
/**
* \brief 初始化网络模块
*
* \return 成功返回MR_SUCCESS, 失败返回MR_FAILED
*/
int32 mr_net_initialize(void);
/**
* \brief 网络模块释放
*
* \return 成功返回MR_SUCCESS, 失败返回MR_FAILED
*/
int32 mr_net_terminate(void);
/**
* \brief 关闭全部VM的socket
*
* \return 成功返回MR_SUCCESS, 失败返回MR_FAILED
*/
int32 mr_net_socket_breakall(void);
/**
* \brief 设置事件处理函数
*
* \param eventID [in] 事件ID
* \param funcPtr [in] 事件处理函数
* \param isMultiHandler [in] 是否支持多事件处理函数
*/
void mr_net_set_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler);
/**
* \brief 清空事件回调函数
*
* \param eventID [in] 事件ID
* \param funcPtr [in] 事件处理函数
*/
void mr_net_clear_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr);
/**
* \brief 初始化网络信息,拨号账户,及进行拨号连接gprs
*
* \param cb [in]如果是异步的实现方式,则通过这个回调通知操作结果
* \param mode [in]拨号方式, 分同步和异步
* \return
* - MR_SUCCESS 操作成功
* - MR_FAILED 操作失败
* - MR_WAITING 此操作是个异步过程,需要通过cb 进行异步通知
*/
int32 mr_initNetwork(MR_INIT_NETWORK_CB cb, const char *mode);
/**
* \brief 请求进行域名解析
*
* \param name [in]域名
* \param cb [in]回调函数
* \return
* - MR_WAITING 表示异步调用,正在处理过程中
* - MR_FAILED 查询失败
* - 其他值,表示成功,返回对应的IP地址
*/
int32 mr_getHostByName(const char *name, MR_GET_HOST_CB cb);
/**
* \brief 创建一个socket
*
* \param type [in] 类型
* \param protocol [in] 协议族
* \return 创建成功的socket的句柄,失败返回MR_FAILED
*/
int32 mr_socket(int32 type, int32 protocol);
/**
* \brief 连接服务器
*
* \param s [in] socket 句柄
* \param ip [in] 服务器端IP地址
* \param port [in] 服务端端口号
* \param type [in] 同步,异步模式
* \return 成功返回MR_SUCCESS, 异步返回MR_WAITING,失败返回MR_FAILED
*/
int32 mr_connect(int32 s, int32 ip, uint16 port, int32 type);
/**
* \brief 关闭socket
*
* \param s [in] 待关闭的socket
* \return 成功返回MR_SUCCESS, 失败返回MR_FAILED
*/
int32 mr_closeSocket(int32 s);
/**
* \brief 接受数据
*
* \param s [in] socket 句柄
* \param buf [in] 存放接受数据的BUFFER
* \param len [in] 接受数据BUFFER的大小
* \return
* - >= 0 表示实际接收的数据字节数
* - < 0 表示出错
*/
int32 mr_recv (int32 s, char *buf, int len);
/**
* \brief 发送数据
*
* \param s [in] socket 句柄
* \param buf [in] 发送数据的BUFFER
* \param len [in] 发送数据的长度,字节
* \return
* - >=0 表示时间发送的字节数
* - < 0 表示出错
*/
int32 mr_send(int32 s, const char *buf, int len);
/**
* \brief 发送UDP 数据报
*
* \param s [in] socket 句柄
* \param buf [in] 待发送数据的BUFFER
* \param len [in] 发送数据的长度
* \param ip [in] 对端的IP地址
* \param port [in] port对端的端口号
*/
int32 mr_sendto(int32 s, const char *buf, int len, int32 ip, uint16 port);
/**
* \brief 接受UDP数据包
*
* \param s [in] socket 句柄
* \param buf [in] 接收数据的BUFFER
* \param len [in] 接收BUFFER的长度
* \param ip [in] 对端的IP地址
* \param port [in] 对端的端口号
* \return
* - >= 0 表示实际接收的数据
* - < 0 表示出错
*/
int32 mr_recvfrom(int32 s, char *buf, int len, int32 *ip, uint16 *port);
/**
* \brief 关闭网络
*
* \return 成功返回MR_SUCCESS, 失败返回MR_FAILED
*/
int32 mr_closeNetwork(void);
/**
* \brief 检查连接状态, 用于在异步连接的时候判断当前的连接状态
*
* \param s [s] socket 句柄
* \return
* - MR_SUCCESS 表示连接成功
* - MR_WAITING 表示连接失败
* - MR_FAILED 出错
*/
int32 mr_net_check_connect(int32 s);
/**
* \brief bind 到对应的ip 和端口, 用于UDP
*
* \param d_bind [in] bind 信息,主要是socket句柄,要bind的IP及端口
* \return MR_SUCCESS 表示成功,MR_FAILED 表示失败
*/
int32 mr_net_soc_bind(mr_bind_st *d_bind);
/**
* \brief 设置数据账号
*
* \param req [in] 账号信息
* \return 成功MR_SUCCESS, 失败MR_FAILED,异步操作返回MR_WAITING
*/
int32 mr_net_set_data_account(uint8* input, int32 input_len, uint8** output, int32* output_len, MR_PLAT_EX_CB *cb);
/**
* \brief 获取数据账号
*
* \return 成功MR_SUCCESS, 失败MR_FAILED,异步操作返回MR_WAITING
*/
int32 mr_net_get_data_account_req(int32 param);
/**
* \brief 调用UI界面设置数据账号
*
*/
void dsmMtkUISetDataAccount(void);
/**
* \brief 进入WAP浏览器
*
* \param wap [in] url地址
*/
void mr_connectWAP(char* wap);
/**
* \brief 得到用户使用的是什么卡(sim)
*
* \return
* MR_NET_ID_MOBILE:中国移动
* MR_NET_ID_CN :中国联通
* MR_NET_ID_CDMA :联通CDMA
* MR_NET_ID_NONE :无卡
*/
int32 mr_getNetworkID(void);
/**
* \brief 获取当前的PLMN
*/
int32 mr_net_get_network_plmn(uint8**output,int32 *output_len);
/**
* \brief 查询时间戳
*/
int32 mr_net_gprs_info_query(uint8* input, int32 input_len, uint8** output, int32* output_len, MR_PLAT_EX_CB *cb);
/**
* \brief 更新时间戳
*/
void mr_net_gprs_info_update(void);
/**
* \brief 保存时间戳信息
*/
void mr_net_gprs_info_save(void);
/**
* \brief 加载时间戳信息
*/
void mr_get_gprs_info_load(void);
int32 mr_net_get_data_account(uint8* input, int32 input_len, uint8** output, int32* output_len, MR_PLAT_EX_CB *cb);
int32 mr_net_data_account_show_ui(int32 param);
int32 mr_net_data_account_set_use_flag(int32 param);
#endif