📄 gsel-56xx.h
字号:
#define gm_WriteNVRAMBlock_d gm_WriteNVRAMBlock
#define gm_ReadNVRAMAbsolute_d gm_ReadNVRAMAbsolute
#define gm_WriteNVRAMAbsolute_d gm_WriteNVRAMAbsolute
#define gm_SetBrightnessMainPWM_d gm_SetBrightnessMainPWM
#define gm_DecompressLoadGammaTableMain_d gm_DecompressLoadGammaTableMain
#define gm_UartInit_d gm_UartInit
#define gm_SerialHandler_d gm_SerialHandler
#define gm_Ddc2biHandler_d gm_Ddc2biHandler
#define gm_CommsGetMessage_d gm_CommsGetMessage
#define gm_CommsSendReply_d gm_CommsSendReply
#define gm_Print_d gm_Print
#define gm_Printf_d gm_Printf
#define gmi_ReadRegDWord gm_ReadRegDWord
#define gmi_WriteRegDWord gm_WriteRegDWord
#define gm_WriteRegBlock_d gm_WriteRegBlock
#define gmi_StartRcvMsg gm_StartRcvMsg
#define gm_SystemInit_d gm_SystemInit
//**************************************************************
// SELECT FLAVOR OF PRIVATE FUNCTIONS
//**************************************************************
#define gmp_WidthHtotal_WID gmp_WidthHtotal
#define gmp_ReadIBDHWidth_d gmp_ReadIBDHWidth
//**************************************************************
// MAKE MULTI-CHANNEL FUNCTION INTO SINGLE CHANNEL
//**************************************************************
// GSEL functions
#define gm_AutoGeometry(B_Channel, AutoMode) gm_AutoGeometry_S(AutoMode)
// The flavor chosen above must be commented out here
#define gm_AutoGeometry_FT(B_Channel, AutoMode) gm_AutoGeometry_FT_S(AutoMode)
//#define gm_AutoGeometry_IA3(B_Channel, AutoMode) gm_AutoGeometry_IA3_S(AutoMode)
#define gm_AutoGeometry_IA3S(B_Channel, AutoMode) gm_AutoGeometry_IA3S_S(AutoMode)
#define gm_AutoGeometry_IA3K(B_Channel, AutoMode) gm_AutoGeometry_IA3K_S(AutoMode)
#define gm_AutoGeometry_IA3SK(B_Channel, AutoMode) gm_AutoGeometry_IA3SK_S(AutoMode)
#define gm_AutoGeometry_IA3KF(B_Channel, AutoMode) gm_AutoGeometry_IA3KF_S(AutoMode)
#define gm_AutoGeometry_IA3SKF(B_Channel, AutoMode) gm_AutoGeometry_IA3SKF_S(AutoMode)
#define gm_AutoPosition(B_Channel) gm_AutoPosition_S()
#define gm_AutoColorBalance(B_Channel) gm_AutoColorBalance_S()
#define gm_AutoADCInit(B_Channel) gm_AutoADCInit_S()
#define gm_AutoCalibrateOffset1(B_Channel) gm_AutoCalibrateOffset1_S()
#define gm_SetInputWindow(B_InputChannel) gm_SetInputWindowMain()
#define gm_SetInputHTotal(B_InputChannel, W_Htotal) gm_SetInputHTotalMain(W_Htotal)
#define gm_SetAdcPhase(B_InputChannel, B_Phase) gm_SetAdcPhaseMain(B_Phase)
#define gm_WaitInputVSync(B_InputChannel, B_NumFrames) gm_WaitInputVSyncMain(B_NumFrames)
#define gm_SetAdcGain(B_InputChannel, B_RGain, B_GGain, B_BGain) gm_SetAdcGain_S(B_RGain, B_GGain, B_BGain)
#define gm_SetAdcOffset2(B_InputChannel, B_ROff2, B_GOff2, B_BOff2) gm_SetAdcOffset2_S(B_ROff2, B_GOff2, B_BOff2)
#define gm_GetSclkFrequency(B_InputChannel) gm_GetSclkFrequencyMain()
#define gm_SetPhaseSkew(B_InputChannel, W_PhaseSkew) gm_SetPhaseSkew_S(W_PhaseSkew)
#define gm_SetInputFiltering(B_InputChannel, W_Filter) gm_SetInputFiltering_S(W_Filter)
// Private funtions
#define gmp_WidthHtotal(B_Channel) gmp_WidthHtotal_S()
#define gm_AutoIBDThresh(Channel, Color, Stealth) gm_AutoIBDThresh_d()
#define gmp_GrabPixel(B_Channel, W_X, W_Y) gmp_GrabPixel_S(W_X, W_Y)
#define gmp_GrabPixelColor_m(B_Channel, W_X, W_Y, B_Color) gmp_GrabPixelColor_S(W_X, W_Y, B_Color)
#define gmp_AutoPositionNoIBD_GF gmp_AutoPositionNoIBD
#define gmp_AutoPositionNoIBD(B_Channel) gmp_AutoPositionNoIBD_S()
#define gmp_ReadIBDHWidth(B_Channel) gmp_ReadIBDHWidth_S()
//**************************************************************
// PROTOTYPE MULTI-CHANNEL FUNCTIONS THAT ARE CONVERTED TO SINGLE CHANNEL
//**************************************************************
// GSEL functions
gmt_RET_STAT gm_AutoGeometry_S(BYTE AutoMode);
gmt_RET_STAT gm_AutoPosition_S(void);
gmt_RET_STAT gm_AutoColorBalance_S(void);
void gm_AutoCalibrateOffset1_S(void);
gmt_RET_STAT gm_AutoADCInit_S(void);
void gm_SetAdcOffset2_S(BYTE B_Roff, BYTE B_Goff, BYTE B_Boff);
void gm_SetAdcGain_S(WORD B_RGain, WORD B_GGain, WORD B_BGain);
void gm_SetPhaseSkew_S(WORD W_PhaseSkew);
void gm_SetInputFiltering_S(WORD W_Filter);
gmt_RET_STAT gm_AutoIBDThresh_d(void);
// Private funtions
gmt_RET_STAT gmp_WidthHtotal_S(void);
BYTE gmp_GrabPixel_S(WORD W_X, WORD W_Y);
BYTE gmp_GrabPixelColor_S(WORD W_X, WORD W_Y, BYTE B_Color);
gmt_RET_STAT gmp_AutoPositionNoIBD_S(void);
WORD gmp_ReadIBDHWidth_S(void);
//**************************************************************
// CONVERT OLD-STYLE FUNCTION NAMES
//**************************************************************
// GSEL functions
#define gm_AutoGeometryMain gm_AutoGeometry_S
#define gm_AutoPositionMain gm_AutoPosition_S
#define gm_AutoColorBalanceMain gm_AutoColorBalance_S
#define gm_AutoADCInitMain gm_AutoADCInit_S
#define gm_SetAdcOffset2Main gm_SetAdcOffset2_S
#define gm_SetAdcGainMain gm_SetAdcGain_S
// Private funtions
//#define gmp_GrabPixelColor(W_X, W_Y, B_Color) gmp_GrabPixelColor_S(W_X, W_Y, B_Color) // fix
#define gmp_GrabPixelColor gmp_GrabPixelColor_m
//**************************************************************
DWORD far gm_ReadRegDWord(WORD W_RegAddr);
void far gm_WriteRegDWord(WORD W_RegAddr, DWORD D_Data);
void far gm_WriteRegBlock(const gmt_REG_BLOCK far * Wp_DataTable);
void far gm_DisableInterrupts(void);
#if NVRAM_USE_FLASH
extern gmt_RET_STAT pp_InitNVRAM(void);
extern gmt_BLOCKINFO pp_GetNVRAMBlockInfo(BYTE B_BlockType, BYTE B_BlockIndex);
extern gmt_RET_STAT pp_ReadNVRAMBlock(BYTE B_BlockType, BYTE B_Index, BYTE * Bp_Buffer, WORD W_Offset, WORD W_Length);
extern gmt_RET_STAT pp_WriteNVRAMBlock(BYTE B_BlockType, BYTE B_Index, BYTE *Bp_Buffer, WORD W_Offset, WORD W_Length);
extern gmt_RET_STAT pp_ReadNVRAMAbsolute(WORD Address, BYTE * Bp_Buffer, WORD W_Length);
extern gmt_RET_STAT pp_WriteNVRAMAbsolute(WORD Address, BYTE * Bp_Buffer, WORD W_Length);
// redefine EEPROM NVRAM functions to FLASH versions..
#define gm_GetNVRAMBlockInfo pp_GetNVRAMBlockInfo
#define gm_ReadNVRAMBlock pp_ReadNVRAMBlock
#define gm_WriteNVRAMBlock pp_WriteNVRAMBlock
#define gm_ReadNVRAMAbsolute pp_ReadNVRAMAbsolute
#define gm_WriteNVRAMAbsolute pp_WriteNVRAMAbsolute
// Added function to clear blocks of a same type more efficiently (especially for page-write type of flash like PMC).
gmt_RET_STAT pp_ClearNVRAMBlockWithSameType(BYTE B_BlockType, BYTE B_StartIndex, BYTE B_MaxEntry, BYTE *Bp_Buffer, WORD W_Length);
#define gm_ClearNVRAMBlock pp_ClearNVRAMBlockWithSameType
#endif //NVRAM_USE_FLASH
void far gm_SystemInit(void);
// Read or Write to a given register
#define gm_ReadRegByte(W_RegAddr) \
(*(BYTE volatile* volatile)(W_RegAddr))
#define gm_WriteRegByte(W_RegAddr, RegValue) \
(*(BYTE volatile* volatile)(W_RegAddr) = (BYTE)(RegValue))
#define gm_ReadRegWord(W_RegAddr) \
(*(WORD volatile* volatile)(W_RegAddr))
#define gm_WriteRegWord(W_RegAddr, W_RegValue) \
(*(WORD volatile* volatile)(W_RegAddr) = (WORD)(W_RegValue))
#define gm_ReadRegTriBytes(W_RegAddr) \
(gmi_ReadRegDWord(W_RegAddr) & 0x00ffffffUL)
#define gm_WriteRegTriBytes(W_RegAddr, D_RegValue) \
(*(WORD volatile* volatile)(W_RegAddr) = (WORD)(D_RegValue)); \
(*(BYTE volatile* volatile)(W_RegAddr+2) = (BYTE)(D_RegValue >> 16))
//
// Set or clear specified bits in given register
//
#define gm_SetRegBitsWord(W_RegAddr, W_RegValue) \
((*(WORD volatile* volatile)(W_RegAddr)) = (*(WORD volatile* volatile)(W_RegAddr)) | ((WORD volatile)(W_RegValue)))
#define gm_ClearRegBitsWord(W_RegAddr, W_RegValue) \
((*(WORD volatile* volatile)(W_RegAddr)) = (*(WORD volatile* volatile)(W_RegAddr)) & (~((WORD volatile)(W_RegValue))))
#define gm_SetRegBitsByte(W_RegAddr, W_RegValue) \
((*(BYTE volatile* volatile)(W_RegAddr)) = (*(BYTE volatile* volatile)(W_RegAddr)) | ((BYTE volatile)(W_RegValue)))
#define gm_ClearRegBitsByte(W_RegAddr, W_RegValue) \
((*(BYTE volatile* volatile)(W_RegAddr)) = (*(BYTE volatile* volatile)(W_RegAddr)) & (~((BYTE volatile)(W_RegValue))))
#define gm_ClearAndSetBitsByte(W_RegAddr, B_AndData, B_OrData) \
((*(BYTE volatile* volatile)(W_RegAddr)) = ((*(BYTE volatile* volatile)(W_RegAddr)) & (~((BYTE volatile)(B_AndData)))) | ((BYTE volatile)(B_OrData)))
// defines for the input filtering gm_SetInputFiltering()
#define MAX_EQ (0x5000 + 500/5) // used by htotal algo to sharpen edges
#define DEFAULT_FILTER (0 + 500/5) // whatever is normal
#define COLOR_BAL_FILTER (0 + 120/5) // a filter suitable for doing auto color balance (reduced bandwidth)
// define which filter setting to use if auto filter option is selected in auto adjust
#define NUM_AUTO_FILTERS 5
#define AUTO_FILTERS const WORD AutoFilters[NUM_AUTO_FILTERS]
#define AUTO_FILTER_VALUES = {{500/5}, {200/5}, {140/5}, {0x2000 + 500/5}, {0x5000 + 500/5}};
#define AUTO_MSGS // enables auto adjust messages.
//#define USE_ADAPTIVE_SDDS //enable adaptive sdds for sclk setup
#define IA_DATA_ERROR_STUCK // phoenix has to do a soft reset to clear a data error
#define HTOTAL_PHASE 0x1c // phase shift to get samples 1/3 pixel apart in IA htotal mode
#define HTOTAL_SKEW 0x000 // rgb phase delay for htotal
#define ZERO_K_MAIN // when defined, gives cleaner display sometimes
#ifdef ZERO_K_MAIN
extern WORD ROM gmc_EnableKMainOfZero; // min sclk freq to use ZERO_K_MAIN (units 100KHz) 0=disable feature
void gmp_SetKMainToZero(gmt_PHY_CH Channel);
void gmp_RestoreKMain(gmt_PHY_CH Channel);
#endif
#if ENSURE_SYSTEMTIME
#ifdef gm_ReadSystemTime
#undef gm_ReadSystemTime
#endif
#define gm_ReadSystemTime ReadSystemTime
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -