📄 rposdfunc.c
字号:
cnt = 0;
if(*(pArray + 1) > 3)
return;
temp = _EXT_ + *(pArray + 1);
if(*(pArray + 2) == _REPEAT_)
{
CScalerWriteAmount(_OSD_DATA_PORT_92, *(pArray + 3), temp, _NON_AUTOINC);
pArray += 4;
}
else
{
CScalerWrite(_OSD_DATA_PORT_92, 1, &temp, _NON_AUTOINC);
pArray += 2;
}
}
else if(*pArray == _REPEAT_)
{
CScalerWrite(_OSD_DATA_PORT_92, cnt, pArray - cnt, _NON_AUTOINC);
CScalerWriteAmount(_OSD_DATA_PORT_92, *(pArray + 1) - 1, *(pArray - 1), _NON_AUTOINC);
pArray += 2;
cnt = 0;
}
else if(*pArray == _NEXT_)
{
CScalerWrite(_OSD_DATA_PORT_92, cnt, pArray - cnt, _NON_AUTOINC);
pArray++;
cnt = 0;
if(*(pArray + 1) != _END_)
{
CScalerWrite(_OSD_ADDR_MSB_90, 2, pArray, _AUTOINC);
pArray += 2;
}
else
{
break;
}
}
else if(*(pArray) == _END_)
{
CScalerWrite(_OSD_DATA_PORT_92, cnt, pArray - cnt, _NON_AUTOINC);
break;
}
else
{
pArray++;
cnt++;
}
}
}
//--------------------------------------------------
void COsdFxEnableOsd(void)
{
//CTimerWaitForEvent(_EVENT_DEN_STOP);
//pData[0] = 0x81;
//pData[1] = 0x1f;
//pData[2] = 0x00;
//CScalerWrite(0x90, 3, pData, _AUTOINC);
CTimerWaitForEvent(_EVENT_DEN_STOP);
CScalerSetBit(_OVERLAY_CTRL_6C, 0xfe, 0x01);
}
//--------------------------------------------------
void COsdFxDisableOsd(void)
{
//CTimerWaitForEvent(_EVENT_DEN_STOP);
//pData[0] = 0x81;
//pData[1] = 0x1f;
//pData[2] = 0x01;
//CScalerWrite(0x90, 3, pData, _AUTOINC);
CScalerSetBit(_OVERLAY_CTRL_6C, ~_BIT0, 0x00);
#if(_AUTO_POWER_DOWN && _TV_CHIP != _TV_NONE)
bTimerOnScreen = 0;
#endif
}
//--------------------------------------------------
void COsdFxDrawWindow(WORD usXStart, WORD usYStart, WORD usXEnd, WORD usYEnd, BYTE *pStyle)
{
BYTE cnt0, cnt1;
cnt0 = CScalerGetBit(_OVERLAY_CTRL_6C, _BIT0);
pData[0] = (cnt0 == 0x00) ? 0xc1 : 0xe1;
pData[1] = ((*(pStyle)) * 4) + 1;
CScalerWrite(_OSD_ADDR_MSB_90, 2, pData, _AUTOINC);
pData[0] = ((usXStart & 0x03F) << 2);
pData[1] = (((usYStart & 0x007) << 5) | ((usXStart & 0x7C0) >> 6));
pData[2] = (usYStart >> 3);
pData[3] = ((usXEnd & 0x03F) << 2);
pData[4] = (((usYEnd & 0x007) << 5) | ((usXEnd & 0x7C0) >> 6));
pData[5] = (usYEnd >> 3);
CScalerWrite(_OSD_DATA_PORT_92, 6, pData, _NON_AUTOINC);
CTimerDelayXms(40);
for(cnt1=0;cnt1<2;cnt1++)
{
pData[0] = 0xc1;
pData[1] = ((*(pStyle)) * 4) + (cnt1 * 3);
CScalerWrite(_OSD_ADDR_MSB_90, 2, pData, _AUTOINC);
for(cnt0=0;cnt0<3;cnt0++)
pData[cnt0] = (*(pStyle + ((cnt1 * 3) + cnt0) + 1));
CScalerWrite(_OSD_DATA_PORT_92, 3, pData, _NON_AUTOINC);
}
}
//--------------------------------------------------
void COsdFxChangeWindowColor(BYTE ucWindowColor, BYTE *pStyle)
{
pData[0] = 0x41;
pData[1] = ((*(pStyle)) * 4) + (3);
CScalerWrite(_OSD_ADDR_MSB_90, 2, pData, _AUTOINC);
pData[0] = ((*(pStyle + ((3) + 1) + 1)) & 0xf0) | (ucWindowColor & 0x0f);
CScalerWrite(_OSD_DATA_PORT_92, 1, pData, _NON_AUTOINC);
}
//--------------------------------------------------
WORD COsdFxGetAdcClockRange(BYTE ucPar)
{
WORD delta;
if(ucPar == _GET_CLOCKRANGE_MAX)
{
CAdjustCheckAdcClockRange(stModeUserCenterData.CenterClock, &delta);
if(delta > _CLOCK_BIAS)
return (stModeUserCenterData.CenterClock + _CLOCK_BIAS);
else
return (stModeUserCenterData.CenterClock + delta);
}
else if(ucPar == _GET_CLOCKRANGE_MIN)
{
CAdjustCheckAdcClockRange(stModeUserCenterData.CenterClock, &delta);
if(delta > _CLOCK_BIAS)
return (stModeUserCenterData.CenterClock - _CLOCK_BIAS);
else
return (stModeUserCenterData.CenterClock - delta);
}
}
//--------------------------------------------------
void SetRTDPWM(unsigned char PWMId,unsigned char Value)
{
pData[0] = PWMId << 6; //PWM ID
pData[1] = 0x01;
pData[2] = Value;
CScalerWrite(_OSD_ADDR_MSB_90,3,pData,_AUTOINC);
}
//---------------------------------------------------------------------------
unsigned char StrLen(unsigned char code *Str)
{
unsigned char i = 0;
while(*Str != 0)
{
i++;
Str++;
}
return i;
}
//----------------------------------------------------------------------------------------------------
unsigned int ValueInRangeChange(unsigned int ucMin,unsigned int ucMax,unsigned int ucCur,unsigned char ucOption,unsigned char ucLoop)
{
unsigned int R;
if(ucOption)
{
if(ucCur >= ucMax)
{
if(ucLoop == 0) return ucMax;
else return ucMin;
}
R = ucCur+1;
}
else
{
if(ucCur <= ucMin)
{
if(ucLoop == 0) return ucMin;
else return ucMax;
}
R = ucCur-1;
}
return R;
}
//----------------------------------------------------------------------------------------------------
unsigned char ClockGuage(void)
{
unsigned int iMin;
unsigned int iTmp;
iMin = COsdFxGetAdcClockRange(_GET_CLOCKRANGE_MIN);
iTmp = (stModeUserData.Clock - iMin) * 100 / (COsdFxGetAdcClockRange(_GET_CLOCKRANGE_MAX) - iMin);
return (unsigned char)iTmp;
}
//----------------------------------------------------------------------------------------------------
unsigned char HPosGuage(void)
{
unsigned int ucMin = stModeUserCenterData.CenterHPos - _HPOSITION_BIAS;
unsigned int iTmp = (stModeUserData.HPosition - ucMin) * 100 / (_HPOSITION_BIAS * 2);
return (unsigned char)iTmp;
}
//----------------------------------------------------------------------------------------------------
unsigned char VPosGuage(void)
{
unsigned int ucMin = stModeUserCenterData.CenterVPos - _VPOSITION_BIAS;
unsigned int iTmp = (stModeUserData.VPosition - ucMin) * 100 / (_VPOSITION_BIAS * 2);
return (unsigned char)iTmp;
}
//----------------------------------------------------------------------------------------------------
void DoReset()
{
unsigned char ucTemp0 = stSystemData.InputSource;
CEepromLoadDefault();
CEepromSaveOsdUserData();
CEepromSaveSystemData();
#if RTD_PWM_BACKLIGHT
CAdjustBrightness_RTDPWM();
#else
CAdjustBrightness();
#endif
CAdjustContrast();
CAdjustBacklight();
CAdjustAdcGainOffset();
CAdjustAdcClock(stModeUserData.Clock);
CAdjustPhase(stModeUserData.Phase);
CAdjustHPosition();
CAdjustVPosition();
stSystemData.InputSource = ucTemp0;
}
//----------------------------------------------------------------------------------------------------
void SetOSDDouble(unsigned char ucAttr)
{
CScalerSendAddr(_OSD_ADDR_MSB_90, _WRITE, _AUTOINC);
CScalerSendByte(0x40);
CScalerSendByte(0x03);
CScalerSendByte(ucAttr);
CScalerSendWriteStop();
}
//---------------------------------------------
#if(BURNIN_EN)
WORD CheckSum(void)
{
BYTE code *Ptr;
WORD checksum_16 = 0;
Ptr = 0xFC00;
do
{
Ptr --;
checksum_16 += (unsigned char)*Ptr;
//Ptr --;
}
while ((unsigned int)Ptr);
//DynamicText = CheckSumHex;
return checksum_16;
// printData("checksum_16= %x",checksum_16);
}
void DrawHex(void) //fenix
{
if(1) //fenix
{
CheckSumHex = CheckSum();
PrintfHex(CheckSumHex);
//CheckSumHex = (CheckSumHex>>4);
//CheckSumHex = (CheckSumHex&0xff);
CheckSumHex = (CheckSumHex>>8);
PrintfHex(CheckSumHex);
//CheckSumHex = ((CheckSumHex>>8)&0xff);
// PrintfHex(CheckSumHex);
//CheckSumHex_tmp = CheckSumHex;
}
}
///////
void InitBurnIn()
{
CModeSetFreeRun();
CAdjustBackgroundColor(0x00,0x00,0x00);
CPowerPanelOn();
}
//---------------------------------------------
void BurnInRun()
{
static unsigned char ucBurnInColor = 0;
unsigned char R = 0;
unsigned char G = 0;
unsigned char B = 0;
if(ucBurnInColor & 0x80)
{
if(ucBurnInColor & 0x01) R = 0xff;
if(ucBurnInColor & 0x02) G = 0xff;
if(ucBurnInColor & 0x04) B = 0xff;
}
else
{
if(ucBurnInColor & 0x01) R = 0x7f;
if(ucBurnInColor & 0x02) G = 0x7f;
if(ucBurnInColor & 0x04) B = 0x7f;
}
CAdjustBackgroundColor(R,G,B);
ucBurnInColor++;
/////////////////////////CHECKSUM
///////////////////////////
}
//---------------------------------------------
#endif // if(BURNIN_EN)
/* OSD Window Templet
//BASE ADDRESS + 000 Shadow/Border/Gradient
SB_THICKNESS(1) | SB_HEIGHT(1) ,
SHADOW_COLOR(1) | BORDER_COLOR(2),
R_GRADIENT_POLARITY_DEC |
G_GRADIENT_POLARITY_INC |
B_GRADIENT_POLARITY_DEC |
GRADIENT_LEVEL(1) |
R_COLOR_GRADIENT_EN(1) |
G_COLOR_GRADIENT_EN(1) |
B_COLOR_GRADIENT_EN(1),
//BASE ADDRESS + 001 START POSITION
W_START_POS(10,300),
//BASE ADDRESS + 002 END POSITION
W_END_POS(20,350),
//BASE ADDRESS + 003 Control
RESERVED,
GRADIENT_PER_LEVEL(2) | WINDOW_COLOR(3),
GRADIENT_FUNCTION_EN(1) |
GRADIENT_DIRECTION_HOR |
SHADOW_BORDER_EN(1) |
WINDOW_TYPE(WT_3DBUTTON_TYPE1) |
WINDOW_ENABLE(1),
*/
#endif //#if(OSD_TYPE == OSD01)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -