一、电话簿菜单资源结构

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[]并排序。

MTK6226-DS-PHB-SIMB-Load相关推荐

  1. apppath php,App.php

    ## 引导文件定义 > App.php执行应用文件位于`thinkphp/library/think/App.php`,调用`init()`初始化方法,具体内容如下: ``` private s ...

  2. 操作系统学习:内存分页与中断

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 ps:基于x86硬件的pc系统 内存分页机制 内存信息的获取 在进行内存分页之 ...

  3. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  4. lvs集群基础及lvs-nat、dr、fwm实践

    集群基础知识点: 集群类型:LB.HA.HP.DS LB:load balance,负载均衡集群,director:负载均衡器或者调度器,上游服务(upstream server),后端服务器称为re ...

  5. 我是如何学习写一个操作系统(三):操作系统的启动之保护模式

    前言 上一篇其实已经说完了boot的大致工作,但是Linux在最后进入操作系统之前还有一些操作,比如进入保护模式.在我自己的FragileOS里进入保护模式是在引导程序结束后完成的. 实模式到保护模式 ...

  6. Extjs FormPanel/TabPanel/GridPanel混合

    tabPanel包含两个FormPanel Ext.onReady(function () {var tabsDemo = new Ext.TabPanel({renderTo: Ext.getBod ...

  7. cmd指令大全指令_汇编语言常用指令大全

    MOV 指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器 ...

  8. Microsoft Visual Studio 2005中使用水晶报表

    Microsoft Visual Studio 2005中使用水晶报表 沈阳 王智 OICQ:16994162 http://wangzhihome.51.net/ 2006-4-11 如有转贴请注明 ...

  9. 【原】hive 操作笔记

    1.建表: hive> CREATE TABLE pokes (foo INT, bar STRING); hive> CREATE TABLE invites (foo INT, bar ...

  10. hive取mysql数据oracle数据,Hive安装过程(mysql/oracle存储元数据)详解

    Hive安装过程(mysql/oracle存储元数据) 前置条件: - mysql数据库已经安装成功 - hadoop环境已经配置正确,且可以提供正常服务 说明: -由于资源有限,下面配置的hadoo ...

最新文章

  1. Tomca的启动与关闭
  2. Asp.Net Core异常处理整理
  3. 简化工作——我的bat文件
  4. 李洋疯狂C语言之求素数的方法
  5. java 开发环境的搭建
  6. Codeforces Round #445 div.2 D. Restoration of string 乱搞
  7. 日志系统实战(二)-AOP动态获取运行时数据
  8. 面试小题,传入6返回9,传入9返回6
  9. [转]struct和class的区别 观察者模式 https连接 点击button收到点
  10. 信息工程与计算机科学就业前景,信息与计算机科学就业前景及方向揭秘
  11. 家庭计算机如何共享打印机共享,win7系统怎么设置家庭组共享打印机
  12. Html画组织架构图
  13. Flutter 仿网易云音乐App
  14. 2023移动光猫H2-2超级密码获取教程(可改桥接)
  15. 【warm up】热身训练 的学习率设置
  16. 3年车载测试人员的经验总结分享
  17. 语音特征MFCC和PLP
  18. 代理服务器 (proxy) 的使用
  19. JS中的arguements到底是个啥?
  20. Android安全测试用例(网络资源学习记录)

热门文章

  1. MySQL 通过子查询批量插入数据
  2. 从 0 到 1 开发一个聊天通讯 服务 复盘总结
  3. deepin20如何换源_Deepin更换镜像源
  4. 备份android分区,安卓手机手动【备份+还原】分区
  5. 搜狗输入法中文状态下开启和关闭英文自动提示
  6. Algorithm Gossp (18) 最大公因数、最小公倍数、因式分解
  7. C++ opencv 识别火焰 (代码)
  8. win10加装机械硬盘卡_以微软的技术实力,win10还会出现硬盘100%占用的问题,为什么呢...
  9. 百度地图实现测量面积和测量距离功能
  10. win10 + Ubuntu 18.04.1 LTS (Bionic Beaver) 双系统的安装配置