#ifdef __cplusplus //20070613 add for simulator
extern "C" {
#endif
NVRAM_EF_PHB_COMPARE_DIGIT_DEFAULT 电话本比较的位数
MTK平台的UA内置方法:
custom_wap_config.h文件里头的
#define WAP_CUSTOM_CFG_DEFAULT_UA_HEADER "MAUI WAP Browser"
#define WAP_CUSTOM_CFG_DEFAULT_MMS_UA_HEADER "MAUI MMS User Agent"
这两项引号中的红体字部分内容替换为我们提供的有效UA!
"LCT_D800B_01/1.0 Nucleus/1.13.21 MTK6225/07A Release/5.1.2008 Browser/TelecaQ03C1 Profile/MIDP-2.0 Configuration/CLDC-1.1"
电池显示六格的问题:
3520000, 3570000, 3680000, 3780000,
3890000, 3950000, 4000000, 4090000, 9999999,
#define NVRAM_EF_CUST_HW_LEVEL_TBL_SIZE 444
#define BATTERY_MAX_LEVEL 11
gui_fixed_menuitems.c
(pixtel_UI_show_fixed_fullscreen_page_menuitem())
gui_fixed_menus.c (g_MainMenu_Item_Poistion 数组存放9宫格的坐标值)
show_fixed_list调用下面函数
(pixtel_UI_show_fixed_list_menu()调用DrawMainMenuBgImageContext()画选中位置的图片)
CustMenuRes.c const CUSTOM_MENU nCustMenus[]所有屏幕画面的参数 菜单ID 父菜单ID 子菜单个数 等等,结构描述如下:
//The Below is the structure of the MenuItem which can be transfered to any screen.
typedef struct Custom_MenuItem
{
U16 nMenuItemId; //Unique Id for each MenuItem.
U16 nParentId; //ItemId of the parent if 0(zero) then no parent.
U16 nNumofMenuItem; //Number of Children it has.
U16 nHideFlag; //This is a flag to mask/hide.(not sure currently)
U16 nMovable; //This is a flag for moving like 0-NotMovable Anywhere,
//1-Movable within the same parent..etc
U16 nDispAttribute; //This is a display attribute flag like 1-list,2-Circular,3-Tab..etc.
U16 nStrId; //Unique StringId of the MenuItem.
U16 nImageId; //Unique Image of the MenuItem.
U16 *nOrderMenuItemId; //ItemId of the children in Sequence
}CUSTOM_MENU;
目录结构: plutommi
Alarm 闹钟
AsyncEvents 异步事件和硬件协议事件的处理
Audio 声音管理
Calendar 日历
CallManagement 电话呼叫
Calls 辅助服务
CommonScreens 所有应用的公用屏幕
Data Time 日期和时间的实现
Debug 包含.obj文件并且是正在工作的文件夹
DebugLevel 管理debug日志的MACROS
Demo 一个demo应用
Framework 管理应用消息,流程控制和操作系统封装
EventHandling
FileSystem
History
NVRAMManager
Osl
Tasks
FunandGames FunandGames的应用
GPIO 处理不同的外部设备例如:背光,震动,led
GUI 管理UI的相关函数
IdleDemo 待机应用和事例
Inc 所有应用的共享文件
MiscFramework Pixtel MMI平台管理字体unicode的支持。
Organizer
PhoneBook 电话簿
Profiles
SAT sim卡应用的工具箱
Settings 设置应用
Shortcuts 快捷应用
ToDoList
pixtelmmi.cpp
MtkWinMainStart()函数开始application--------(TaskInit.c)InitApplication()
create/init trace机制,task队列,信号,线程等
(MMITask.c)MMI_task()
while(1)
读消息从循环队列中读消息,成功的情况下读task队列,根据队列id号生成一个task.同时调用该task.
POWER_ON_KEYPAD:
InitializeAll()(初始framework):(InitUnicodeSupport()
gdi_init()
InitMMIUsbContext()(如果支持usb)
mmi_irda_init_cntx() //如果支持红外的话 mmi_irda_set_recv_files_cnt() // InitProtocolEvents() initFramework()
InitHardwareEvents()
InitTime() // InitMMI_App()
PopulateResData() //通用资源数据
InitNvramData() //初始化的数据
EntryCalibrationSettingScr
mmi_bootup_exit_disk_check
mmi_pwron_entry_animation_screen() //开机动画 FlightModeCheckBeforeAnimation //开机显示动画
Res_MainMenu.c PopulateMainMenuRes() 增加主菜单!
PopulateRes.c PopulateMainMenuRes()
RegisterHighlightHandler() 注册高亮显示
mainmenu.c
goto_main_menu()
RegisterHighlightHandler(main_menu_custom_highlight_handler);//判断是否播放声音
ShowCategory14Screen() //显示主菜单(wgui_categories_MM.c)
case PAGE_MENU:
register_fixed_list_highlight_handler(category14_main_menu_list_highlight_handler);
(category14_main_menu_list_highlight_handler)
DrawMainMenuBgImageContext()画选中位置的图片
LCD_CLAM_OPEN_HALFLITE_TO_OFF_TIME 背光半黯时间
pixtel_UI_measure_image() //获取被给图象的宽高!
/mmi/setting/风格设置保存在nvram中,initphonesetupcntx()时读取.
gui_fixed_menus.c
定义mainmenu_item_position
GlobalConstants.h 定义
///
mmitask 的while循环内接收消息ProcessPCKeyEvent()----Osl/KeyBrd.c
处理ProcessKeyEvent(),发送按键事件到mmitask
调用ExecuteCurrKeyHandler() 根据消息找到对应的按键-----Events/Events.c
left_softkey_up()----执行当前按键对应的处理函数--left_softkey_functions[KEY_EVENT_UP]()
(通过SetLeftSoftkeyFunction()设置的按键和函数对应关系)找到需要处理的对应函数
-----wgui_softkey.c
get_softkey_function //取得按键函数
custom_nvram_editor_data_item.h 私有标识
CustResDefYJG_M100_01.h 快捷键
custom
audio
项目目录
resource_audio.h(声音资源定义)
resource_audio.c(声音资源内容)
编译过程:
/MCU/make.bat 调用/tools/下的make.exe -f gsm2.mak
gsm2.mak 执行操作,并且执行comp.mak 连接组件库
$(CUSTOMER)_$(PROJECT).mak (Monza_GPRS.mak) //客户工程的私有配置,包括预处理,include路径,模块
Option.mak 工程的通用选项,宏定义。
Verno_Monza.mak 版本号
GSM2.mak (主build脚本)
Monza_GPRS.mak (客户工程build脚本)
Comp.mak (组件模块build脚本)
模块的option文件
*.lis (模块的源代码列表)
*.def (模块的私有便宜预定义)
*.pth (模块的源代码目录路径)
*.inc (模块的头文件目录路径)
~buildinfo.tmp ---------Gsm2.mak Option.mak
~compbld.tmp ---------组件模块需要的编译信息
...............................................................................................
Setting
说明:系统初始化时初始化sethighlitehandler函数,使菜单id和对应highlite函数相绑定,相对应。
当进入该菜单时,例如Setting菜单: EntryScrSettingMenu() 注册对应的执行highlight的函数。
然后刷新屏幕
从MainMenu.c(hightlight_mainmenu_settings())进入。
hightlight_mainmenu_settings是从initalize_main_menu_application函数SetHiliteHandler
EntryPhnsetScrSvr
EntryPhnsetScrSvrSettings
EntryPhnsetScrSvrSystem
EntryPhnsetScrSvrSysView
EntryPhnsetScrSvrSelect
EntryPhnsetScrSvrDwnl
EntryPhnsetScrSvrDwnlView
initialize_gui
set_MMI_theme((MMI_theme *)MMI_themes[0]); //初始化theme
wgui_EMS_input_information_background()----wgui_ems_categories.c
-------UI_fill_rectangle() ----wingui.c
gui_themes.c set_mmi_theme(t)-----current_mmi_theme=t 设置整体风格
wgui.c initialize_gui() 初始化设置整体风格
void custom_drv_init(void)
{
。。。
//add for sim_change
{ //sim卡互换代码
extern void sim_switchPhysicalSlotMapping(kal_bool); //添加部分
sim_switchPhysicalSlotMapping(KAL_TRUE); //添加部分
}
}
各Feature 定义规则:
平台项目:原则上定义为:SLT_MMI
平台系列项目:原则上定义为:SLT_<系列项目名称>_MMI
模块名称 缩写 格式 备注
短消息 SMS __SLT_MMI_SMS_XXX__
彩信 MMS __SLT_MMI_MMS_XXX__
WAP WAP __SLT_MMI_WAP_XXX__
聊天 CHAT __SLT_MMI_CHAT_XXX__
语音信箱 VM __SLT_MMI_VM_XXX__
小区广播 CB __SLT_MMI_CB_XXX__
呼叫记录 CH __SLT_MMI_CH_XXX__
通话 CC __SLT_MMI_CC_XXX__
通话计费 AOC __SLT_MMI_AOC_XXX__
情景模式 PRF __SLT_MMI_PRF_XXX__
设置 ST __SLT_MMI_ST_XXX__
附加业务 SS __SLT_MMI_SS_XXX__
Camera CAM __SLT_MMI_CAM_XXX__
Audio AUD __SLT_MMI_AUD_XXX__ 包括mp3,铃声相关
Video VID __SLT_MMI_VID_XXX__
Sound Record SR __SLT_MMI_SR_XXX__
Alarm ALM __SLT_MMI_ALM_XXX__
日历 CLN __SLT_MMI_CLN_XXX__
其他应用 OTH __SLT_MMI_OTH_XXX__
GAME GAME __SLT_MMI_GAME_XXX__
我的资料 FMGR __SLT_MMI_FMGR_XXX__
STK STK __SLT_MMI_STK_XXX__
电话本 PHB __SLT_MMI_PHB_XXX__
##连接符号
#双引号
例:
#define paster( n ) printf( "token" #n " = %d", token##n )
If a macro is called with a numeric argument like
paster( 9 );
the macro yields
printf( "token" "9" " = %d", token9 );
which becomes
printf( "token9 = %d", token9 );
音频格式
mp3 :5
mid: 17