MTK-工作学习笔记

合集下载

MTK学习心得

MTK学习心得

MTK平台(1)¡¡如何添加一个窗体模板(一)窗体的重画通过观察可以发现,每个窗体模板都调用这样一个函数:dm_redra w_category_screen()。

这个函数便是显示窗体的函数。

它内部的实现是这样的:获得该窗体所包含的组件及它们的属性,再根据组件的类型和属性,调用不同的接口,逐一绘制各组件。

详细流程如下图所示:由上面的流程可见,无论是窗体所包含的组件,还是组件的属性,都是根据模板ID获取的。

那么现在摆在面前的有两个问题:一、模板ID是如何传递到这个函数中的;二、模板ID和窗体组件、组件的属性,是如何关联到一起的。

我们逐一解决这两个问题。

一、模板ID是如何传递到这个函数中的模板ID,是ShowCa tegory..Screen()过程中,所显示的界面的编号,千万不要与EntryNewScre en(scrID,¡) 函数中传入的窗口ID相混淆。

它们以¡MMI_¡为前缀,被定义在枚举型结构MMI_CATEGORY_ID_LIST中,又通过结构体dm_data_struct和它的全局结构体变量g_dm_data,在应用程序中被广泛使用。

先看看结构体dm_data_struct的定义:typedef struct{S32 s32ScrId;S32 s32CatId;S32 s32flags;}其中,s32ScrId是当前窗口ID,也就是我们使用EntryNewScreen ()时传入的那个参数;而s32Ca tId才是模板ID;最后的flag,是模板需要显示软键盘、清屏等动作时,所置的标志变量,它在上面提到的那个dm_redraw_category_screen()函数中被判断。

还是来重点看一下第2个结构体成员s32Ca teId的使用。

以ShowCategory6Screen() 为例。

这个显示模板的函数中,经常可以看到这样的语句:dm_data.s32ScrId = (S32)GetActiveScreenId();dm_data.s32CatId = MMI_CATEGORY6_ID;dm_data.s32flags = 0;dm_setup_data(&dm_data);再看dm_setup_data()干了什么:void dm_setup_da ta(dm_d ata_struct *dm_data){g_dm_da ta.s32CatId = dm_data->s32CatId;g_dm_da ta.s32ScrId = dm_da ta->s32ScrId;g_dm_da ta.s32flags = dm_data->s32flags;}这样,MMI_CATEGORY6_ID就被很自然的赋到g_d m_data.s32ScrId中了,然后随着这个全局变量,顺利的被带到了dm_redraw_ca tegory_screen()中。

MTK知识点小结

MTK知识点小结

14.一个窗体的绘制过程:
获取窗体模版的ID; // 这个在showcategory里面实现,dm_data.s32CatId =
MMI_CATEGORY52_ID;
根据模版的ID得到组件的集合和个数;
// control_set_ptr = dm_search_control_set((U16) g_dm_data.s32CatId,
SetParentHandler(MITEM_OPT_PSEUDO);
6、注册highlight 函数
RegisterHighlightHandler(ExecuteCurrHiliteHandler);
7、在已经获取了以上信息后,绘制当前的窗口:
ShowCategory1Screen(
STR_SCR1002_CAPTION,
3、获取列表窗口的子菜单数目;
number_of_items = GetNumOfChild_Ext(MITEM_OPT_PSEUDO);
4、获取要显示的字符串序列;
GetSequenceStringIds_Ext(MITEM_OPT_PSEUDO, list_of_items);
5、设置当前窗口的父窗口的ID;
6.BDN- barred dial number 禁止拨打的号码
7.ADN-Abbreviated Dialing Num 电话号码缩写
8.暗码:手机出厂时用来调试的一些指令。如*#06#
IM-Universal Subscriber Identity Module(全球用户识别卡)的缩写。全球用户身份模块(USIM),也叫做升级 SIM ,是在UMTS 3G 网络的一个构件。

MTK学习笔记

MTK学习笔记

1.如何判断手机中是否插入sim卡方法1:判断标志gInsertSimAppFlag是否为1,为1时,有SIM卡,为0时,无SIM卡方法2:if(g_pwr_context.PowerOnSIMStatus & MMI_SIM_STATUS_NOT_INSERT) return FALSE;elsereturn TRUE;方法3:IsSATPresent();为0时无SIM卡,为1时有SIM卡方法4:判断DRV_Reg(SIM_CTRL)的值,为1时有SIM卡,为0时,无SIM卡。

方法5:MTPNP_BOOL MTPNP_PFAL_Is_Card1Absent(void);MTPNP_BOOL MTPNP_PFAL_Is_Card2Absent(void);2.菜单隐藏的实现如在娱乐游戏下菜单隐藏,#if defined(DMG_SKIPEGG_DEF)if (0 == gInsertSimAppFlag){mmi_frm_unhide_menu_item(MENU_ID_FNG_SKIPEGG);}else{mmi_frm_hide_menu_item(MENU_ID_FNG_SKIPEGG);}#endifnItems = GetNumOfChild_Ext(MAIN_MENU_FUNANDGAMES_MENUID);//修改对应的三个函数为_Ext形式。

GetSequenceStringIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemList);GetSequenceImageIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemIcons);3.关于History手机中的屏幕流程都是顺序的,用户都是通过按键在屏幕之间切换。

这里有三种类型的屏幕切换,即1 向前移动向下一个屏幕的切换作为用户按键输入的结果。

2 向后移动向前一个屏幕的切换作为用户按键输入的结果。

300条MTK工作笔记

300条MTK工作笔记

(__ON__)
魔音通话: VOICETONE_PITCHSHIFT = TRUE g_imui_ui_param.imui_bottom = MMI_content_y + MMI_content_height - 1-100; handle_inline_full_screen_edit_complete 7900 修改 imui.c 这个文件 34.关机时退出系统: QuitSystemOperation (shutdownapp.c) 35.来电黑名单: CFG_MMI_CM_BLACK_LIST 36. 如果没有触摸屏,请注意将手写也关闭掉,否则编译不过 TOUCH_PANEL_SUPPORT = NONE HAND_WRITING = NONE HAND_WRITING_CHS_SUPPORT = FALSE 37.打印 出错信息 MMISWChangeWarning 38.开机搜索界面 ShowCategory120Screen 39. 23 平台上的拨号大字体 #define CFG_MMI_PHB_GENERIC_MULTI_SELECT (__OFF__) 这个宏打开时,发短信从电话簿选择的时候,会有两个选项,无触摸屏时关掉 CFG_FULL_DIAL_SCREEN_WITH_PICTURE 40. 发短信时,从电话簿添加 mmi_sms_recipient_add_from_contacts
20.手电筒的宏: FLASHLIGHT_TYPE
21.出厂时间:custom_hw_default.c const kal_uint8 DEFAULT_HARDWARE_YEAR = 8; //2008 const kal_uint8 DEFAULT_HARD8 DEFAULT_HARDWARE_DAY = 1; 22. 双卡双待: 只有一个拨号键的时候,需要弹出选择拨号界面 SENDKEY_MODE = SINGLE_KEY_SELECT_MENU #SENDKEY2_SUPPORT 有两个拨号键的时候: SENDKEY_MODE = SENDKEY2_SUPPORT #SENDKEY2_SUPPORT 23.智能拼图 #define CFG_MMI_GAME_PUZZLE (__AUTO__) 24. 相机设置的默认值: MMI_features_camera.h #define CAMERA_DEFAULT_SETTING_BANDING CAMERA_SETTING_BANDING_60HZ 25.开关机图片格式: #define CFG_MMI_RES_TYPE_POWER_ONOFF_SEL (__RES_TYPE_GIF__) 26. 号码归属地存于 T 卡中 #define GFG_MMI_INCOMINGCALL_DATA_IN_TCARD (__AUTO__) 获取手机号码归属地的函数: FetchMobileHomeArea

MTK个人笔记

MTK个人笔记
5、MTK工程里面的语言种类,其宏控制和字串ID可以在Res_SSC.c里面的PopulateSSCRes()里面查看。
6、查看进入MTK手机工程模式的指令可在CustResDef.h里,对应值为:SSC_ENGINEERING_MODE。
7、打包命令:armar -r *.a(或者*.lib) *.obj,解包命令:armar -x *.a,执行时都要先运行到obj或者库文件目录下。
22、Idle界面里面的触摸屏函数实现,是通过屏幕模板ShowCategory33Screen实现的,在wgui_categories_idlescreen.c里函数ShowCategory33Screen_ext里有注册,如:
wgui_register_category_screen_control_area_pen_handlers(wgui_cat033_pen_down_handler, MMI_PEN_EVENT_DOWN);注册点下触摸时的响应函数,然后我们可以在此响应函数里设置我们需要的屏幕位置的响应函数。
20、函数TurnOnBacklight(GPIO_BACKLIGHT_SHORT_TIME);用于把手机从背光中开启出来高亮屏幕一小段时间,参数也可换成GPIO_BACKLIGHT_PERMANENT(长久。
21、函数ForceSubLCDScreen(mmi_msg_start_msg_sub_anm)用于强制开启小屏幕提醒界面的,里面的参数只是举例,是提示有新短信收到的,在该函数里还需要调用屏幕模板来实现小窗口,这里用的是ShowCategory304Screen,然后会设置SetSubLCDExitHandler(mmi_msg_callback_msg_sub_anm);停止小窗口。

MTK平台驱动调试笔记

MTK平台驱动调试笔记

分类:LINUX一、【一】调试串口的设置驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口1 通过手机进入工程模式设置2 修改代码,修改Nvram_user_config.c中的NVRAM_EF_PORT_SETTING_DEFAULT[]3.通过META工具修改在连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值,二【【二】关于gpio口Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。

代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例):GPIO_ModeSetup(25, 0);设置GPIO25为模式0GPIO_InitIO(1,25);初始化GPIO25方向为输出GPIO_WriteIO(0, 25 );设值GPIO25输入低电平0三、【三】键盘设置1)键盘定义Keypad_def.c如果定义CUST_NEW,工具中的键盘定义对应在改文件里的KEYPAD_MAPPING(keypad_drv.h);2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)3)工程模式键盘测试函数EntryFMKeypadTest()修改键盘测试时界面显示的键的名称1. 做好上面的第一第二两步2. FactoryModeSrc.c开始部分定义添加的键所要显示的名称,值,分别应用到keypad_layout[](确定要显示的位置),keypad_value[]3.在EntryFMKeypadTest()函数中的数组IdleScreenDigits[]里添加要显示的键4)如果要设置一个键不管在什么界面下都起作用的话(如手电筒开关或则其他需求)就需要在键盘的事件响应函数static voidKeyEventHandler(KEYBRD_MESSAGE *eventKey)里设置,根据键值条用相应的响应函数,不过该函数及时在锁屏状态下也会执行的,需要根据需要添加条件语句四、关于LCDlcm背光驱动分为两种控制方式:1. pwm这个是通过调占空比来调节亮度的持续信号;2. PFM这个是通过脉冲的个数来控制LCM背光亮度。

MTK 智能手机开发, android,安卓 AOSP学习笔记

MTK 智能手机开发, android,安卓 AOSP学习笔记

对于5.0的系统是要求的ubuntu 12.041 新代码第一步执行:source build/envsetup.sh (此命令完成一些命令的初始化,配置了android编译的环境)2 执行lunch 命令(选择平台编译选项,用来让用户选择编译项,类似于旧框架的./mk listp)3 输入所需要编译的工程(这里需要编译82平台输入20),会显示相关的一些信息(1)A: ProjectConfig.mk路径:alps\device\farsighted\fars6582_wt_l(2)B: Drvtool路径:alps\kernel-3.10\tools\dct(3)C: Codegen.dws路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\dct\dct(4)D: flash时序表路径:alps\device\mediatek\build\build\tools\emigen\MT6582(5)E: flash配置文路径:alps\bootable\bootloader\preloader\custom\fars6582_wt_l\inc(6)F: 背光,键盘灯配置文路径:kernel :alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\leds\ mt65xxlk:alps\bootable\bootloader\lk\target\fars6582_wt_l(7)G: TP驱动路径:alps\kernel-3.10\drivers\input\touchscreen\mediatekTP 用户头文件配置路径:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\touchpanel\ GT9XX新增TP还需要在以下文件增加编译路径:***新增TP还需要在以下文件增加编译路径:alps\kernel-3.10\drivers\input\touchscreen\mediatek\ Makefilealps\kernel-3.10\drivers\input\touchscreen\ KconfigTP mk文件配置(8)H: LCM驱动存放路径lk:alps\bootable\bootloader\lk\dev\lcm\ mt65xx_lcm_list.c配置文件:Lk部分mk文件配置:alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkBOOT_LOGO有两处alps\bootable\bootloader\lk\project\ fars6582_wt_l.mkalps\bootable\bootloader\lk\dev\logo\ rules.mkKernel部分:lcm驱动:alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\此目录下只放.c文件,不需要文件夹alps\kernel-3.10\drivers\misc\mediatek\lcma:链接obj alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ MakefileB:编译路径alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\lcm\ mt65xx_lcm_list.cC:kernel mk文件配置路径:alps\kernel-3.10\arch\arm\configs\ fars6582_wt_l_defconfigKerner config配置建议使用menuconfig命令make dir outmake O=out fars6582_wt_l_debug_defconfig(这是对应的项目配置文件)make O=out menuconfig(进不去的同学可看看后面的补充)(9)I: CAMERA 配置:1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 hal目录3 驱动目录4 涉及修改的文件MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\inc\kd_imgsensor.hMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\imgsensor\src\mt6582\kd_sensorlist.hMT6582_L0\alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\imgsensor_src\sensorlist .cppalps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\camera\camera\kd_camera_hw.calps\vendor\mediatek\proprietary\custom\common\kernel\imgsensor\inc\kd_imgsensor.h(10)J: Gsensor,alps配置:1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2 驱动目录MT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\alspsMT6582_L0\alps\kernel-3.10\drivers\misc\mediatek\ accelerometer3 custom文件alps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\accelerometeralps\kernel-3.10\arch\arm\mach-mt6582\fars6582_wt_l\ alsps4 makefilealps\kernel-3.10\drivers\misc\mediatek\alsps\Makefilealps\kernel-3.10\drivers\misc\mediatek\ accelerometer \Makefilealps\kernel-3.10\drivers\misc\mediatek\Kconfig.drivers此makefife加了后menuconfig后才有选项(11)K: Sound 配置1 1 alps\device\farsighted\fars6582_wt_l\ProjectConfig.mk2alps\vendor\mediatek\proprietary\custom\fars6582_wt_l\hal\audioflinger\audio\audio_custom_exp .h3编pl模块需先把项目名赋值我拿到的代码是需要做如下修改才能正常运行menuconfig,如果你们的正常可以忽略以下:Menuconfig需修改的地方:1 MT6582_L0\alps\kernel-3.10\Makefile修改如下:2 安装sudo apt-get install libncurses5 libncurses5-dev3 make O(大写字母O)=out menuconfig****需注意的是,如果编完后关闭了窗口再重新打开编译都要运行一次source build/envsetup.sh lunch一些常用编译命令:make –j24 2>&1 | tee build.log (相当于new命令,编译过程会生成build.log文件在alps目录下)-j后面通常是编译主机CPU支持核数2>&1, 表示将标准错误重定向到标准输出tee :同时将LOG输出到控制台和文件preloadermake –j24 pl 2>&1 | tee pl.loglkmake –j24 lk 2>&1 | tee lk.logkernelmake –j24 kernel 2>&1 | tee kernel.log clean commondm ,mm ,mmm,mma打包命令。

MTK系统学习笔记

MTK系统学习笔记

MTK系统学习笔记D一.LCD驱动函数理解PUBLIC ERR_LCD_E LCD_Init(void);PUBLIC void LCD_Close(void);LCD_GetInfo获取LCD的基本信息。

具体参考LCD_INFO_T的定义。

上层调用此函数,可获取LCD 的信息,如bits-per-pixel以及LCD的BUFFER指针,从而可以实现对LCD的直接操作。

PUBLIC ERR_LCD_E LCD_GetInfo(LCD_ID_E lcd_id,LCD_INFO_T*lcd_info_ptr );对点主屏上点(x,y)写入颜色0X0F0F的实现如下:(假定lcd_info_ptr-> bits_per_pixel = 16)LCD_GetInfo(MAIN_LCD_ID, lcd_info_ptr);uint16 *buf_ptr = (uint16 *)lcd_info_ptr-> lcdbuff_ptr;uint16 lcd_width = lcd_info_ptr->lcd_width;uint16 lcd_height=lcd_info_ptr->lcd_height;*(uint16 *)(buf_ptr + y*lcd_width + x) = 0x0f0f;然后根据需要调用LCD_Invalidate或者LCD_InvalidateRect函数刷新LCD有关区域。

LCD_InvalidateRect刷新LCD 的某一矩形区域。

该函数将LCD BUFFER中的颜色值写入到指定的区域中,如果该指定的区域超出了指定LCD的范围,则该函数将只刷新该指定区域与LCD区域的重叠部分,即LCD范围外的区域无效。

PUBLIC ERR_LCD_E LCD_InvalidateRect(LCD_ID_E lcd_id,uint16 left,uint16 top,uint16 right,uint16 bottom);PUBLIC ERR_LCD_E LCD_Invalidate(LCD_ID_E lcd_id);PUBLIC ERR_LCD_E LCD_EnterSleep(LCD_ID_E lcd_id,BOOLEAN is_sleep);PUBLIC ERR_LCD_E LCD_SetContrast(LCD_ID_E lcd_id,uint16 contrast);typedef struct lcd_info_tag{uint32 r_bitmask;uint32 g_bitmask;uint32 b_bitmask;uint16 bits_per_pixel;uint16 lcd_width;uint16 lcd_height;uint16 contrast_min;uint16 contrast_max;uint16 contrast_defaut;void *lcdbuff_ptr;} LCD_INFO_T;typedef enum{MAIN_LCD_ID = 0,SUB_LCD_ID,MAX_LCD_ID} LCD_ID_E;typedef enum{ERR_LCD_NONE = SCI_SUCCESS,ERR_LCD_FUNC_NOT_SUPPORT,ERR_LCD_PARAMETER_WRONG,ERR_LCD_POINTER_NULL,ERR_LCD_OPERATE_FAIL,ERR_LCD_NOT_FOUND} ERR_LCD_E;Sleep inß当手机在待机状态时,为了节约功耗,要把lcd进入睡眠模式ß设置相关的寄存器/* Power control 1 set SLP bit = 1*/LCD_DRV_WRITE_COMM(0x0010, 0x1a0e);Command!!1、new功能:全新开始构建整个工程的ARM版,包括图片、声音、字符串等资源都要重做。

MTK平台个人笔记

MTK平台个人笔记

MTK平台个⼈笔记1.MTK simulator的⼯程⽂件是 PixtelMMI.dsw。

2.打开PixtelMMI.dsw,检查⽂件default_Fmrdo.c、default_mmi_profiles.c、default_mmi_settings.c、default_version.c⽂件是否存在⼯程⽂件中,上述⽂件存放⽬录:项⽬所在⽬录\custom\app\MILAN_BB。

3.在调试运⾏过程中会提⽰某些DLL⽂件⽆法连接,这是VC没有安装。

DLL⽂件所在⽬录:VC安装盘\VC98\DEBUG。

把缺失的⽂件复制到window安装⽬录下的System32⽬录⾥。

4.运⾏MTK Simulator,选取File→Newwork Simulator,会运⾏MMINWSimulator;在MMINWSimulator菜单中,选取Menu→Messages,会弹出⼀个Send Event窗⼝,窗⼝⾥有⼀个Events列表,列表⾥有不同⽤途种类的Events;如果需要启动⼿机,选取BootUp Events,点击OK按钮,MTK Simulator模拟开机过程。

关于调试语句的说明kal_print语句:该语句只能打印字符串信息。

Trace_out语句:该语句可以输出格式化字符串。

ASSERT语句:断⾔语句。

Trace语句:可以输出格式化字符串。

关于MTK Target的编译连接批处理命令: Milan.bat 。

●概述在windows下,打开dos编辑窗⼝(开始->运⾏->cmd),找到⼯程代码所在根⽬录,如:E:\MTK6217 输⼊编译批处理命令:格式:make[custom="projectName"]"project" "action"["modules"]Example: make custom=mtk6217 gprs newModules:⽤于对单个模块进⾏编译的选项。

MTK平台学习笔记+03-增加菜单项的流程

MTK平台学习笔记+03-增加菜单项的流程

MTK平台学习笔记(三)-增加菜单项的流程翁加平说明:红色部分为新增部分;蓝色部分为修改部分。

以增加菜单“防火墙”为例,说明增加一个菜单的具体流程。

防火墙菜单:MainMenuSettingsFirewallSeparateNoneModeRedName ModeModeBlackNameRedNameAddEditCallDelDelAllBlackNameAddEditCallDelDelAll1 增加字符串在文件“.\ plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt”中,按照规则增加字符串:STR_MENU_FIREWALLSTR_MENU_FIREWALL_SEPARATESTR_MENU_FIREWALL_SEPARATE_NONEMODESTR_MENU_FIREWALL_SEPARATE_REDMODESTR_MENU_FIREWALL_SEPARATE_BLACKMODESTR_MENU_FIREWALL_REDNAMESTR_MENU_FIREWALL_BLACKNAMESTR_MENU_FIREWALL_SEPARATE_NONEMODE_SHOWSTR_MENU_FIREWALL_SEPARATE_REDMODE_SHOWSTR_MENU_FIREWALL_SEPARATE_BLACKMODE_SHOWSTR_MENU_FIREWALL_REDNAME_OPERATESTR_MENU_FIREWALL_BLACKNAME_OPERATESTR_MENU_FIREWALL_ADD_REDNAMESTR_MENU_FIREWALL_ADD_BLACKNAMESTR_MENU_FIREWALL_EDIT_REDNAMESTR_MENU_FIREWALL_EDIT_BLACKNAMESTR_MENU_FIREWALL_CALL_REDNAMESTR_MENU_FIREWALL_CALL_BLACKNAMESTR_MENU_FIREWALL_DEL_REDNAMESTR_MENU_FIREWALL_DEL_BLACKNAMESTR_MENU_FIREWALL_ALLDEL_REDNAMESTR_MENU_FIREWALL_ALLDEL_BLACKNAMESTR_MENU_FIREWALL_DEL_NOTIFYSTR_MENU_FIREWALL_ALLDEL_NOTIFYSTR_MENU_FIREWALL_OPERATESTR_MENU_FIREWALL_ADDSTR_MENU_FIREWALL_EDITSTR_MENU_FIREWALL_CALLSTR_MENU_FIREWALL_DELSTR_MENU_FIREWALL_ALLDEL2 增加与菜单条、字符串、屏幕和图片相关的枚举值在文件“”中增加enum GLOBALMENUITEMSID{IDLE_SCREEN_MENU_ID=1,。

个人总结的一点mtk平台工作经验

个人总结的一点mtk平台工作经验

1.如何增加语言:在MMI_featurePLUTO.h文件里打开相对应的编译开关;增加字库文件fonres.c 以及相应的.h文件2.新手求助怎么设置系统默认的屏保界面:在nvram_cust_pack.c里面修改RESTORE_DEFALT_CURRENT_SCREENSVR_ID的数值就可以了3.显示文本串的函数原型:Void(*gui_print_text)(UI_string_type_text)4.刷新屏幕:Gui_BLT_double_buffer(0,0,UI_device_Width-1,UI_device_height-1);5.修改文本颜色:gui_set_text_color()eg: gui_set_text_color(UI_COLOR_RED);6.设置文本输出的起始位置:gui_move_txt_cuiror();7.进入一个新的程序,需要首先手动退出上一个屏幕。

调用EntryNewScreen函数:EntryNewScreen(MAIN_MENU_SCREEND,NULL,NULL,NULL);8.如何关掉状态条:最简单的方式是在进入新的屏幕时候调用Entry_full_screen()9.屏幕历史:EntryNewScreen的函数原型:EntryNewScreen(U16 newscmID, FunPtr newExitHandler, FuncPtr newEntryHandler,void *peerBuf);新屏幕序号,屏幕的推出函数,系统在强制推出我们的屏幕时候会自动调用这个函数;屏幕的入口函数,只有传入这个参数,系统才会将屏幕自动加入历史;暂时不用Eg:Void mmi_myapp_entry(vooid){EntryNewScreen(MAIN_MENU_SCREENID,NULL,mmi_myapp_entry,NULL);Entry_full_screen();Clear_screen();Gui_move_text_cuisor(50.100);Gui_set_text__color(UI_COLOR_RED);Gui_pring_text(“helloworld”);Gui_BLT_double_buffe r(0,0,UI_device_Width-1,UI_device_height-1);}10.返回最近的屏幕:推出手动执行:GoBackHistory通知系统将历史中国最后一次显示的屏幕弹出来,如下:Void mmi_myapp_entry(vooid){EntryNewScreen(MAIN_MENU_SCREENID,NULL,mmi_myapp_entry,NULL);Entry_full_screen();Clear_screen();Gui_move_text_cuisor(50.100);Gui_set_text__color(UI_COLOR_RED);Gui_pring_text(“helloworld”);Gui_BLT_double_buffe r(0,0,UI_device_Width-1,UI_device_height-1);SetKeyHandler(GoBackHisory,KEY_RSK,KEY_EVENT_UP);//通常设置右软件为返回最近显示的屏幕}11.plutommi\mmi下面:12.字串资源:(1)在*def.h文件中添加字串ID(2)在plutommi\customer\custresource\pluto_mmi\ref_list.txt中添加字串,注意字串ID一定要与*def.h中的字串ID一致,第二列为字串所属程序名,。

MTK知识点小结

MTK知识点小结

1.KAL‎是封装内核‎的层应当在‎O SL以上‎来开发,K‎A L OS‎层为Med‎i aTek‎‟s软件和‎N ucle‎u s操作系‎统的接口。

‎它为任务提‎供许多系统‎服务函数,‎比如计时器‎,队列,内‎存管理,事‎件等等。

‎Task‎是有一定封‎装性的软件‎模块,当此‎模块被执行‎的时候,可‎以把它理解‎为一个独立‎的线程。

T‎a sk之间‎的交流可以‎理解成线程‎间通信。

大‎家以后可能‎要独立完成‎一个tas‎k的设计,‎以应付一些‎比较高级的‎应用开发。

‎2.t‎a sk的创‎建:MT‎K提供了自‎定义tas‎k的接口,‎首先要在c‎u stom‎_conf‎i g.h文‎件中的cu‎s tom_‎t ask_‎i ndx_‎t ype和‎c usto‎m_mod‎u le_t‎y pe这两‎个枚举类型‎中分别加入‎我们自己的‎t ask_‎i ndex‎和modu‎l e id‎。

其次在‎c usto‎m_con‎f ig.c‎中的cus‎t om_m‎o d_ta‎s k_g[‎]这个数组‎中定义中增‎加moud‎l e与ta‎s k的映射‎。

需要注意‎这个数组的‎成员个数不‎能超MAX‎_CUST‎O M_MO‎D S,即M‎T K只支持‎16个自定‎义task‎。

然后‎需要在ta‎s k配置表‎c usto‎m_com‎p_con‎f ig_t‎b l[]中‎增加tas‎k的配置信‎息。

这个结‎构体的成员‎组成如下:‎type‎d ef s‎t ruct‎{‎ kal‎_char‎‎‎ *c‎o mp_n‎a me_p‎t r; /‎/task‎名称‎ kal‎_char‎‎‎ *c‎o mp_q‎n ame_‎p tr;/‎/外部队列‎名称‎ kal‎_uint‎32 ‎‎ co‎m p_pr‎i orit‎y;//t‎a sk优先‎级‎kal_‎u int1‎6‎‎ com‎p_sta‎c k_si‎z e;//‎t ask堆‎栈大小‎ ka‎l_uin‎t8 ‎‎ c‎o mp_e‎x t_qs‎i ze;/‎/外部队列‎大小‎ kal‎_uint‎8‎‎ co‎m p_in‎t_qsi‎z e;//‎内部队列大‎小‎kal_‎c reat‎e_fun‎c_ptr‎ c‎o mp_c‎r eate‎_func‎;//创建‎t ask的‎入口函数‎k‎a l_bo‎o l ‎‎‎c omp_‎i nter‎n al_r‎a m_st‎a ck;‎} co‎m ptas‎k_inf‎o_str‎u ct;‎接下‎来是比较关‎键的tas‎k创建函数‎的实现。

MTK 学习报告

MTK 学习报告

MTK无线电平台学习报告1,MTK平台默认是基于多语种的,所以基本上与文本相关的都是使用unicode编码,如L”Hello World”方式强制将字符串转换为unicode编码。

2,MTK无线电平台的屏幕类似与windows等系统中的窗口概念,但是MTK下的屏幕是独占式的,即任何时候只能有一个屏幕。

3,程序规范:规范化就是要我们将我们的程序独立出来。

独立分为两大步:代码独立与数据独立:3.1,代码独立:就是将程序代码放到单独的文件中。

3.1.1 目录结构:一般新加的MMI程序都放到plutommi\MMI下面Plutommi\MMI\MyApp 程序总目录Plutommi\MMI\MyApp\MyAppInc 头文件目录Plutommi\MMI\MyApp\MyAppSrc 源文件目录因使用ARM编译器,需手动加入新文件到数据表文件中,需修改make\plutommi\下的三个文件:1)Plutommi.lis:此文件用来指明MMI所要编译的所有源文件,在文件中添加如下一行:Plutommi\MMI\MyApp\MyAppSrc\MyAppSrc.c2)Plutommi.inc 此文件用来指明MMI所有头文件所在目录:Plutommi\MMI\MyApp\MyAppInc3)Plutommi.pth此文件用来指明MMI所有源文件所在目录。

Plutommi\MMI\MyApp\MyAppSrc另外在plutommi\mmi\MyApp\MyAppInc\下创建程序头文件:MyAppProt.h //存放函数声明,只被本程序的源文件加载MyAppDefs.h //用来定义本程序的资源IDMyAppTypes.h //存放本程序所需的类型,结构,常量定义MyAppGprot.h //存放函数声明,但被用于对外接口3.1.2 代码控制为了精简最终生成的烧录程序,一般都给每个小程序加上自己的编译开关,并将自己程序所有代码都包含进编译开关。

MTK学习笔记总结

MTK学习笔记总结

可以通过 tools\chk_env 查看是否搭建成功。
make custom=** make custom=** make custom=** make custom=**
gprs new gprs remake %1 gprs update %1 gprs new_modis
全部重新编译 编译修改部分 更新资源 new 后生成 modis 工程
MSYS
1.0.10
MSYS 工具是 Minimal GNU(POSIX)system on Windows 的简称,是一个小型的 GNU 环境,包括基本的 bash,make 工具等等,是 Windows 下最优秀的 GNU 环境。
7zip
3.13 7zip 压缩工具(7za.exe),在编译过程中,程序会调用它解压缩图片资源。
// 正常模式开机
mmi_bootup_entry_animation()
// 开机动画
mmi_pwron_entry_animation_screen()
// 开机动画界面
gui_start_timer(force_stop_time, mmi_pwron_force_terminate_display) // 设置强制关闭动画计
口中就可以了解到是否打了 SP6 补丁了。
Source Insight
因为 MTK 源文件代码量相当的惊人,用其他的编译器来查看代码修改代码会相当 3.5
的不方便,这里强烈推荐该软件,必定会让你的开发事半功倍。
Xoreax IncrediBuild
3.30b
可以在 CMD 和 VC6 下面让读者搭建自己的分布式编译系统,让编译变的更快捷, 必须再 Microsoft Visual C++安装后再安装。

MTK 的一些笔记

MTK 的一些笔记

Windows Live™∙主页∙个人资料∙联系人∙邮件∙照片更多▼日历活动群共享空间SkyDrive家庭安全设置移动主页下载全部服务∙MSN ▼主页汽车理财电影资讯体育天气∙∙登录float in the sk... 的个人资料ShareSpace照片日志列表工具帮助日志日志摘要排列方式:2009年5月2009年4月2009年3月2009年2月2009年1月2008年12月2008年11月2008年10月2008年9月2008年8月2008年7月2008年6月< 上一页下一页> 11月13日MTK的一些笔记MMI_ON_WIN32 MMI_ON_HARDWARE_P__MTK_TARGET__#ifdef __cplusplusextern "C" {#endif__SMS_BLACK_LIST__ 短信防火墙SLT_MMI_SLIDE_UNLOCK 滑动解锁__MMI_VCARD__ 名片夹__SLT_MMI_PHB_VCARD__ 超级电话本__MMI_VIP__ SECURITY_VIP vip功能__SLT_LONG_DISTANCE_DDD__ 长途区号__MMI_UI_HINTS_IN_MENUITEM__ 在菜单空间显示hint(正常应该关闭,弹出hint)//手机默认密码NVRAM_SECURITY_VIP_PASSWORD_LIDNVRAM_EF_MS_SECURITY_DEFAUL Tmmi_frm_sms_save_sms_req发短信mmi_msg_new_msg_ind 新短信到达ReleaseEMSEditBuffer 释放写短信的bufferSCR_INLINE_EDIT 编辑电话本界面SCR_ADD_NEW_ENTRY 增加电话本界面color_dialing_font_map[] 拨号界面的不同字体颜色数组gui_show_dialer_input_box_ext 拨号输入框wgui_setup_dialer_inputboxIdleDialPadCallmmi_ucm_entry_outgoing_callShowMOMTCallScreennvram_cust_pack.c存放开关机默认值custom_mmi_default_value.h 存放开关机默认值定义2008年5月2008年4月2008年3月2008年2月2008年1月2007年12月2007年11月2007年10月2007年9月2007年8月2007年7月2007年6月2007年5月2007年4月2007年3月2007年2月2007年1月2006年12月2006年11月2006年10月fmgr_msdc_plug_in_hdlrfmgr_msdc_plug_out_hdlr 插拔T卡mmi_vobj_is_pending_object 收到名片夹mmi_vobj_receive_get_full_tmp_path_name 取得名片夹路径isEarphonePlugged //耳机是否插入标志gPenEditorSelectCandidate, 汉王判断有无备选字s_bShowingCand 国笔判断有无备选字handle_category28_input手机信号的显示是根据公式frame_number = (level_percentage * (n_frames)) / 100;来计算需要显示哪一针图片,了解原理后大家可以对gSignalStrengthLevel灵活付值.void ChangeStatusIconLevel(S16 icon_ID, U8 level_percentage)mmi_phb_sel_quick_search_get_index //电话本选择复制、删除时中键显示的勾和叉图setup_bottom_shortcuts 触屏底部丝印的快捷键custom_comp_config_tbl 自己配制的任务列表resource_shortcuts.c gShctDefaultDediList 快捷键定义mmi_audply_redraw_lyric :显示歌词idle_screen_show_network_details :待机显示歌名nvram_common_config.c // 恢复出厂设置的定义以及自动测试的程序(增加或删除工程模式中测试项目数组NVRAM_EF_AUTOTEST_DEFAUL T[NVRAM_EF_AUTOTEST_SIZE]) nvram_user_config.c //存放nvram的各项默认值nvram_restore_byte_cache //恢复出厂设置的byte值wgui_categories_inputsenum.h //输入法的定义custom_hw_default.c //电池参数audcoeff.c 、nvram_default_audio.c //音频参数FactoryModeDef.h //工程模式、测试模式的定义FactoryModeSrc.c 存放工程模式的各项设置其中const testlet Tests[MAX_AUTO_TEST_ITEMS] = {}存放*#87#自动测试时的各项测试函数2006年9月2006年8月2006年7月2006年6月2006年5月2006年4月2006年3月2006年2月2006年1月2005年12月2005年11月2005年10月MAX_AUTO_TEST_ITEMS 自动测试项目的最大值nvram_common_config.cNVRAM_EF_PORT_SETTING_DEFAULT[] //设置默认调试端口nvram_cust_pack.cNVRAM_CACHE_DOUBLE_DEFAULT //触摸屏校准数据custom_wap_cust_pack.c //书签,主页audio_group_init[NUM_OF_GROUP] 铃声设置数组initalize_main_menu_application()注册主菜单得各个高亮函数GlobalConstants.h //存放按键定义keypad_def.c //按键映射关系CustImgDataHW.h //编译后的图片数据数组__MAINLCD+__路径+__文件名+__扩展名[]CustCoordinates.c //Screen控件MMI_features_GUIPLUTO.h__MMI_BI_DEGREE_MAIN_MENU_STYLE__ //主菜单样式__MMI_MAINMENU_TYPE__NVRAM_EF_SMSAL_SMS_TOTAL //短消息最大值(nvram_user_defs.h)CM_SMS_MAX_MSG_NUM (customer_ps_inc.h)//要比NVRAM_EF_SMSAL_SMS_TOTAL值大(100)PHB_PHONE_ENTRY (.make)//手机电话簿容量PHB_SIM_ENTRY //sim卡电话簿容量nvram_user_defs.h 文件中NVRAM_EF_SMSAL_SMS_TOTAL 手机短信的容量定义CM_SMS_MAX_MSG_NUM 短信总容量定义(sim + phone).mak 文件中PHB_PHONE_ENTRY 定义手机中电话本的容量PHB_SIM_ENTRY定义sim卡的电话本容量mmi_phb_quick_search_find_entry 电话本输入字符搜索列表refresh_search_list_change_list 字符搜索列表回调函数PhoneSetupResList.h //墙纸定义、数量IMERes.c //定义笔画输入法(MTK源代码__MMI_TOUCH_SCREEN__和笔画INPUT_MODE_MMI_SM_STROKE 互斥)NVRAM_PROFILES_DEFAULT //情景模式里面的设置,铃声等的默认值MMI_PROFILE_ENUM_TYPE 情景模式IdleToggleProfile 激活情景模式CustResDefPLUTO.h //定义资源路径及工程菜单定义如:*#86# *#65289*# 等DEFAULT_HARDWARE_YEARDEFAULT_HARDWARE_MON DEFAULT_HARDWARE_DAY//手机默认年、月、日份GUITypeDef.h HIGHLIGHT_EFFECT SOFTKEY_STYLE STATUSBAR_STYLE //定义高亮菜单的效果、按钮和statusbar的显示风格pixtel_UI_show_fixed_matrix_menu //九宫格数据//没有小电池,第一次正常关机开机时时间不能保存kal_bool DRV_POWERON(void) :: if (RTC_isFisrtOn()/*||(KAL_FALSE==RTC_is_config_valid())*/)//modi fy by lvqiang for rtc bug11832S8* path; //字符转换函数,把ASCII 转换成UCS2 如例:mmi_chset_convert(g_chset_text_encoding, MMI_CHSET_UCS2, (char*)MUSIC_FOLDER, (char*)path, FMGR_MAX_PATH_LEN-10); mmi_ucs2cat((PS8)filexpr_temp, (const PS8)path);//创建中文文件夹#define PHB_VCARD_FOLDER "\x0D\x54\x47\x72\x39\x59\x00\x00\\" // 名片夹#ifdef __cplusplus //lijinbu 20070613 add fo r simulatorextern "C" {#endif /* __cplusplus */NVRAM_EF_PHB_COMPARE_DIGIT_DEFAULT 电话本比较的位数MTK平台的UA内置方法:custom_wap_config.h文件里头的#define WAP_CUSTOM_CFG_DEFAUL T_UA_HEADER "MAUI WAP Browser"#define WAP_CUSTOM_CFG_DEFAUL T_MMS_UA_HEADER "MAUIMMS 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 11gui_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_MENUnCustMenus[]所有屏幕画面的参数菜单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..etcU16 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;目录结构:plutommiAlarm 闹钟AsyncEvents 异步事件和硬件协议事件的处理Audio 声音管理Calendar 日历CallManagement 电话呼叫Calls 辅助服务CommonScreens 所有应用的公用屏幕Data Time 日期和时间的实现Debug 包含.obj文件并且是正在工作的文件夹DebugLevel 管理debug日志的MACROSDemo 一个demo应用Framework 管理应用消息,流程控制和操作系统封装EventHandlingFileSystemHistoryNVRAMManagerOslTasksFunandGames FunandGames的应用GPIO 处理不同的外部设备例如:背光,震动,ledGUI 管理UI的相关函数IdleDemo 待机应用和事例Inc 所有应用的共享文件MiscFramework Pixtel MMI平台管理字体unicode的支持。

MTKSMS模块学习笔记(一)

MTKSMS模块学习笔记(一)

MTKSMS模块学习笔记(⼀)MTK信息发送过程简介1.编写⽬的本⽂档作为学习短信模块系列笔记之⼀,简要介绍了信息发送模块的基本流程及其基于MTK6217平台的代码实现。

2.参考资料《MMI_DD_Messages.pdf》MTK 6217代码实现3.流程图4.实现代码⽚断4.1 void HighlightWMessageHandler (void)1.)设置mmi_msg_entry_write_msg⼊⼝函数2.)设置SMS发送模式为g_msg_cntx.sendMessageCase = SEND_CASE_SEND_ONL Y; g_msg_cntx.PhbSmsInterfaceState = MMI_SEND_ONLY;4.2 void mmi_msg_entry_write_msg (void)1.)禁⽌定时关机,AlmDisableSPOF();2.)绑定左软件:mmi_msg_entry_option_write3.)绑定右Send键:mmi_msg_entry_send_option4.3 void mmi_msg_highlight_send_only (void)=>mmi_msg_send_msg_to_only_entry=>mmi_msg_send_msg_req((U8*)g_msg_cntx.smsPhoneNumber, MMI_FRM_SMS_INV ALID_INDEX,0);4.4 void mmi_msg_send_msg_req (U8* number, U16 replyindex, U8 hidenumscreen){……/* for send to many or send to group, show only one sending screen for all numbers */if((g_msg_cntx.msg_send_info.CurrSendSmsNumbers+1)sendData->sendrequire |= MMI_FRM_SMS_MORE;/* if sendcheck has a bit of MMI_FRM_SMS_SCR, do not show sending screen */if(g_msg_cntx.msg_send_info.CurrSendSmsNumbers!=0)sendData->sendcheck |= MMI_FRM_SMS_SCR;……mmi_frm_sms_send_sms(mmi_msg_send_msg_rsp, MOD_MMI, sendData);OslMfree(sendData);}4.5 mmi_frm_sms_send_sms=> mmi_frm_sms_pre_send_sms=> mmi_frm_sms_send_sms_req();4.6 void mmi_frm_sms_send_sms_req (void){……/* check SC: get SC address, inMsg keeps the flag *//* 检测信息中⼼号码,如果信息中⼼号码为空,则先从NV中读取当前的配置⽂件,这通过mmi_frm_sms_get_sc_addr_req函数中由MMI层向L4层发送PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_REQ指令来实现。

MTK工作笔记重点讲义资料

MTK工作笔记重点讲义资料

目录1、添加一个按键DEVICE_KEY_LOCK (3)2、修改状态栏图标间距 (3)3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,34、换主菜单/二级菜单背景 (3)5、修改情景模式默认值nvram_common_config.c (4)6、修改flash型号: (4)7、Speech→音量4由160→调整为180,其余不变 (5)8、添加彩号功能及修改彩号字体颜色 (6)9、修改音量调节界面按钮位置 (6)10、修改手机为单/双IMEI号, (6)11、修改运营商标志的位置 (7)12、修改照相机/录像防止闪烁默认频率为50Hz (7)13、去掉拼音输入法 (8)14、修改电子书全屏背景颜色 (9)15、修改滑盖机关机来闹钟滑盖下滑时白屏并自动开机的Bug (9)16、修改短信输入等界面背景为全透 (11)17、修改开盖铃声默认值/情景模式其他设置 (12)18、修改短信铃声资源数据 (13)19、增加滑盖机滑盖滑下时键盘锁自动锁住 (13)20、修改合盖并且键盘锁锁上及背光熄灭情况下按任意键不能点亮背光的Bug (15)21、打开6318对双喇叭的驱动 (16)22、修改选择标点界面符号和预设动画的字体颜色 (17)23、视频播放时去掉全屏的图标,并去掉触摸该区域时切换为全屏的响应 (17)24、修改屏灭后只有待机界面键盘锁住的情况下点触摸屏不亮 (19)25、修改视频播放/录像软键条不够高的问题 (20)26、注册上下左右键为计算器加减乘除功能键 (22)27、修改默认输入法为智能拼音/默认城市为北京/默认语言为中文/默认是否开启自动键盘锁2328、修改背光默认开启时间为15秒 (24)29、修改拨号界面功能键高度 (25)30、修改默认时间为2010年 (26)31、关闭开机触摸屏校准 (27)32、修改蓝牙装置名称 (27)33、更改了NVRAM升级软件不需要格式化 (27)34、通话界面上下键可以调节音量 (28)35、修改mp3、mp4默认存储位置为T卡 (28)36、修改模拟时钟的位置 (29)37、更换SIM1和SIM2的位置 (29)38、蓝牙耳机听MP3时,不能通过蓝牙耳机上的按键切换上下一首歌曲 (30)39、3603摄像头作为网络摄像头拍照时死机的Bug (30)40、去掉待机墙纸中的主题图片 (31)41、修改com口为Trace口 (32)42、添加ZI输入法后报无法找到zi8api.h的错误, (32)43、世界时钟入口函数 (32)44、日历入口函数 (32)45、SMS插入图片显示函数 (32)46、编辑短信时符号选择界面的高亮框 (33)47、计算手机占用RAM方法 (33)48、修改拨号界面输入框的大小, (33)1、添加一个按键DEVICE_KEY_LOCKA.用codegen配置好后生成keypad_drv.h文件,文件中会自动添加DEVICE_KEY_LOCK,B.在kbd_table.h文件中添加#define DEVICE_KEY_LOCK 74C.在KeyBrd.c文件nKeyPadMap[]数组中把底层的ID与上层ID对应起来{DEVICE_KEY_LOCK, KEY_EXTRA_1, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},直接使用KEY_EXTRA_1作为KEY_LOCK键2、修改状态栏图标间距arrange_status_icons(){......x = x1;// + STA TUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖while (!done){……x += MMI_status_icons[k].width;// + STATUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖……}}3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,隐藏状态条void hide_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID4、换主菜单/二级菜单背景因为菜单/二级菜单背景不是直接从压缩包里取的图片,而是从Themecomponents.h文件里取的16进制数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MTK-工作学习笔记1.加销量统计,机型为A74SMSMsg.c宏SMS_SEND_NOT_SA VE_SUPPORT (销量统计宏)#define PROJECT_NAME "A74"2.音乐播放键无作用(有作用)在idleapp.c中:有sim卡的情况下:mmi_idle_entry_idle_screen 函数中注册这个功能的快捷键#if defined(__CLAMSHELL_F65__)SetKeyHandler(mmi_audply_check_fmr_state, KEY_EXTRA_1, KEY_EVENT_UP);SetKeyHandler(mmi_camera_entry_app_screen, KEY_CAMERA, KEY_EVENT_UP); #endif无sim卡的情况下:在simdetection.c中在EntryScrnSimErrorScreen中注册#if defined(__CLAMSHELL_F65__)SetKeyHandler(mmi_audply_check_fmr_state, KEY_EXTRA_1, KEY_EVENT_UP);SetKeyHandler(mmi_camera_entry_app_screen, KEY_CAMERA, KEY_EVENT_UP); #endif宏: __CLAMSHELL_F65__ 翻盖:CLAMSHELL3.情景模式的默认值修改:应答模式默认不要设置成翻盖接听nvram_common_config.cNVRAM_PROFILES_DEFAULT 第8项将值改为0NVRAM_PROFILES_ACTIV A TED 默认激活的情景模式4.开机动画:\MainLCD\Active\Poweronoff5.壁纸:\MainLCD\Active\Poweronoff#define CFG_MMI_WALLPAPER_NUM (3)6.开合盖声音:resource_audio.cmtk_resource_sounds 数组中开盖:cs03_mid合盖:cs04_mid开机铃声: cs01_mid关机铃声:cs02_mid7.看墙纸类型#define CFG_MMI_RES_TYPE_WALLPAPER_SEL (__RES_TYPE_GIF__)8.ilde界面message和multimedia 位置互换#define CFG_MMI_MAINMENU_EXCHANGE_MSG_AND_MULTIMEDIA (__ON__)9.SIM卡电话号码只能读到150条,至少要读到250条PHB_SIM_ENTRY = 25010.rom空间不够,为了节省ROM空间,将短信条数缩减为300,相关文件: customer_ps_inc.h #define CM_SMS_MAX_MSG_NUM 30011.工厂测试:键盘测试:EntryFMKeypadTest相机测试: FM_AutoTest_CAMERA12.修改menuitem的高度:gui_switch.h#define CFG_UI_MENUITEM_HEIGHT (32)13.自动测试的问题:FactoryModeSrc.ckeypad_layout 和keypad_value14. 开机LOGO显示的地方:MMICheckDiskDisplay15.手机铃声:短信息铃声:resource_audio.cmtk_resource_mms_soundsmtk_resource_mms_sounds 有__MMI_MMS_TEMPLA TE_SUPPORT__ 控制的mtk_resource_message_sounds来电铃声:custpack_audio.c 中0936SLIM平台中:和铉: custpack_audio : 和弦的声音资源放在这个数组里面如果要改变数组的大小,需要修改mtk_resource_midis数组的大小,即:#define MIN_MIDI_ID 151#define MAX_MIDI_ID 160 //165 的大小来电铃声中有铃声,和弦两种铃声对应的数组时:resource_audio.cmtk_resource_imelodys这个数组的大小是:resource_audio.h#define MIN_RING_TONE_ID 101#define MAX_RING_TONE_ID 105 //110目前是 5mtk_resource_imelodys[MAX_RING_TONE_ID - MIN_RING_TONE_ID + 1]修改上网的mms 配置custom_wap_config.c找到custpack_wap_default再找到关于网络的配置:apnnvram_common_config.cNVRAM_EF_ABM_GPRS_PROFILE_DEFAULT16.FM检测耳机的宏:#define CFG_MMI_FM_RADIO_BIND_EARPHONE (__AUTO__)17.一些常用的menuid:MENU_ID_CAMERA_APP : 相机音乐播放器:HighlightAudioPlayerAUDIO_PLAYER_MAIN_MENUIDMESSAGES_MENU_WMESSAGE_MENU_ID : 写短信MAIN_MENU_PROFILES_MENUID : 情景模式ADD_APPLICA TION_MENUITEM_HILITE_HANDLER(MAIN_MENU_PROFILES_MENUI D, highlight_mainmenu_profiles);用到的图片在:plutommi\Customer\Images\PLUTO220X176\MainLCD\Profile短信:MAIN_MENU_MESSAGES_MENUID:ADD_APPLICA TION_MENUITEM_HILITE_HANDLER(MAIN_MENU_MESSAGES_MEN UID, highlight_mainmenu_messages);18.lcd 背光亮度: NVRAM_BYTE_BL_SETTING_LEVELlcd背光时间:NVRAM_BYTE_BL_SETTING_HFTIMEnvram 的默认值都是写在这里的这两个默认值在common_mmi_cache_config.c 文件改动19.设置: MAIN_MENU_SETTINGS_MENUID安全设置: MENU9101_SECURITY键盘锁: MENU9178_AKPL_TIME键盘锁的时间的nvram: NVRAM_SETTING_AUTOKEYPADLOCK_TIME手机设置:MENU9102_INITIAL_SETUPCFG_DISABLE_SHORTCUTS_MENUCFG_MMI_FOURWAYS_KEY_DISABLE快捷方式设置: EXTRA_SHORTCUTS_EXEC_MENUID时间与日期:MENU9141_TIME_AND_DA TE时间/日期设置:MENU9143_SETTIMEANDDA TE res_setting.csetting_date_time_list_of_iconshightlight函数: HighlightPhnsetSetDT20.手电筒的宏: FLASHLIGHT_TYPE21.出厂时间:custom_hw_default.cconst kal_uint8 DEFAULT_HARDWARE_YEAR = 8; //2008const kal_uint8 DEFAULT_HARDWARE_MON = 1;const kal_uint8 DEFAULT_HARDWARE_DAY = 1;22. 双卡双待:只有一个拨号键的时候,需要弹出选择拨号界面SENDKEY_MODE = SINGLE_KEY_SELECT_MENU #SENDKEY2_SUPPORT有两个拨号键的时候:SENDKEY_MODE = SENDKEY2_SUPPORT #SENDKEY2_SUPPORT23.智能拼图#define CFG_MMI_GAME_PUZZLE (__AUTO__)24. 相机设置的默认值:MMI_features_camera.h#define CAMERA_DEFAULT_SETTING_BANDINGCAMERA_SETTING_BANDING_60HZ25.开关机图片格式:#define CFG_MMI_RES_TYPE_POWER_ONOFF_SEL (__RES_TYPE_GIF__)26. 号码归属地存于T卡中#define GFG_MMI_INCOMINGCALL_DA TA_IN_TCARD (__AUTO__)获取手机号码归属地的函数: FetchMobileHomeArea27.music: 路径: MUSIC_FOLDER6225D上如果是中文的路径: CFG_MMI_FOLDER_SM_CHINESE28.滑动换墙纸#define CFG_MMI_WIPE_EFFECT (__ON__)29. 读短信的:mmi_msg_inbox_list_get_hint30. 进入短线列表:mmi_msg_entry_inbox_list6225.阅读短信: mmi_msg_entry_view_msg31. 常用短信:__MMI_MESSAGES_TEMPLA TE__短信的handle 一般这个函数注册: mmi_msg_set_msg_menu_highlight_handler (SmsMoMtGuiInterface.c)MSG_TEMPLA TE_LANG_ENGLISHCalTemplateBase32.改外文的大小: pluto_en_standardFamily (fontres.c)33.卡1和卡2通话记录合并:# define CFG_MMI_COMBIN_SIM1_AND_SIM2_ENABLE (__ON__)魔音通话:VOICETONE_PITCHSHIFT = TRUEg_imui_ui_param.imui_bottom = MMI_content_y + MMI_content_height - 1-100;handle_inline_full_screen_edit_complete7900修改imui.c这个文件34.关机时退出系统: QuitSystemOperation (shutdownapp.c)35.来电黑名单: CFG_MMI_CM_BLACK_LIST36. 如果没有触摸屏,请注意将手写也关闭掉,否则编译不过TOUCH_PANEL_SUPPORT = NONEHAND_WRITING = NONEHAND_WRITING_CHS_SUPPORT = FALSE37.打印出错信息MMISWChangeWarning38.开机搜索界面ShowCategory120Screen39. 23平台上的拨号大字体#define CFG_MMI_PHB_GENERIC_MULTI_SELECT (__OFF__)这个宏打开时,发短信从电话簿选择的时候,会有两个选项,无触摸屏时关掉CFG_FULL_DIAL_SCREEN_WITH_PICTURE40. 发短信时,从电话簿添加mmi_sms_recipient_add_from_contactsmmi_phb_mark_several_for_msg_pre_entryShowCategory199Screenwgui_inputs_sl_resize40. 背景播放挂起:mdi_audio_suspend_background_play挂起后,再继续播放:mdi_audio_resume_background_play41.信息报告界面:ShowCategory145Screen信息报告入口函数:mmi_msg_entry_deliver_report_ind显示界面的图片路径: \Images\PLUTO400X240\MainLCD\DualSIM\MESSAGE\CARD1\OUTBOX 字体颜色的theme: MMI_inputbox_normal_filler42.编模拟器的时候__MTK_TARGET__ 这个是不打开的,编译手机时打开43.EntryPhnseFactoryDefaultCalibrationScr45. 读短信:mmi_sms_entry_viewer收到新短信:mmi_msg_new_msg_ind信息报告:mmi_msg_entry_new_msg_indmmi_msg_nmgr_query_sms_notify获取信息报告的显示信息:mmi_msg_get_deliver_report_msg46.nvram_common_config.c中NVRAM_EF_PORT_SETTING_DEFAULT 中#if defined(__ONLY_ONE_UART__) || defined(__MMI_DUAL_SIM__)0, /* tst-ps uses uart_null(value is 99 (0x63)) */99, /* APP uses uart_port1 (value is 0) */#else0, /* tst-ps uses uart_port2(value is 1) */1, /* APP uses uart_port1 (value is 0) */#endif进入工程模式自动调好47. 触屏校准相关EntryPhnseFactoryDefaultCalibrationScr_internal48. 从文件管理进去看图片FileMgr.chighlight_fmgr_view_image49.修改写信息时,光标的颜色的主题inputbox_cursor_color_defaultTheme50.卡1收件箱MENUID:MENU_MTPNP_SMS_MASTER_INBOX卡2收件箱MENUID:MENU_MTPNP_SMS_SLA VE_INBOX51. 判断卡1还是卡2合法:bootupApp.c文件中卡1合法:mmi_bootup_is_sim_valid卡2合法: mmi_bootup_is_sim2_valid卡1卡2收件箱列表:mmi_msg_entry_divided_inbox_menu隐藏一个菜单:mmi_frm_hide_menu_item将以前隐藏的菜单显示出来:mmi_frm_unhide_menu_item相关文件:MTPNP_PFAL_MessageSetup.c模式设置: 卡 1 开: (MTPNP_AD_Get_Startup_Mode() == MTPNP_AD_NVRAM_CARD1)卡2开: (MTPNP_AD_Get_Startup_Mode() == MTPNP_AD_NVRAM_CARD2)卡1卡2同时开: (MTPNP_AD_Get_Startup_Mode() == MTPNP_AD_NVRAM_DUALCARD)52.短信编辑界面:写短信息选择字的背景颜色:multitap_filler_defaultTheme53.来电归属地显示:宏: __MMI_INCOMINGCALL_SHOW__FetchMobileHomeArea54. 文件浏览相关:entry_fmgr_explorerexit_fmgr_explorer释放浏览时获取的内存: mmi_fmgr_free_thumb_image_cache55. 信号强度: simdetectiondef.h#define SIGNAL_STRENGTH_LEVEL1 6#define SIGNAL_STRENGTH_LEVEL2 9#define SIGNAL_STRENGTH_LEVEL3 12#define SIGNAL_STRENGTH_LEVEL4 15显示信号强度:NetWorkSignalLevelIndication56. 修改短信条数: #define CM_SMS_MAX_MSG_NUM 15057.电话簿列表-----选项(res_phonebook.c) MITEM101_PBOOK_VIEW_OPTIONS插入号码:EMS_ED_OPT_INS_PHB_NUMBERmmi_msg_highlight_insert_phb_number58 ,工程模式密码: #define SSC_ENGINEERING_MODE "*#638725#"59.保存并发送: SEND_OPT_SA VE_AND_SEND_MENUIDmmi_msg_highlight_send_and_save61. 菜单列表字的颜色:list_normal_text_color_defaultTheme二级菜单选中时的颜色: menu_item_160x22_filler_defaultThemelist_main_menu_normal_item_filler_defaultTheme62.多方发送:__MMI_MESSAGES_SEND_TO_MANY__mmi_msg_highlight_send_to_many发送: mmi_msg_highlight_send_onlymmi_msg_send_msg_to_only_entry写信息函数:mmi_msg_entry_write_msg群发:__MMI_MESSAGES_SEND_BY_GROUP__#define EMS_DEFAULT_DCS_A V AILABLE_LENGTH 160#define EMS_UCS2_DCS_A V AILABLE_LENGTH 7063. 0928 版:编辑短信,显示信息:wgui_EMS_redraw_remaining_characters_display64.发送名片:#define CFG_MMI_VCARD (__ON__)65. 默认的高亮选项:#define CFG_MMI_DEFAULT_MAIN_MENU_HIGHLIGHT_MESSAGE (__AUTO__)67.idle的界面,title不变化,相关函数:standard_animated_matrix_highlight_handler_type268.#define CFG_MMI_MESSAGE_LIST_HINT (__ON__)69. 文件路径: CFG_MMI_FOLDER_SM_CHINESE70. 6235 上F82要修改lcd背光时间在文件nvram_common_config.c 中背光时间对应的一项为:NVRAM_BYTE_BL_SETTING_HFTIME71.短信copy 宏: __MMI_MESSAGES_COPY__从手机copy到sim卡或从sim卡copy 到手机72.手机上存储短信分配的条数:nvram_common_defs.hNVRAM_EF_SMSAL_SMS_TOTAL73.sim卡2信息设置-- 存储位置存储位置:MENU_MTPNP_PREFEREDSTORAGE74.sim卡和手机存储短信的总条数: customer_ps_inc.h#define CM_SMS_MAX_MSG_NUM 35075. 6235平台,双IMEIDUAL_IMEI = TRUE76.短信设置------sim卡1信息设置-----------存储位置设置----------手机手机无法支持的原因:#define CM_SMS_MAX_MSG_NUM 350CM_SMS_MAX_MSG_NUM 为短信的总条数,短信总条数必须大于sim卡和手机分配的条数的和手机上存储短信的条数: nvram_common_defs.h#if defined(LOW_COST_SUPPORT)#define NVRAM_EF_SMSAL_SMS_TOTAL (10 * NVRAM_DUAL_RECORD) #else#define NVRAM_EF_SMSAL_SMS_TOTAL (200 *NVRAM_DUAL_RECORD)#endif /* LOW_COST_SUPPORT */77. 有两个拨号键时候,通常要定义DEVICE_KEY_SEND 和DEVICE_KEY_SEND2在文件keypad_def.c78.电话簿快速搜索CFG_MMI_PHB_QUICK_SEARCH79.收到新信息的入口函数:mmi_msg_new_msg_ind80.发送完信息,然后保存的函数mmi_msg_save_msg_after_send_req81.回复短信menuid : SMS_INBOX_OPT_REPLY_MENUID回复短信高亮函数: mmi_msg_highlight_replymmi_msg_reply_msg新增加的宏__SEND_AND_SA VE_SMS__ 这个宏打开,默认就保存所发出的短信发送并保存短信: mmi_msg_highlight_send_and_save发送并保存: mmi_msg_send_and_save_msg_req写短信:SmsMoMtGuiInterface.cHighlightWMessageHandlermmi_msg_entry_write_msg82. 6235平台,删除短信mmi_sms_delete_msg_rsp83.从电话簿中选中联系人,发送短信MENU_ID_PHB_OPTION_SEND_SMSmmi_phb_highlight_op_send_sms__MMI_PHB_SEND_SMS_FROM_PHB__84.矢量字体__MMI_SKY_FONT__85.拒接电话并发送短信__MMI_UCM_REJECT_BY_SMS__86.快捷EXTRA_SHORTCUTS_MENUIDhighlight_mainmenu_shortcuts_execute87.手机设置:MENU9102_INITIAL_SETUPMENU_IDLE_SCR_DISP88.wifiWIFI_WIZARD_SUPPORT = FALSE # TRUE or FALSE89. idle 的时候的快捷菜单__MMI_TOUCH_IDLESCREEN_SHORTCUTS__90.获取sms的存储类型mmi_frm_sms_get_storage91.字符串相关的问题将字符串转换成ucs2编码mmi_asc_to_ucs2(temple, " ");mmi_ucs2cpy(viewer_header_buff, GetString(STR_GLOBAL_NOT_SUPPORTED));mmi_ucs2cat(viewer_header_buff, buf2);92.无sim卡时,在idle界面也显示宫格-----------------宏CFG_MMI_NOSIM_HA VE_NORMAL_IDLE_MENU_INTERFACE93. 触摸屏TOUCH_PANEL_SUPPORT94.彩信:MMS_FEA TURESMMS_SUPPORTMESSAGES_MENU_MMS_MENUID彩信中创建菜单:mauisemm.cstatic int createMenuItems(int slideCount, int initiated, int slideIndex)95.wap:WAP_SUPPORT96.nvram_common_defs.h#define NVRAM_EF_SMSAL_SMS_TOTAL (200 * NVRAM_DUAL_RECORD)GLOBAL_DEBUG_MEM_SIZE97.0932 照片编辑器:#define CFG_MMI_PHOTOEDITOR (__AUTO__)98. 0932.幻灯片#define CFG_MMI_SLIDESHOW (__AUTO__)99.EntryPhnseFactoryDefaultCalibrationScr_internal100.IdleSetLRKey101.彩信:HighlightMMSHandler编辑彩信时:收信人-编辑-添加号码/添加电子邮件进入的函数为:mobile_suite_app.cwap_entry_fullscreen_editorShowCategory5Screen_ext要将这个编辑界面的背景调白一点在ShowCategory5Screen_ext 函数中dm_set_scr_bg_opacity((U8)(current_MMI_theme->bg_opacity_low-110));编辑彩信内容:wgui_categories_MMS.cShowCategory277Screen编辑彩信主题:wgui_inline_edit.chandle_inline_full_screen_edit进入函数:MCU\vendor\wap\obigo_Q03C\adaptation\modules\mma\source\mmsadp.cgoto_mms_screen102. short cut 图片路径:MainLCD\IdleScreen\Touch103. 有触摸屏时,idle界面左右软件中间的那个键的图片位置:__MMI_WGUI_CSK_ENABLE__#if (defined __MMI_TOUCH_SCREEN__) && (defined __MMI_WGUI_CSK_ENABLE__) ADD_APPLICA TION_IMAGE2(IMG_CSK_DIAL_ICON,CUST_IMG_PA TH"\\\\MainLC D\\\\Call\\\\Touch\\\\Call.bmp","icons used in csk to make call");#endif104. 写信息----发送---从电话簿添加(IMG_ID_PHB_TAB_GROUP_ITEM,CUST_IMG_PA TH"\\\\MainLCD\\\\Phonebook\\\\Phb_group_item.pbm","PHB tab group item") STR_CALLER_GROUP_4mmi_sms_entry_add_recipientmmi_phb_entry_generic_mark_several_and_quick_search_tab1105. status icon id :IMG_SI_MASTER_SIGNAL_CLOSED106. 自动测试中键盘测试:EntryFMKeypadTest106. 视频播放器:入口函数:MENU_ID_VDOPLY_APPmmi_vdoply_highlight_appmmi_vdoply_entry_player_screen_internal]107. 显示imei:mmi_ssc_get_imei_rsp108. 视频录像器:mmi_vdorec_entry_app_internal109. 视频播放器全屏播放时,不能全屏播放在mmi_vdoply_init_ui 函数中看创建播放层是否正确即创建这个层: g_vdoply_cntx.fullscr_play_layer_handle在mmi_vdoply_blt_screen 中看刷屏是否正确在mmi_vdoply_play_video 中看看是否需要旋转屏幕110 录音: CFG_MMI_SOUND_RECORDER背景播放挂起mdi_audio_suspend_background_play111. 定义wallpaper的类型:#define CFG_MMI_RES_TYPE_WALLPAPER_SEL (__RES_TYPE_JPG__)112. 定义清除键:#define CFG_MMI_WITH_C_KEY (__ON__)113. QQDSM_SUPPORT = TRUE#define CFG_MMI_DSM_QQ_APP (__ON__)#define CFG_QQ_APP_TCARD (__ON__)//MSN#define CFG_MMI_DSM_MSN_APP (__ON__)#define CFG_MSN_TCARD (__ON__)114. 拨号大字体#define CFG_MMI_240X400_DIAL_BIG_SCREEN (__ON__)图片包: \\\\MainLCD\\\\DialingScreen\\\\240X400Dialing115. 电话簿的总大小: PhoneBookTypes.hMAX_PB_ENTRIES116. 启动省电模式:#define CFG_MMI_PROFILE_RETRENCH (__ON__) ActivateRetrenchProfile SettingProf.c117. 调整menuitem的高度:CFG_UI_MENUITEM_HEIGHT118. 语言朗读INTERSOUND_MODULE_SUPPORT119. 照相机切换MENU_ID_CAMERA_SWITCH120. melody.#define GAIN_NOR_MED_VOL_MAX 144121. 0928平台全屏显示信号强度和电池电量宏#define CFG_MMI_STA TUSBAR_TOUCH (__ON__)122. cta的宏: __CTA_SUPPORT__123. BT_AUDIO_VIA_SCO你那个MTK版本的蓝牙手机中蓝牙这块软件未将MTK自带的蓝牙功能BT_AUDIO_VIA_SCO打开,所以来电或拨号就没有提示音的。

相关文档
最新文档