智能终端定制开发 ad
MTK/瑞芯微/高通-Android,智能模块/智能终端方案商

深度定制各类智能终端和智能硬件产品,提供硬件选型咨询、参考设计、元器件推荐、驱动开发、行业模块集成、操作系统定制与算法集成等软硬件定制服务。
contact.aspx

Android核心板产品覆盖2G、3G、4G通讯,双核、四核、八核CPU,可选的平台有MTK6580、MTK6737、MTK6750等,Android版本有5.1 6.0 7.0等。
contact.aspx

可广泛应用于低端智能POS、安防监控、车载设备、低端智能机器人、智能家居、智能硬件、工业智能手持设备、低端智能对讲设备、低端警务或执法设备、智能穿戴、贩卖机、物流柜、智能门禁系统等行业和设备。
contact.aspx

可提供以太网转串口透传,WIFI转串口透传,蓝牙转串口透传,CAN总线模拟量控制输出模块等。
contact.aspx

带3G或4G通讯功能,运行android系统,有多个串口,可以外挂各种模块:条码扫描、RFID、指纹识别、身份证识别、磁条卡、ID卡、GPS/北斗模块等。
contact.aspx

具有4G通讯功能,多个RS232或RS485接口,以太网接口,USB接口,CAN接口,多个AD输入。基于Android系统智能平台,方便APP应用开发。器件严格选型,运行稳定,质量可靠。
contact.aspx

MTK平台学习--History管理机制与EntryNewScreen函数的关系
[MTK开发] 2008-04-09

简单的分析一下History管理机制与EntryNewScreen的关系

1.  与EntryNewScreen函数有关的全局变量:
    currEntryFuncPtr,
    currExitScrnID, currTopScrnID,
    currExitFuncPtr

2.  EntryNewScreen函数部分流程:
    Step1:  保存新屏幕ID(函数第一参数)-->currTopScrnID ;
    Step2:  调用ExecuteCurrExitHandler ;
    Step3:  保存新屏幕ID-->currExitScrnID ;
    Step4:  调用SetGenericExitHandler ;
    Step5:  ......
    ......

3.  分析 ExecuteCurrExitHandler
    函数原型: void  ExecuteCurrExitHandler( void ) ;
    A.  该函数主要流程就是依次调用了 ExecuteCurrExitHandler_Ext, ClearInputEventHandler
    B.  主要分析 ExecuteCurrExitHandler_Ext函数的作用
        函数原型: void  ExecuteCurrExitHandler_Ext( void ) ;
        函数功能: This function is used for executes current exit func handler without clear keys ;
        函数主要流程(伪代码表示):
        Step1:  if(currEntryFuncPtr||currExitFuncPtr)
                {
                    清除所有中断事件句柄 ;
                }
        Step2:  if(currEntryFuncPtr)
                {
                    ExitMyAppMenu( EntryNewMenu, SCR_ID_MYAPP_NEW );
                    // 将上次调用EntryNewScreen所记录的currExitScrnID, currEntryFuncPtr入栈
                }
        Step3:  if(currExitFuncPtr)
                {
                    mmu_frm_execute_scrn_exit_handler=MMI_TURE ;
                    (*currExitFuncPtr)( ) ;
                    mmu_frm_execute_scrn_exit_handler=MMI_FALSE ;
                }
        Step4:  currEntryFuncPtr=currExitFuncPtr=NULL ;
        Step5:  DM屏幕模板退出函数 ;
        Step6:  ......
        ......

4.  分析 SetGenericExitHandler
    函数原型: void  SetGenericExitHandler( U16 scrnID, FuncPtr exitFuncPtr, FuncPtr entryFuncPtr ) ;
    函数功能: currExitScrnID   <-- scrnID ;
              currExitFuncPtr  <-- exitFuncPtr ;
              currEntryFuncPtr <-- entryFuncPtr ;
    说明    : 将EntryNewScreen的几个参数传递给全局变量,留待下次调用EntryNewScreen时调用

5.  牵涉到的退出函数:
static void  ExitMyAppMenu( void * entry_screen_pfunc, U16 screen_id )
{
     history  currHistory ;
     S16  nHistory=0 ;
    
     currHistory.scrnID = screen_id ;
     currHistory.entryFuncPtr = entry_screen_pfunc ;
     pfnUnicodeStrcpy((S8*)currHistory.inputBuffer,(S8*)&nHistory);
     GetCategoryHistory( currHistory.guiBuffer );
     AddHistory( currHistory );
}

6.  小结:
        EntryNewScreen函数先将上次执行EntryNewScreen时记录的 currEntryFuncPt, currExitScrnID以History结构为载体记录入栈;
    然后执行了退出函数;最后讲本窗口的scrnID, exitFuncPtr, entryFuncPtr存入全局变量,留待下次调用EntryNewScreen时使用。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2150427


[MTK开发添加评论 | 评论/阅读(0/889)
评论
昵称
主页
内容
递交


Copyright @ 我的开发笔记     2008 - 2017         粤ICP备19155526号-1