⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frntp.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*====================================================================
 *
 *        Copyright (C) 1997 Acer Labs, Inc.        All Rights Reserved.
 *
 *        File:         frntp.c
 *
 *        Contents:         frontPanel task main file
 *
 *        History:
*       Date           By          Reason                           *
*       ===========    ========    ======                           *
*       21-Jun-1999    Wang        Create                           *
*       26-Nov-2001    Dick Ma     Modify to M3325                  *
*	  2003.4.11         Cliff wang  Modify it
 ********************************************************************/

#include        <comsub.h>
#include        <atapi.h>
#include <vobu.h>
#include		<ui.h>
#include		<nv.h>
#include		<iic.h>
#define MOD_FRNTP
#include        "frntp.h"
#include        <panel.h>
#include <stdlib.h>
#include <gpio.h>
#include <xgpio.h>
#include <ui_sub.h>//rockman
#include <resource.h>     //30216-01jf
#include <platform.h>
#include "../../atapi/atapi_lo.h"		//30124-01jf//30507-02cf move attapi to atapi dir
#include "../../ui/fileopenmenu/mediaplayeroutlook.h"

#define MIC_OUT_STATE 1
#define MIC_IN_STATE    2
#define MIC_OUTDEB_STATE  3
#define MIC_INDEB_STATE  4

// Front panel GPIO interfaces, maintain them carefully
#define FPSET_GPIO_R(dwPorts)		XGpio_Opr(SET_READ,dwPorts)
#define FPSET_GPIO_W(dwPorts)		XGpio_Opr(SET_WRITE,dwPorts)
#if(USE_244_ENABLE==1)
#define FPSET_GPIO_HI(dwPorts)		XGpio_Opr(SET_HI,dwPorts)
#define FPSET_GPIO_LOW(dwPorts)		XGpio_Opr(SET_LOW,dwPorts)
#else
#define FPSET_GPIO_HI(dwPorts)		XGpio_Opr(SET_READ,dwPorts)
#define FPSET_GPIO_LOW(dwPorts)		{XGpio_Opr(SET_WRITE,dwPorts);XGpio_Opr(SET_LOW,dwPorts);}
#endif
#define FPGET_GPIO_DATA(dwPorts)	XGpio_Opr(GET_DATA,dwPorts)


extern BOOL bPlayClose;

extern LoaderInformation Master;//for standby//30124-01jf
extern BYTE IR_Error_Flag;
extern DWORD IR_Check_Code(DWORD);
//extern void halMuteOnOff(BOOL bMute);
extern void halMuteOnOff(BOOL bMute, WORD FadeTime, DLYTIME dly_time);
extern BYTE bVocalPressCnt;
extern BYTE HDCDIntFlag;
extern BOOL bIsLastplay;
extern BOOL bFPLastplay;
/*2003/04/25 Added by jane and brook,to update VFD show*/
void VFDPart1Clear();
void VFDPart1StandbyShow();
void VFDPart1StopShow();
void VFDPart1LoadShow();
void VFDPart1PlayShow();
void VFDPart1OpenShow();
void VFDPart1Show();
void FPUpdateTime(DWORD InTime);
void ChgLDShow();
void VFDPart2Show();
void VFDPart2Clear();
void VFDProcShowMsg(void);
static BOOL ShiftOn=FALSE;
static BOOL bNeedRestore = FALSE;
static BOOL bPause = FALSE;
BOOL bPowerOff = FALSE;
#if(_DEALER_LOCK_MODE == _DEALER_LOCK_ENABLE_)
BOOL bDealerLock = FALSE;//maggie40212
BOOL bDealerUnlockTimer = FALSE;//MAGGIE40210
BOOL bDealerLockTimer = FALSE;//MAGGIE40210
BOOL bDoneDealerLock = FALSE;
#endif


BYTE LeftMicState=MIC_OUT_STATE;
BYTE RightMicState=MIC_OUT_STATE;

extern BOOL bIsKaraDVD;
/*--------JANE added for hotkey begin -------*/

/*Hot Key Table*/
typedef struct tagHOTKEYTABLE
{
    BYTE *HotKey;
    BYTE HotKeyNum;
    BYTE HotKeyCnt;
    BYTE HotKeyVal;
}
HOTKEYTABLE;

//HOTKEY DEFINE
#define HOTKEY_1	C_KEY_VENDER_SETUP
#define HOTKEY_2	C_KEY_DEBUG_M3323REG
#define HOTKEY_3	3
#define HOTKEY_4	4
#define HOTKEY_5	5
#define HOTKEY_6	6
#define HOTKEY_7	7
#define HOTKEY_8	8
#define HOTKEY_9	9
#define HOTKEY_10	10
#define HOTKEY_11	11
#define HOTKEY_12	12
#define HOTKEY_13	13
#define HOTKEY_14	14
#define HOTKEY_15	15
#define HOTKEY_16	16
#define HOTKEY_17	17
#define HOTKEY_18	18
#define HOTKEY_19	19
#define HOTKEY_20	C_KEY_SETUPDEFAULT
#define HOTKEY_21	C_KEY_SHOWVERSION
#define HOTKEY_22	22
//FOR EEPROM OPTION
#define HOTKEY_EEPOPT		C_KEY_EEPOPTION
#define HOTKEY_REGION0		C_KEY_REGION0
#define HOTKEY_REGION		C_KEY_REGION
#define HOTKEY_SYSF		C_KEY_SYSTEMDIS_F
#define HOTKEY_SYSI		C_KEY_SYSTEMDIS_I
#define HOTKEY_PWDCLR		C_KEY_CLEARPWD

BYTE HOT_KEY_1[3]={C_KEY_MENU,C_KEY_1,C_KEY_9};
BYTE HOT_KEY_2[3]={C_KEY_MENU,C_KEY_9,C_KEY_9};
BYTE HOT_KEY_3[3]={C_KEY_LAST_PLAY,C_KEY_8,C_KEY_8};
BYTE HOT_KEY_4[3]={C_KEY_LAST_PLAY,C_KEY_9,C_KEY_9};
BYTE HOT_KEY_5[3]={C_KEY_LAST_PLAY,C_KEY_3,C_KEY_0};
BYTE HOT_KEY_6[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_0};
BYTE HOT_KEY_7[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_3};
BYTE HOT_KEY_8[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_4};
BYTE HOT_KEY_9[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_8};
BYTE HOT_KEY_10[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_9};
BYTE HOT_KEY_11[3]={C_KEY_LAST_PLAY,C_KEY_1,C_KEY_0};
BYTE HOT_KEY_12[3]={C_KEY_LAST_PLAY,C_KEY_1,C_KEY_1};
BYTE HOT_KEY_13[3]={C_KEY_LAST_PLAY,C_KEY_2,C_KEY_0};
BYTE HOT_KEY_14[3]={C_KEY_LAST_PLAY,C_KEY_2,C_KEY_1};
BYTE HOT_KEY_15[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_6};
BYTE HOT_KEY_16[3]={C_KEY_LAST_PLAY,C_KEY_1,C_KEY_6};
BYTE HOT_KEY_17[3]={C_KEY_LAST_PLAY,C_KEY_1,C_KEY_5};
BYTE HOT_KEY_18[3]={C_KEY_LAST_PLAY,C_KEY_1,C_KEY_4};
BYTE HOT_KEY_19[3]={C_KEY_LAST_PLAY,C_KEY_0,C_KEY_5};
#if (_CUSTOM == CYBERHOME)
BYTE HOT_KEY_20[3]={C_KEY_DISPLAY,C_KEY_1,C_KEY_8};
#else
BYTE HOT_KEY_20[3]={C_KEY_LAST_PLAY,C_KEY_6,C_KEY_6};
#endif
BYTE HOT_KEY_21[3]={C_KEY_DISPLAY,C_KEY_1,C_KEY_9};
BYTE HOT_KEY_22[3]={C_KEY_DISPLAY,C_KEY_2,C_KEY_0};

//FOR LG
BYTE HOT_KEY_EEPOPT[5]={C_KEY_STEP,C_KEY_1,C_KEY_4,C_KEY_7,C_KEY_2};
BYTE HOT_KEY_REGION0[3]={C_KEY_0,C_KEY_0,C_KEY_0};
BYTE HOT_KEY_REGION[7]={C_KEY_STEP,C_KEY_3,C_KEY_1,C_KEY_4,C_KEY_1,C_KEY_5,C_KEY_9};
BYTE HOT_KEY_SYSF[8]={C_KEY_1,C_KEY_3,C_KEY_9,C_KEY_7,C_KEY_1,C_KEY_3,C_KEY_9,C_KEY_ENTER};
BYTE HOT_KEY_SYSI[8]={C_KEY_4,C_KEY_5,C_KEY_6,C_KEY_2,C_KEY_5,C_KEY_8,C_KEY_0,C_KEY_ENTER};
BYTE HOT_KEY_PWDCLR[6]={C_KEY_2,C_KEY_1,C_KEY_0,C_KEY_4,C_KEY_9,C_KEY_9};

static HOTKEYTABLE HotKeyTab[]=
    {
        //{HOT_KEY_1,3,0,HOTKEY_1},
        {HOT_KEY_2,3,0,HOTKEY_2},			/*regkey*/
        {HOT_KEY_3,3,0,HOTKEY_3}, // Edmund: For PE test
        {HOT_KEY_4,3, 0,HOTKEY_4},
        {HOT_KEY_5,3, 0,HOTKEY_5},	/*OSDkey*/
#ifdef _DEBUG_PRINTF_
        {HOT_KEY_6,3, 0,HOTKEY_6},	/*regionkey*/
        {HOT_KEY_7,3, 0,HOTKEY_7},	/*autokey*/
        {HOT_KEY_8,3, 0,HOTKEY_8},	/*autokeyS*/
        {HOT_KEY_9,3, 0,HOTKEY_9},	/*subwooffer*/
        {HOT_KEY_10,3, 0,HOTKEY_10},	/*dviewkey*/
        {HOT_KEY_11,3, 0,HOTKEY_11},	/*avboardmute*/
        {HOT_KEY_12,3, 0,HOTKEY_12},	/*avtestDRC*/
        {HOT_KEY_13, 3,0,HOTKEY_13},	/*videofpplus*/
        {HOT_KEY_14,3, 0,HOTKEY_14},	/*videofpminus*/
        {HOT_KEY_15,3, 0,HOTKEY_15},	/*colorbarkey*/
        {HOT_KEY_16,3, 0,HOTKEY_16},	/*tvrgbout*/
        {HOT_KEY_17,3, 0,HOTKEY_17},	/*tvyuvout*/
        {HOT_KEY_18, 3,0,HOTKEY_18},	/*tvcsout*/
        {HOT_KEY_19, 3,0,HOTKEY_19},	/*tvsyskey*/
#endif
#if ( _SETUP_MODE==_SETUP_MENU_Enable )

        {
            HOT_KEY_20, 3,0,HOTKEY_20
        }
        ,	/*for setup default*/
        //#if (_CUSTOM == CYBERHOME)
        {HOT_KEY_21, 3,0,HOTKEY_21}, // for show servo version
        //#endif
        {HOT_KEY_22, 3,0,HOTKEY_22},  //for disable vcd
#endif
        //FOR LG EEPROM OPTION
        {HOT_KEY_EEPOPT,5,0,HOTKEY_EEPOPT},
#if (REGION_CODE_FREE_MODE 	== REGION_CODE_FREE_ENABLE)
        {HOT_KEY_REGION0,3,0,HOTKEY_REGION0},
        {HOT_KEY_REGION,7,0,HOTKEY_REGION},
#endif
        {HOT_KEY_SYSF,8,0,HOTKEY_SYSF},
        {HOT_KEY_SYSI,8,0,HOTKEY_SYSI},
        {HOT_KEY_PWDCLR,6,0,HOTKEY_PWDCLR}
    };
/*--------JANE added for hotkey end -------*/

#define GetTimeRate  10		//30523-01Angus

BOOL BRealEject = TRUE;//cliff 30507-01cf for kill warning
static BOOL FPKeyPermit = TRUE;
//030816 - Use high memory

/*but only record the user operation, not user push tray by hand!!*/
/*			 when bOPEN==TRUE,  the tray is opening,
             when bOPEN==FALSE, the tray is closing.
             when BEject==FALSE,the tray is closed,
             when BEject==TRUE, the tray is not closed-->it can be either opening or closing
							The user want the tray open.
			 when BRealEject==TRUE, the tray is real opened.
			 BRealEject is used in check tray.
*/

static DWORD tt;/*store sys time in seconds*/
static  DWORD prevtt=0xFFFFFFFF;/*memorize the time shown on panel*/

/* -------for auto input key */
#ifdef _DEBUG_PRINTF_
#define numAutoKeySet        26
static const BYTE FpAutoKeySet[numAutoKeySet]=
    {
        C_KEY_STEP,C_KEY_SKIP_L,C_KEY_PLAY,C_KEY_PLAY,C_KEY_PLAY,C_KEY_SKIP_R,
        C_KEY_FF,C_KEY_FF,C_KEY_FF,C_KEY_REV,C_KEY_REV,C_KEY_REV,C_KEY_SLOW,C_KEY_SLOW,C_KEY_SLOW,
        C_KEY_REPEAT,C_KEY_ENTER,C_KEY_ENTER,C_KEY_UP,C_KEY_DOWN,C_KEY_LEFT,C_KEY_RIGHT,C_KEY_RESUME,C_KEY_RESUME,
        C_KEY_MENU,C_KEY_TITLE
    };
static BYTE FpAutoKey[nAUTOKEY];
static int  FpAutoTime[nAUTOKEY];
static BYTE bAutoInput=FALSE;
static BYTE bAutoContinuous=FALSE;
#endif

/*----------------------------*/
/*--------for between FrontEnd function variables  -------*/

//static BYTE        SendTime2UI=FALSE;		//30523-01Angus
BYTE SendTime2UI=FALSE;						//30523-01Angus
static BYTE 	   TimeONFlg=TRUE;	// 2003-04-25 Added by Jane Liao
static BYTE 	   PrvPlayMD=0xFF;	// 2003-04-25 Added by Jane Lia
static BYTE 	   PrvFPState=0xFF;	// 2003-04-25 Added by Jane Lia

static MSG2UI      FpKeyCode2UI;
static INT         RSize;
static WORD        cReadTime=0;
BOOL        g_bTrayCloseErr=FALSE;// 30317-01Ji Power on/off close tray error
int g_iServoCloseTrayTime = 0; // 30127-01Ji close tray error
#if( _MODEL == CYP405|| _MODEL == CYP325U|| _MODEL == CYP2830G)  //add for vfdbright
static const  BYTE VfdMode[8 ] =
    {
        0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f
    };
#endif

//gamble add
#define COUNTS_PER_MICROSECOND1 (25)
BOOL flag_frontReadComplete;
BYTE frontControlCommand;
BYTE wakeUpKeyData;
#define IRKEY 1
#define PKKEY 2
BYTE  wakeUpKeyType;

long FPMICOMPowerModeInitialFlag=0;
#if (_IR==KENWOOD_IR)
extern unsigned long KeyTable[224];
#else
extern unsigned long KeyTable[112];
#endif
extern unsigned char IR_Custom_Code1  , IR_Custom_Code2 ;
extern BYTE tbl_bit_swap[256];
extern BYTE frontTransmitData[16];
extern BYTE frontReceiveDdata[16];
extern BOOL I2CIsBusy;

#ifdef _ALiICE_Download_Enable
BOOL FPMICOMPowerModeInitial();
#else
BOOL FPReadWakeupKey(void);
#endif

#if (MIC_ENABLE_AND_DEBUG==1)
static BYTE VirtualMicPlug = 0;
#endif


BOOL FPKeyChk(DWORD code)
{
    static BYTE FPstatus;
    if(FPstatus == 1)
    {
	    if(code == C_KEY_ZOOM && 
	    	(DiscType == C_VCD10 || DiscType == C_VCD20 || DiscType == C_SVCD))
	    	{
	    	  dly_tsk(200);
		  FPstatus = 0;
 	    	  return TRUE;
	    	}
    }

    FPstatus = 0;
    if((code == C_KEY_MENU)||
            (code == C_KEY_SETUP)||
            (code == C_KEY_TITLE)||
            (code == C_KEY_TV_SYS)  ||
            (code == C_KEY_RANDOM)  ||
            (code == C_KEY_STOP)  ||
            (code == C_KEY_PLAY)  ||
            (code == C_KEY_FF)  ||
            (code == C_KEY_REV)  ||
            (code == C_KEY_PAGEDOWN) ||
            (code == C_KEY_PAGEUP) ||
            (code == C_KEY_SKIP_R) ||
            (code == C_KEY_SKIP_L) ||
            (code == C_KEY_VOLUM) ||
            (code == C_KEY_SCANMODE )||//TPE sean 20021113 for scan mode switch too fast
            (code == C_KEY_PBC_ONOFF)||
            (code == C_KEY_VOLUP)||
            (code == C_KEY_MUTE)||
            (code == C_KEY_VOLDOWN)||
             (code == C_KEY_CONSOLE))
        //(code == C_KEY_SKIP_L) ||		//lily
        //(code == C_KEY_SKIP_R&&((VirDiscType == C_VCD20) || (VirDiscType == C_SVCD))))//TPE sean 20021104 for VCD20 switch PBC too fast
    	{
        FPstatus = 1;
        return TRUE;
    	}

 #ifdef _DVDA_Enable_

    else if(DiscType == C_DVD_AUDIO)
    {
        if(code == C_KEY_ANGLE)
            return TRUE;
        else if(code == C_KEY_LEFT || code == C_KEY_RIGHT)
        {
           ;// if(IsChangingASV())
           //     return TRUE;
        }
        return FALSE;
    }
#endif
    else
        return FALSE;
}

void FPKeyChkTimer(void)
{
    FPKeyPermit = TRUE;
}

BOOL FPKeyChkStage2(DWORD IRKey)
{
    if(DiscType==C_DVD && bIsKaraDVD && \
            g_UiPlaybackMethod == UI_PLAYBACKMETHOD_SHUFFLE && \
            (IRKey==C_KEY_SKIP_R || IRKey==C_KEY_SKIP_L || IRKey==C_KEY_RANDOM))
        return TRUE;
    else if((DiscType==C_VCD20 || DiscType==C_VCD10 || DiscType==C_SVCD) && \
            (IRKey==C_KEY_SKIP_R || IRKey==C_KEY_SKIP_L || IRKey==C_KEY_RANDOM))
        return TRUE;
    else if(DiscType == C_DVD && (IRKey==C_KEY_MENU || IRKey==C_KEY_TITLE))
        return TRUE;
#ifdef _DVDA_Enable_

    else if(DiscType == C_DVD_AUDIO && (IRKey==C_KEY_MENU || IRKey==C_KEY_TITLE))
        return TRUE;
#endif

    else if((DiscType == C_DVD || DiscType == C_DVD_AUDIO || DiscType==C_VCD20 || DiscType==C_VCD10 || DiscType==C_SVCD)
            && (IRKey==C_KEY_SETUP))
        return TRUE;
    else
        return FALSE;
}

BOOL FPKeyChkSynch()
{
    if(bNVRefreshTime == TRUE || g_UiCoreState == UI_CORE_STOP)
        return TRUE;
    else
        return FALSE;
}

void FPSendKey2UI(VP pFPKeyMsg)
{
	MSG2UI TempMsg;
	DWORD MsgSize;
	
	if(psnd_mbf(UIGetKEY_mbfid, pFPKeyMsg, sizeof(MSG2UI))!= E_OK)
	{
		prcv_mbf((VP *) &TempMsg, (INT *) &MsgSize, UIGetKEY_mbfid);
		psnd_mbf(UIGetKEY_mbfid, pFPKeyMsg, sizeof(MSG2UI));
	}
}

/*-------------------------[Local Function]--------------------------
 * Function_Name: FP_StopAll()
 *
 * Description:
 *    Stop all DVD player operations to be ready into POWER down.
 *    
 * Arguments:
 *     Input: none.
 *     Output: none.
 *
 * History:
 *     Date         By          Reason           Ver.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -