📄 gsel-52xx.h
字号:
#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
// Functions marked "fix" are single channel & need modifying
//**************************************************************
#ifdef FORCE_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_IA(B_Channel, AutoMode) gm_AutoGeometry_IA_S(AutoMode)
#define gm_AutoGeometry_IAS(B_Channel, AutoMode) gm_AutoGeometry_IAS_S(AutoMode)
#define gm_AutoGeometry_IAK(B_Channel, AutoMode) gm_AutoGeometry_IAK_S(AutoMode)
//#define gm_AutoGeometry_IASK(B_Channel, AutoMode) gm_AutoGeometry_IASK_S(AutoMode)
#define gm_AutoGeometry_IAKF(B_Channel, AutoMode) gm_AutoGeometry_IAKF_S(AutoMode)
#define gm_AutoGeometry_IASKF(B_Channel, AutoMode) gm_AutoGeometry_IASKF_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() // fix
#define gm_SetInputHTotal(B_InputChannel, W_Htotal) gm_SetInputHTotalMain(W_Htotal) // fix
#define gm_SetAdcPhase(B_InputChannel, B_Phase) gm_SetAdcPhaseMain(B_Phase) // fix
#define gm_WaitInputVSync(B_InputChannel, B_NumFrames) gm_WaitInputVSyncMain(B_NumFrames) // fix
#define gm_SetAdcGain(B_InputChannel, B_RGain, B_GGain, B_BGain) gm_SetAdcGain_S(B_RGain, B_GGain, B_BGain) // fix
#define gm_SetAdcOffset2(B_InputChannel, B_ROff2, B_GOff2, B_BOff2) gm_SetAdcOffset2_S(B_ROff2, B_GOff2, B_BOff2) // fix
#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 gmp_GrabPixel_m(B_Channel, W_X, W_Y) gmp_GrabPixel_S(W_X, W_Y)
#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) // fix
#define gmp_AutoPositionNoIBD_GF(B_Channel) gmp_AutoPositionNoIBD_GFS()
#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);
// 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_GFS(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
#else
//**************************************************************
// PROTOTYPE TRULY MULTI-CHANNEL FUNCTIONS
//**************************************************************
// GSEL functions
gmt_RET_STAT gm_AutoGeometry(gmt_PHY_CH B_Channel, BYTE AutoMode);
gmt_RET_STAT gm_AutoPosition(gmt_PHY_CH B_Channel);
gmt_RET_STAT gm_AutoColorBalance(gmt_PHY_CH B_Channel);
void gm_AutoCalibrateOffset1_S(gmt_PHY_CH B_Channel);
gmt_RET_STAT gm_AutoADCInit_S(gmt_PHY_CH B_Channel);
void gm_SetAdcOffset2_S(gmt_PHY_CH B_Channel, BYTE B_Roff, BYTE B_Goff, BYTE B_Boff);
void gm_SetAdcGain_S(gmt_PHY_CH B_Channel, WORD B_RGain, WORD B_GGain, WORD B_BGain);
// Private funtions
gmt_RET_STAT gmp_WidthHtotal(gmt_PHY_CH B_Channel);
BYTE gmp_GrabPixel(gmt_PHY_CH B_Channel, WORD W_X, WORD W_Y);
BYTE gmp_GrabPixelColor(gmt_PHY_CH B_Channel, WORD W_X, WORD W_Y, BYTE B_Color);
gmt_RET_STAT gmp_AutoPositionNoIBD_GF(B_Channel);
WORD gmp_ReadIBDHWidth(void);
#endif
//**************************************************************
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);
gmt_RET_STAT far gm_readI2C_DMA(BYTE B_DevAddress, BYTE *Bp_Buffer, BYTE B_Length );
gmt_RET_STAT far gm_writeI2C_DMA(BYTE B_DevAddress, BYTE *Bp_Buffer,BYTE B_Length );
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_SetFiltering()
#define NUMB_FILTERS 4
#define MAX_EQ 3 // used by htotal algo to sharpen edges
#define DEFAULT_FILTER 0 // whatever is normal
#define COLOR_BAL_FILTER 1 // a filter suitable for doing auto color balance (reduced bandwidth)
#define AUTO_MSGS // enables auto adjust messages.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -