




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MTK11B GPRS网络连接的方法MTK11B的网络连接与09A之前的方法差别很大了,但基本方法还是不变。总共分三步:1:创建 AP.2:根据AP获取GPRS帐号ID,如果没找到就自动创建.3: 根据GPRS帐号ID创建Socket.例子分为两个文件: mysocket.c , mysocket.hmysocket. c 内容:#include mysocket.h/总入口*/void myapp_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(); void socket_set_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler)#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);#endifvoid socket_clear_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr)#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#if 1static void socket_mmi_dtcnt_add_disp_list(U32 acct_id, const U8 *acct_name, const U8 *addr, U8 bearer_type, U32 account_type, U8 conn_type, U8 sim_info, U8 read_only)#if (MTK_VERSION = 0x11A1112)#elif (MTK_VERSION = 0x10A1103) extern void mmi_dtcnt_add_disp_list(U32 acct_id, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only); mmi_dtcnt_add_disp_list(acct_id, bearer_type, account_type, conn_type, sim_info, read_only);#else extern void mmi_dtcnt_add_disp_list(U32 acct_id, const U8 * acct_name, const U8 * addr, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only); mmi_dtcnt_add_disp_list(acct_id, acct_name, addr, bearer_type, account_type, conn_type, sim_info, read_only);#endifstatic void socket_mmi_dtcnt_update_disp_list(U32 acct_id, const U8 *acct_name, const U8 *addr, U8 bearer_type, U32 account_type, U8 conn_type, U8 sim_info, U8 read_only)#if (MTK_VERSION = 0x11A1112)#elif (MTK_VERSION = 0x10A1103) extern void mmi_dtcnt_update_disp_list(U32 acct_id, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only); mmi_dtcnt_update_disp_list(acct_id, bearer_type, account_type, conn_type, sim_info, read_only);#else extern void mmi_dtcnt_update_disp_list(U32 acct_id, const U8 * acct_name, const U8 * addr, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only); mmi_dtcnt_update_disp_list(acct_id, acct_name, addr, bearer_type, account_type, conn_type, sim_info, read_only);#endifstatic BOOL socket_update_acc_prof_id(kal_uint32 acc_prof_id, const WCHAR* account_name, myapp_apn_struct apn_param, cbm_sim_id_enum sim) srv_dtcnt_result_enum ret; srv_dtcnt_store_prof_data_struct prof_info; srv_dtcnt_prof_gprs_struct prof_gprs; int i; MMI_ASSERT(apn_param.apn != NULL); memset(&prof_gprs, 0, sizeof(prof_gprs); prof_gprs.APN = apn_param.apn; prof_f_common_header.sim_info = sim + 1; prof_f_common_header.AccountName = (const U8*)account_name; /if (accountInfo) prof_f_common_header.Auth_info.AuthType = apn_param.authentication_type; strcpy(char*)prof_f_common_header.Auth_info.UserName, apn_param.user_name); strcpy(char*)prof_f_common_header.Auth_info.Passwd, apn_param.password); for(i = 0; i 4; i+) prof_f_common_header.PrimaryAddri = apn_param.dnsi; prof_f_common_header.acct_type = SRV_DTCNT_PROF_TYPE_USER_CONF; prof_f_common_header.px_service = SRV_DTCNT_PROF_PX_SRV_HTTP; if(app_stricmp(char*)apn_param.apn, (char*)cmwap) = 0) prof_f_common_header.use_proxy = KAL_TRUE; prof_f_common_header.px_addr0 = 10; prof_f_common_header.px_addr1 = 0; prof_f_common_header.px_addr2 = 0; prof_f_common_header.px_addr3 = 172; prof_f_common_header.px_port = 80; strcpy(prof_f_common_header.HomePage, ); prof_f_data = &prof_gprs; prof_f_fields = SRV_DTCNT_PROF_FIELD_ALL; prof_f_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_f_common_header.AccountName, prof_gprs.APN, DATA_ACCOUNT_BEARER_GPRS, prof_f_common_header.acct_type, 1, prof_f_common_header.sim_info, prof_f_common_header.read_only); return TRUE; else return FALSE; static kal_uint32 socket_find_acc_prof_id(const WCHAR* account_name) int i, j; srv_dtcnt_result_enum ret; srv_dtcnt_store_prof_qry_struct store_prof_qry; srv_dtcnt_prof_str_info_qry_struct prof_str_info_qry; U16 nameSRV_DTCNT_PROF_MAX_ACC_NAME_LEN + 1 = 0; for(j = 0; j SRV_SIM_CTRL_MAX_SIM_NUM; +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 store_prof_qry.num_ids; +i) prof_str_info_qry.dest = (S8*)name; prof_str_info_qry.dest_len = sizeof(name); srv_dtcnt_get_account_name(store_prof_qry.idsi, &prof_str_info_qry, SRV_DTCNT_ACCOUNT_PRIMARY); if(kal_wstrcmp(account_name, name) = 0) return store_prof_qry.idsi; return -1;static kal_uint32 myapp_socket_add_acc_prof_id(const WCHAR* account_name) srv_dtcnt_store_prof_data_struct store_prof_data; srv_dtcnt_prof_gprs_struct prof_gprs; kal_uint32 acc_prof_id; srv_dtcnt_result_enum ret; memset(&prof_gprs, 0, sizeof(prof_gprs); prof_gprs.APN = cmwap;/ 这个值在应用使用的时候会修改的 prof_f_common_header.sim_info = SRV_DTCNT_SIM_TYPE_1; prof_f_common_header.AccountName = (const U8*)account_name; prof_f_common_header.acct_type = SRV_DTCNT_PROF_TYPE_USER_CONF; prof_f_common_header.px_service = SRV_DTCNT_PROF_PX_SRV_HTTP; prof_f_common_header.use_proxy = KAL_TRUE; prof_f_common_header.px_addr0 = 10; prof_f_common_header.px_addr1 = 0; prof_f_common_header.px_addr2 = 0; prof_f_common_header.px_addr3 = 172; prof_f_common_header.px_port = 80; strcpy(prof_f_common_header.HomePage, ); store_prof_f_data = &prof_gprs; store_prof_f_fields = SRV_DTCNT_PROF_FIELD_ALL; store_prof_f_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_f_common_header.AccountName, prof_gprs.APN, DATA_ACCOUNT_BEARER_GPRS, prof_f_common_header.acct_type, 1, prof_f_common_header.sim_info, prof_f_common_header.read_only); else acc_prof_id = -1; return acc_prof_id;static kal_uint32 socket_find_acc_prof_id_by_apn(const char* apn, cbm_sim_id_enum sim) extern srv_dtcnt_store_info_context g_srv_dtcnt_store_ctx; int i; for(i = 0; i = 0 & id = 0) soc_close(g_socket_content.soc_id); socket_clear_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)myapp_socket_notify); void myapp_socket_notify(void * inMsg) /*-*/ /* Local Variables */ /*-*/ app_soc_notify_ind_struct *soc_notify = (app_soc_notify_ind_struct*) inMsg; kal_int8 ret; S16 Error; switch(soc_notify-event_type) case SOC_WRITE: break; case SOC_READ: myapp_Socket_HTTP_Receive(); break; case SOC_CONNECT: if(soc_notify-result) myapp_Socket_Send_Data(); else /SIM卡信号不好会走到这里 break; case SOC_CLOSE: myapp_Socket_HTTP_Close(); break; default: break; MMI_BOOL myapp_socket_get_host_by_name_ind(void *inMsg) /*-*/ /* Local Variables */ /*-*/ app_soc_get_host_by_name_ind_struct *dns_ind; kal_uint8 em_app_id; int i; /*-*/ /* Code Body */ /*-*/ if(!inMsg) dns_ind = (app_soc_get_host_by_name_ind_struct*) inMsg; socket_clear_protocol_event_handler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND, (PsIntFuncPtr)myapp_socket_get_host_by_name_ind); /* Check if the result is OK */ if(dns_ind-result = KAL_TRUE) g_socket_content.soc_addr.addr0 = dns_ind-addr0; g_socket_content.soc_addr.addr1 = dns_ind-addr1; g_socket_content.soc_addr.addr2 = dns_ind-addr2; g_socket_content.soc_addr.addr3 = dns_ind-addr3; if(myapp_Socket_HTTP_Connect() = KAL_TRUE) myapp_Socket_Send_Data(); else return MMI_TRUE;void myapp_socket_get_host_by_name(const kal_uint8 *hostname) /*-*/ /* Local Variables */ /*-*/ kal_int32 ret; char rcvd_buffer200 = 0; kal_uint32 rcvd_counter = 0; /*-*/ /* Code Body*/ /*-*/ ret = soc_gethostbyname( KAL_FALSE, MOD_MMI, (kal_int32) 1, (kal_char*) hostname, (kal_uint8*) &rcvd_buffer, (kal_uint8*) &rcvd_counter, 0, g_socket_content.nwt_account_id); if(ret = SOC_SUCCESS) g_socket_content.soc_addr.addr0 = rcvd_buffer0; g_socket_content.soc_addr.addr1 = rcvd_buffer1; g_socket_content.soc_addr.addr2 = rcvd_buffer2; g_socket_content.soc_addr.addr3 = rcvd_buffer3; if(myapp_Socket_HTTP_Connect() = KAL_TRUE) myapp_Socket_Send_Data(); else if(ret = SOC_WOULDBLOCK) /* waits for APP_SOC_GET_HOST_BY_NAME_IND */ socket_set_protocol_event_handler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND, (PsIntFuncPtr)myapp_socket_get_host_by_name_ind, TRUE); else if(ret = SOC_ERROR) http_socket_output_result(SOC_HTTP_CON_ERROR); else http_socket_output_result(SOC_HTTP_CON_ERROR); kal_bool myapp_Socket_HTTP_Connect(void) /*-*/ /* Local Variables */ /*-*/ kal_int8 sd, ret; kal_uint8 val; /*-*/ /* Code Body */ /*-*/ if(g_socket_content.soc_state = SOC_HTTP_REQ_CONNECTONED) return KAL_TRUE; if(g_socket_content.soc_state = SOC_HTTP_STATE_CREATED) socket_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)myapp_socket_notify, TRUE); ret = soc_connect(g_socket_content.soc_id, &g_socket_content.soc_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业支付房屋管理制度
- 业务能力提升管理制度
- 人员培训教育管理制度
- 中介合同使用管理制度
- 上海团队绩效管理制度
- 临时办公人员管理制度
- 有机肥行业 研究报告
- 中国古代政治管理制度
- 陶瓷基板可行性研究报告
- 中学视频监控管理制度
- 2025国培研修计划
- 等级医院评审材料-POCT质量管理手册
- 中华人民共和国科学技术普及法宣贯培训2024
- 财务风险隐患排查
- 金属加工安全操作规程制定
- 整本书阅读:《乡土中国》(考教衔接讲义)-2025年高考语文一轮复习(新教材新高考)
- 信息安全风险评估报告和风险处理计划
- 腹部带蒂皮瓣手术的护理
- 公司安全生产事故隐患内部报告奖励工作制度
- GB 20128-2024惰性气体灭火剂
- 管道焊接劳务承包合同
评论
0/150
提交评论