MTK常用函数

合集下载

mtk imgsensor_info 参数

mtk imgsensor_info 参数

mtk imgsensor_info 参数mtk imgsensor_info 参数是用于获取图像传感器信息的函数,它是在Android系统中用于获取传感器数据的一种常见方法。

该参数提供了有关图像传感器状态和性能的详细信息,包括传感器类型、分辨率、曝光时间、光源等信息。

这些信息对于开发者和应用程序开发人员来说非常重要,因为它们可以用于优化图像质量和提高用户体验。

一、函数原型```cint imgsensor_info(struct imgsensor* sensor, u16*sensor_id);```其中,`sensor` 是一个指向 `imgsensor` 结构的指针,该结构包含了传感器相关的信息;`sensor_id` 是一个指向无符号16位整数的指针,用于存储传感器ID。

二、参数说明1. `sensor`:指向 `imgsensor` 结构的指针,用于存储传感器相关的信息。

该结构包含了传感器类型、分辨率、曝光时间、光源等信息。

2. `sensor_id`:指向无符号16位整数的指针,用于存储传感器ID。

通过该参数可以识别不同的传感器型号和版本。

三、函数返回值函数返回一个整数值,表示函数执行的结果。

如果函数执行成功,则返回值为0;否则返回一个非零值,表示发生了错误。

四、参数详解1. `sensor->version`:传感器版本号,表示传感器的型号和版本信息。

2. `sensor->vendor_id`:传感器厂商ID,表示传感器的制造商信息。

3. `sensor->sensor_type`:传感器类型,表示图像传感器的类型,如CMOS、CCD等。

5. `sensor->format`:传感器图像格式,表示图像的像素格式,如RGB、YUV等。

6. `sensor->exposure_time`:曝光时间,表示传感器曝光的时间长度。

7. `sensor->awb_mode`:白平衡模式,表示图像的白平衡模式。

MTK 发送彩信函数

MTK 发送彩信函数
message_send_p->bReadReport = (g_jmms_context->sending_settings.read_report == 1) ? E_TRUE : E_FALSE;
message_send_p->bHideSender = (g_jmms_context->sending_settings.hide_sender == 1) ? E_TRUE : E_FALSE;
if (wap_get_user_agent_brand() == EM_WAP_USERAGENT_BRAND_SE)
message_send_p->uiDate = get_current_utc_time();
message_send_p->bDeliveryReport = (g_jmms_context->sending_settings.delivery_report == 1) ? E_TRUE : E_FALSE;
}
message_send_p->pTo = (JC_CHAR*) g_jmms_context->to_p;
U8 ret = 0;
S32 len = 0;
MSG_HANDLE msg_handle = jmms_context_p->msg_handle;
/* free any allocated memory */
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
if (message_send_p->pReplyChargingInfo == NULL){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);

MTK文件操作常用函数

MTK文件操作常用函数

1. int FS_Open(const WCHAR*FileName, UINT Flag)该函数用来打开一个文件,FielName为文件路径及文件名,Flag为文件的操作属性,其值可为FS_READ_WRITE,FS_READ_ONLY,FS_OPEN_SHARED等。

如果文件打开成功,该函数返回一个大于等于0的值,否则返回一个小于0 的值。

具体操作方法可如下:FS_HANDLE h;if((h = (FS_HANDLE)FS_Open((constWCHAR*)filename,FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE)) >= 0){FS_Close(h);}注意,这里的路径要转换成Unicode字符串,可以通过AnsiiToUnicodeString(S8 * pOutBuffer, S8 *pInBuffer)函数来实现。

比如我们在D盘的example 文件夹下有一个test.c 文件需要对其进行修改(D:\example\test.c),则:FS_HANDLE h;S8UnicodeName[100];AnsiiToUnicodeString((S8*) UnicodeName, (S8 *)”D:\\example\\test.c”);if((h = (FS_HANDLE)FS_Open((const WCHAR *)UnicodeName,FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE)) >= 0){FS_Close(h);}也可使用FS_Open((const WCHAR *)L”D:\\example\\t est.c”,FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE)方式打开。

当对文件修改完成后,要使用函数FS_Close()将其关闭。

2. intFS_Close(FS_HANDLEFileHandle)用来关闭一个已经打开的文件。

MTK_NVRAM等操作

MTK_NVRAM等操作

MTK 中nvram 的读写操作定义NVRAM 数据有三种方式:(一)、在nvram_editor_data_item.h、nvram_data_item.h、nvram_data_item.c三个文件中添加。

1、在nvram_editor_data_item.h文件中定义自己保存在nvram 中的结构体数据类型。

例如:typedef struct{Int a;Char b;}my_nvram_data_t;2、在nvram_data_item.h 文件中的nvram_lid_core_enum 枚举中定义自己的nvram ID(建议在最后面添加,但必须添加到NVRAM_EF_LAST_LID_CORE 的前面)。

再定义两个宏,一个宏是前面定义的结构体的字节大小,另一个是在nvram中保存的数据个数,如果在nvram 中只需要保存一个数据的话,就定义为1。

例如:typedef enum{…………My_nvram_data_lid, //自己定义的nvram IDNVRAM_EF_LAST_LID_CORE}nvram_lid_core_enum;#define my_nvram_data_size sizeof( my_nvram_data_t )#define my_nvram_data_total 13、在nvram_data_items.c文件中的lobical_data_item_table_core 结构体数组中添加自己的项。

建议添加在最后,仿照前面的添加。

例如:Itable_entry_struct logical_data_item_table_core[] ={…………,{My_nvram_data_lid , //前面定义的枚举IDmy_nvram_data_size , //前面定义的宏,结构体大小my_nvram_data_total , //前面定义的宏,nvram中数据的个数NVRAM_EF_ZERO_DEFAULT,NVRAM_A TTR_A VERAGE,NVRAM_CATEGORY_USER,“ MT1D” ,// 根据前面的数据项递增VER( My_nvram_data_lid ),“ my nvram test\0” ,//数据描述,只做参考,无其他作用NVRAM_RESERVED_VALUE}, { NVRAM_EF_RESERVED_LID}}4、my_nvram_data_t my_nvram_data = {0};S16 error ;//将my_nvram_data中的数据写到nvram中My_nvram_data_lid 标志处,error保存错误标志WriteRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);//将nvram中My_nvram_data_lid 标志处的数据读到my_nvram_data中,error保存错误标志ReadRecord(My_nvram_data_lid, 1, &my_nvram_data, sizeof(my_nvram_data_t ), & error);二、在common_nvram_editor_data_item.h、nvram_user_defs.h、nvram_user_config.c 中定义1、common_nvram_editor_data_item.h 此处定义nvram 中保存数据的结构体数据类型2、nvram_user_defs.h 此处定义nvram ID 和结构体数据大小、数据总数3、nvram_user_config.c 此处填充nvram 结构数据内容及defult值(在MTK 下建议使用此方法修改nvram)(mtk 中nvram 的读写操作(一,二)/epll_apple/blog/item/94b29c22083a14a84723e846.html)三、在coustom_mmi_default_value.h、common_mmi_cache_config.c中定义1、在custom_mmi_default_value.h 文件中有三个枚举类型BYTEDATA,SHORTDATA和DOUBLEDATA。

MTK图形图象函数

MTK图形图象函数

1、S32 gdi_image_draw_id(S32 offset_x, S32offset_y, U16 image_id);offset_x和offset_y 是图片左上角的坐标,image_id是指向图片的枚举类型,用法如下:ADD_APPLICATION_IMAGE(MAIN_MENU_MA TRIX_PHONEBOOK_ICON,CUST_IMG_PATH"\\\\MainLCD\\\\MainMenu\\\\MATRIX\\\\MM_PB.gif");2、S32 gdi_image_draw(S32 offset_x, S32 offset_y, U8 *image_ptr);Image_ptr是用file2hex.exe转化后的图片文件名;在MTK平台里,image_ptr = (U8*)GetImage(image_id);3、S32 gdi_image_draw_file(S32 offset_x, S32 offset_y, S8*image_name);Image_name是图片的文件名;4、S32 gdi_image_get_dimension_id(U16 image_id, S32 *width, S32*height);S32 gdi_image_get_dimension_file(S8 *image_name, S32 *width, S32*height);S32 gdi_image_get_dimension(U8 *image_ptr, S32 *width, S32 *height);获得图片的长宽参数5、S32 gdi_image_get_frame_count_id(U16 image_id, S32 *frame_count); S32 gdi_image_get_frame_count_id(U16 image_id, S32 *frame_count);获得动态图片的帧数画点函数;6、void UI_putpixel(s32 x,s32 y,color c);7、关于剪切矩形:void UI_set_clip(s32 x1,s32 y1,s32 x2,s32 y2);void UI_reset_clip(void);void UI_pop_clip(void);void UI_set_text_clip(s32 x1,s32 y1,s32 x2,s32 y2);void UI_reset_text_clip(void);void UI_pop_text_clip(void);画线函数;颜色为c的一条直线:void UI_line(s32 x1,s32 y1,s32 x2,s32 y2,color c);颜色为c,宽度为w的一条直线:void UI_wline(s32 x1,s32 y1,s32 x2,s32 y2,color c,s32 w);画一个空心矩形:void UI_draw_rectangle(s32 x1,s32 y1,s32 x2,s32 y2,color c); 填充一个矩形:void UI_fill_rectangle(s32 x1,s32 y1,s32 x2,s32 y2,color c); 画图区域控制函数:void UI_lock_double_buffer(void);void UI_unlock_double_buffer(void);void UI_BLT_double_buffer(s32 x1, s32 y1, s32 x2 , s32 y2); 文字输出有关的函数:设置字符显示区:void UI_set_text_clip(s32 x1,s32 y1,s32 x2,s32 y2);设置字体颜色:void UI_set_text_color(color c);设置字体边框颜色:void UI_set_text_border_color(color c);设置当前光标位置:void UI_move_text_cursor(s32 x,s32 y);获取字符串的长、宽参数:void UI_measure_string(UI_string_type text,s32 *width,s32 *height);获得单个字符的长、宽参数:void UI_measure_character(UI_character_type c,s32 *width,s32*height);输出字符串:void UI_print_text(UI_string_type text);输出一个字符:void UI_print_character(UI_character_type c);字符串求长:U16 UTF8Strlen(U8 *p);字符串操作函数:字符串查找:strstr字符串拷贝:strcpy字符串定长拷贝:strncpy字符串比较:strcmp字符串定长比较:strncmp字符串续接:strcat字符串定长续接:strncat字符串转化为整型函数:atoi整型转化为字符串函数:itoa关于层建立一个层:GDI_RESULT dm_create_layer_using_outside_memory(S32 x, S32 y, S32 width, S32 height, gdi_handle **handle_ptr, U8 *outside_memory, S32 outside_memory_size, U32 flags);MTK平台上,软件支持四层。

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 向后移动向前一个屏幕的切换作为用户按键输入的结果。

mtk中的一些函数作用

mtk中的一些函数作用

1. HandleIdleScreenDigitEntry()
判断是否处飞行静音模式
2. IdleScreenDigitHandler()
ShowCategory16Screen()建立拨号输入框,并且注册每个按键的响应
执行数字键‘1’的响应:MMI_key_1_down()
g_ucm_p->call_misc.curr_action = MMI_UCM_DIAL;
装载g_ucm_p->call_list.group_info[freeTab]信息(group_id, call_type, call_state)
装载g_ucm_p->call_list.group_info[freeTab].call_info[0]信息
装载消息结构,发送消息:PRT_USSDVSS_REQ(到L4层分析号码)
L4层分析号码后,返回消息:PRT_USSDVSS_RSP,进入CBACK:
1.PsCBackSetCallFeatures()
根据拨出号码,设置到PHB查找,设置gPhoneNumberStruct
判断是否是紧急呼叫:mmi_ucm_is_sos_number()--CheckValidEmergencyNo1()
判断是否是空号码
判断是否已经存在SOS
判断UCM是否忙:mmi_ucm_is_busy()--没有需要处理的Call,没有OUTGOING, INCOMING的group,没有emergency call。
SetCurrentState(CM_OUTGOING_STATE);
AddNewCallInfo()
MakePsInitiateCall((PU8)MsgStruct, (void*)OutgoingCallConnected);

MTK一些有用的层函数

MTK一些有用的层函数
dm_register_category_controlled2_callback
该函数会为创建的层指定绘定函数,并且这两个函数只能分别处理DM管理的层,DM管理的层及相关控件可以在结构mmi_dm_control_ids_enum找到,这两个函数可以在DM指定的层上绘图,既可以处理不同的层,也可以处理相同的层,如果不同的层,可以定义在g_categories_controls_map中的control_set_p中定义如下,control_set_p中一般会包含基层,有时也包含新层,定义如下格式
该调用会重新刷屏,很遗憾的是,你新创建的层不在数组dm_layers中,也就不在他刷新的范围内。要么调用dm_add_blt_layer把你的层加入,要么在dm_redraw_category_screen之后再把你自己的层刷到屏上。
使用外部内存创建层
med_alloc_ext_mem
当然类似函数也有很多,如
前三个函数都是刷屏函数,前两个功能一模一样,只能指定刷新的区域,使用前需要用第四个函数指定参与操作的层。第三个可以自己指定要刷到屏的层和区域。需要说明的是,执行gui_BLT_double_buffer和执行gdi_layer_blt_previous不仅效果一样,执行过程也是一样的,gui_BLT_double_buffer只是个函数指针,指向gdi_layer_blt_previous,调用他最后执行的仍然是gdi_layer_blt_previous
设置层的
如果层上的数据是经过十分复杂的运算过程得出来的,比如要在IDLE上显示一个可以使用手指移动的农历是日历,这时就可以在层上画好要显示的数据,通话移动层的位置实现移动效果,要比每次重绘日历要快捷的多。
合并到BASE层

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系统学习笔记

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平台函数的介绍

显示文本串的函数原型:void(*gui_print_text)(UI_string_type_text);刷新屏幕/重绘屏幕:gui_BLT_double_buffer(S32 x1,S32 y1,S32 x2,S32 y2); 将屏幕清成空白:clear_screen();设置文本输出的起始位置:gui_move_text_cursor();修改文本颜色:gui_set_text_color();退出上一个程序:EntryNewScreen();全屏幕:entry_full_screen();弹出历史中最后一次显示的屏幕:SetKeyHandler();左键响应函数:SetLeftkeyFunction();高亮函数:SetHiliteHandler();文本绘制函数:gui_print_text();在屏幕上输出一个字符:gui_print_character();输出一个带边框的文本:gui_print_bodered_text();测量一个字符串在屏幕上占多少像素长度和高度:gui_measure_string();整形数据转换成字符串:gui_itoa();设置边框的颜色:gui_set_border_color();图形画点:gui_putpixel();/gdi_draw_point();画线:gui_line();绘制水平直线:gui_draw_horizontal_line();绘制垂直直线:gui_draw_vertical_line();绘制一个矩形:gui_draw_rectangle();绘制一个填充了c颜色的实心矩形:gui_fill_rectangle();在屏幕上绘制一个带边框的填充矩形:gdi_draw_frame_rect();画不同宽度的线:gui_wline();十字纹:gui_cross_hatch_fill_rectangle();百叶窗:gui_hatch_fill_rectangle();十字纹(两种颜色交替):gui_alternate_cross_hatch_fill_rectangle(); 百叶窗(两种颜色交替):gui_alternate_hatch_fill_rectangle();圆角矩形:gdi_draw_round_rect();按钮风格的矩形:gdi_draw_button_rect();带阴影的矩形:gdi_draw_shadow_rect();递进色填充矩形:gdi_draw_gradient_rect();绘制图标:gui_show_image();绘制图像:gdi_image_draw_file();动画:gdi_anim_draw_id();暂停动画播放:gdi_anim_stop();图像排版:gdi_image_get_dimension_id();进入图像裁剪区:gui_push_clip();恢复图像裁剪区:gui_pop_clip();裁剪图像:gui_set_clip();重置图像裁剪区到默认范围:gui_reset_clip();创建层:gdi_layer_create();常规静态图像显示函数如下:gdi_image_draw_id() 资源ID,不缩放gdi_image_draw() 资源Buffer,不缩放gdi_image_draw_file() 文件,不缩放gdi_image_draw_ext() Buffer,不缩放gdi_image_draw_resized_if() 资源ID,可缩放gdi_image_draw_resized() 资源Buffer,可缩放gdi_image_draw_resized_file() 文件,可缩放gdi_image_draw_resized_ext() Buffer,可缩放常用的动画函数如下:gdi_anim_draw_id();资源ID,不缩放gdi_anim_draw_id_once();资源ID,不缩放,只画一次gdi_anim_draw();资源Buffer,不缩放gdi_anim_draw_frames();资源buffer,不缩放,指定开始帧gdi_anim_draw_resized();资源buffer,可缩放gdi_anim_draw_once();资源buffer,不缩放,只画一次gdi_anim_draw_file();文件,不缩放gdi_anim_draw_file_resized();文件,可缩放gdi_anim_draw_file_frames();文件,不缩放,指定开始帧gdi_anim_draw_mem();buffer,不缩放gdi_anim_draw_mem_frames();buffer,不缩放,指定开始帧gdi_anim_draw_mem_resized();buffer,可缩放gdi_anim_draw_mem_once();buffer,不缩放,只画一次创建层:gdi_layer_set_active();获取基础层句柄:gdi_layer_get_base_handle();激活层:gdi_layer_set_active();合并层:gui_BLT_double_buffer();指明哪几个层需要合并:gdi_layer_set_blt_layer();/gdi_layer_blt();将整个层刷成单一颜色:gdi_layer_clear();将某一颜色设为层的通透色:gdi_layer_set_source_key();半透明特效:gdi_layer_set_opacity();释放层:gdi_layer_free();锁屏:gdi_layer_lock_frame_buffer();gdi_layer_unlock_frame_buffer();初始化菜单框架的基本属性:gui_create_fixed_list_menu();设置菜单的高亮项:gui_fixed_list_menu_goto_item();停止菜单项的滚动:gui_fixed_icontext_menuitem_stop_scroll();。

MTK知识积累

MTK知识积累

一、开发环境设立以下表述中提到的相关压缩包或安装文件到华禹ftp服务器下载,部分文件要到群共享里面下,那里是最新的。

华禹ftp服务器:IP:220.113.15.15,帐号为,密码为study-bbs0304P1300的QQ群号:15762255P1300_Build_Guide.rar-------------------------来自ftp服务器,“华禹\MTK相关部分”目录下手机开发板C语言开发视频.rar--------------来自ftp服务器,“华禹\MTK相关部分”目录下huayu109_ads1.2.rar------------来自ftp服务器,“华禹\旋风001手机模块\1.工具类”目录下huayu102_ADS12_Patch_Windows.rar-----------------------------------------------------------同上huayu106_perlzip.rar---------------------------------------------------------------------------------同上huayu108_Source Insight3.5.rar--------------------------------------------------------------------同上huayu101_p1300软件使用工具及开发指南.rar------------------------------------------------同上huayu201_P1300_V1.7_Release.rar------------------------------------------------文件来自群共享huayu203_P1300_V1.7_Release_patch.rar----------------------------------------文件来自群共享FlashTool_v3.0844.00.rar------------------------------------------------------------文件来自群共享1、开发主机要求及所需工具:操作系统:Windows 2000, WinXP. 推荐Windows 2000 with SP2 or later.编译器:ADS (Arm Developer Suite) v1.2 [Build 842]Perl解析:ActivePerl, 推荐使用ActivePerl 5.6.1版本仿真工具:MTK PC Simulator跟踪工具:Catcher_L1 v3.10.01,从串口输出调试信息,只做普通UI应用的话,大致不会用到,用PC仿真工具就好了烧录工具:FlashTool_UI v3.1.05 或FlashTool_v3.0844.00其他:PL2303_Driver_XP2K v204102,这是下载线用到的USB串口驱动,以前机器上装过PL2303驱动的就不必再装了?2、开发环境建立过程:新建一个目录,英文的好了,否则有些工具不认识中文路径,这里以E:\MTK_P1300为例说明,下面我用文字和图片简单说明下安装过程,更详细的安装过程可以看压缩文件“手机开发板C语言开发视频.rar”中的Flash文件“P1300_Build_Env.swf”。

MTK常用函数说明

MTK常用函数说明
有子项串ID GetSequenceStringIds 根据菜单的子项ID得到它在整个子项系列中 的序号 GetIndexOfStringId 得到菜单的所有子项菜单ID GetSequenceItemIds 根据菜单ID得到子项数 GetNumOfChild_Ext
得到系统资源(1)
根据ID得到串地址 GetString 得到mainmenu的标题icon GetRootTitleIcon 根据菜单项ID得到对应的串ID GetStringIdOfItem 根据菜单ID得到所有子项的image id 子项系列有可能是image,也有可能是串 GetSequenceImageIds
MTK常用函数 MTK常用函数
内存分配函数
OslMalloc OslFree
字符串和整形数据的转换
一、ascii和unicodeString的转换 AnsiiToUnicodeString AnsiiNToUnicodeString 二、unicode和ansii的转换 UnicodeToAnsii UnicodeNToAnsii
得到系统资源(3)
根据父亲菜单ID和子项索引得到对应子 项的字串或者image id GetSeqItemId_Ext 根据父亲菜单ID和子项索引得到对应子 项的image id GetSeqItemImageId_Ext
屏幕操作函数
SetParentHandler
串操作函数(1)
pfnUnicodeToEncodingScheme pfnEncodingSchemeToUnicode pfnUnicodeStrlen pfnUnicodeStrcpy pfnUnicodeStrncpy
串操作函数(2)
pfnUnicodeStrcmp pfnUnicodeStrncmp pfnUnicodeStrcat pfnUnicodeStrncat pfnUnicodeStrtok

mtk常用函数及宏

mtk常用函数及宏
gui_set_font(&newfont);
注意:该设置只对英文起作用,汉字大小由字库文件决定。
六、颜色类:
1、常用颜色常量:
GUI:
UI_COLOR_LIGHT_GREY
UI_COLOR_WHITE
UI_COLOR_DARK_GREY
UI_COLOR_BLACK
UI_COLOR_NONE
eg:gdi_handle my_anim;
gdi_anim_stop(my_anim);
GDI_RESULT gdi_image_get_dimension_id(U16 image_id,S32 *width,S32 *height);//测量图片所占宽高像素
解码器相关:
gdi_image_decoder_create
2、绘制像素点:
gdi_draw_point
3、绘制直线及线条:
gdi_draw_line
gdi_draw_line_style
4、绘制矩形及框
gdi_draw_rect
gdi_draw_solid_rect
void gdi_draw_frame_rect(S32 x1,S32 y1,S32 x2,S32 y2,gdi_color rect_color,gdi_color frame_color,S32 frame_width);//绘制带边框填充矩形
gdi_draw_round_rect
gdi_draw_button_rect
gdi_draw_shadow_rect
gdi_draw_gradiegui_putpixel)(S32 x,S32 y,color c) = NULL;//在x,y处绘制一个GUI颜色c

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_LCM调试入门

MTK_LCM调试入门

MTK_LCM调试⼊门LCM调试⼊门⼀.概述调试⼀款LCM,也就是我们平常所说的调屏是我们做驱动的的⼀项最基本的⼯作任务。

LCM是通常由屏⼚已经封装好的⼀个模组,即我们见到的屏。

它⼀般由⼏部分组成:1.玻璃。

也就是我们看到的显⽰图像的部分,是LCM⾥最重要的器件。

它内部含有液晶,电极等。

2.IC。

也就是我们通常说的显⽰芯⽚。

它是控制让玻璃能显⽰图像的器件,我们调屏其实就是让该显⽰芯⽚与我们的BB能配合起来⼯作。

3.外围器件。

包括PCB板,在PCB板上的电容电阻,背光等。

⼆.调屏前的注意事项在真正调屏之前,我们⼀般要做⼀些前期准备⼯作,这将有助于我们今后调屏时少⾛弯路。

先看原理图,确认该屏的信号控制线连接是否正确,看数据线连的是⼏位的,8位、16位、18位的数据传输⽅式是不⼀样的,程序中由不同的宏来控制。

⼤致看⼀下IC的spec,看⼀下⾥⾯的寄存器设置⽅式;寄存器中控制各个功能的分布情况,⽐如控制电压的,控制位置的,控制效果的等等;还要看看它的时序是否和我们的BB配合。

三.MTK接⼝定义在我们的MTK平台⾥,它的接⼝函数都由⼀个结构来封装。

该结构在⽂件lcd_if.h⾥:typedef struct{void (* Init)(kal_uint32 background, void **buf_addr); void (* PWRON)(kal_bool on);void (* BrightLevel)(kal_uint8 level);void (* SCREENON)(kal_bool on);void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy);void (* GetSize)(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height);void (* SleepIn)(void);void (* SleepOut)(void);void (* PartialOn) (kal_uint16 start_page,kal_uint16 end_page);void (* PartialOff) (void);kal_uint8 (*partial_display_align) (void);/*Engineering mode*/kal_uint8 (* get_param_number)(lcd_func_type type); void (* set_bias)(kal_uint8 *bias);void (* set_contrast)(kal_uint8 *contrast);void (* set_linerate)(kal_uint8 *linerate);void (* set_temp_compensate)(kal_uint8 *compensate);#ifdef __LCD_ESD_RECOVERY__kal_bool (* esd_check)(void);#endif}LCD_Funcs;在lcd.c⽂件内有相应的LCD_Funcs实例:LCD_Funcs LCD_func_HX8306A = {LCD_Init_HX8306A,LCD_PWRON_HX8306A,LCD_SetContrast_HX8306A,LCD_ON_HX8306A,LCD_BlockWrite_HX8306A,LCD_Size_HX8306A,LCD_EnterSleep_HX8306A,LCD_ExitSleep_HX8306A,LCD_Partial_On_HX8306A,LCD_Partial_Off_HX8306A,LCD_Partial_line_HX8306A,/*Engineering mode*/LCD_GetParm_HX8306A,LCD_SetBias_HX8306A,LCD_Contrast_HX8306A,LCD_LineRate_HX8306A,LCD_Temp_Compensate_HX8306A};在lcd.c中实现了该结构的各个成员。

MTK通话函数流程

MTK通话函数流程

MTK通话函数流程来电:1. PsCBackCallIncoming()ProcessIncomingEvents(CM_PS_CALL_INCOMING, info);2.ProcessIncomingCallEvent(info)AddNewCallInfo()在这里,cm_p->state_info.AllCalls[index].group_id = GetUnUsedGroupID();如果是MO,那么就先设置为255,然后在PsCBackSetCallFeature( )中在设置为GetUnUsedGroupID()CMSetupAlertForMT(); 准备提示信息3. mmi_gsm_ring_ind()mmi_ucm_ring_ind_struct ring_ind;装载ring_indmmi_ucm_dispatch_ind(MMI_UCM_RING_IND, (void *)&ring_ind);4. mmi_ucm_ring_ind(void *act_struct) 参数就是上面的ring_ind如果(当前没有OUTGOING, INCOMING group,不存在紧急电话,不是黑名单号码){mmi_ucm_sync_call_list(ind->call_list); 同步cm_p与g_ucm_p 把参数带进来的消息拷贝到g_ucm_p->mo_mt_display和g_ucm_p->call_misc.l4c_info中mmi_ucm_entry_marker()mdi_audio_stop_all()}否则 //自动拒接来电{mmi_ucm_pre_send_req(MMI_UCM_AUTO_REJECT,&(ind->uid_info), NULL, NULL);mmi_ucm_pre_send_req(MMI_UCM_FORCE_RELEASE,&(ind->uid_info), NULL, NULL);}5. mmi_ucm_entry_incoming_call()根据g_ucm_p->mo_mt_display,设置一些提示信息:tone id, path, image……ShowCategory17Screen()注册按键相应:任意键接听:mmi_ucm_incoming_call_sendkey()右软件,END键拒接:mmi_ucm_incoming_call_endkey()SEND键接听:mmi_ucm_incoming_call_endkey()mmi_ucm_play_incoming_tone()分2中:ring tone, wait tone拒接来电1.mmi_ucm_incoming_call_endkey()mmi_ucm_stop_incoming_tone()如果已经启动自动接听,则停止定时器UCM_AUTO_ANSWER_TIMERmmi_ucm_end_single_action_with_index(groupIndex, 0)2. mmi_ucm_end_single_action_with_index( )mmi_ucm_id_info_struct actionId;显示processing….装载actionIdmmi_ucm_pre_send_req(MMI_UCM_END_SINGLE, &actionId, NULL, NULL);3. mmi_ucm_pre_send_req( )mmi_ucm_single_call_struct singleReq;用上面的actionId装载singleReqmmi_ucm_send_req(op_code, first_ptr->call_type, &singleReq);4. mmi_ucm_send_req( )mmi_gsm_ucm_act_req(MMI_UCM_END_SINGLE, act_struct);5. mmi_gsm_ucm_act_req( )设置:cm_p->ucm_action_type = MMI_GSM_UCM_NORMAL, cm_p->ucm_operation = MMI_GSM_UCM_END_SINGLE mmi_gsm_end_single(act_struct);6. mmi_gsm_end_single( ) 所有的挂断电话都是在这里处理由于此时只有一通来电,因此执行:else if(GetT otalCallCount() == 1 && GetCurrentState() == CM_INCOMING_STATE) 这个分支SetCallflag(CM_HANGUP_REQUESTED)MakePsAthRequest((void*)PsCBackIncomingCallRejected);7. MakePsAthRequest( )发送消息:PRT_ATH_REQathReq->op_code = L4C_DISCONNECT_NONE;L4C返回消息:PRT_ATH_REQ_SUCCESS,进入CBACK:1. PsCBackIncomingCallRejected( )ProcessIncomingEvents(CM_PS_INCOMING_CALL_REJECTED, info); J进入状态机g_bUserReject = TRUE;gIncomingCallDroppedFlag = TRUE2. ProcessIncomingCallRejected()装载cm_p->disc_callResetCallflag(CM_HANGUP_REQUESTED)设置CM的状态PurgeIncomingCallStructure()清除了该来电在cm_p中的信息。

MTK关于回调函数的简单说明

MTK关于回调函数的简单说明

回调函数主要用于一些比较费时的操作,或响应不知道何时将会发生的事件,回调函数提供了一种异步的机制,相对于同步执行,提高了效率.前者的例子如WriteFileEx,ReadFileEx等,函数的最后一个参数是一个回调函数的指针,程序中调用WriteFileEx以后,就直接返回了,可以继续进行其他工作,系统在读写操作完成后通知程序作善后处理.后者的例子就是windows的事件机制回调函数的另一个用途,是用于一些枚举函数,如EnumDisplayModes等,每找到一种支持的显示模式,就通知回调函数,由回调函数具体处理,这是因为 EnumDisplayModes本身并不知道用户要如何处理.能,用户提供回调函数,定制系统的功能,这样,不同的用户提供不同的回调函数,可以使系统具有不同的功能.这就是所谓的plugin.使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的API函数有关,一般在帮助中有说明回调函数的参数和返回值等。
回调函数使程序结构乱了许多。Windows API 函数集中有不少回调函数,尽管有详尽说明,仍使初学者一头雾水。恐怕这也是无奈之举。无论何种事物,能以树形结构单向描述毕竟让人舒服些。如果某家族中孙辈又是某祖辈的祖辈,恐怕无人能理清其中的头绪。但数据处理之复杂往往需要构成网状结构,非简单的客户/服务器关系能穷尽。
程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数).需要回调函数的 DLL 函数往往是一些必须重复执行某些操作的函数.关系表示如下:

MTK常用接口函数

MTK常用接口函数

MTK常用接口函数300条MTK工作笔记,可以为你节省很多开发时间1.加销量统计,机型为A74SMSMsg.c宏 SMS_SEND_NOT_SAVE_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_ACTIVATED 默认激活的情景模式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 位置互换#defineCFG_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_TEMPLATE_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_APPLICATION_MENUITEM_HILITE_HANDLER(MAIN_M ENU_PROFILES_MENUID, highlight_mainmenu_profiles);用到的图片在:plutommi\Customer\Images\PLUTO220X176\MainLCD\Profi le短信:MAIN_MENU_MESSAGES_MENUID:ADD_APPLICATION_MENUITEM_HILITE_HANDLER(MAIN_M ENU_MESSAGES_MENUID, 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_DATE时间/日期设置:MENU9143_SETTIMEANDDATE 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_BANDING CAMERA_SETTING_BANDING_60HZ25.开关机图片格式:#define CFG_MMI_RES_TYPE_POWER_ONOFF_SEL (__RES_TYPE_GIF__)26. 号码归属地存于T卡中#define GFG_MMI_INCOMINGCALL_DATA_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_TEMPLATE__短信的handle 一般这个函数注册: mmi_msg_set_msg_menu_highlight_handler (SmsMoMtGuiInterface.c)MSG_TEMPLATE_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_SLAVE_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_SAVE_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_AVAILABLE_LENGTH 160 #define EMS_UCS2_DCS_AVAILABLE_LENGTH 7063. 0928 版:编辑短信,显示信息:wgui_EMS_redraw_remaining_characters_display64.发送名片:#define CFG_MMI_VCARD (__ON__)65. 默认的高亮选项:#defineCFG_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_SAVE_SMS__ 这个宏打开,默认就保存所发出的短信发送并保存短信: mmi_msg_highlight_send_and_save发送并保存: mmi_msg_send_and_save_msg_req写短信:SmsMoMtGuiInterface.c HighlightWMessageHandlermmi_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 FALSE 89. 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_HAVE_NORMAL_IDLE_MENU_INTERFACE93. 触摸屏TOUCH_PANEL_SUPPORT94.彩信:MMS_FEATURESMMS_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_opaci ty_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_APPLICATION_IMAGE2(IMG_CSK_DIAL_ICON,CUST_IM G_PATH"\\\\MainLCD\\\\Call\\\\T ouch\\\\Call.bmp","icons used in csk to make call");#endif104. 写信息----发送---从电话簿添加(IMG_ID_PHB_TAB_GROUP_ITEM,CUST_IMG_PATH"\\\\MainLCD\\\\Phonebook\\\\Phb_group_ite m.pbm","PHB tab group item")STR_CALLER_GROUP_4mmi_sms_entry_add_recipientmmi_phb_entry_generic_mark_several_and_quick_search_ta b1105. 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_STATUSBAR_TOUCH (__ON__)122. cta的宏: __CTA_SUPPORT__123. BT_AUDIO_VIA_SCO你那个MTK版本的蓝牙手机中蓝牙这块软件未将MTK自带的蓝牙功能 BT_AUDIO_VIA_SCO打开,所以来电或拨号就没有提示音的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
gdi_image_draw_file() 文件,不缩放
gdi_image_draw_ext() Buffer,不缩放
gdi_image_draw_resized_if() 资源ID,可缩放
gdi_image_draw_resized() 资源Buffer,可缩放
gdi_image_draw_resized_file() 文件,可缩放
显示文本串的函数原型:
void(*gui_print_text)(UI_string_type_text);
刷新屏幕/重绘屏幕:
gui_BLT_double_buffer(S32 x1,S32 y1,S32 x2,S32 y2);
将屏幕清成空白:
clear_screen();
设置文本输出的起始位置:
高亮函数:
SetHiliteHandler();
文本绘制函数:
gui_print_text();
在屏幕上输出一个字符:
gui_print_character();
输出一个带边框的文本:
gui_print_bodered_text();
测量一个字符串在屏幕上占多少像素长度和高度:
gui_measure_string();
gdi_anim_draw_mem();buffer,不缩放
gdi_anim_draw_mem_frames();buffer,不缩放,指定开始帧
gdi_anim_draw_mem_resized();buffer,可缩放
gdi_anim_draw_mem_once();buffer,不缩放,只画一次
mmi_ucm_entry_outgoing_call
dialer_input_box_change_callback 拨号界面显示
gui_dialing_screen_translate_pen_event 拨号触屏事件
ShowMOMTCallScreen 来去电来电 去电
gui_print_truncated_borderd_text 显示字符串,字体
gui_print_bordered_text 显示字符串,字体
gui_print_text 显示字符串,字体
UI_print_text 显示字符串,字体
mmi_fe_show_string_ext 显示字符串,字体
MTPNP_AD_Get_Startup_Mode 双卡的启动设置
mmi_bootup_sim1_is_insert 检查sim1有没有插入
PowerAndEndKeyHandler end键函数
setup_bottom_shortcuts 触摸屏下面的四个图标
mmi_frm_hide_menu_item/mmi_frm_unhide_menu_item 隐藏/显示菜单
gui_create_scrolling_text 滚动文字
MMICheckDiskDisplay 开机点亮背光
PEN_CHECK_BOUND 检查触笔位置是否在控制区域
wgui_general_pen_down_hdlr 触屏事件
setup_dialing_keypad 拨号界面
gui_set_font 显示字符串,字体
gui_set_text_color 设置字体颜色
UI_set_text_color 设置字体颜色
g_mmi_fe_text_color 当前显示字体的全局字体颜色变量
UI_print_character 打印拨号字体
gdi_layer_unlock_frame_buffer();
初始化菜单框架的基本属性:
gui_create_fixed_list_menu();
设置菜单的高亮项:
gui_fixed_list_menu_goto_item();
停止菜单项的滚动:
gui_fixed_icontext_menuitem_stop_scroll();
gui_move_text_cursor();
修改文本颜色:
gui_set_text_color();
退出上一个程序:
EntryNewScreen();
全屏幕:
entry_full_screen();
弹出历史中最后一次显示的屏幕:
SetKeyHandler();
左键响应函数:
SetLeftkeyFunction();
gui_draw_vertical_line();
绘制一个矩形:
gui_draw_rectangle();
绘制一个填充了c颜色的实心矩形:
gui_fill_rectangle();
在屏幕上绘制一个带边框的填充矩形:
gdi_draw_frame_rect();
画不同宽度的线:
gui_wline();
gdi_image_draw_resized_ext() Buffer,可缩放
常用的动画函数如下:
gdi_anim_draw_id();资源ID,不缩放
gdi_anim_draw_id_once();资源ID,不缩放,只画一次
gdi_anim_draw();资源Buffer,不缩放
gdi_anim_draw_frames();资源buffer,不缩放,指定开始帧
绘制图像:
gdi_image_draw_file();
动画:
gdi_anim_draw_id();
暂停动画播放:
gdi_anim_stop();
图像排版:
gdi_image_get_dimension_id();
进入图像裁剪区:
gui_push_clip();
恢复图像裁剪区:
gui_pop_clip();
gui_clock_show 时钟显示
IMG_BACKGROUND_defaultTheme 二级菜单背景图
FlightModeCheckBeforeAnimation 开机
gui_fixed_matrix_menu_auto_calculate
CFG_UI_MAINMENU_SHOW_STATUS_ICON 显示/隐藏主菜单的status
show_asyncdynamic_list 行事历显示
show_softkey_background_with_clipping button 背景
gui_show_icontext_button button字体
show_status_icons icon 背景
整形数据转换成字符串:
gui_itoa();
设置边框的颜色:
gui_set_border_color();
图形画点:
gui_putpixel();/gdi_draw_point();
画线:
gui_line();
绘制水平直线:
gui_draw_horizontal_line();
绘制垂直直线:
redraw_softkey
gui_title_oem_show_normal
gui_title_oem_show_background title背景
gui_title_show_text title字体
gui_shortcut_show title右上方显示的数字index值
创建层:
gdi_layer_set_active();
获取基础层句柄:
gdi_layer_get_base_handle();
激活层:
gdi_layer_set_active();
合并层:
gui_BLT_double_buffer();
指明哪几个层需要合并:
gdi_layer_set_blt_layer();/gdi_layer_blt();
gui_dialing_key_select 显示选中拨号图片
ExecuteDialKeyPadKeyHandler
gui_dialing_screen_translate_pen_position
gui_dialing_screen_translate_pen_event
GetDispNameorNum 拨号取得姓名、号码
将整个层刷成单一颜色:
gdi_layer_clear();将某一颜色设为层的通透色:
gdi_layer_set_source_key();
半透明特效:
gdi_layer_set_opacity();
释放层:
gdi_layer_free();
锁屏:
gdi_layer_lock_frame_buffer();
g_idle_context.ToMainMenuScrFromIdleApp = 1;
IdleHandlePoundKeyForKeypadLock 锁键盘
HandlePoundKeyForUnlock
mmi_chset_convert 字符转换函数
__DRV_DUAL_SIM_INVERSE__ 双卡互换
gui_create_single_line_input_box_use_buffer 虚拟键盘、输入有关
mmi_pen_editor_compute_candidate_input_box_height
gPenEditorCandidateInputBox
mmi_pen_editor_show_candidate_area
RedrawMOMTCallScreen
gui_virtual_keyboard_cache_and_show_selected_key 虚拟键盘选中显示
相关文档
最新文档