Beispiel #1
0
void OSD::write(uint8_t c)
{
    if(c == '|')
    {
        ClosePanel(); //It does all needed to finish auto increment and change current row
        OpenPanel(); //It does all needed to re-enable auto increment
    }
    else
    {
        spi_transfer(MAX7456_DMDI_reg);
        spi_transfer(c);
    }
}
void CompatModePanel::Refresh()
{
    Int32 mode;
    mAM->GetFrontActivityScreenCompatMode(&mode);
    if (mode == IActivityManager::COMPAT_MODE_ALWAYS
        || mode == IActivityManager::COMPAT_MODE_NEVER) {
        // No longer have something to switch.
        ClosePanel();
        return;
    }
    Boolean on = (mode == IActivityManager::COMPAT_MODE_ENABLED);
    ICheckable::Probe(mOnButton.Get())->SetChecked(on);
    ICheckable::Probe(mOnButton.Get())->SetChecked(!on);
}
Beispiel #3
0
void KeyScan_PoweroffFlow(void)
{
#if (KEYSCAN_POWEROFF_DET == ENABLE)

    UINT32 i;

    debug_err(("*********KeyScan_PoweroffFlow\r\n"));
    GPIOMap_TurnOffLCDBacklight();//for test

    if(GPIOMap_GetAcc12V()==FALSE)
    {
    		TimerDelayMs(500);	
	    if(GPIOMap_GetAcc12V()==TRUE)
	    {
	       debug_err(("*********KeyScan_PoweroffFlow  return \r\n"));	
		GPIOMap_TurnOnLCDBacklight();//for test
		return;
	    }			
    }

	
    gBKeyscanDetACCEn = FALSE;
    // stop recording before powering off if video is recording now
    if (Primary_GetCurrentMode() == PRIMARY_MODE_MOVIE)
    {
        if (gUIAviIsRecording==TRUE)
        {
            Ux_PostEvent(NVTEVT_KEY_ENTER, 2, NVTEVT_KEY_PRESS, FLGKEY_PRESSED);
        }
    }

    //#NT#2009/03/23#Janice ::wait primary tsk idle for change mode busy
    Primary_CheckIdle(PRI_TIME_INFINITE);

    //#NT#2007/07/24#Janice -begin
    //make sure is not bad card,then check fst finish
    if (GetFSStatus() == FS_INIT_OK)
    {
        // Wait for filesystem done,if normal power off,else skip wait
        if(!g_bFilesysAbortCmd)
        {
            //check fst busy,wait inifinit would lock keyscantsk
            if (FilesysWaitCmdFinish(FST_TIME_NO_WAIT) == FST_STA_BUSY)
            {
                    KeyScan_Poweroff(); //force power off make sure KeyScan_DetPoweroff would enter KeyScan_PoweroffFlow again
                    return;
            }
         }
    }
    //#NT#2007/07/24#Janice -end

    // Pause KeyScan timer
    timer_pausePlay(g_uiKeyScanTimerID, _TIMER_PAUSE);

    // Terminate all task first
    debug_err(("*********AppInit_Close\r\n"));
    AppInit_Close();

    // Save menu info
    debug_err(("*********Save_MenuInfo\r\n"));
    Save_MenuInfo();
    KeyScan_PlaySound(KEYSCAN_SOUND_STARTUP);

    // Display poweroff logo
    if (GPIOMap_IsLCDBacklightOn() == FALSE &&
        KeyScan_IsTVPlugIn() == FALSE &&
        KeyScan_IsHDMIPlugIn() == FALSE)
    {
        //OpenPanel(&g_LCDCtrlObj, &g_LCDSize);
        //SysInit_DisplaySplashScreen(LOGO_POWEROFF,0,0);
        //UI_ClearOSD(_OSD_INDEX_TRANSPART); // clear OSD
        //ide_disable_osd(IDE_OSDID_1);
        //ide_enable_video(IDE_VIDEOID_1);
        //TimerDelayMs(100);
        //GPIOMap_TurnOnLCDBacklight();
    }
    else
    {
        //SysInit_DisplaySplashScreen(LOGO_POWEROFF,0,0);
        //UI_ClearOSD(_OSD_INDEX_TRANSPART); // clear OSD
    }
    //TimerDelayMs(500);
    UI_ClearOSD(_OSD_INDEX_TRANSPART); // clear OSD

    ide_disable_video(IDE_VIDEOID_1);
    ide_disable_video(IDE_VIDEOID_2);
    //TimerDelayMs(10);
    TimerDelayMs(30);

    // Clear screen
    if (KeyScan_IsHDMIPlugIn() == TRUE)
    {
        UI_ClearOSD(_OSD_INDEX_BLACK);
        ide_wait_frame_end();
        CloseTVHDMI();
    }
    else if (KeyScan_IsTVPlugIn() == TRUE)
        UI_ClearOSD(_OSD_INDEX_BLACK); //for TV & HDMI.(sent black pattern when power off)
    else
        UI_ClearOSD(_OSD_INDEX_WHITE); //for Toppoly LCD.(need to sent white pattern when power off)

    // Close Panel
    ClosePanel();

    TimerDelayMs(700);
    //for (i=0x10000; i>0; i--);

    // Panel enter sleep mode
    Lens_Shutter_Move(CLOSE);
    //GPIOMap_TurnOffLCDPower();
    //TimerDelayMs(200);

    // Retract lens
    Photo_OpticalZoom_Retract();

    // Turn off LCD, CCD...
    GPIOMap_TurnOffCCDPower();

    // Turn off green and red LED
    KeyScan_TurnOffLED(KEYSCAN_LED_GREEN);
    KeyScan_TurnOffLED(KEYSCAN_LED_RED);
    pad_setPullUpDown(PAD_TV_DETECT, PAD_PULLDOWN);//jacky lan 

    // set NAND write protect to stop NAND (write) accessing
    GPIOMap_SetNANDWp();

    debug_err(("*********rtc_poweroffPWR\r\n"));
    // Power off
#if 0
    GPIOMap_SetPoweroffCtrlLow();
#else
    rtc_poweroffPWR();
#endif

    // Loop forever
    while (1)
    {
        debug_err(("*"));
    }

#endif //KEYSCAN_POWEROFF_DET
}
Beispiel #4
0
void KeyScan_DetTV(void)
{
    BOOL                bCurTVDet, bCurTVStatus;
    IMEIDE_ATTR         ImeIdeAttr;
    UINT32              i, uiWindowEn;
    PrimaryModeID       CurrMode;
    TV_DEVICE_OBJ       TVObj;
    AUDIO_OUTPUT        AudioOutput;
    IPL_OBJ             IplObj;
    DisplaySizeInfor    Displaysizeinfor;
    static BOOL first_2 = TRUE;
    static UINT32 changModeDelay =0;
    if ((KeyScan_IsUSBPlug() == TRUE) || (KeyScan_IsHDMIPlugIn() == TRUE))
         return;
    if(gbKeyscanDetTvEn==FALSE)
	 return ;
	
    bCurTVDet = GPIOMap_DetTV();

    //bCurTVStatus = (BOOL)(bCurTVDet & bLastTVDet);
    bCurTVStatus = TRUE;

    if (bCurTVStatus != bLastTVStatus)
    {		
//-----------jack lan ---------------------	
       KeyScan_SetDetGSPNAVIEn(FALSE);
	ide_disable_video(IDE_VIDEOID_1);
	ide_disable_video(IDE_VIDEOID_2);
       if((gUIAviIsRecording == TRUE)||(first_2==TRUE))
    	{	 
    	      first_2=FALSE;
             gbKscanTVPlug = TRUE;
	 //Ux_PostEvent(NVTEVT_MOVIEAUTORECORDSTOP, 0);	
	// for(changModeDelay=0;changModeDelay<300;changModeDelay++)
	 //{}
	 debug_msg("Keyscan TV:%d..\r\n",gbKscanTVPlug);
	 }	
	 else
	 {
        	gbKscanTVPlug = FALSE;
	 }
	 
//---------------------------------------    
        CurrMode = Primary_GetCurrentMode();

        // Enter dummy mode first
        Primary_ChangeMode(PRIMARY_MODE_DUMMY);
        Primary_Wait4ChangeModeDone();

        // TV is plugging in
        if (bCurTVStatus == TRUE)
        {
            debug_err(("TV is plugged, GPIOMap_DetTV = %d\r\n", bCurTVDet));

            bTVStatus = TRUE;

            // Turn off LCD backlight
            GPIOMap_TurnOffLCDBacklight();

            ide_disable_video(IDE_VIDEOID_1);
            ide_disable_video(IDE_VIDEOID_2);

            // Close LCD panel
            ClosePanel();
            GPIOMap_TurnOffLCDPower();
            pinmux_select_lcd(PINMUX_GPIO);

            // Disable all windows
            uiWindowEn = ide_get_window_en();
            ide_set_allwindow_dis();
            ide_set_load();
            ide_wait_frame_end();
			
            TVObj.bIDESrcPLL2 = g_LCDCtrlObj.bIDESrcPLL2;
            TVObj.uiIDESrcCLK = g_LCDCtrlObj.uiIDESrcCLK;
		TVObj.uiTVFSADJ = TV_FSADJ_3_0_K;//TV_FSADJ_3_3_K;

            // Init TV object
            if (Get_TVModeIndex() == TV_MODE_NTSC)
            {
                // NTSC
                InitTVNTSC_OBJ(&TVObj);
                OpenTVNTSC(&g_LCDSize);
                uiCurrentTVMode = TV_MODE_NTSC;
            }
            else
            {
                // PAL
                InitTVPAL_OBJ(&TVObj);
                OpenTVPAL(&g_LCDSize);
                uiCurrentTVMode = TV_MODE_PAL;
            }

            // Scaling OSD to new size
            KeyScan_ScaleDisplay();

            #if 0
            switch (Primary_GetCurrentMode())
            {
            // If you won't call playback task to display last image in preview mode,
            // you don't have to call PB_SetIMEIDESize() in PHOTO mode.
            case PRIMARY_MODE_PHOTO:

                IplObj.uiCmd = IPL_CMD_CHG_SIZE_IME1;
                IplObj.uiImeOutWidth1 = g_LCDSize.uiWidth;
                IplObj.uiImeOutHeight1 = g_LCDSize.uiHeight;
                IPL_SetCmd(&IplObj);

                Displaysizeinfor.DisplayInHsize = g_LCDSize.uiWidth;
                Displaysizeinfor.DisplayInVsize = g_LCDSize.uiHeight;
                Displaysizeinfor.DisplayInLineoffset = g_LCDSize.uiWidth;
                Displaysizeinfor.DisplayOutHsize = g_LCDSize.uiWinWidth;
                Displaysizeinfor.DisplayOutVsize = g_LCDSize.uiWinHeight;
                PhotoDisplay_ChgSize(&Displaysizeinfor,TRUE);

                ImeIdeAttr.uiImeOutH    = g_LCDSize.uiWidth;
                ImeIdeAttr.uiImeOutV    = g_LCDSize.uiHeight;
                ImeIdeAttr.uiIdeOutH    = g_LCDSize.uiWinWidth;
                ImeIdeAttr.uiIdeOutV    = g_LCDSize.uiWinHeight;

                PB_SetIMEIDESize(&ImeIdeAttr);
                break;

            case PRIMARY_MODE_MOVIE:
                // Set to 1/4 size to reduce memory bandwith requirement
                IplObj.uiCmd = IPL_CMD_CHG_SIZE_IME1;
                IplObj.uiImeOutWidth1 = g_LCDSize.uiWidth >> 1;
                IplObj.uiImeOutHeight1 = g_LCDSize.uiHeight >> 1;
                IPL_SetCmd(&IplObj);

                Displaysizeinfor.DisplayInHsize = g_LCDSize.uiWidth >> 1;
                Displaysizeinfor.DisplayInVsize = g_LCDSize.uiHeight >> 1;
                Displaysizeinfor.DisplayInLineoffset = g_LCDSize.uiWidth;
                Displaysizeinfor.DisplayOutHsize = g_LCDSize.uiWinWidth;
                Displaysizeinfor.DisplayOutVsize = g_LCDSize.uiWinHeight;
                PhotoDisplay_ChgSize(&Displaysizeinfor,TRUE);
                break;

            case PRIMARY_MODE_PLAYBACK:
                //Todo: FlowPB_UpdateThumbRect();
                ImeIdeAttr.uiImeOutH    = g_LCDSize.uiWidth;
                ImeIdeAttr.uiImeOutV    = g_LCDSize.uiHeight;
                ImeIdeAttr.uiIdeOutH    = g_LCDSize.uiWinWidth;
                ImeIdeAttr.uiIdeOutV    = g_LCDSize.uiWinHeight;
                PB_SetIMEIDESize(&ImeIdeAttr);
                break;

            default:
                break;
            }
            #endif

            // Enable IDE
	     ide_wait_frame_end();
            //ide_set_en(TRUE);

            // Delay to wait for TV DAC stable
            for (i=16; i>0; i--)
            {
                ide_wait_frame_end();
            }
            ide_set_en(TRUE);

            // Enable all windows
            ide_set_allwindow_en(uiWindowEn);
            ide_set_load();

            // forced set to playback mode
            //CurrMode = PRIMARY_MODE_PLAYBACK;
        }
Beispiel #5
0
/**
  Detect HDMI is plugging in or unplugged

  Detect HDMI is plugging in or unplugged.

  @param void
  @return void
*/
void KeyScan_DetHDMI(void)
{
    BOOL            bCurHDMIDet, bCurHDMIStatus;
    UINT32          i, uiWindowEn;
    PrimaryModeID   CurrMode;
    IPL_OBJ         IplObj;
    IMEIDE_ATTR     ImeIdeAttr;
    //#NT#2009/08/18#Klins Chen#[0006129] -begin
    //#Add to select audio channel to HDMI interface
    AUDIO_SETTING   AudioSetting;
    AudioSetting.SamplingRate       = AUDIO_SR_32000;               // Sampling rate = Clock / 256
    //#NT#2009/08/18#Klins Chen#[0006129] -end

    if ((KeyScan_IsUSBPlug() ==TRUE) || (KeyScan_IsTVPlugIn()==TRUE))
    {
         return;
    }

    bCurHDMIDet = GPIOMap_DetHDMI();

    bCurHDMIStatus = (BOOL)(bCurHDMIDet & bLastHDMIDet);

    if (bCurHDMIStatus != bLastHDMIStatus)
    {
        // Get current mode
        CurrMode = Primary_GetCurrentMode();

        Primary_ChangeMode(PRIMARY_MODE_DUMMY);
        Primary_Wait4ChangeModeDone();

        // HDMI is plugging in
        if (bCurHDMIStatus == TRUE)
        {
            debug_err(("# HDMI is plugging in #\n\r"));
            bHDMIStatus = TRUE;

            // Turn off LCD backlight
            GPIOMap_TurnOffLCDBacklight();

            ide_disable_video(IDE_VIDEOID_1);
            ide_disable_video(IDE_VIDEOID_2);

            // Close LCD panel
            ClosePanel();
            GPIOMap_TurnOffLCDPower();
            pinmux_select_lcd(PINMUX_GPIO);

            // Disable all windows
            uiWindowEn = ide_get_window_en();
            ide_set_allwindow_dis();
            ide_set_load();
            ide_wait_frame_end();

            //Init HDMI
            // This settings is customized by project
            InitTVHDMI(HDMI_1280X720P60, HDMI_AUDIO32KHZ);
            OpenTVHDMI(&g_LCDCtrlObj,&g_LCDSize);
            //#NT#2010/04/26#Klins Chen -begin
            #if (_CEC_CONTROL_ == ENABLE)
            cec_open();
            cec_setDeviceVendorID(CECVENDOR_NONE);
            cec_hookRemoteCallBack(KeyScan_parseRemoteKey, NULL);
            #endif
            //#NT#2010/04/26#Klins Chen -end

            //Display ratio
            ImgCapture_SetParameter(_DispRatio, _Ratio_16_9);

            // Scaling OSD to new size
            KeyScan_ScaleDisplay();

            // Enable IDE
            ide_waitFrameEnd();
            ide_setEn(TRUE);

            // Delay to wait for IDE stable
            for (i=6; i>0; i--)
            {
                ide_wait_frame_end();
            }

            // Enable all windows
            ide_set_allwindow_en(uiWindowEn);
            ide_set_load();

            //#NT#2009/11/24#Philex - begin
            // change audio output path/sampling rate
            AudioSetting.Output             = AUDIO_OUTPUT_NONE;
            KeyScan_HDMIAudioSetting(AudioSetting, TRUE);
            //#NT#2009/11/24#Philex - end

            // forced set to playback mode
            CurrMode = PRIMARY_MODE_PLAYBACK;
        }
        // HDMI is unplugged
        else
        {
            debug_err(("# HDMI is unplugged #\n\r"));

            bHDMIStatus = FALSE;

            ide_disable_video(IDE_VIDEOID_1);
            ide_disable_video(IDE_VIDEOID_2);

            //#NT#2010/04/26#Klins Chen -begin
            #if (_CEC_CONTROL_ == ENABLE)
            cec_hookRemoteCallBack(NULL, NULL);
            cec_close();
            #endif
            //#NT#2010/04/26#Klins Chen -end

            // Close HDMI
            ide_wait_frame_end();
            CloseTVHDMI();

            // Disable all windows
            uiWindowEn = ide_get_window_en();
            ide_set_allwindow_dis();
            ide_set_load();
            ide_wait_frame_end();

            // Open LCD panel
            GPIOMap_TurnOnLCDPower();
            OpenPanel(&g_LCDCtrlObj, &g_LCDSize);

            //Display ratio
            #if (_LCDTYPE_ == _LCDTYPE_TXDT300C_)
            ImgCapture_SetParameter(_DispRatio, _Ratio_16_9);
            #else
            ImgCapture_SetParameter(_DispRatio, _Ratio_4_3);
            #endif

            // Scaling OSD to new size
            KeyScan_ScaleDisplay();

            //ImeIdeAttr.uiImeOutH    = g_LCDSize.uiWidth;
            //ImeIdeAttr.uiImeOutV    = g_LCDSize.uiHeight;
            //ImeIdeAttr.uiIdeOutH    = g_LCDSize.uiWinWidth;
            //ImeIdeAttr.uiIdeOutV    = g_LCDSize.uiWinHeight;

            // Enable IDE
			ide_wait_frame_end();
            ide_setEn(TRUE);

            // Delay 6 IDE frames to avoid seeing garbage display
            for (i=6; i>0; i--)
            {
                ide_wait_frame_end();
            }

            // Enable all windows
            ide_set_allwindow_en(uiWindowEn);
            ide_set_load();

            //#NT#2009/08/18#Klins Chen#[0006129] -begin
            //#Add to select audio channel to HDMI interface
            AudioSetting.Output             = AUDIO_OUTPUT_SPK;
            KeyScan_HDMIAudioSetting(AudioSetting, FALSE);
            //#NT#2009/08/18#Klins Chen#[0006129] -end

            TimerDelayMs(150); // delay time before turn on LCD backlight
        }

        Primary_ChangeMode(CurrMode);
        Primary_Wait4ChangeModeDone();
    }

    bLastHDMIDet     = bCurHDMIDet;
    bLastHDMIStatus  = bCurHDMIStatus;
}