//-----------------------------------------------------------------------------
// Auto Poweroff/USB detect/Enable Key sound scan items
//-----------------------------------------------------------------------------
void KeyScan_EnableMisc(BOOL bEn)
{
    if (bEn == FALSE)
    {
        // disable auto power off/USB detect timer
        // disable key tone flag
        GxPower_SetControl(GXPWR_CTRL_AUTOPOWEROFF_RESET,0);
        GxPower_SetControl(GXPWR_CTRL_SLEEP_RESET,0);
        SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,FALSE);
        //SxTimer_SetFuncActive(SX_TIMER_DET_USB_ID, FALSE);
        UISound_EnableKey(FALSE);
    } else {
        // enable auto power off/USB detect timer
        // enable key tone flag
        //#NT#2012/11/08#Ben Wang -begin
        //#NT#Enable USB detection for unplugging.
        if (GxUSB_GetConnectType() == USB_CONNECT_NONE||GxUSB_GetConnectType() == USB_CONNECT_UNKNOWN)
        {
            //SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,TRUE);
            //SxTimer_SetFuncActive(SX_TIMER_DET_USB_ID, TRUE);
        } else
        {
           // SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,FALSE);
            //SxTimer_SetFuncActive(SX_TIMER_DET_USB_ID, FALSE);
        }
        SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,TRUE);
			
        SxTimer_SetFuncActive(SX_TIMER_DET_USB_ID, TRUE);
        //#NT#2012/11/08#Ben Wang -end
        UISound_EnableKey(TRUE);
    }
}
示例#2
0
void USB_PlugInSetFunc(void)
{
    GxPower_SetControl(GXPWR_CTRL_AUTOPOWEROFF_RESET,0);
    GxPower_SetControl(GXPWR_CTRL_SLEEP_RESET,0);
    SxTimer_SetFuncActive(SX_TIMER_DET_SLEEP_ID,FALSE);
    SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,FALSE);
    SxTimer_SetFuncActive(SX_TIMER_DET_MODE_ID,FALSE);
}
示例#3
0
void Power_StartUSBCharge(void)
{
    if (!gIsBattInsert)
    {
        DBG_DUMP("  NO Battery, Ignore START\r\n");
        return;
    }

    if (GxPower_GetControl(GXPWR_CTRL_BATTERY_CHARGE_EN))
    {
        DBG_DUMP("  Already UNDER Charge, Ignore START\r\n");
        return;
    }

    if((USB_GetSource() == USB_SRC_USB_ADAPTER))
    {
        GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_CURRENT,BATT_CHARGE_CURRENT_HIGH);
        DBG_MSG("  Charge Current = %d\r\n", BATT_CHARGE_CURRENT_HIGH);
    }
#if _MIPS_TODO
    //#NT#2010/12/10#Jeah Yen -begin
    if((USB_GetSource() == USB_SRC_USB_ADAPTER) && (Power_GetSource() != POWER_SRC_USB_ADAPTER))
    {
        //Do not charge, just stop check low-battery
        DBG_DUMP("GxPower: Stop low-battery check.\r\n");
        GxPower_SetControl(GXPWR_CTRL_BATTERY_DETECT_EN, FALSE);
        return;
    }
    //#NT#2010/12/10#Jeah Yen -end
#endif
    //#NT#2010/12/10#Jeah Yen -begin
    if((USB_GetSource() == USB_SRC_USB_PC))
    {
        GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_CURRENT,BATT_CHARGE_CURRENT_MEDIUM);
        DBG_MSG("  Charge Current = %d\r\n", BATT_CHARGE_CURRENT_MEDIUM);
    }
    //#NT#2010/12/10#Jeah Yen -end

    //#NT#2010/12/10#Jeah Yen -begin
    DBG_DUMP("GxPower: Stop low-battery check.\r\n");
    GxPower_SetControl(GXPWR_CTRL_BATTERY_DETECT_EN, FALSE);
    DBG_DUMP("GxPower: Start to Charge Battery\r\n");
#if (USB_CHARGE_VERIFY == ENABLE)
    GxLED_SetCtrl(KEYSCAN_LED_GREEN,TURNON_LED,TRUE);
#endif
    GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_EN,TRUE);
    //#NT#2010/12/10#Jeah Yen -end
#if (USB_CHARGE_VERIFY == ENABLE)
#else
    //GxLED_SetCtrl(KEYSCAN_LED_GREEN,TURNON_LED,FALSE);
#endif
    //GxLED_SetCtrl(KEYSCAN_LED_RED,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT);
    //GxLED_SetCtrl(KEYSCAN_LED_RED,SET_TOGGLE_LED,TRUE);
    GxLED_SetCtrl(KEYSCAN_LED_GREEN,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT);
    GxLED_SetCtrl(KEYSCAN_LED_GREEN,SET_TOGGLE_LED,TRUE);

    // disable flash re-charge
    SxTimer_SetFuncActive(SX_TIMER_DET_RECHARGE_ID,FALSE);
}
static void UIFlowWndPlayThumb_NaviKey(UINT32 key)
{
    BROWSE_NAVI_INFO BrowseNavi;
    FlowPB_ClearAllThumbIcon();
    SxTimer_SetFuncActive(SX_TIMER_DET_KEY_ID, FALSE);
    BrowseNavi.NaviKey = key;
    BrowseNavi.HorNums = FLOWPB_THUMB_H_NUM2;
    BrowseNavi.VerNums = FLOWPB_THUMB_V_NUM2;

    BrowseThumbNaviKey(&BrowseNavi);
    if(AppPlay_GetData(PLAY_PAGE_CHANGED))
    {
        //BrowseThumbUpdateLayout(&g_PlayDateThumbRectOSD[0], THUMB_H_NUM*THUMB_V_NUM);
        //clear rect immediately
        Ux_SendEvent(&UIPlayObjCtrl,NVTEVT_BROWSEFIN, 0);
    }
    FlowPB_ShowAllThumbIcon();
    SxTimer_SetFuncActive(SX_TIMER_DET_KEY_ID, TRUE);
}
示例#5
0
INT32 SetupExe_OnWifiStart(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    UINT32 result =0;
    static char buf1[32];
    char MacAddr[6];
	
    LED_TurnOnLED(GPIOMAP_LED_FCS);
#if (defined(__ECOS) && (_NETWORK_ == _NETWORK_SDIO_EVB_WIFI_))
#if (CARDV_ON_MEDIA_BOX_DEMO ==ENABLE)
    UINet_SetSSID("RTKSurveillance",strlen("RTKSurveillance"));
    UINet_SetAuthType(NET_AUTH_NONE);
    UI_SetData(FL_NetWorkMode,NETWORK_STATION_MODE);
#else
    #if 1  // AP Mode.
    //UINet_SetSSID("RTKSurveillance",strlen("RTKSurveillance"));	
    UINet_SetSSID("DAZA",strlen("DAZA"));		
    
    UI_SetData(FL_NetWorkMode,NETWORK_AP_MODE);
    #else  // Station Mode.
    UINet_SetSSID("MyAP",strlen("MyAP"));        // SSID of AP
    UINet_SetAuthType(NET_AUTH_WPA2);
    UINet_SetPASSPHRASE("123456780",strlen("12345678")); // Password of AP
    UI_SetData(FL_NetWorkMode,NETWORK_STATION_MODE);
    #endif
#endif
    result= UINet_WifiInit(UI_GetData(FL_NetWorkMode));
#elif(defined(__ECOS) && (_NETWORK_ == _NETWORK_SPI_EVB_ETHERNET_))
    UI_SetData(FL_NetWorkMode,NETWORK_STATION_MODE);
    result=UINet_LanInit(UI_GetData(FL_NetWorkMode));
#endif
    if(result==0)
    {
        //GxLED_SetCtrl(KEYSCAN_LED_RED,SET_TOGGLE_LED,FALSE);

        //GxLED_SetCtrl(KEYSCAN_LED_RED,TURNON_LED,TRUE);
        UI_SetData(FL_WIFI_LINK,WIFI_LINK_OK);
        SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,FALSE);
    }
    else
    {
        //GxLED_SetCtrl(KEYSCAN_LED_RED,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT/10);
        //GxLED_SetCtrl(KEYSCAN_LED_RED,SET_TOGGLE_LED,TRUE);
        //GxLED_SetCtrl(KEYSCAN_LED_RED,TURNON_LED,TRUE);
        UI_SetData(FL_WIFI_LINK,WIFI_LINK_NG);
    }
    debug_err(("BackgroundWiFiOn %d result %d\r\n",UI_GetData(FL_NetWorkMode),result));

    return NVTEVT_CONSUME;
}
示例#6
0
INT32 SetupExe_OnWifiStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    LED_TurnOffLED(GPIOMAP_LED_FCS);
#ifdef __ECOS
    UINet_HFSUnInit();
#if(_NETWORK_ == _NETWORK_SDIO_EVB_WIFI_)
    UINet_WifiUnInit(UI_GetData(FL_NetWorkMode));
#elif(_NETWORK_ == _NETWORK_SPI_EVB_ETHERNET_)
    UINet_LanUnInit(UI_GetData(FL_NetWorkMode));
#endif
#endif
    SxTimer_SetFuncActive(SX_TIMER_DET_AUTOPOWEROFF_ID,TRUE);

    return NVTEVT_CONSUME;
}
示例#7
0
void System_OnUsbInit(void)
{
    //PHASE-1 : Init & Open Drv or DrvExt
    {
    GxUSB_RegCB(USB_CB);         //Register CB function of GxUSB
    #if (USBINSERT_FUNCTION == ENABLE)
    SX_TIMER_DET_USB_ID = SxTimer_AddItem(&Timer_USB_Det);
    #endif
    }
    //PHASE-2 : Init & Open Lib or LibExt
    {
    #if (USBINSERT_FUNCTION == ENABLE)
    SxTimer_SetFuncActive(SX_TIMER_DET_USB_ID, FALSE);
    #endif
    }
}
示例#8
0
INT32 UIFlowWndPlay_OnMovieFinish(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    //#NT#2012/08/31#Calvin Chang#Porting Media Flow -begin
    g_PlbData.State        = PLB_ST_FULL;
    g_PlbData.VideoPBSpeed = PLB_FWD_MOV_1x;
    UIFlowMoviePlay_SetSpeed(g_PlbData.VideoPBSpeed);
    g_uiUIFlowWndPlayCurrenDirection = MEDIAPLAY_DIR_FORWARD;

    Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PAUSE_PLAY_MOVIE, 0);
    Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_CLOSE_PLAY_MOVIE, 0);

    //#NT#2012/10/23#Philex Lin - begin
    // enable auto power off/USB detect timer
    // enable key tone flag
    KeyScan_EnableMisc(TRUE);
    //#NT#2012/10/23#Philex Lin - end

    // stop scan
    //if (SxTimer_GetFuncActive(SX_TIMER_DET_STRG_ID)==0)
//        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);

    if (SxTimer_GetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID)==0)
        SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);


    if (gphUIFlowMovPlay_Filehdl)
    {
        FileSys_CloseFile(gphUIFlowMovPlay_Filehdl);
        gphUIFlowMovPlay_Filehdl = NULL;
    }

    // Play 1st video frame image
    Ux_SendEvent(&UIPlayObjCtrl,NVTEVT_PLAYSINGLE, 1, PB_SINGLE_CURR);
    //#NT#2012/08/31#Calvin Chang -end

    FlowPB_UpdateIcons(1);

    return NVTEVT_CONSUME;
}
示例#9
0
void System_OnVideoInit(void)
{
    DX_HANDLE cDispDev = 0;
    PDISP_OBJ       pDispObj=disp_getDisplayObject(DISP_1);
    DISPDEV_PARAM   DispDev;
    //PHASE-1 : Init & Open Drv or DrvExt
    {
        GxVideo_RegCB(Video_CB);         //Register CB function of GxVideo

        gDevLCDObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_LCD);
        DBG_MSG("LCD = %08x\r\n", gDevLCDObj);

        gDevTVObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_TVOUT);
        DBG_MSG("TV = %08x\r\n", gDevTVObj);
        gDevHDMIObj = Dx_GetObject(DX_CLASS_DISPLAY_EXT|DX_TYPE_HDMIOUT);
        DBG_MSG("HDMI = %08x\r\n", gDevHDMIObj);

        GxVideo_InitDevice(DOUT1);
        GxVideo_InitDevice(DOUT2);

        cDispDev = gDevLCDObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        cDispDev = gDevTVObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        cDispDev = gDevHDMIObj;
        if(cDispDev)
        {
            //Dx_Init(cDispDev, 0, Display_CB, DISPLAY_VER);
            Dx_Init(cDispDev, 0, 0, DISPLAY_VER);
        }
        //5.註冊SxCmd服務 ---------> Cmd Function
        //SxCmd_AddTabel(Cmd_lcd);
        //SxCmd_AddTabel(Cmd_tv);
        //SxCmd_AddTabel(Cmd_hdmi);
        //GxVideo_InstallCmd();
    }
    //PHASE-2 : Init & Open Lib or LibExt
    {
        //Config SxJob,SxTimer,SxCmd
        //3.註冊SxJob服務 ---------> System Job
        //SX_JOB_DISPLAY = System_AddSxJob(Display_Change_Job);
        //SX_JOB_DISPMODE = System_AddSxJob(Display_ChangeMode_Job);
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (TVINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_TV_ID = SxTimer_AddItem(&Timer_Display_DetTV);
        #endif
        #if (DET_LCD_REG_FUNCTION == ENABLE)
        SX_TIMER_DET_LCDREG_ID = SxTimer_AddItem(&Timer_Display_DetStatus);
        #endif
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        SX_TIMER_DET_LCDDIR_ID = SxTimer_AddItem(&Timer_Display_DetLCDDir);
        #endif

        //5.註冊SxCmd服務 ---------> Cmd Function

        //config video Output
        cDispDev = gDevLCDObj;
        GxVideo_OpenDevice(DOUT1, (UINT32)cDispDev, DISP_LASTMODE);//open LCD first
        GxVideo_DumpInfo();
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        //config video Direct
        Display_DetLCDDir();
        #endif
        DispDev.SEL.SET_ROTATE.Rot = DISPDEV_LCD_ROTATE_180;
          pDispObj->devCtrl(DISPDEV_SET_ROTATE, &DispDev);	
        Ux_PostEvent(NVTEVT_VIDEO_ATTACH, 1, 1); // attach

        #if (TVINSERT_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_TV_ID, TRUE);
        #endif
        #if (DET_LCDDIR_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_LCDDIR_ID, TRUE);
        #endif

        //DispSrv_InstallCmd();
        AppView_Init();
        {
        #if(VDO_USE_ROTATE_BUFFER == ENABLE)
            UINT32 uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);
            UINT32 uiPoolSize = OS_GetMempoolSize(POOL_ID_DISP_VDO1)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP2);
            AppView_ConfigWorkingBuffer(uiPoolAddr, uiPoolSize);
            if((DX_HANDLE)GxVideo_GetDevice(DOUT1) == gDevLCDObj)
            {
                 AppView_ConfigAttr(0, 0, DISPSRV_ROTATE_90); //enable rotate 90
            }
        #else
            UINT32 uiPoolAddr = OS_GetMempoolAddr(POOL_ID_DISP_VDO1);
            UINT32 uiPoolSize = OS_GetMempoolSize(POOL_ID_DISP_VDO1)+OS_GetMempoolSize(POOL_ID_DISP_VDO1TEMP);
            AppView_ConfigWorkingBuffer(uiPoolAddr, uiPoolSize);
        #endif
        }
        {
        #if(OSD_USE_ROTATE_BUFFER == ENABLE)
            if((DX_HANDLE)GxVideo_GetDevice(DOUT1) == gDevLCDObj)
            {
                View_Window_ConfigAttr(0, 1); //enable rotate 90
            }
        #endif
        }
    }
    ////////////////////////////////////////////////////////////////
    {
        ISIZE             DeviceSize;
        //Init Display
        DeviceSize = GxVideo_GetDeviceSize(DOUT1); //Get LCD size
        GxDisplay_Init(DOUT1, DeviceSize.w, DeviceSize.h);
        DeviceSize = GxVideo_GetDeviceSize(DOUT2); //Get LCD size
        GxDisplay_Init(DOUT2, DeviceSize.w, DeviceSize.h);
    }
}
示例#10
0
void Power_StopUSBCharge(void)
{
    //DBG_MSG("  gIsUSBInsert=%d,gIsBattInsert=%d,gIsBattDead=%d,gIsUSBAdapter=%d\r\n",gIsUSBInsert,gIsBattInsert,gIsBattDead,gIsUSBAdapter);
    if (!gIsBattInsert)
    {
        DBG_DUMP("  NO Battery, Ignore STOP\r\n");
        return;
    }
#if _MIPS_TODO
    //#NT#2010/12/10#Jeah Yen -begin
    if((USB_GetSource() == USB_SRC_USB_ADAPTER) && (Power_GetSource() != POWER_SRC_USB_ADAPTER))
    {
        //Not charge yet, just start check low-battery
        DBG_DUMP("GxPower: Start low-battery check.\r\n");
        GxPower_SetControl(GXPWR_CTRL_BATTERY_DETECT_EN, TRUE);
    }
    //#NT#2010/12/10#Jeah Yen -end

    //#NT#2011/3/30#Jeah Yen -begin
    if((USB_GetSource() == USB_SRC_NONE) && (Power_GetSource() != POWER_SRC_USB_ADAPTER))
    {
        //Cannot charge, start check low-battery
        DBG_DUMP("GxPower: Start low-battery check.\r\n");
        GxPower_SetControl(GXPWR_CTRL_BATTERY_DETECT_EN, TRUE);
    }
    //#NT#2011/3/30#Jeah Yen -end

    if((USB_GetSource() == USB_SRC_USB_ADAPTER))
    {
        //DBG_MSG("  USB Src = Adaptor\r\n");
        GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_CURRENT,BATT_CHARGE_CURRENT_LOW);
        DBG_MSG("  Charge Current = %d\r\n", BATT_CHARGE_CURRENT_LOW);
    }
#endif
    if((USB_GetSource() == USB_SRC_USB_PC))
    {
        //DBG_MSG("  USB Src = PC\r\n");
        GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_CURRENT,BATT_CHARGE_CURRENT_LOW);
        DBG_MSG("  Charge Current = %d\r\n", BATT_CHARGE_CURRENT_LOW);
    }

    if (!GxPower_GetControl(GXPWR_CTRL_BATTERY_CHARGE_EN))
    {
        DBG_DUMP("  Already NOT Charge, Ignore STOP\r\n");
        return;
    }

    //#NT#2010/12/10#Jeah Yen -begin
    DBG_DUMP("GxPower: Stop to Charge Battery\r\n");
    GxPower_SetControl(GXPWR_CTRL_BATTERY_CHARGE_EN,FALSE);
#if _MIPS_TODO
    if(!gIsUSBChargePreCheck
        && (GxSystem_GetState(SYSTEM_STATE_POWERON) != SYSTEM_POWERON_CHARGE)
        )
    {
#if (USB_CHARGE_VERIFY == ENABLE)
#else
        GxLED_SetCtrl(KEYSCAN_LED_GREEN,SET_TOGGLE_LED,FALSE);
        GxLED_SetCtrl(KEYSCAN_LED_GREEN,TURNON_LED,TRUE);
#endif
        //GxLED_SetCtrl(KEYSCAN_LED_RED,SET_TOGGLE_LED,FALSE);
        //GxLED_SetCtrl(KEYSCAN_LED_RED,TURNON_LED,FALSE);
    }
#endif
    DBG_DUMP("GxPower: Start low-battery check.\r\n");
    GxPower_SetControl(GXPWR_CTRL_BATTERY_DETECT_EN, TRUE);
    // enable flash re-charge
    SxTimer_SetFuncActive(SX_TIMER_DET_RECHARGE_ID,TRUE);
    //#NT#2010/12/10#Jeah Yen -end

}
示例#11
0
void System_OnInputInit(void)
{
    //PHASE-1 : Init & Open Drv or DrvExt
    {
        GxKey_RegCB(Key_CB);         //Register CB function of GxInput
        #if (TOUCH_FUNCTION == ENABLE)
        GxTouch_RegCB(Touch_CB);     //Register CB function of GxInput
        #endif
        GxKey_Init();
        SxCmd_AddTable(key);
    }
    //PHASE-2 : Init & Open Lib or LibExt
    {
        //1.設定init值
        //2.設定CB值,
        GxKey_SetContDebounce(BURSTKEY_DEBOUNCE/SxTimer_GetData(SXTIMER_TIMER_BASE));
        GxKey_SetRepeatInterval(BURSTKEY_INTERVAL/SxTimer_GetData(SXTIMER_TIMER_BASE));
        SysMan_RegKeySoundCB(KeySoundCB);
        SysMan_RegKeyTable(g_KeyTable, sizeof(g_KeyTable)/sizeof(KEY_OBJ));
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job

        #if (POWERKEY_FUNCTION == ENABLE)
        SX_TIMER_DET_PWR_ID = SxTimer_AddItem(&Timer_Input_DetPKey);
        #endif
        #if (NORMALKEY_FUNCTION == ENABLE)
        SX_TIMER_DET_KEY_ID = SxTimer_AddItem(&Timer_Input_DetNKey);
        #endif
        #if (CAR_TOUCHLCD_IR == ENABLE)
        SX_TIMER_DET_IRKEY_ID = SxTimer_AddItem(&Timer_Input_DetIrKey);
        #endif
        #if (STATUSKEY_FUNCTION == ENABLE)
        SX_TIMER_DET_MODE_ID = SxTimer_AddItem(&Timer_Input_DetSKey);
        #endif
        #if (TOUCH_FUNCTION == ENABLE)
        SX_TIMER_DET_TOUCH_ID = SxTimer_AddItem(&Timer_Input_DetTP);
        #endif
        #if (AUTOINPUT_FUNCTION == ENABLE)
        SX_TIMER_AUTO_INPUT_ID = SxTimer_AddItem(&Timer_Input_FeedKey);
        #endif

#if _MIPS_TODO
        if(FlowMode_IsPowerOnPlayback())
        {
            GxKey_SetFirstKeyInvalid(KEY_PRESS, FLGKEY_PLAYBACK);
        }
#endif
        #if (STATUSKEY_FUNCTION == ENABLE)
        GxKey_DetStatusKey();
        #endif

        #if (POWERKEY_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_PWR_ID, TRUE);
        #endif
        #if (NORMALKEY_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_KEY_ID, TRUE);
        #endif
        #if (CAR_TOUCHLCD_IR == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_IRKEY_ID, TRUE);
        #endif
        #if (STATUSKEY_FUNCTION == ENABLE)
        SxTimer_SetFuncActive(SX_TIMER_DET_MODE_ID, TRUE);
        #endif

        #if (TOUCH_FUNCTION == ENABLE)
        //1.設定init值
        GxTouch_Init();
        GxTouch_SetCtrl(GXTCH_DOUBLE_CLICK_INTERVAL,
            DOUBLECLICK_INTERVAL/TOUCH_TIMER_CNT/SxTimer_GetData(SXTIMER_TIMER_BASE));
        SysMan_RegTouchSoundCB(KeySoundCB);
        SysMan_RegTouchTable(g_TouchTable, sizeof(g_TouchTable)/sizeof(TOUCH_OBJ));
        //2.設定CB值,
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job
        //SX_TIMER_DET_TOUCH_ID = System_AddSxTimer(GxTouch_DetTP, TOUCH_TIMER_CNT, "GxTouch_DetTP", TRUE);
        //SX_TIMER_DET_TOUCH_ID = SxTimer_AddItem(&Timer_Input_DetTP);
        //5.註冊SxCmd服務 ---------> Cmd Function
        //System_AddSxCmd(Touch_OnCommand); //GxInput

        SxTimer_SetFuncActive(SX_TIMER_DET_TOUCH_ID, TRUE);
        #endif
    }
}
示例#12
0
void System_OnStrgInit_FS(void)
{
    {
        MEM_RANGE Pool;
        Pool.Addr = OS_GetMempoolAddr(POOL_ID_FS_BUFFER);
        Pool.Size = OS_GetMempoolSize(POOL_ID_FS_BUFFER);
        GxStrg_SetConfig(FILE_CFG_BUF, (UINT32)&Pool);
        //FileSys_InstallCmd();
    }
    {
        MEM_RANGE WorkBuf;
        WorkBuf.Addr = OS_GetMempoolAddr(POOL_ID_EXIF);
        WorkBuf.Size = POOL_SIZE_EXIF*POOL_CNT_EXIF;
        Exif_Init(&WorkBuf, ExifCB);
    }
    GxStrg_RegCB(Strg_CB);         //Register CB function of GxStorage (NANR or CARD)
    {
        //FileSys:

        //1.設定init值
        //#NT#2012/11/14#Philex Lin - begin
        // init DCF FolderID/FileID with RTC data
        #if (UI_STYLE==UI_STYLE_DRIVER)
        System_OnStrgInitDCFFolder();
        #else
        // Initialize DCF name.ext
        //DCF dir-name
        DCF_SetDirFreeChars( DCF_SUBPATH );
        //DCF file-name
        DCF_SetFileFreeChars( DCF_FILE_TYPE_ANYFORMAT, DCF_IMAGE_NAME );
        #endif
        //#NT#2012/11/14#Philex Lin - end
        //DCF file-ext
        #if (MOVIE_FORMAT == MOVIE_FORMAT_AVI)
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI);
        #else
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4);
        #endif
        DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO);

        //TODO: [DCF] How to add an new format & its ext?

        //2.設定CB值,
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (SDINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_STRG_ID = SxTimer_AddItem(&Timer_Card_DetInsert);
        #endif
        SX_TIMER_DET_SYSTEM_BUSY_ID = SxTimer_AddItem(&Timer_System_DetBusy);
        //5.註冊SxCmd服務 ---------> Cmd Function
        //System_AddSxCmd(Storage_OnCommand); //GxStorage

        //start scan
        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);
        SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);
        /*
        #if (SDINSERT_FUNCTION == ENABLE)
        {
            //提早detect storage可以得到兩個好處:
            //1.知道storage的type是哪一種
            //2.立刻"啟動File System"
            //  如果沒這樣, 就要等到SXOPEN之後, SX_TIMER_DET_STRG_ID開始跑才會"啟動File System",
            //  與其他task的競爭結果, 容易造成"啟動File System"的timing不固定
            GxDet_Storage();
            GxDet_Storage();
            Delay_DelayMs(30);
        }
        #endif
        */
    }

}
示例#13
0
void System_OnStrgInit_FS(void)
{
    //#NT#2015/01/21#KS Hung -begin
    //#NT#Fast boot recording.
    #if (_FAST_BOOT_REC_FUNC_)
    DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1);
    UINT32 paramArray[0];
    #endif
    //#NT#2015/01/21#KS Hung -end

    {
        MEM_RANGE Pool;
        Pool.Addr = OS_GetMempoolAddr(POOL_ID_FS_BUFFER);
        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_)
        Pool.Addr = dma_getCacheAddr(Pool.Addr);
        #endif
        //#NT#2015/01/21#KS Hung -end
        Pool.Size = OS_GetMempoolSize(POOL_ID_FS_BUFFER);
        #if USE_FILEDB
        GxStrg_SetConfig(FILE_CFG_SUPPORT_EXFAT, FALSE); // cannot support exFAT if using FileDB
        #endif
        GxStrg_SetConfig(FILE_CFG_BUF, (UINT32)&Pool);
        //FileSys_InstallCmd();
    }
    {
        MEM_RANGE WorkBuf;
        WorkBuf.Addr = OS_GetMempoolAddr(POOL_ID_EXIF);
        WorkBuf.Size = POOL_SIZE_EXIF;
        Exif_Init(&WorkBuf, ExifCB);
        #if (_SENSORLIB2_ != _SENSORLIB2_DUMMY_)
        WorkBuf.Addr += POOL_SIZE_EXIF;
        EXIF_Init(EXIF_HDL_ID_2, &WorkBuf, ExifCB);
        #endif
    }
    GxStrg_RegCB(Strg_CB);         //Register CB function of GxStorage (NANR or CARD)
    {
        //FileSys:

        //1.設定init值
        //#NT#2012/11/14#Philex Lin - begin
        // init DCF FolderID/FileID with RTC data
        #if (UI_STYLE==UI_STYLE_DRIVER)
        System_OnStrgInitDCFFolder();
        #else
        // Initialize DCF name.ext
        //DCF dir-name
        DCF_SetDirFreeChars( DCF_SUBPATH );
        //DCF file-name
        DCF_SetFileFreeChars( DCF_FILE_TYPE_ANYFORMAT, DCF_IMAGE_NAME );
        #endif
        //#NT#2012/11/14#Philex Lin - end
        //DCF file-ext
        #if (MOVIE_FORMAT == MOVIE_FORMAT_AVI)
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI);
        #else
        DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_AVI|DCF_FILE_TYPE_MOV|DCF_FILE_TYPE_MP4);
        #endif
        DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO);

        //TODO: [DCF] How to add an new format & its ext?

        //2.設定CB值,
        //3.註冊SxJob服務 ---------> System Job
        //4.註冊SxTimer服務 ---------> Detect Job
        #if (SDINSERT_FUNCTION == ENABLE)
        SX_TIMER_DET_STRG_ID = SxTimer_AddItem(&Timer_Card_DetInsert);
        #endif
        SX_TIMER_DET_SYSTEM_BUSY_ID = SxTimer_AddItem(&Timer_System_DetBusy);
        //5.註冊SxCmd服務 ---------> Cmd Function
        //System_AddSxCmd(Storage_OnCommand); //GxStorage

        #if (_DUAL_CARD_FUNC_ == ENABLE)
        SysSetFlag(FL_DualCardMain, MAIN_CARD_NONE);
        #endif

        //#NT#2014/12/08#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_)
        paramArray[0] = (UINT32)pStrgDev;
        if ( (GxStrg_GetDeviceCtrl((UINT32)pStrgDev, CARD_INSERT)) || (GxStrg_GetDeviceCtrl((UINT32)pStrgDev, CARD_READONLY)) )
        {
            GxStrg_ForceDetect(CARD_FORCE_DET_INSERT);
            System_OnStrgInsert(&SystemObjCtrl, 1, paramArray);
        }
        else
        {
            System_OnStrgRemove(&SystemObjCtrl, 1, paramArray);
        }
        #endif
        //#NT#2014/12/08#KS Hung -end
        //start scan
        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);
        SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);
        /*
        #if (SDINSERT_FUNCTION == ENABLE)
        {
            //提早detect storage可以得到兩個好處:
            //1.知道storage的type是哪一種
            //2.立刻"啟動File System"
            //  如果沒這樣, 就要等到SXOPEN之後, SX_TIMER_DET_STRG_ID開始跑才會"啟動File System",
            //  與其他task的競爭結果, 容易造成"啟動File System"的timing不固定
            GxDet_Storage();
            GxDet_Storage();
            Delay_DelayMs(30);
        }
        #endif
        */
    }

}
示例#14
0
INT32 UIFlowWndPlay_OnKeyEnter(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    //#NT#2012/08/31#Calvin Chang#Porting Media Flow -begin
    //UINT32 uiCurindex;
    UINT32 uiPoolAddr;
    char   pFilePath[FULL_FILE_PATH_LEN];
    UINT32 fileType = DCF_FILE_TYPE_JPG;
    UINT32 uiPBFileFmt;

    switch(g_PlbData.State)
    {
        case PLB_ST_PLAY_MOV:
        case PLB_ST_FWD_MOV:
        case PLB_ST_BWD_MOV:
            Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PAUSE_PLAY_MOVIE, 0);
            FlowPB_IconDrawMovPlay(TRUE);
            g_PlbData.State = PLB_ST_PAUSE_MOV;
            //#NT#2012/10/23#Philex Lin - begin
            // enable auto power off/USB detect timer
            // enable sound key tone flag
            KeyScan_EnableMisc(TRUE);
            //#NT#2012/10/23#Philex Lin - end
            break;

        case PLB_ST_PAUSE_MOV:
            //#NT#2012/10/23#Philex Lin - begin
            // disable auto power off/USB detect timer
            // disable key tone flag
            KeyScan_EnableMisc(FALSE);
            //#NT#2012/10/23#Philex Lin - end
            // Start to Play
            Ux_SendEvent(&UIMoviePlayObjCtrl,
                         NVTEVT_PLAY_PLAY_MOVIE,
                         2,
                         g_uiUIFlowWndPlayCurrenSpeed,
                         g_uiUIFlowWndPlayCurrenDirection);
            FlowPB_IconDrawMovPlay(TRUE);
            g_PlbData.State = PLB_ST_PLAY_MOV;
            break;

        default:
        case PLB_ST_FULL:
            uiPBFileFmt = AppPlay_GetData(PLAY_FILEFMT);
            if (uiPBFileFmt & PBFMT_AVI ||
                uiPBFileFmt & PBFMT_MOVMJPG ||
                uiPBFileFmt & PBFMT_MP4)
            {
                // Open Video File
                if (gphUIFlowMovPlay_Filehdl)
                {
                    FileSys_CloseFile(gphUIFlowMovPlay_Filehdl);
                    gphUIFlowMovPlay_Filehdl = NULL;
                }
                if (uiPBFileFmt & PBFMT_AVI)
                  fileType = DCF_FILE_TYPE_AVI;
                else if (uiPBFileFmt & PBFMT_MOVMJPG)
                  fileType = DCF_FILE_TYPE_MOV;
                else if (uiPBFileFmt & PBFMT_MP4)
                  fileType = DCF_FILE_TYPE_MOV;
                else
                {
                    debug_msg("Wrong video file format!! \r\n");
                    break;
                }

                // Get Current index
                PB_GetParam(PBPRMID_CURR_FILEPATH, (UINT32 *)pFilePath);
#if 0
                uiCurindex = DCF_GetCurIndex();
                DCF_GetObjPath(uiCurindex,fileType,pFilePath);
#endif
                // Open Test Media File
                gphUIFlowMovPlay_Filehdl = FileSys_OpenFile(pFilePath, FST_OPEN_READ);

                if (!gphUIFlowMovPlay_Filehdl)
                {
                    debug_msg("UIFlowWndPlay_OnKeyEnter: Can't open Video file!\r\n");
                    break;
                }
                //#NT#2012/10/23#Philex Lin - begin
                // disable auto power off/USB detect timer
                // disable key tone flag
                KeyScan_EnableMisc(FALSE);
                //#NT#2012/10/23#Philex Lin - end

                // Buffer Allocation
                get_blf((VP*)&(uiPoolAddr), POOL_ID_APP);
                rel_blf(POOL_ID_APP, (VP)uiPoolAddr);

                g_UIPlayMediaObj.hActMediafilehdl = gphUIFlowMovPlay_Filehdl;
                g_UIPlayMediaObj.CallBackFunc     = Play_MovieCB;
//                g_UIPlayMediaObj.uiMemAddr        = uiPoolAddr;
                g_UIPlayMediaObj.uiMemAddr        = (UINT32)OS_GetMempoolAddr(POOL_ID_APP);
                g_UIPlayMediaObj.uiMemSize        = POOL_SIZE_APP;
                //g_UIPlayMediaObj.iAudioType       = AUDIO_OUTPUT_HP;
                g_UIPlayMediaObj.bDisableAudio    = FALSE;

                UIFlowMoviePlay_SetSpeed(g_PlbData.VideoPBSpeed);
                g_uiUIFlowWndPlayCurrenDirection = MEDIAPLAY_DIR_FORWARD;

                //flush event first
                Ux_FlushEventByRange(NVTEVT_KEY_EVT_START,NVTEVT_KEY_EVT_END);

                //stop scan
                //SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, FALSE);
                SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, FALSE);

                Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_INIT_PLAY_MOVIE, 1, &g_UIPlayMediaObj);

                // Start to Play
                Ux_SendEvent(&UIMoviePlayObjCtrl,
                             NVTEVT_PLAY_PLAY_MOVIE,
                             2,
                             g_uiUIFlowWndPlayCurrenSpeed,
                             g_uiUIFlowWndPlayCurrenDirection);

                if (KeyScan_GetPlugDev()!=PLUG_HDMI)
                {
                    //FlowPB_IconDrawMovPlayVolumn(g_uiUIFlowWndPlayCurrentVolume);
                }
                FlowPB_IconDrawMovPlay(TRUE);
                g_PlbData.State = PLB_ST_PLAY_MOV;

            }
            break;
    }
    //#NT#2012/08/31#Calvin Chang -end

    return NVTEVT_CONSUME;
}
示例#15
0
INT32 UIFlowWndPlay_OnKeyMenu(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    switch(g_PlbData.State)
    {
    case PLB_ST_FULL:
        g_PlbData.State = PLB_ST_MENU;
        Input_SetKeyMask(KEY_RELEASE, FLGKEY_KEY_MASK_NULL);
        // Reset specific menu items
        SysSetFlag(FL_PROTECT, PROTECT_ONE);
        // Set Tab menu to Playback menu
        TM_SetMenu(&gPlaybackMenu);
        // Open common item menu
        Ux_OpenWindow(&MenuCommonItemCtrl, 0);
        break;
#if(_MODEL_DSC_== _MODEL_DUAL_NAZHIDA_)
    case PLB_ST_PLAY_MOV:
    case PLB_ST_FWD_MOV:
    case PLB_ST_BWD_MOV:
	//#NT#2012/08/31#Calvin Chang#Porting Media Flow -begin
	g_PlbData.State        = PLB_ST_FULL;
	g_PlbData.VideoPBSpeed = PLB_FWD_MOV_1x;
	UIFlowMoviePlay_SetSpeed(g_PlbData.VideoPBSpeed);
	g_uiUIFlowWndPlayCurrenDirection = MEDIAPLAY_DIR_FORWARD;

	Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PAUSE_PLAY_MOVIE, 0);
	Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_CLOSE_PLAY_MOVIE, 0);

	//#NT#2012/10/23#Philex Lin - begin
	// enable auto power off/USB detect timer
	// enable key tone flag
	KeyScan_EnableMisc(TRUE);
	//#NT#2012/10/23#Philex Lin - end

	// stop scan
	//if (SxTimer_GetFuncActive(SX_TIMER_DET_STRG_ID)==0)
	//        SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, TRUE);

	if (SxTimer_GetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID)==0)
	SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, TRUE);


	if (gphUIFlowMovPlay_Filehdl)
	{
	FileSys_CloseFile(gphUIFlowMovPlay_Filehdl);
	gphUIFlowMovPlay_Filehdl = NULL;
	}

	// Play 1st video frame image
	Ux_SendEvent(&UIPlayObjCtrl,NVTEVT_PLAYSINGLE, 1, PB_SINGLE_CURR);
	//#NT#2012/08/31#Calvin Chang -end
	g_PlbData.State = PLB_ST_MENU;
	Input_SetKeyMask(KEY_RELEASE, FLGKEY_KEY_MASK_NULL);
	// Reset specific menu items
	SysSetFlag(FL_PROTECT, PROTECT_ONE);
	// Set Tab menu to Playback menu
	TM_SetMenu(&gPlaybackMenu);
	// Open common item menu
	Ux_OpenWindow(&MenuCommonItemCtrl, 0);			
       break;		
#endif		
    }
    return NVTEVT_CONSUME;
}
示例#16
0
INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    if(paramNum == 1 && paramArray[0] == 0) //power-on start
    {
        //GxSystem_BootStart();
    }
    if(paramNum == 1 && paramArray[0] == 1) //power-on end
    {
        UINT32 paramNum;
        UINT32 paramArray[MAX_MESSAGE_PARAM_NUM];
        #if (UI_STYLE==UI_STYLE_DRIVER)
        //#NT#2012/10/18#Philex Lin - begin
        UINT32 uiChangeTo;
        UINT32 uiFSStatus;
        //#NT#2012/10/18#Philex Lin - end
        #if (_IR_REMOTE_ != _IR_REMOTE_NONE_)
        IRRX_DEVICE_OBJ IrRxDevice;
        #endif
        #endif

        GxSystem_BootEnd();

        //FilesysWaitFinish(); //wait strg init finish
        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_ == ENABLE)
        if (*g_piChangeModeTo != PRIMARY_MODE_MOVIE)
        {
            UserWaitEvent(NVTEVT_STRG_ATTACH, &paramNum, paramArray); //(paramNum == 1 && paramArray[0] == 0) //power-on begin
        }
        #else
        UserWaitEvent(NVTEVT_STRG_ATTACH, &paramNum, paramArray); //(paramNum == 1 && paramArray[0] == 0) //power-on begin
        #endif
        //#NT#2015/01/21#KS Hung -end

        #if (UI_STYLE==UI_STYLE_DRIVER)
        uiFSStatus = UI_GetData(FL_FSStatus);
        #endif

        //wait disp init finish
        //wait audio init finish
        //wait usb init finish
        #if PST_FUNC
            //#NT#2015/01/21#KS Hung -begin
            //#NT#Fast boot recording.
            #if ( (_DUAL_CARD_FUNC_ == DISABLE) && (_FAST_BOOT_REC_FUNC_ == DISABLE) )
            //Load_MenuInfo(); //jacky lan 
            #endif
            //#NT#2015/01/21#KS Hung -end
        Init_MenuInfo();
        #endif
        //#NT#2014/5/15#Philex Lin - Begin
        // set FL_DualDisp flag first depending on project requirements
        #if (DUALDISP_FUNC==DUALDISP_OFF)
        SysSetFlag(FL_DualDisp,DUALDISP_OFF);
        #elif (DUALDISP_FUNC==DUALDISP_ONXOR)
        SysSetFlag(FL_DualDisp,DUALDISP_ONXOR);
        #else
        SysSetFlag(FL_DualDisp,DUALDISP_ONBOTH);
        #endif
        //#NT#2014/5/15#Philex Lin - End

        // init Unifont table
        #if (MULTILINGUAL_FUNCTION == ENABLE)
        UniFont_Init();
        #endif
        SxTimer_SetFuncActive(SX_TIMER_DET_TIMER_ID,TRUE);
        BKG_SetExecFuncTable(gBackgroundExtFuncTable);

#if (POWERON_TESTFLOW == ENABLE)
        //init GxUSB module
        if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_VBUS)
        {
            //GxUSB_Init(TRUE);
        }
        else
        {
            GxUSB_Init(FALSE);
        }
#else
        //init GxUSB module
        if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_VBUS)
        {
            GxUSB_Init(TRUE);
        }
        else
        {
            GxUSB_Init(FALSE);
        }
#endif
        //get first app
        #if (UI_STYLE==UI_STYLE_DRIVER)

        #if (_IR_REMOTE_ != _IR_REMOTE_NONE_)
        // Open IrRx driver
        irrx_open((PIRRX_DEVICE_OBJ)&IrRxDevice);
        #endif
        //#NT#2012/10/23#Philex Lin-begin
        // init Volume to max,100
        GxSound_SetVolume(100);
        // add power up sound
        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_ == DISABLE)
        UISound_Play(DEMOSOUND_SOUND_POWERON_TONE);
        #endif
        //#NT#2015/01/21#KS Hung -end
        //#NT#2012/10/23#Philex Lin-end

        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        //#NT#2014/05/19#KS Hung -begin
        //#NT#This will affect dual card function.
        //#NT#Why does it need to detect again here?
        //#NT#2012/10/29#Philex Lin-begin
        // update card status again
        #if ((_DUAL_CARD_FUNC_ == DISABLE) && (_FAST_BOOT_REC_FUNC_ == DISABLE))
        if (GxStrg_GetDeviceCtrl((UINT32)GxStrg_GetDevice(0), CARD_READONLY))
        {
            UI_SetData(FL_CardStatus, CARD_LOCKED);
        }
        else if (GxStrg_GetDeviceCtrl((UINT32)GxStrg_GetDevice(0), CARD_INSERT))
        {
            UI_SetData(FL_CardStatus, CARD_INSERTED);
        }
        else
        {
            UI_SetData(FL_CardStatus, CARD_REMOVED);
        }
        #endif
        //#NT#2012/10/29#Philex Lin-end
        //#NT#2014/05/19#KS Hung -end
        //#NT#2015/01/21#KS Hung -end
        UI_SetData(FL_FSStatus,uiFSStatus);
        //#NT#2013/1/6#Philex Lin-begin
        #if (GPS_FUNCTION == ENABLE)
        GPSRec_Open(UART_BAUDRATE_9600);
        #endif
        //#NT#2013/1/6#Philex Lin-end

        //#NT#2015/01/21#KS Hung -begin
        //#NT#Fast boot recording.
        #if (_FAST_BOOT_REC_FUNC_)
        if (0)
        #else
        if (TRUE==ModeCalibration_CheckEng())
        #endif
        //#NT#2015/01/21#KS Hung -end
        {
            uiChangeTo = PRIMARY_MODE_CALIBRATION;
            Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, uiChangeTo);
        } else {
            // Init LED_
            GxLED_SetCtrl(KEYSCAN_LED_GREEN,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT);
            GxLED_SetCtrl(KEYSCAN_LED_RED,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT/5);
            GxLED_SetCtrl(KEYSCAN_LED_FCS,SETLED_SPEED,GXLED_1SEC_LED_TOGGLE_CNT/10);
            SxTimer_SetFuncActive(SX_TIMER_DET_LED_ID,TRUE);
            //GxLED_SetCtrl(KEYSCAN_LED_RED,SET_TOGGLE_LED,TRUE);

            //open first app mode
            //#NT#2015/01/21#KS Hung -begin
            //#NT#Fast boot recording.
            #if (_FAST_BOOT_REC_FUNC_)
            uiChangeTo = *g_piChangeModeTo;
            #else
            uiChangeTo = PRIMARY_MODE_MOVIE;
            #endif
            //#NT#2015/01/21#KS Hung -end
            //Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_MAIN);
            //Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_PLAYBACK);
 #if(LOW_POWER_TIMELAPSE_REC == ENABLE)

            DBG_IND("rtc_isPWRAlarm() = %d--%d =====\r\n",rtc_isPWRAlarm(),UI_GetData(FL_LOW_POWER_TIMELAPSE_REC));

            if(UI_GetData(FL_LOW_POWER_TIMELAPSE_REC)&& rtc_isPWRAlarm())
            {
                //SysSetFlag(FL_PHOTO_SIZE,                   PHOTO_SIZE_2MHD);
                uiChangeTo = PRIMARY_MODE_PHOTO;
            }
#endif
            
            Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, uiChangeTo);
            //Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_MOVIE);
        }
        UI_SetData(FL_NextMode,uiChangeTo);
        #else
        {
            UINT32 uiDscMode = DSC_MODE_PLAYBACK; //default mode
            #if (POWERONSOUND_FUNCTION ==  ENABLE)
            UISound_RegTable_Fast(); //install power-on sound table
            if(System_GetState(SYS_STATE_POWERON) == SYS_POWERON_NORMAL)
            {
                //if(!gIsUSBChargePreCheck)
                {
                    UISound_Play_Fast(PLAYSOUND_SOUND_POWERON_TONE);
                }

            }
            #endif
            #if (MODEKEY_FUNCTION == ENABLE)
            //open first app mode
            UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
            #else
            if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_SW || GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_ALM)
            {
                debug_msg("^GPowerOn Src = PWR key\r\n");
                #if (STATUSKEY_FUNCTION == ENABLE)
                UINT32 status = GxKey_GetData(GXKEY_STS_KEY1);
                UINT32 key = Input_GroupStatus2Event(status);
                gbIsPlayBackModePowerOn = FALSE;
                uiDscMode = Input_Key2Mode(key);
                DBG_IND("^YDscMode=0x%x\r\n", uiDscMode);
                UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
                g_bConsumeStatus = TRUE;
                #else
                gbIsPlayBackModePowerOn = TRUE;
                DBG_IND("^YDscMode=0x%x\r\n", uiDscMode);
                UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
                g_bConsumeStatus = TRUE;
                #endif
            }
            else if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_SW2)
            {
                debug_msg("^GPowerOn Src = PB Key\r\n");
                gbIsPlayBackModePowerOn = TRUE;
                DBG_IND("^YDscMode=0x%x\r\n", uiDscMode);
                UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
                g_bConsumeStatus = TRUE;
            }
            else if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_VBUS)
            {
                debug_msg("^GPowerOn Src = USB plug\r\n");
                if(!GxUSB_GetIsUSBPlug())
                {
                    Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
                }
                else
                {
                    UINT32 uiUsbType;
                    GxUSB_UpdateConnectType();
                    uiUsbType = GxUSB_GetConnectType();
                    switch (uiUsbType)
                    {
                    case USB_CONNECT_PC:
                        DBG_DUMP("USB is CONNECT to PC\r\n");
                        //resume queue,event can be executed
                        UI_UnlockEvent();
                        break;
                    case USB_CONNECT_CHARGING_PC:
                        DBG_DUMP("USB is CONNECT to Charging PC\r\n");
                        //resume queue,event can be executed
                        UI_UnlockEvent();
                        break;
                    case USB_CONNECT_CHARGER:
                        Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
                        DBG_DUMP("USB is CONNECT to CHARGER\r\n");
                        break;
                    default:
                        Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
                        DBG_ERR("USB is CONNECTION UNKNOWN!\r\n");
                        break;
                    }
                }
                g_bConsumeStatus = TRUE;
            }
            else if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_VBAT)
            {
                debug_msg("^GPowerOn Src = DC plug\r\n");
                Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
                g_bConsumeStatus = TRUE;
            }
            /*
            else if(GxSystem_GetPowerOnSource() == GX_PWRON_SRC_PWR_ALM)
            {
                debug_msg("^GPowerOn Src = Alarm\r\n");
                Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
                g_bConsumeStatus = TRUE;
            }
            */
            #endif
            #if (POWERONSOUND_FUNCTION ==  ENABLE)
            UISound_RegTable();
            #endif
        }
        #endif
    }
    return NVTEVT_CONSUME;
}