//----------------------------------------------------------------------------------------------------
// ID Code      : Sync.h No.0001
// Update Note  :
//
//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Definitions of
//--------------------------------------------------


//----------------------------------------------------------------------------------------------------

#ifdef __SYNC__

//--------------------------------------------------
// Global Variables
//--------------------------------------------------
BYTE idata ucInputSyncType;
BYTE idata ucStablePol; //Ming-Yen
BYTE idata ucSyncProcessState = _SOURCE_CHANGE_STATE;
BYTE idata ucTimerEvent = 255;

#if(_YPBPR_AUTO_SOY == _ENABLE)
BYTE xdata SyncLevelOffset = 0;

#define SOGSyncLevel 		0x20
#define MinSOGSyncLevel		0x18
#endif

BIT bHDMIFrameOk=0; //Confirm 5 times 
BYTE ucHDMIChangeCnt=0;
BYTE ucHDMIFrameOkCnt=0;
//20070409, philips DVP5960 unstable
//#define _HDMI_OK_CNT 5
//#define _HDMI_CHANGE_CNT 2
#define _HDMI_OK_CNT 7
#define _HDMI_CHANGE_CNT 4
//--------------------------------------------------
// Function Prototypes
//--------------------------------------------------
void CSyncProcess(void);
bit CSyncHandler(void);
void CSyncInitialSyncProcessor(void);
BYTE CSyncMeasureSyncType(void);
BYTE CSyncSearchSyncTypeVGA(void);
BYTE CSyncGetSyncTypeStepVGA(void);
void CSyncModifyPolarityVGA(void);
BYTE CSyncSearchSyncTypeDVI(void);
BYTE CSyncGetSyncTypeAutoRun(void);

#if(_YPBPR_AUTO_SOY == _ENABLE)
void CYPbPrAutoSOY(void);
#endif


#else

//--------------------------------------------------
// Extern Global Variables
//--------------------------------------------------
extern BYTE idata ucInputSyncType;
extern BYTE idata ucStablePol;  //Ming-Yen
extern BYTE idata ucSyncProcessState;
extern BYTE idata ucTimerEvent;

#if(_YPBPR_AUTO_SOY == _ENABLE)
extern BYTE xdata SyncLevelOffset;
#endif
extern BIT bHDMIFrameOk;
extern BYTE ucHDMIChangeCnt;
extern BYTE ucHDMIFrameOkCn;

//--------------------------------------------------
// Extern Function Prototypes
//--------------------------------------------------
extern void CSyncProcess(void);
extern bit CSyncHandler(void);
extern void CSyncInitialSyncProcessor(void);
extern BYTE CSyncGetSyncTypeStepVGA(void);
extern BYTE CSyncGetSyncTypeAutoRun(void);
extern void CSyncModifyPolarityVGA(void);

#if(_YPBPR_AUTO_SOY == _ENABLE)
extern void CYPbPrAutoSOY(void);
#endif

#endif


//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Macro of Input Sync Type
//--------------------------------------------------
#define GET_INPUTSYNC_TYPE()            (ucInputSyncType & (_BIT0 | _BIT1 | _BIT2 | _BIT3))
#define SET_INPUTSYNC_TYPE(x)           (ucInputSyncType = ((ucInputSyncType & ~(_BIT0 | _BIT1 | _BIT2 | _BIT3)) | x))


//--------------------------------------------------
// Macro of Source Auto Change
//--------------------------------------------------
#define GET_SOURCE_AUTOCHANGE()         ((bit)(ucInputSyncType & _BIT7))
#define SET_SOURCE_AUTOCHANGE()         (ucInputSyncType |= _BIT7)
#define CLR_SOURCE_AUTOCHANGE()         (ucInputSyncType &= ~_BIT7)


//--------------------------------------------------
// Macro of DVII Source Switch
//--------------------------------------------------
#define GET_DVI_I_SOURCE_SWITCH()       ((bit)(stSystemData.MonitorFlag & _BIT6))
#define SET_DVI_I_DVI_SWITCH()          (stSystemData.MonitorFlag |= _BIT6)
#define CLR_DVI_I_VGA_SWITCH()          (stSystemData.MonitorFlag &= ~_BIT6)


//-------------------------------------------------
//Osd double type
//-------------------------------------------------
//#define GET_OSDSIZEDOUBLE() 		((stSystemData.MonitorFlag & _BIT5) >> 5)
//#define SET_OSDSIZEDOUBLE(x) 		(stSystemData.MonitorFlag = (stSystemData.MonitorFlag & ~_BIT5) |(x<<5))
#define GET_OSDSIZEDOUBLE() 		((stOsdUserData.OsdBlending& _BIT7) >> 7)
#define SET_OSDSIZEDOUBLE(x) 		(stOsdUserData.OsdBlending = (stOsdUserData.OsdBlending & ~_BIT7) |(x<<7))

