Chinaunix首页 | 论坛 | 博客
  • 博客访问: 857760
  • 博文数量: 133
  • 博客积分: 7117
  • 博客等级: 少将
  • 技术积分: 1846
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-16 21:30
文章分类

全部博文(133)

文章存档

2012年(1)

2011年(4)

2010年(2)

2009年(57)

2008年(69)

分类:

2009-05-27 16:38:29

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

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()  初始化设置整体风格

注:
MTK里每一个界面都有一个ENTRY函数,这个函数有两个主要作用,一是把界面都画了,二是把所有的按键消息都注册了.然后就退出函数了.在ENTRY 退出后,程序就在MMI_TASK这个函数里面循环地读消息,读到消息后,就会把消息分派到一些地方处理(具体如何分派还不清楚),如在ENTRY注册了 按键消息的CALLBACK,就会对应去调用.
还有一点比较特别,MTK里面有一个界面的管理机制,每个界面都有一个唯一的ID,ENTRY函数会为每个界面去注册ID.把界面的相关信息放到历史界面的队列里面.这个机制应该很好用.
阅读(3893) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-28 10:38:12

希望可以跟你好好学习一下

tlx362009-06-01 14:42:41

我要向您学习!