|
以前有位兄弟发帖问过同样的问题http://www.52rd.com/bbs/Detail_RD.BBS_170226_5_1_1.html,不过PM他没回音,也没找到解决办法,这里再请教一下诸位:
借用以前那帖的图:
我的情况和这个相同,catcher看到[1] Assert fail: 0 abm_api.c 193,发现是在MSG_ID_APP_CBM_BEARER_INFO_IND的回调函数mmi_cbm_bearer_status_info_ind_hdlr里执行函数return_val = abm_get_registered_app_info(acct_info.app_id, ®ister_info);时进入assert从而机器重启。
这里的acct_info.app_id是通过上一语句cbm_decode_data_account_id_ext(bearer_info->account_id, &acct_info);得到,为0,和一开始cbm_register_app_id得到的返回值4不同。而bearer_info->account_id为10,和前面得到的accountID相同。
我将bearer_info->account_id直接赋为4,则abm_get_registered_app_info顺利通过,能跑进MSG_ID_APP_SOC_NOTIFY_IND的回调。
看上去是cbm_decode_data_account_id_ext得到的app id有问题,可为什么出现这情况?[em13]
得到account ID和app ID的代码如下,有问题没?
- accountID = custom_get_csd_profile_num();
- appID = cbm_register_app_id(STR_ID_XXX_MAIN, GetRootTitleIcon(MENU_ID_XXX));
- /*
- //demo里用的这个函数得到account_id, app_id则是自定义的枚举变量。
- account_id = cbm_encode_app_id_data_account_id(account_id, app_id);
- */
- #ifdef __MMI_DUAL_SIM_MASTER__
- {
- E_MTPNP_AD_SIMCARD_USABLE_SIDE state = MTPNP_AD_Get_UsableSide();
- KKISP_TRACE("E_MTPNP_AD_SIMCARD_USABLE_SIDE state:%d", state);
- switch(state)
- {
- case MTPNP_AD_DUALSIM_USABLE:
- case MTPNP_AD_SIMCARD1_USABLE:
- accountID = cbm_encode_data_account_id(accountID, 0, appID, 0);
- break;
- case MTPNP_AD_SIMCARD2_USABLE:
- accountID = cbm_encode_data_account_id(accountID, 1, appID, 0);
- break;
- default:
- accountID = 10;
- break;
- }
- }
- #endif
复制代码
有知道的兄弟,还望不吝赐教[em26] |
|