MTK6226-DS-PHB-SIMB-Load

本文深入解析电话簿菜单资源结构、加载与初始化过程,包括电话簿的选项、资源加载方法、初始化步骤及开机获取电话簿条目的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、电话簿菜单资源结构

MAIN_MENU_PHONEBOOK_MENUID

MENU_ID_PHB_QUICK_SEARCH

       MITEM101_PBOOK_SEARCH_ENTRY,

MITEM111_PBOOK_VIEW_ENTRY,

              MITEM111_PBOOK_VIEW_SIMA_ENTRY,

              MITEM111_PBOOK_VIEW_SIMB_ENTRY,

              MITEM111_PBOOK_VIEW_PHONE_ENTRY,

              MITEM111_PBOOK_VIEW_ALL_ENTRY,

       MITEM102_PBOOK_NEW_ENTRY,

                     MITEM_ADD_ENTRY_TO_SIM,

                     MENU_MTPNP_PB_ADD_SIM2,

                     MITEM_ADD_ENTRY_TO_PHONE,

       MITEM104_PBOOK_COPY_ALL,

                     MITEM_PBOOK_COPY_ALL_SIM,

                     MENU_MTPNP_PB_COPYALL_SIM2TOPHONE,

                MITEM_PBOOK_COPY_ALL_PHONE,

               MENU_MTPNP_PB_COPYALL_PHONETOSIM2,

MITEM103_PBOOK_DELETE_ALL,

              MITEM_PBOOK_DELETE_ALL_SIM,

              MENU_MTPNP_PB_DELALL_SIM2,

              MITEM_PBOOK_DELETE_ALL_PHONE,

              MENU_ID_PHB_DELETE_ALL_ONE_BY_ONE,

       MITEM109_PBOOK_CALLER_GROUPS

       MITEM111_PBOOK_IMPORTOUTPORT_ENTRY

                     MITEM111_PBOOK_OUTPORTTOFILE_ENTRY,

                     MITEM111_PBOOK_IMPORTFROMFILE_ENTRY

       MITEM110_PBOOK_SETTINGS

 

进入某个entry的option选项:

MITEM101_PBOOK_VIEW_OPTIONS

       MENU_ID_PHB_OPTION_IP_DIAL  

       MITEM1010_PBOOK_VIEW,

MITEM1011_PBOOK_EDIT,

       MITEM1012_PBOOK_DELETE

       MITEM1013_PBOOK_COPY_ENTRY,

       MITEM1014_PBOOK_MOVE,

       MENU_ID_PHB_OPTION_SEND_SMS,

MENU_ID_PHB_OPTION_SEND_MMS,

 

 

Copy菜单:

MITEM1013_PBOOK_COPY_ENTRY

       MENU_MTPNP_PB_MOVE_SIM1TOPHONE,

              MENU_MTPNP_PB_MOVE_PHONETOSIM1,

              MENU_MTPNP_PB_MOVE_SIM2TOSIM1,

              MENU_MTPNP_PB_MOVE_SIM1TOSIM2,

              MENU_MTPNP_PB_MOVE_SIM2TOPHONE,

              MENU_MTPNP_PB_MOVE_PHONETOSIM2,

Delete菜单:

MITEM1014_PBOOK_MOVE

       MENU_MTPNP_PB_MOVE_SIM1TOPHONE,

MENU_MTPNP_PB_MOVE_PHONETOSIM1,

MENU_MTPNP_PB_MOVE_SIM2TOSIM1,

MENU_MTPNP_PB_MOVE_SIM1TOSIM2,

MENU_MTPNP_PB_MOVE_SIM2TOPHONE,

MENU_MTPNP_PB_MOVE_PHONETOSIM2,

 

 

二、资源加载和初始化

InitializeAll( )

       //加载资源

       PopulateResData( )

              PopulateMainMenuRes( )

              PopulatePbResData( )                      //此函数加载的是A卡和B卡的资源(部分B卡资源没有加载)

              populateSettingMenu( )

              PopulateCmResData( )

              PopulateCallHistoryRes( )

 

              #ifdef __MMI_UCM__

          UCMResourceData();

#endif

 

              #ifdef __MMI_DUAL_SIM_MASTER__

          Mercury_ResPopulate();                          //加载B卡的资源

#endif

 

 

       //初始化设置

       InitCallManagement( )

       mmi_ucm_init( )

       InitCallLogs( )

      

       #ifndef __MMI_DUAL_SIM_DUAL_CALL_SLAVE__

    MMI_APP_INIT(mmi_phb_init_protocol()); 设置协议栈函数,初始化全局变量g_phb_cntx

#endif

      

       #ifdef __MMI_UCM__

    MMI_APP_INIT(mmi_idle_init_dial_pad_option());

#endif

 

       #if defined(__MMI_DUAL_SIM_MASTER__)

MMI_APP_INIT(MTPNP_PFAL_Init());            设置B卡菜单的高亮相应函数

             MTPNP_PFAL_ADN_Init()             设置B卡电话簿相关菜单的响应函数

                    SetSlaveProtocolEventHandler(MTPNP_PFAL_ADN_phb_ind_update, PRT_PHB_UPDATE_IND);

                    猜测:B卡的PHB操作(edit, add, delete),Call History操作都是在MTPNP_PFAL_ADN_phb_ind_update()中处理。

#endif

 

 

三、开机获取PHB all entries

  当所有电话簿从L4C传送到MMI之后,L4C返回消息:PRT_PHB_STARTUP_FINISH_IND,进入响应:mmi_phb_ind_startup_finish( )。

在单模项目中,这个函数的最后是直接进入mmi_phb_sort_build_name_index()对g_phb_name_index[]进行排序,然后进入

mmi_phb_init_build_lookup_table()装载和排序LookUpTable[]。

但是在6226-DS双模项目中,在mmi_phb_ind_startup_finish( )的最后是进入:mmi_phb_startup_finish_final_step()。此函数会呼叫函数:

MTPNP_PFAL_ADN_Is_PHB_Before_Sort()来判断Slave_g_phb_startup_before_sort的值,

如果为TRUE,表示B卡的电话簿已经获取完毕,然后就可以排序g_phb_name_index[],装载排序LookUpTable[]。

但是此时由于B卡电话簿还没有获取,Slave_g_phb_startup_before_sort = FALSE,因此就直接退出了。

 

获取BPHB entries

L4C2返回消息:XXX(隐藏),进入:

MTPNP_PFAL_ADN_HandleReadSuccessEntry()

       store_index = mmi_phb_get_max_pb_sim_entries() + mmi_phb_get_max_pb_phone_entries() + info->record_index - 1;

                     可见:PhoneBook[]的存储位置是:Phone + SIM A + SIM B

       把返回的信息加入到PhoneBook[]中

       #if defined(__MMI_PHB_PINYIN_SORT__)

          mmi_phb_util_make_pinyin_cache(store_index);

#endif

       g_phb_name_index[PhoneBookEntryCount] = index;

      PhoneBookEntryCount++;

 

当B卡的所有电话信息返回到MMI后,L4C2返回消息:XXX(隐藏),进入:

MTPNP_PFAL_ADN_HandleLoadFinish()

       g_phb_cntx.refresh_list = MMI_PHB_ENTRY_REFRESH;

PhoneBookEntryCount = MTPNP_PFAL_ADN_GetMasterPhoneCount() + MTPNP_AD_ADN_SIM2GetUsedNumber();

       设置一些B卡的PHB信息

       if (MTPNP_AD_FDN_GetStatus())

        MTPNP_PFAL_ADN_fdn_get_list_to_ram();

   else

        MTPNP_PFAL_ADN_after_fdn_get_list_to_ram();

                    

MTPNP_PFAL_ADN_after_fdn_get_list_to_ram()

       MTPNP_PFAL_ADN_Set_Is_PHB_Before_Sort(MTPNP_TRUE);       设置Slave_g_phb_startup_before_sort=TRUE

    mmi_phb_startup_finish_final_step();

              此时条件都满足,因此进入mmi_phb_sort_build_name_index();对g_phb_name_index[]排序,然后进入mmi_phb_ind_startup_finish_after_name_sort();装载LookUpTable[]并排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七斗星

赏点银子去植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值