MTK11B GPRS网络连接的方法.docx
- 文档编号:5383078
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:23
- 大小:19.85KB
MTK11B GPRS网络连接的方法.docx
《MTK11B GPRS网络连接的方法.docx》由会员分享,可在线阅读,更多相关《MTK11B GPRS网络连接的方法.docx(23页珍藏版)》请在冰豆网上搜索。
MTK11BGPRS网络连接的方法
MTK11BGPRS网络连接的方法
MTK11B的网络连接与09A之前的方法差别很大了,但基本方法还是不变。
总共分三步:
1:
创建AP.
2:
根据AP获取GPRS帐号ID,如果没找到就自动创建.
3:
根据GPRS帐号ID创建Socket.
例子分为两个文件:
mysocket.c,mysocket.h
mysocket.c内容:
#include"mysocket.h"
//总入口*/
voidmyapp_Socket_Initial(void)
{
myapp_Socket_HTTP_Start();
if(g_myapp_socket_inital)
{
if(myapp_Socket_HTTP_Create())
{
if(myapp_Socket_HTTP_Connect())
{
myapp_Socket_Send_Data();
}
}
}
}
voidsocket_set_protocol_event_handler(U16eventID,PsIntFuncPtrfuncPtr,MMI_BOOLisMultiHandler)
{
#if(MTK_VERSION>0x0848)
#if(MTK_VERSION>=0x0936)
mmi_frm_set_protocol_event_handler(eventID,(PsIntFuncPtr)funcPtr,isMultiHandler);
#else
mmi_frm_set_protocol_event_handler(eventID,(PsIntFuncPtr)funcPtr,isMultiHandler);
#endif
#else
mmi_frm_set_protocol_event_handler((PsFuncPtr)funcPtr,eventID);
#endif
}
voidsocket_clear_protocol_event_handler(U16eventID,PsIntFuncPtrfuncPtr)
{
#if(MTK_VERSION>0x0848)
#if(MTK_VERSION>=0x0936)
mmi_frm_clear_protocol_event_handler(eventID,(PsIntFuncPtr)funcPtr);
#else
mmi_frm_clear_protocol_event_handler(eventID,(PsIntFuncPtr)funcPtr);
#endif
#else
mmi_frm_clear_protocol_event_handler(eventID);
#endif
}
#if1
staticvoidsocket_mmi_dtcnt_add_disp_list(U32acct_id,constU8*acct_name,constU8*addr,U8bearer_type,U32account_type,U8conn_type,U8sim_info,U8read_only)
{
#if(MTK_VERSION>=0x11A1112)
#elif(MTK_VERSION>=0x10A1103)
externvoidmmi_dtcnt_add_disp_list(U32acct_id,U8bearer_type,mmi_socket_dtcnt_acct_type_enumaccount_type,U8conn_type,U8sim_info,U8read_only);
mmi_dtcnt_add_disp_list(acct_id,bearer_type,account_type,conn_type,sim_info,read_only);
#else
externvoidmmi_dtcnt_add_disp_list(U32acct_id,constU8*acct_name,constU8*addr,U8bearer_type,mmi_socket_dtcnt_acct_type_enumaccount_type,U8conn_type,U8sim_info,U8read_only);
mmi_dtcnt_add_disp_list(acct_id,acct_name,addr,bearer_type,account_type,conn_type,sim_info,read_only);
#endif
}
staticvoidsocket_mmi_dtcnt_update_disp_list(U32acct_id,constU8*acct_name,constU8*addr,U8bearer_type,U32account_type,U8conn_type,U8sim_info,U8read_only)
{
#if(MTK_VERSION>=0x11A1112)
#elif(MTK_VERSION>=0x10A1103)
externvoidmmi_dtcnt_update_disp_list(U32acct_id,U8bearer_type,mmi_socket_dtcnt_acct_type_enumaccount_type,U8conn_type,U8sim_info,U8read_only);
mmi_dtcnt_update_disp_list(acct_id,bearer_type,account_type,conn_type,sim_info,read_only);
#else
externvoidmmi_dtcnt_update_disp_list(U32acct_id,constU8*acct_name,constU8*addr,U8bearer_type,mmi_socket_dtcnt_acct_type_enumaccount_type,U8conn_type,U8sim_info,U8read_only);
mmi_dtcnt_update_disp_list(acct_id,acct_name,addr,bearer_type,account_type,conn_type,sim_info,read_only);
#endif
}
staticBOOLsocket_update_acc_prof_id(kal_uint32acc_prof_id,constWCHAR*account_name,
myapp_apn_structapn_param,cbm_sim_id_enumsim)
{
srv_dtcnt_result_enumret;
srv_dtcnt_store_prof_data_structprof_info;
srv_dtcnt_prof_gprs_structprof_gprs;
inti;
MMI_ASSERT(apn_param.apn!
=NULL);
memset(&prof_gprs,0,sizeof(prof_gprs));
prof_gprs.APN=apn_param.apn;
prof_gprs.prof_common_header.sim_info=sim+1;
prof_gprs.prof_common_header.AccountName=(constU8*)account_name;
//if(accountInfo)
{
prof_gprs.prof_common_header.Auth_info.AuthType=apn_param.authentication_type;
strcpy((char*)prof_gprs.prof_common_header.Auth_info.UserName,apn_param.user_name);
strcpy((char*)prof_gprs.prof_common_header.Auth_info.Passwd,apn_param.password);
for(i=0;i<4;i++)
{
prof_gprs.prof_common_header.PrimaryAddr[i]=apn_param.dns[i];
}
}
prof_gprs.prof_common_header.acct_type=SRV_DTCNT_PROF_TYPE_USER_CONF;
prof_gprs.prof_common_header.px_service=SRV_DTCNT_PROF_PX_SRV_HTTP;
if(app_stricmp((char*)apn_param.apn,(char*)"cmwap")==0)
{
prof_gprs.prof_common_header.use_proxy=KAL_TRUE;
prof_gprs.prof_common_header.px_addr[0]=10;
prof_gprs.prof_common_header.px_addr[1]=0;
prof_gprs.prof_common_header.px_addr[2]=0;
prof_gprs.prof_common_header.px_addr[3]=172;
prof_gprs.prof_common_header.px_port=80;
}
strcpy(prof_gprs.prof_common_header.HomePage,"");
prof_info.prof_data=&prof_gprs;
prof_info.prof_fields=SRV_DTCNT_PROF_FIELD_ALL;
prof_info.prof_type=SRV_DTCNT_BEARER_GPRS;
ret=srv_dtcnt_store_update_prof(acc_prof_id,&prof_info);
if(ret==SRV_DTCNT_RESULT_SUCCESS)
{
socket_mmi_dtcnt_update_disp_list(acc_prof_id,prof_gprs.prof_common_header.AccountName,prof_gprs.APN,DATA_ACCOUNT_BEARER_GPRS,
prof_gprs.prof_common_header.acct_type,1,prof_gprs.prof_common_header.sim_info,prof_gprs.prof_common_header.read_only);
returnTRUE;
}
else
{
returnFALSE;
}
}
statickal_uint32socket_find_acc_prof_id(constWCHAR*account_name)
{
inti,j;
srv_dtcnt_result_enumret;
srv_dtcnt_store_prof_qry_structstore_prof_qry;
srv_dtcnt_prof_str_info_qry_structprof_str_info_qry;
U16name[SRV_DTCNT_PROF_MAX_ACC_NAME_LEN+1]={0};
for(j=0;j { memset(&store_prof_qry,0,sizeof(store_prof_qry)); store_prof_qry.qry_info.filters=SRV_DTCNT_STORE_QRY_TYPE_SIM|SRV_DTCNT_STORE_QRY_TYPE_BEARER_TYPE; store_prof_qry.qry_info.sim_qry_info=j+1; store_prof_qry.qry_info.bearer_qry_info=SRV_DTCNT_BEARER_GPRS; ret=srv_dtcnt_store_qry_ids(&store_prof_qry); if(ret==SRV_DTCNT_RESULT_SUCCESS) { for(i=0;i { prof_str_info_qry.dest=(S8*)name; prof_str_info_qry.dest_len=sizeof(name); srv_dtcnt_get_account_name(store_prof_qry.ids[i],&prof_str_info_qry,SRV_DTCNT_ACCOUNT_PRIMARY); if(kal_wstrcmp(account_name,name)==0) { returnstore_prof_qry.ids[i]; } } } } return-1; } statickal_uint32myapp_socket_add_acc_prof_id(constWCHAR*account_name) { srv_dtcnt_store_prof_data_structstore_prof_data; srv_dtcnt_prof_gprs_structprof_gprs; kal_uint32acc_prof_id; srv_dtcnt_result_enumret; memset(&prof_gprs,0,sizeof(prof_gprs)); prof_gprs.APN="cmwap";//这个值在应用使用的时候会修改的 prof_gprs.prof_common_header.sim_info=SRV_DTCNT_SIM_TYPE_1; prof_gprs.prof_common_header.AccountName=(constU8*)account_name; prof_gprs.prof_common_header.acct_type=SRV_DTCNT_PROF_TYPE_USER_CONF; prof_gprs.prof_common_header.px_service=SRV_DTCNT_PROF_PX_SRV_HTTP; prof_gprs.prof_common_header.use_proxy=KAL_TRUE; prof_gprs.prof_common_header.px_addr[0]=10; prof_gprs.prof_common_header.px_addr[1]=0; prof_gprs.prof_common_header.px_addr[2]=0; prof_gprs.prof_common_header.px_addr[3]=172; prof_gprs.prof_common_header.px_port=80; strcpy(prof_gprs.prof_common_header.HomePage,""); store_prof_data.prof_data=&prof_gprs; store_prof_data.prof_fields=SRV_DTCNT_PROF_FIELD_ALL; store_prof_data.prof_type=SRV_DTCNT_BEARER_GPRS; ret=srv_dtcnt_store_add_prof(&store_prof_data,&acc_prof_id); if(ret==SRV_DTCNT_RESULT_SUCCESS) { socket_mmi_dtcnt_add_disp_list(acc_prof_id,prof_gprs.prof_common_header.AccountName,prof_gprs.APN,DATA_ACCOUNT_BEARER_GPRS, prof_gprs.prof_common_header.acct_type,1,prof_gprs.prof_common_header.sim_info,prof_gprs.prof_common_header.read_only); } else { acc_prof_id=-1; } returnacc_prof_id; } statickal_uint32socket_find_acc_prof_id_by_apn(constchar*apn,cbm_sim_id_enumsim) { externsrv_dtcnt_store_info_contextg_srv_dtcnt_store_ctx; inti; for(i=0;i { if(g_srv_dtcnt_store_ctx.acc_list[i].in_use&& g_srv_dtcnt_store_ctx.acc_list[i].bearer_type==SRV_DTCNT_BEARER_GPRS&& g_srv_dtcnt_store_ctx.acc_list[i].sim_info==(sim+1)&& app_stricmp((char*)g_srv_dtcnt_store_ctx.acc_list[i].dest_name,(char*)apn)==0) { returng_srv_dtcnt_store_ctx.acc_list[i].acc_id; } } return-1; } /** *获取分配给应用的数据账号,可以支持两个应用同时使用 * *@param应用handle * *@return账号索引,这个值肯定是有效的 */ statickal_uint32socket_get_acc_prof_id(myapp_apn_structapn_param,cbm_sim_id_enumsim_id) { //1.搜索系统中存在的数据账户 //2.检查虚拟机平台账号是否已存在 //3.如果存在则返回这个账号ID,如果不存在继续 //4.添加一个虚拟机平台数据账号 //5.如果成功返回账号ID,如果失败则返回指定的账号ID constWCHAR*names[]={L"SOC1GPRS",L"SOC2GPRS"}; kal_uint32modify_acc_prof_ids[]={SRV_DTCNT_PROF_MAX_ACCOUNT_NUM-1,SRV_DTCNT_PROF_MAX_ACCOUNT_NUM-2}; kal_uint32acc_prof_id; kal_uint32id; id=0; MMI_ASSERT(id>=0&&id<=1); acc_prof_id=socket_find_acc_prof_id_by_apn((constchar*)apn_param.apn,sim_id); if(acc_prof_id! =-1) { returnacc_prof_id; } acc_prof_id=socket_find_acc_prof_id(names[id]); if(acc_prof_id==-1) { acc_prof_id=myapp_socket_add_acc_prof_id(names[id]); } if(acc_prof_id==-1) { if(id==0) { acc_prof_id=socket_find_acc_prof_id(names[1]); } else { acc_prof_id=socket_find_acc_prof_id(names[0]); } if(acc_prof_id==-1) { acc_prof_id=modify_acc_prof_ids[id]; } else { if(acc_prof_id==SRV_DTCNT_PROF_MAX_ACCOUNT_NUM-1) { acc_prof_id=acc_prof_id-1; } else { acc_prof_id=acc_prof_id+1; } } } if(! socket_update_acc_prof_id(acc_prof_id,names[id],apn_param,sim_id)) { acc_prof_id=-1; } returnacc_prof_id; } voidsocket_set_account_id(cbm_sim_id_enumsim_id) { /*----------------------------------------------------------------*/ /*LocalVariables*/ /*----------------------------------------------------------------*/ kal_int32i; U16vs_apn[32]; S8temp[32]; /*----------------------------------------------------------------*/ /*CodeBody*/ /*----------------------------------------------------------------*/ //socket_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND,(PsIntFuncPtr)myapp_socket_not
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK11B GPRS网络连接的方法 GPRS 网络 连接 方法