为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

pdp激活代码流程和注意事项

2012-09-26 3页 doc 29KB 60阅读

用户头像

is_498946

暂无简介

举报
pdp激活代码流程和注意事项pdp激活代码流程和注意事项 pdp激活代码流程和注意事项 最近发现一些客户在我们平台开发socket应用时,总是对pdp的激活流程存在问题,激活不成功。 整理了下面的pdp激活的步骤(需要三个步骤)和示例代码,供开发者参考: 假设应用g_test_app需要激活pdp连接,该应用的定义和回调函数如下: MMI_APPLICATION_T g_test_app = {0};  g_test_app.Processmsg = HandleTestPsMsg; 步骤1:在mmk_regapp.def中给新应用注册pdp激活消息...
pdp激活代码流程和注意事项
pdp激活代码流程和注意事项 pdp激活代码流程和注意事项 最近发现一些客户在我们平台开发socket应用时,总是对pdp的激活流程存在问题,激活不成功。 整理了下面的pdp激活的步骤(需要三个步骤)和示例代码,供开发者参考: 假设应用g_test_app需要激活pdp连接,该应用的定义和回调数如下: MMI_APPLICATION_T g_test_app = {0};  g_test_app.Processmsg = HandleTestPsMsg; 步骤1:在mmk_regapp.def中给新应用注册pdp激活消息(非必须步骤,请认真查看下面的注意事项): REG_APP(APP_MN_ACTIVATE_PDP_CONTEXT_CNF,APP_MN_ACTIVATE_PDP_CONTEXT_CNF,&g_test_app); 步骤2:设置pdp激活需要的参数,发起pdp激活的请求: error = MNGPRS_SetPdpContextPcoEx(g_sim_select, 1, userpsw, userpsw); //用户名,密码设置 error = MNGPRS_SetAndActivePdpContextEx(MN_DUAL_SYS_1,APN,IM_E); //发起请求 if(ERR_MNGPRS_NO_ERR == error ) {  //注意:此处什么都不做,返回no_err仅仅代pdp激活请求已经发送,不代表pdp已经激活!  } 步骤3:在app的回调函数中处理收到的协议消息: LOCAL MMI_RESULT_E HandleTestPsMsg(PWND app_ptr, uint16 msg_id, DPARAM param) {     ...     MMI_GPRS_T *signal_ptr = (MMI_GPRS_T *)param;         SCI_PASSERT(NULL != app_ptr); if(FALSE == g_testapp_is_active) {     retrun MMI_RESULT_FALSE; //注意:如果当前应用没有激活,则必须返回FALSE,使得消息可以分发给注册比较晚的应用 }        switch(msg_id)     {         case APP_MN_ACTIVATE_PDP_CONTEXT_CNF:         {             if(MN_GPRS_ERR_SUCCESS == signal_ptr->result)             {                 //PDP激活成功                 ...             }             else if (MN_GPRS_ERR_TEMPORARILY_BLOCKED == signal_ptr->result || MN_GPRS_ERR_RETRYING == signal_ptr->result)             {                 //PDP暂未激活成功,MMI可间隔一段时间再试,重试1~3次                 ...             }             else             {                 //PDP激活失败                 ...             }             break;         }//APP_MN_ACTIVATE_PDP_CONTEXT_CNF         ...     }     ... ) 步骤4:在wap应用的回调函数中增加代码,使得优先让新应用处理消息,蓝色为增加的代码(非必须步骤,请认真查看下面的注意事项): LOCAL MMI_RESULT_E HandleWapPsMsg(PWND app_ptr, uint16 msg_id, DPARAM param) {   ...... //变量初始化,代码略 //优先让新应用处理消息 if(TRUE == g_testapp_is_active) {      HandleTestPsMsg(app_ptr, msg_id, param); } //下面为wap应用对相关消息的处理 switch()msg_id {     ...... } ...... } 【注意事项-----------------------------------------------我很重要,一定要看哦------------------------------------------注意事项】 1.pdp激活流程有两种实现方法: 1).新应用不注册pdp激活的消息,由于wap模块已经注册过了,因此只需在wap的回调函数中增加自己的回调函数并优先处理就可以了. 此种方式结合上面的顺序,激活的流程为:步骤2-> 步骤3-> 步骤4; 2).新应用为了更好的模块化,减少模块之间的耦合性,不在wap的回调函数中处理,那就需要给自己应用注册pdp激活消息,然后在自己的回调函数中处理即可。 此种方式结合上面的顺序,激活的流程为:步骤1-> 步骤2-> 步骤3; 2.客户采用第一种方式.因为相对比较简单一些,现在大部分应用如mms,qq等都采用该方式,该方式的优点是:简单,方便,缺点是增加了模块之间的耦 合性。第二种方法的优点是更符合模块化原则,如果一定要采用第二种方式,切记:一定要放在mmk_regapp.def中靠前的位置(具体点就是需要在wap注册该 消息之前完成新应用的消息注册),否则会导致新应用一直收不到pdp激活的消息.这个原因是目前平台的外部消息处理机制是:优先注册,优先享受。并且同 一个消息,如果前面应用处理后,返回TRUE(告诉底层这个消息处理结束啦),则该消息不会被分发给后面的应用,导致后面的应用等死也收不到该消息。 3.pdp激活流程是不能在仿真器上调试的。如果需要在仿真器调试socket应用,可以将pdp激活代码用WIN32宏隔开,在WIN32下直接进行socket相关操作就可 以了. 4. 以上代码仅仅是逻辑流程,不包含异常处理,请知悉。 【注意事项-----------------------------------------------我很重要,一定要看哦------------------------------------------注意事项】
/
本文档为【pdp激活代码流程和注意事项】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索