INT32 UIFlowWndPhoto_OnCustom1(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    UINT32  uiKeyAct;

    uiKeyAct = paramNum ? paramArray[0] : 0;	    
#if((_MODEL_DSC_ == _MODEL_DUAL_F6PLUS_)||(_MODEL_DSC_ == _MODEL_DUAL_V18_DT_)||(_MODEL_DSC_ == _MODEL_DUAL_HLYD_)\
	||(_MODEL_DSC_ == _MODEL_DUAL_G2800_)||(_MODEL_DSC_ == _MODEL_DUAL_NAZHIDA_)\
	||(_MODEL_DSC_ ==_MODEL_CARDV_S650_)||(_MODEL_DSC_ == _MODEL_DUAL_HLYD_MUBEN_)\
	||(_MODEL_DSC_ == _MODEL_DUAL_QIZHENG_M1_)||(_MODEL_DSC_ == _MODEL_DUAL_790S_)\
	||(_MODEL_DSC_ == _MODEL_DUAL_V18_LYSZ_)||(_MODEL_DSC_==_MODEL_DUAL_89M3_)\
	||(_MODEL_DSC_ == _MODEL_DUAL_SAIBOSHI_))
    switch (uiKeyAct)
    {
      case NVTEVT_KEY_PRESS:
	      if((KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
	     	{
	     		if(GPIOMap_IsLCDBacklightOn()==TRUE)
			GPIOMap_TurnOffLCDBacklight();
			else
			GPIOMap_TurnOnLCDBacklight();				
	     	}	  	
	  break;
    }	   
#endif	
	return NVTEVT_CONSUME;
}
void  TouchPanel_InteruptHandle(UINT32 X_press,UINT32 Y_press) ///  15ms one time
{

	UINT32 value;
	UINT8 x_low_press;
	UINT8 x_high_press;
	UINT8 y_low_press;
	UINT8 y_high_press;
	//UINT32 X_press,Y_press;
	static BOOL tp_press=FALSE;	
	static BOOL tp_press_move=FALSE;	
	
	static UINT32 press_counter=1,press_counter_move=1;
	static BOOL have_key_flag=FALSE;
	static BOOL first=TRUE;
      UINT32 current_tick;
	static UINT32 x_press_pre,y_press_pre;
	static UINT32 x_press_move_pre,y_press_move_pre;
	
	static BOOL first_press=TRUE;
	FLOAT distance,speed,sum,horizontal,vertical;
	UINT32 UI_X, UI_Y;
	static BOOL IngerTouchKeyEvent=FALSE;
	static UINT32 tpPressStatus;
	

      if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
	  	(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
     	{
		GPIOMap_TurnOnLCDBacklight();
		
     	}							
	else
	{	
	 //if((abs(X_press-x_press_pre)<18)&&(abs(Y_press-y_press_pre)<18))
			   {
				press_counter++;
				//press_counter_move=1;
				tp_press_move=FALSE;
				if(press_counter>=4  && press_counter<1000)
				{
				have_key_flag=TRUE;
					//if(tp_press==FALSE)
					{
						tp_press=TRUE;
						press_counter=1000;						
						UI_X=X_press;
						UI_Y=Y_press;
			         		debug_msg("gesture press only \r\n");	
	            				UISound_Play(DEMOSOUND_SOUND_KEY_TONE);						
					 	Ux_PostEvent(NVTEVT_KEY_TP, 3, GESTURE_RELEASE,UI_X,UI_Y);	
                                            press_counter = 1;
					}
				}			
			   }
	
	#if 0
	  if(1)//(IngerTouchKeyEvent==FALSE)
	  {
         	if(have_key_flag==FALSE)
	         {
	                //press_counter++;
			   
		    	  

			   if((abs(X_press-x_press_pre)<18)&&(abs(Y_press-y_press_pre)<18))
			   {
				press_counter++;
				//press_counter_move=1;
				tp_press_move=FALSE;
				if(press_counter>=6  && press_counter<1000)
				{
				have_key_flag=TRUE;
					//if(tp_press==FALSE)
					{
						tp_press=TRUE;
						press_counter=1000;						
						UI_X=X_press;
						UI_Y=Y_press;
			         		debug_msg("gesture press only \r\n");	
	            				UISound_Play(DEMOSOUND_SOUND_KEY_TONE);						
					 	Ux_PostEvent(NVTEVT_KEY_TP, 3, GESTURE_PRESSONLY,UI_X,UI_Y);		
					}
				}			
			   }
			  
			   x_press_pre=X_press;
			   y_press_pre=Y_press;								
			   UI_X=X_press;
			   UI_Y=Y_press;
		         debug_msg("key press: %d %d %d %d, counter:%d\r\n",UI_X,UI_Y,x_press_move_pre,y_press_move_pre,press_counter);
	         }
	   	else if((have_key_flag==TRUE))
		   {
	                press_counter++;
		    	 
			   sum=(X_press-x_press_move_pre)*(X_press-x_press_move_pre)+(Y_press-y_press_move_pre)*(Y_press-y_press_move_pre);
			   distance=sqrt(sum);		   
			   speed=distance/press_counter;
			   
			   vertical=(FLOAT)abs(Y_press-y_press_move_pre);
			   horizontal=(FLOAT)abs(X_press-x_press_move_pre);
			   
		         debug_msg("key release: %d %d %d %d, counter:%d, dis:%f, speed:%f, sum:%f\r\n",x_press_move_pre,y_press_move_pre,X_press,Y_press,press_counter,distance,speed,sum);		   
		         debug_msg("vertical: %f,horizontal:%f \r\n",vertical/distance,horizontal/distance);		   				 
			  
			   {
			         if(tp_press==TRUE)
			         {
			         	tp_press=FALSE;
			         	debug_msg("gesture release \r\n");							
					UI_X=X_press;
			                UI_Y=Y_press;					
	         		   	Ux_PostEvent(NVTEVT_KEY_TP, 3, GESTURE_RELEASE,UI_X,UI_Y);		 							
			         }
			   }		   
		         if(tp_press==TRUE)
		         {
		         	tp_press=FALSE;
		         }
			   press_counter=1;
			   have_key_flag=FALSE;	
		   }
	  }
      #endif
	  
    }

    System_ResetPowerSaveCount();	   

}	
void UI_DetCustomerModeKey(void)
{
	static UINT32 uiDownKey    = KEYSCAN_CUSTOMER_UNKNOWN;
	static UINT32 uiDownState    = KEYSCAN_CUSTOMER_INIT_STATE;
	static UINT32 uiDownKeyPressCount = 0;

	static UINT32 uiUpKey    = KEYSCAN_CUSTOMER_UNKNOWN;
	static UINT32 uiUpState    = KEYSCAN_CUSTOMER_INIT_STATE;
	static UINT32 uiUpKeyPressCount = 0;
	
	UINT32 uiADCValue;

	uiADCValue=adc_readData(1);
	if((uiADCValue>(KEY_ADC_DOWN-KEY_ADC_RANGE))&&(uiADCValue<(KEY_ADC_DOWN+KEY_ADC_RANGE)))
	{
        // Debounce
        if (uiDownKey == KEYSCAN_CUSTOMER_PRESSED)
        {
            if (uiDownState == KEYSCAN_CUSTOMER_RELEASE_STATE)
            {
                uiDownKeyPressCount++;
                debug_err(("uiDownKeyPressCount : %d....%d\r\n",uiDownKeyPressCount,KEYSCAN_CUSTOMER_COUNT));
				
                if (uiDownKeyPressCount > KEYSCAN_CUSTOMER_COUNT)
                {
                    uiDownState = KEYSCAN_CUSTOMER_PRESS_STATE;
                }
            }

            if(uiDownState == KEYSCAN_CUSTOMER_PRESS_STATE)
            {
                  //uiKeyCode = FLGKEY_KEY_POWER;
		     uiDownKeyPressCount = 0;		
		     uiDownKey    = KEYSCAN_CUSTOMER_UNKNOWN;
		     uiDownState    = KEYSCAN_CUSTOMER_INIT_STATE;			
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		
			if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
			(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
			{
				GPIOMap_TurnOnLCDBacklight();
				System_ResetPowerSaveCount();		    			
			}				
			else
			{
				Ux_PostEvent(NVTEVT_KEY_DOWN, 1, NVTEVT_KEY_CONTINUE);			   	
			}  
            }
        }
        else
        {
            uiDownKey = KEYSCAN_PWRKEY_PRESSED;
        }
    }
	else
	{
        // Debounce
        if (uiDownKey == KEYSCAN_CUSTOMER_RELEASED)
        {
            if (uiDownState == KEYSCAN_CUSTOMER_INIT_STATE)
            {
                uiDownState = KEYSCAN_CUSTOMER_RELEASE_STATE;
            }

            if (uiDownKeyPressCount)
            {	   
                uiDownKeyPressCount = 0;   
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		
			if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
			(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
			{
				GPIOMap_TurnOnLCDBacklight();
				System_ResetPowerSaveCount();		    			
			}				
			else
			{
                		Ux_PostEvent(NVTEVT_KEY_DOWN, 1, NVTEVT_KEY_PRESS);	
			}  				
            }
        }
        else
        {
            uiDownKey = KEYSCAN_CUSTOMER_RELEASED;
        }
    }	
	
   if((uiADCValue>(KEY_ADC_UP-KEY_ADC_RANGE))&&(uiADCValue<(KEY_ADC_UP+KEY_ADC_RANGE)))
	{
        // Debounce
        if (uiUpKey == KEYSCAN_CUSTOMER_PRESSED)
        {
            if (uiUpState == KEYSCAN_CUSTOMER_RELEASE_STATE)
            {
                uiUpKeyPressCount++;
                debug_err(("uiUpKeyPressCount : %d....%d\r\n",uiUpKeyPressCount,KEYSCAN_CUSTOMER_COUNT));
				
                if (uiUpKeyPressCount > KEYSCAN_CUSTOMER_COUNT)
                {
                    uiUpState = KEYSCAN_CUSTOMER_PRESS_STATE;
                }
            }

            if(uiUpState == KEYSCAN_CUSTOMER_PRESS_STATE)
            {
                  //uiKeyCode = FLGKEY_KEY_POWER;
		     uiUpKeyPressCount = 0;		
		     uiUpKey    = KEYSCAN_CUSTOMER_UNKNOWN;
		     uiUpState    = KEYSCAN_CUSTOMER_INIT_STATE;			
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);				
			if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
			(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
			{
				GPIOMap_TurnOnLCDBacklight();
				System_ResetPowerSaveCount();		    			
			}				
			else
			{
                		Ux_PostEvent(NVTEVT_KEY_UP, 1, NVTEVT_KEY_CONTINUE);			   	
			}  				
		    
            }
        }
        else
        {
            uiUpKey = KEYSCAN_PWRKEY_PRESSED;
        }
    }
	else
	{
        // Debounce
        if (uiUpKey == KEYSCAN_CUSTOMER_RELEASED)
        {
            if (uiUpState == KEYSCAN_CUSTOMER_INIT_STATE)
            {
                uiUpState = KEYSCAN_CUSTOMER_RELEASE_STATE;
            }

            if (uiUpKeyPressCount)
            {	   
                uiUpKeyPressCount = 0;   
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		
			if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
			(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
			{
				GPIOMap_TurnOnLCDBacklight();
				System_ResetPowerSaveCount();		    			
			}				
			else
			{
                		Ux_PostEvent(NVTEVT_KEY_UP, 1, NVTEVT_KEY_PRESS);	
			}  				
            }
        }
        else
        {
            uiUpKey = KEYSCAN_CUSTOMER_RELEASED;
        }
    }			
}
INT32 System_UserKeyFilter(NVTEVT evt, UINT32 paramNum, UINT32 *paramArray)
{
    UINT32 key = evt;
    if(IN_RANGE_EVENT(key, NVTEVT_KEY_STATUS_START, NVTEVT_KEY_STATUS_END)) //Status class
    {
        System_ResetDetCloseLenCount();
        System_ResetPowerSaveCount();
#if (STATUSKEY_FUNCTION == ENABLE)
        DBG_IND("^Bgroup key event=0x%x\r\n", key);

        if(g_bConsumeStatus)
        {
            g_bConsumeStatus = 0;
        }
        else
        {
            UINT32 uiDscMode = Input_Key2Mode(key);
            DBG_IND("^YDscMode=0x%x\r\n", uiDscMode);
            //FlowMode_OnKeyMode(uiDscMode);
            UI_Switch_DscMode(uiDscMode,DSCMODE_SWITCH_FORCE,DSCMODE_SWITCHDIR_DONT_CARE);
        }
#endif
        return NVTEVT_CONSUME;
    }
    else if(IN_RANGE_EVENT(key, NVTEVT_KEY_BUTTON_START, NVTEVT_KEY_BUTTON_END)) //Button class
    {
        if(IN_RANGE_EVENT(key, NVTEVT_KEY_PRESS_START, NVTEVT_KEY_PRESS_END)) //Press key
        {
#if (_MODEL_DSC_ == _MODEL_CARDV_)
#else
		if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
		(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
		{
			GPIOMap_TurnOnLCDBacklight();
			System_ResetPowerSaveCount();	
                   return NVTEVT_CONSUME;			
		}        
#endif		
            if(key == NVTEVT_KEY_POWER)
            {
                return NVTEVT_CONSUME;
            }

            System_ResetDetCloseLenCount();
            if(GxPower_GetControl(GXPWR_CTRL_SLEEP_LEVEL) > 1)  // drop key if sleep level > 1
            {
                //NOTE! do not set GXPWR_CTRL_SLEEP_RESET before get GXPWR_CTRL_SLEEP_LEVEL,
                //  because GXPWR_CTRL_SLEEP_LEVEL status maybe alter by sleep wakeup flow~
                System_ResetPowerSaveCount();
                return NVTEVT_CONSUME;
            }
            else
            {
                System_ResetPowerSaveCount();
                if (m_uiAnyKeyUnlockEn)
                {
                    Ux_PostEvent(NVTEVT_KEY_PRESS_START, 1, key);
                    return NVTEVT_CONSUME;
                }
                return NVTEVT_PASS;
            }
        }
        else if(IN_RANGE_EVENT(key, NVTEVT_KEY_CONTINUE_START, NVTEVT_KEY_CONTINUE_END)) //Contine key
        {
            if(key == NVTEVT_KEY_POWER_CONT)
            {
                return NVTEVT_CONSUME;
            }

            System_ResetDetCloseLenCount();
            System_ResetPowerSaveCount();
            return NVTEVT_PASS;
        }
        else if(IN_RANGE_EVENT(key, NVTEVT_KEY_RELEASE_START, NVTEVT_KEY_RELEASE_END)) //Release key
        {
            if(key == NVTEVT_KEY_POWER_REL)
            {
                System_ResetDetCloseLenCount();
                if(GxPower_GetControl(GXPWR_CTRL_SLEEP_LEVEL) > 1)  // drop key if sleep level > 1
                {
                    //NOTE! do not set GXPWR_CTRL_SLEEP_RESET before get GXPWR_CTRL_SLEEP_LEVEL,
                    //  because GXPWR_CTRL_SLEEP_LEVEL status maybe alter by sleep wakeup flow~
                    System_ResetPowerSaveCount();
                }
                else
                {
                    //g_bIsExitSystemWithPowerKey = TRUE;
		        if (System_GetState(SYS_STATE_CURRMODE)==PRIMARY_MODE_MOVIE)
		        {
		        	switch(gMovData.State)	
		        	{
		        	     case MOV_ST_REC:
				     case MOV_ST_REC|MOV_ST_ZOOM:
					//MediaRec_Stop(MEDIAREC_WAIT_END);  	
	                		FlowMovie_StopRec();				
				     break;
		        	}
		        }                       
                    System_PowerOff(SYS_POWEROFF_NORMAL);
                }
                return NVTEVT_CONSUME;
            }

            System_ResetDetCloseLenCount();
            System_ResetPowerSaveCount();
            return NVTEVT_PASS;
        }
    }
    return NVTEVT_PASS;
}
void UI_DetPwrKey(void)
{
    if(!UI_IsForceLock())
    {
#if 1
    {
        static UINT32 uiPowerKey    = KEYSCAN_PWRKEY_UNKNOWN;
        static UINT32 uiPWRState    = KEYSCAN_PWROFF_INIT_STATE;
        static UINT32 uiPowerKeyPressCount = 0;

        if ( rtc_getPWRStatus())
        {
        // Reset shutdown timer
        rtc_resetShutdownTimer();

        // Debounce
        if (uiPowerKey == KEYSCAN_PWRKEY_PRESSED)
        {
            if (uiPWRState == KEYSCAN_PWROFF_RELEASE_STATE)
            {
                uiPowerKeyPressCount++;
                debug_err(("uiPowerKeyPressCount : %d....%d\r\n",uiPowerKeyPressCount,KEYSCAN_POWEROFF_COUNT));
				
                if (uiPowerKeyPressCount > KEYSCAN_POWEROFF_COUNT)
                {
                    uiPWRState = KEYSCAN_PWROFF_PRESS_STATE;
                }
            }

            if(uiPWRState == KEYSCAN_PWROFF_PRESS_STATE)
            {
                  //uiKeyCode = FLGKEY_KEY_POWER;
		     uiPowerKeyPressCount = 0;
        	     //rtc_resetShutdownTimer();
		 
		    Delay_DelayMs(200);
		    //System_PowerOff(SYS_POWEROFF_NORMAL);
    		    //Ux_SendEvent(0, NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start			
                 Ux_PostEvent(NVTEVT_KEY_POWER_REL, 1, NVTEVT_KEY_PRESS);	
		    
            }
        }
        else
        {
            uiPowerKey = KEYSCAN_PWRKEY_PRESSED;
        }
    }
    else
	{
        // Debounce
        if (uiPowerKey == KEYSCAN_PWRKEY_RELEASED)
        {
            if (uiPWRState == KEYSCAN_PWROFF_INIT_STATE)
            {
                uiPWRState = KEYSCAN_PWROFF_RELEASE_STATE;
            }

            if (uiPowerKeyPressCount)
            {	   
                uiPowerKeyPressCount = 0;   
		#if (_MODEL_DSC_ == _MODEL_CARDV_)
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		
		#else
	      if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
		  	(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
	     	{
			GPIOMap_TurnOnLCDBacklight();
			System_ResetPowerSaveCount();		    			
	     	}						
		else
		{
              	   UISound_Play(DEMOSOUND_SOUND_KEY_TONE);			
                      //******PW84_KEY_D****************************
                     // #if( KEY_BOARD_TYPE==PW84_KEY_BOARD_D_V01)
                	   //Ux_PostEvent(NVTEVT_KEY_MENU, 1, NVTEVT_KEY_PRESS);  
                	   //*****for 6 keys **************
                	  // Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS);  
                	   
			  // #else
                      //******default****************************				   
                	   Ux_PostEvent(NVTEVT_KEY_MODE, 1, NVTEVT_KEY_PRESS);			   
                	  // #endif
		}	
		#endif                	  
            }
        }
        else
        {
            uiPowerKey = KEYSCAN_PWRKEY_RELEASED;
        }
    }	  
        
    }
#else     
        GxKey_DetPwrKey();
#endif
    }
}
Exemple #6
0
INT32 PipView_OnDraw(DISPSRV_DRAW* pDraw) //PIP = Picture In Picture
{
    ER er;
    UINT32 i,n=(pDraw->bDualSrc==TRUE)?2:1;
    UINT32 uiLockIdx[2];
    PIP_DST_RATIO RatioDst; //display buffer ratio
    PIP_SRC_RATIO RatioSrc[2]={0}; //1st source and 2nd source
    COORDTS_HANDLE hTs = NULL;
    COORDTS_CREATE Create={0};
    COORDTS_ORIGIN Origin={0};
    COORDTS_TARGET Target={0};
    COORDTS_TRANS  Trans={0};
    IMG_BUF* pSrc=NULL;
    IMG_BUF* pSrcImg[2]={0};
    IMG_BUF* pDst=pDraw->pImg[0];

    IRECT rcSrc={0},rcDst={0};
    //#NT#2015/03/27#KS Hung -begin
    //#NT#If using high resolution DSI LCD, it only need once when the both paths frame income.
    ////#NT#This only is a DSI LCD type, please add by yourself.
    #if  (_SENSORLIB2_ != _SENSORLIB2_DUMMY_)
    if(DrvSensor_Det2ndSensor())
    #endif		
    {
	    #if((_LCDTYPE_ == _LCDTYPE_HX8369B_DSI_)||(_LCDTYPE_ == _LCDTYPE_UT45030A0_HX8379C_)||(_LCDTYPE_ == _LCDTYPE_TM446_OTM8019A_))
	    {
	        static UINT32 uiInComeCnt=0;

	        uiInComeCnt++;
	        if (uiInComeCnt == 2)
	        {
	            uiInComeCnt = 0;
	        }
	        else
	        {
	            return E_OK;
	        }
	    }
	    #endif
    }
    //#NT#2015/03/27#KS Hung -begin
    for(i=0;i<n;i++)
    {
        if((er=pDraw->fpLock[i](&uiLockIdx[i],DISPSRV_LOCK_NEWEST))!=E_OK)
        {
            DBG_ERR("failed to lock %d\r\n",i);
            return er;
        }
        else
        {
             pSrcImg[i] = &pDraw->pDS[i]->pSrc[uiLockIdx[i]];
        }
    }

    //Collect Ratio
    switch (KeyScan_GetPlugDev())
    {
    case PLUG_HDMI:
        RatioDst = PIP_DST_RATIO_16_9;
        break;

    case PLUG_TV:
        #if (TV_DISPLAY_169HD == ENABLE)
            RatioDst = PIP_DST_RATIO_16_9;
        #else
            RatioDst = PIP_DST_RATIO_4_3;
        #endif
        break;

    default: // LCD
        #if (DISPLAY_169HD == ENABLE)
            RatioDst = PIP_DST_RATIO_16_9;
        #else
            RatioDst = PIP_DST_RATIO_4_3;
        #endif
        break;
    }

//    RatioDst = (pDraw->pDD[DISPSRV_DISP_IDX_PRIMARY]->AspectRatio.h*16.0f/pDraw->pDD[DISPSRV_DISP_IDX_PRIMARY]->AspectRatio.w==9.0f)
//        ?PIP_DST_RATIO_16_9
//        :PIP_DST_RATIO_4_3;
    RatioSrc[0] = m_PrimaryImageRatio_Active;

    if(pSrcImg[1]!=NULL)
    {
        RatioSrc[1] = (pSrcImg[1]->Height*16.0f/pSrcImg[1]->Width==9.0f)
            ?PIP_SRC_RATIO_16_9
            :((pSrcImg[1]->Height*3.0f/pSrcImg[1]->Width==2.0f)?PIP_SRC_RATIO_3_2:PIP_SRC_RATIO_4_3);
    }

    //Prepare Coordinate Transform
    Create.uiApiVer = COORDTS_API_VERSION;
    Create.pRegBuf = m_PipTsBuf;
    Create.uiRegBufSize = sizeof(m_PipTsBuf);
    hTs = CoordTs_Create(&Create);

    Origin.hHandle=hTs;
    if(RatioDst==PIP_DST_RATIO_16_9)
    {
        Origin.SizeOrigin.w = m_PipBaseOn_16_9.w;
        Origin.SizeOrigin.h = m_PipBaseOn_16_9.h;
    }
    else
    {
        Origin.SizeOrigin.w = m_PipBaseOn_4_3.w;
        Origin.SizeOrigin.h =m_PipBaseOn_4_3.h;
    }
    CoordTs_SetOrigin(&Origin);

    Target.hHandle=hTs;
    Target.SizeTarget.w = pDst->Width;
    Target.SizeTarget.h = pDst->Height;
    Target.pRcRegion = NULL;
    CoordTs_SetTarget(&Target);


    //--------------------Customer Draw Begin-----------------------------------
    //Clean Screen
    if(m_iCleanCnt>0)
    {
        GxImg_FillData(pDst, NULL, COLOR_YUV_BLACK);
        m_iCleanCnt--;
    }

    //Trans Common Setting
    Trans.hHandle=hTs;
    Trans.bInverse=FALSE;
    Trans.Method = COORDTS_METHOD_FULL_FIT;
    Trans.pRcDst = (URECT*)&rcDst;
    Trans.uiRectNum = 1;

    //Paste 2nd layer first
    switch(m_PipStyle)
    {
        case PIP_STYLE_1T1F:
            pSrc = NULL;       //no paste
            Trans.pRcSrc = NULL;
            break;
        case PIP_STYLE_1T1B2S:
            pSrc = pSrcImg[1]; //paste 2nd first
            Trans.pRcSrc = &m_PipWnd_Small[RatioDst][RatioSrc[1]];
            break;
        case PIP_STYLE_1T1S2B:
            pSrc = pSrcImg[1]; //paste 2nd first
            Trans.pRcSrc = &m_PipWnd_Big[RatioDst][RatioSrc[1]];
            break;
        case PIP_STYLE_2T2F:   //no paste
            pSrc = NULL;
            Trans.pRcSrc = NULL;
            break;
        case PIP_STYLE_2T1B2S:
            pSrc = pSrcImg[0]; //paste 1st first
            Trans.pRcSrc = &m_PipWnd_Big[RatioDst][RatioSrc[0]];
            break;
        case PIP_STYLE_2T1S2B:
            pSrc = pSrcImg[0]; //paste 1st first
            Trans.pRcSrc = &m_PipWnd_Small[RatioDst][RatioSrc[0]];
            break;
        default:
            DBG_ERR("unexpected case %d\r\n",m_PipStyle);
            break;
    }

    if(pSrc!=NULL)
    {
        CoordTs_TransRect(&Trans);

        rcSrc.x = 0;
        rcSrc.y = 0;
        rcSrc.w = pSrc->Width;
        rcSrc.h = pSrc->Height;

        #if (PIP_2ND_PATH_FLIP == ENABLE)
        {
            if (m_PipStyle == PIP_STYLE_1T1S2B || m_PipStyle == PIP_STYLE_1T1S2B)
            {
                PipView_FlipImage(pSrc, &rcSrc, pDst, &rcDst);
            }
            else
            {
                GxImg_ScaleData(pSrc, &rcSrc, pDst, &rcDst);
            }
        }
        #elif (PIP_1ST_PATH_FLIP == ENABLE)
        {
            if (m_PipStyle == PIP_STYLE_2T1B2S || m_PipStyle == PIP_STYLE_2T1S2B)
            {
                PipView_FlipImage(pSrc, &rcSrc, pDst, &rcDst);
            }
            else
            {
                GxImg_ScaleData(pSrc, &rcSrc, pDst, &rcDst);
            }
        }
        #else
        {
            //First Draw
            GxImg_ScaleData(pSrc, &rcSrc, pDst, &rcDst);
        }
        #endif
    }

    //Paste 1st layer second
    switch(m_PipStyle)
    {
        case PIP_STYLE_1T1F:
            pSrc = pSrcImg[0]; //then paste 1st
            Trans.pRcSrc = &m_PipWnd_Full[RatioDst][RatioSrc[0]];
            break;
        case PIP_STYLE_1T1B2S:
            pSrc = pSrcImg[0]; //then paste 1st
            Trans.pRcSrc = &m_PipWnd_Big[RatioDst][RatioSrc[0]];
            break;
        case PIP_STYLE_1T1S2B:
            pSrc = pSrcImg[0]; //then paste 1st
            Trans.pRcSrc = &m_PipWnd_Small[RatioDst][RatioSrc[0]];
            break;
        case PIP_STYLE_2T2F:
            pSrc = pSrcImg[1]; //then paste 2nd
            Trans.pRcSrc = &m_PipWnd_Full[RatioDst][RatioSrc[1]];
            break;
        case PIP_STYLE_2T1B2S:
            pSrc = pSrcImg[1]; //then paste 2nd
            Trans.pRcSrc = &m_PipWnd_Small[RatioDst][RatioSrc[1]];
            break;
        case PIP_STYLE_2T1S2B:
            pSrc = pSrcImg[1]; //then paste 2nd
            Trans.pRcSrc = &m_PipWnd_Big[RatioDst][RatioSrc[1]];
            break;
        default:
            DBG_ERR("unexpected case %d\r\n",m_PipStyle);
            break;
    }

    if(pSrc!=NULL)
    {
        CoordTs_TransRect(&Trans);

        rcSrc.x = 0;
        rcSrc.y = 0;
        rcSrc.w = pSrc->Width;
        rcSrc.h = pSrc->Height;

        #if (PIP_2ND_PATH_FLIP == ENABLE)
        {
            if (m_PipStyle == PIP_STYLE_2T2F || m_PipStyle == PIP_STYLE_2T1B2S || m_PipStyle == PIP_STYLE_2T1S2B)
            {
                PipView_FlipImage(pSrc, &rcSrc, pDst, &rcDst);
            }
            else
            {
                GxImg_ScaleData(pSrc,&rcSrc,pDst,&rcDst);
            }
        }
        #elif (PIP_1ST_PATH_FLIP == ENABLE)
        {
            if (m_PipStyle == PIP_STYLE_1T1F || m_PipStyle == PIP_STYLE_1T1B2S || m_PipStyle == PIP_STYLE_1T1S2B)
            {
                PipView_FlipImage(pSrc, &rcSrc, pDst, &rcDst);
            }
            else
            {
                GxImg_ScaleData(pSrc, &rcSrc, pDst, &rcDst);
            }
        }
        #else
        {
            //Second Draw
            GxImg_ScaleData(pSrc,&rcSrc,pDst,&rcDst);
        }
        #endif
    }

    for(i=0;i<n;i++)
    {
        if((er=pDraw->fpUnlock[i](uiLockIdx[i]))!=E_OK)
        {
            DBG_ERR("failed to unlock %d\r\n",i);
            return er;
        }
    }
    //--------------------Customer Draw End-------------------------------------
    pDraw->fpFlip(TRUE);

    return E_OK;
}
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;
}
INT32 System_OnShutdown(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
	UINT32 uiJpgAddr, uiJpgSize;

    if(paramNum == 1 && paramArray[0] == 0) //power-off begin
    {
        GxSystem_ShutDownStart();
        GPIOMap_DVR_PowerOff();
		
       if(SysGetFlag(FL_MOVIE_PARKING) == MOVIE_PARKING_ON)
        {
            debug_msg(">>----turn on Parking movie--------\r\n");
		GSensor_ParkingMode();
	 }
	 
        #if (UI_STYLE==UI_STYLE_DRIVER)
        //#NT#2012/10/23#Philex Lin-begin
        // add power off sound
        UISound_Play(DEMOSOUND_SOUND_POWERON_TONE);
        //#NT#2012/10/23#Philex Lin-end
        #endif

        //debug_msg("^Gq0\r\n");
        //close last app mode
        Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, SYS_MODE_UNKNOWN);
        //debug_msg("^Gq1\r\n");

        //#NT#2013/01/23#Lincy Lin -begin
        //#NT#Add low battery, lens error power off tone and screen
        if(System_GetState(SYS_STATE_POWEROFF) == SYS_POWEROFF_BATTEMPTY)
        {
            DBG_ERR("low battery **********\r\n");
            #if(_USR_WND_==ENABLE)
            #if (UI_STYLE==UI_STYLE_DEMO)
            if(!gIsUSBChargePreCheck)
            {
                UISound_Play(PLAYSOUND_SOUND_BATT_WARNING_TONE);
                SwTimer_DelayMs(1000);
                Ux_OpenWindow(&DialogWarnCtrl, 2, WARN_BATT_EMPTY, WARN_ALWAYS);
                Ux_Redraw();
                SwTimer_DelayMs(2000);
            }
            #endif
            #endif
        }
        else if(System_GetState(SYS_STATE_POWEROFF) == SYS_POWEROFF_LENSERROR)
        {
            #if(_USR_WND_==ENABLE)
            #if (UI_STYLE==UI_STYLE_DEMO)
            Ux_OpenWindow(&DialogWarnCtrl, 2, WARN_LENS_ERROR, WARN_ALWAYS);
            Ux_Redraw();
            GxLED_SetCtrl(KEYSCAN_LED_RED,TURNON_LED,TRUE);
            UISound_Play(PLAYSOUND_SOUND_WARNING_TONE);
            SwTimer_DelayMs(1500);
            UISound_Play(PLAYSOUND_SOUND_WARNING_TONE);
            SwTimer_DelayMs(1500);
            GxLED_SetCtrl(KEYSCAN_LED_RED,TURNON_LED,FALSE);
            #endif
            #endif
        }
        //#NT#2013/01/23#Lincy Lin -end
        else
        {
            #if (POWEROFFLOGO_FUNCTION == ENABLE)
            GxDisplay_Set(LAYER_OSD1, LAYER_STATE_ENABLE, 0); //turn off OSD1
            GxDisplay_Set(LAYER_OSD2, LAYER_STATE_ENABLE, 0); //turn off OSD2
            GxDisplay_Flush(LAYER_OSD1);
            GxDisplay_Flush(LAYER_OSD2);
            GxDisplay_Set(LAYER_VDO1, LAYER_STATE_ENABLE, 0); //turn off VDO1
            GxDisplay_Flush(LAYER_VDO1);
	     if(SysGetFlag(FL_OPENING_LOGO)==OPENING_LOGO_ON)
	     {
		  	if(FALSE==UI_ShowLogoFile(UI_LOGO_POWEROFF,&uiJpgAddr,&uiJpgSize))
		  	{
            			Display_ShowSplash(SPLASH_POWEROFF);
			}
	      }
	     else
	     {
            		Display_ShowSplash(SPLASH_POWEROFF);
	     }
  	   if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
  	      (KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
  	    {
  		GPIOMap_TurnOnLCDBacklight();
  		System_ResetPowerSaveCount();		    			
  	    }		 
            SwTimer_DelayMs(500);
            #endif
        }
        //#NT#2014/06/13#KS Hung -begin
        //#NT#For NT96650, SDIO2 pin is shared with SPI flash.
        #if ( (_DUAL_CARD_FUNC_ == ENABLE) && (_CHIP_ == _CHIP_650_) )
        if (SysGetFlag(FL_DualCardMain) == MAIN_CARD_2)
        {
            GxStrg_CloseDevice(0); // Release bus to SPI using
        }
        System_OnStrgInit_PS();
        #endif
        //#NT#2014/06/13#KS Hung -end
        Save_MenuInfo();
        //debug_msg("^Gq2\r\n");
        #if (UI_STYLE==UI_STYLE_DEMO)
        //debug_msg("^Gq3\r\n");
            #if (POWEROFFSOUND_FUNCTION ==  ENABLE)
            {
                UISound_Play(PLAYSOUND_SOUND_POWEROFF_TONE);
            }
            #endif
        #endif
        //debug_msg("^Gq4\r\n");
        UI_LockEvent();

        UI_Quit(); //quit from event loop
        //debug_msg("^Gq5\r\n");
    }
    if(paramNum == 1 && paramArray[0] == 1) //power-off end
    {
        //GxSystem_ShutDownEnd();
        //bQuit = TRUE;
    }
    return NVTEVT_CONSUME;
}
void UI_DetPwrKey(void)
{
    if(!UI_IsForceLock())
    {
#if 1
    {
        static UINT32 uiPowerKey    = KEYSCAN_PWRKEY_UNKNOWN;
        static UINT32 uiPWRState    = KEYSCAN_PWROFF_INIT_STATE;
        static UINT32 uiPowerKeyPressCount = 0;

        if ( rtc_getPWRStatus())
        {
        // Reset shutdown timer
        rtc_resetShutdownTimer();

        // Debounce
        if (uiPowerKey == KEYSCAN_PWRKEY_PRESSED)
        {
            if (uiPWRState == KEYSCAN_PWROFF_RELEASE_STATE)
            {
                uiPowerKeyPressCount++;
                debug_err(("uiPowerKeyPressCount : %d....%d\r\n",uiPowerKeyPressCount,KEYSCAN_POWEROFF_COUNT));
		   //if(GSensor_GetGsensorMaker()==GSENSOR_GMA301)
		   {
			   if(SysGetFlag(FL_MOVIE_PARKING) == MOVIE_PARKING_ON)
			    {
			          Gsensor_SetInterrupt(FALSE);
			    }
		   }				
                if (uiPowerKeyPressCount > KEYSCAN_POWEROFF_COUNT)
                {
                    uiPWRState = KEYSCAN_PWROFF_PRESS_STATE;
                }
				
            }

            if(uiPWRState == KEYSCAN_PWROFF_PRESS_STATE)
            {
                  //uiKeyCode = FLGKEY_KEY_POWER;
		     uiPowerKeyPressCount = 0;
        	     //rtc_resetShutdownTimer();
		 
		    Delay_DelayMs(200);
		    //System_PowerOff(SYS_POWEROFF_NORMAL);
    		    //Ux_SendEvent(0, NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start			
                 Ux_PostEvent(NVTEVT_KEY_POWER_REL, 1, NVTEVT_KEY_PRESS);	
		    
            }
        }
        else
        {
            uiPowerKey = KEYSCAN_PWRKEY_PRESSED;
        }
    }
    else
	{
        // Debounce
        if (uiPowerKey == KEYSCAN_PWRKEY_RELEASED)
        {
            if (uiPWRState == KEYSCAN_PWROFF_INIT_STATE)
            {
                uiPWRState = KEYSCAN_PWROFF_RELEASE_STATE;
            }

            if (uiPowerKeyPressCount)
            {	   
                uiPowerKeyPressCount = 0;   
	#if (_MODEL_DSC_ == _MODEL_CARDV_B50_)
                UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		
	#else
		//if(GSensor_GetGsensorMaker()==GSENSOR_GMA301)
		{
		   if(SysGetFlag(FL_MOVIE_PARKING) == MOVIE_PARKING_ON)
		    {
		          Gsensor_SetInterrupt(TRUE);
		    }
		}		
	      if((GPIOMap_IsLCDBacklightOn()==FALSE)&&
		  	(KeyScan_GetPlugDev() != 1)&&(KeyScan_GetPlugDev() != 2))
	     	{
              	UISound_Play(DEMOSOUND_SOUND_KEY_TONE);		     	
			GPIOMap_TurnOnLCDBacklight();
			System_ResetPowerSaveCount();		    			
	     	}						
		else
		{              	   UISound_Play(DEMOSOUND_SOUND_KEY_TONE);	

		#if ((_MODEL_DSC_ == _MODEL_DUAL_F6PLUS_)||(_MODEL_DSC_ == _MODEL_DUAL_V18_DT_)||(_MODEL_DSC_ == _MODEL_DUAL_HLYD_)||(_MODEL_DSC_ == _MODEL_DUAL_HLYD_MUBEN_)\
			||(_MODEL_DSC_ == _MODEL_DUAL_V18_LYSZ_)||(_MODEL_DSC_==_MODEL_DUAL_89M3_)) 
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 
		#elif((_MODEL_DSC_ == _MODEL_DUAL_G2800_)||(_MODEL_DSC_ == _MODEL_DUAL_QIZHENG_M1_)||(_MODEL_DSC_ == _MODEL_DUAL_SAIBOSHI_))
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 		
		#elif(_MODEL_DSC_ == _MODEL_DUAL_JIACHANGLING_)      	
                	   Ux_PostEvent(NVTEVT_KEY_MENU, 1, NVTEVT_KEY_PRESS); 	
		#elif (_MODEL_DSC_ == _MODEL_DUAL_BMWCABLE_) 
			   Ux_PostEvent(NVTEVT_KEY_MENU, 1, NVTEVT_KEY_PRESS); 	
		#elif(_MODEL_DSC_ == _MODEL_DUAL_NAZHIDA_)
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 	
		#elif(_MODEL_DSC_ == _MODEL_CARDV_S650_)
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 	
		#elif(_MODEL_DSC_ == _MODEL_DUAL_790S_)
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 	
                	   //Ux_PostEvent(NVTEVT_KEY_MODE, 1, NVTEVT_KEY_PRESS); 	                			
		#elif(_MODEL_DSC_ == _MODEL_CARDV_GT200_)
                	   Ux_PostEvent(NVTEVT_KEY_CUSTOM1, 1, NVTEVT_KEY_PRESS); 	
		#elif(_MODEL_DSC_==_MODEL_CARDV_K12_)
		#elif(_MODEL_DSC_==_MODEL_DUAL_AONI328_)
                	   Ux_PostEvent(NVTEVT_KEY_MENU, 1, NVTEVT_KEY_PRESS); 	                	   		
		#elif(_MODEL_DSC_ == _MODEL_DEMO1_)
                	   //Ux_PostEvent(NVTEVT_KEY_MENU, 1, NVTEVT_KEY_PRESS); 	                	   
                	   Ux_PostEvent(NVTEVT_KEY_MODE, 1, NVTEVT_KEY_PRESS); 	                	   		
		#else
			  //do nothing 
			 Ux_PostEvent(NVTEVT_KEY_SHUTTER2, 1, NVTEVT_KEY_PRESS);
		#endif
		}	
	#endif                	  
            }
        }
        else
        {
            uiPowerKey = KEYSCAN_PWRKEY_RELEASED;
        }
    }	  
        
    }
#else     
        GxKey_DetPwrKey();
#endif
    }
}