📄 osdctrl.c
字号:
}
else
{
PortDataOut((MainMenuCols+1)*7+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
SetOSDData((MainMenuCols+1)*7+7, UPDATE_ATTR, 0x36, 16);
else
SetOSDData((MainMenuCols+1)*7+7, UPDATE_ATTR, 0xD6, 16);
}
converInt(eepData.volume-MIN_volume);
if (cursor == HOT_VOLUME)
PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
else
PortDataOut((MainMenuCols+1)*7+23, UPDATE_CODE, buff, 3);
converInt(val);
if (cursor == HOT_VOLUME )
PortDataOut((SubMenuCols+1)*4+19, UPDATE_CODE, buff, 3);
else
PortDataOut((MainMenuCols+1)*14+24, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.volume-&eepData),(unsigned char *)&eepData.volume, 1);
}
}
void setVolume(unsigned char volume)
{
RegByteOut(0xae, volume); //PWM1 High Period
RegByteOut(0xaf, 100-volume); //PWM1 Low Period
// RegByteOut(0xae, 100-volume); //PWM1 High Period
// RegByteOut(0xaf, volume); //PWM1 Low Period
RegBitOut(0xab,0x08,0x08);
/*
if (volume == 0)
{
AUDIO_MUTE_PIN = 1; //20021224
AUDIO_STBY_PIN = 1; //20021224
}
else
{
AUDIO_MUTE_PIN = 0; //20021224
AUDIO_STBY_PIN = 0; //20021224
}
*/
}
#else
void load_exit_font_data(void)
{
OSDRegByteOut(0x78,0x40);
PortDataOut(0xcb, PORT_FONT, exit_data, sizeof(exit_data) / sizeof(char));
OSDRegByteOut(0x78, 0x00);
RegByteOut(0xC0, 0x3C); // Select Normal Registers
}
#endif
/************************************************
* brightness adjustment *
*************************************************/
void adjBrightness(char delta, bit show)
{
delta += eepData.brightness;
if (delta >= MAX_brightness)
eepData.brightness = MAX_brightness;
else if (delta <= MIN_brightness)
eepData.brightness = MIN_brightness;
else
eepData.brightness = delta;
setBrightness(eepData.brightness);
if (show)
{
if (cursor == HOT_BRIGHTNESS)
PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, brightnessData[eepData.language], sizeof(brightnessData[0]) / sizeof(char));
else
PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, brightnessData[eepData.language], sizeof(brightnessData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)(MAX_brightness-MIN_brightness), eepData.brightness-MIN_brightness);
if (cursor == HOT_BRIGHTNESS)
{
PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 17);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
}
else
{
PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
}
converInt(eepData.brightness-MIN_brightness);
if (cursor == HOT_BRIGHTNESS)
PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
else
PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.brightness-&eepData),(unsigned char *)&eepData.brightness, 1);
}
/************************************************
* contrast adjustment *
***********************************************/
void adjContrast(char delta, bit show)
{
delta += eepData.contrast;
if (delta >= MAX_contrast)
eepData.contrast = MAX_contrast;
else if (delta <= MIN_contrast)
eepData.contrast = MIN_contrast;
else
eepData.contrast = delta;
setDigitalContrastRGB();
if (show)
{
if (cursor == HOT_CONTRAST)
PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, contrastData[eepData.language], sizeof(contrastData[0]) / sizeof(char));
else
PortDataOut((MainMenuCols+1)*4+10, UPDATE_CODE, contrastData[eepData.language], sizeof(contrastData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)(MAX_contrast-MIN_contrast), eepData.contrast-MIN_contrast);
if (cursor == HOT_CONTRAST)
{
PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
}
else
{
PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
}
converInt(eepData.contrast-MIN_contrast);
if (cursor == HOT_CONTRAST)
PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
else
PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);
}
eepDataOut(EEPDATASTART+(&eepData.contrast-&eepData),(unsigned char *)&eepData.contrast, 1);
}
void setScrollBarAttr(char colorR)
{
if(colorR == 1)
{
if((cursor & 0x0F) == 0)
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
else if((cursor & 0x0F) == 1)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else if((cursor & 0x0F) == 4)
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
else if((cursor & 0x0F) == 6)
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
else if((cursor & 0x0F) == 8)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
}
else
{
if((cursor & 0x0F) == 0)
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
else if((cursor & 0x0F) == 1)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
else if((cursor & 0x0F) == 4)
// PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);
else if((cursor & 0x0F) == 6)
// PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);
else if((cursor & 0x0F) == 8)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
}
}
#if USE_PWM_BRIGHTNESS
void setBrightness(unsigned char brightness)
{
#if (MVPL_CMO17 + MVRL_SANYO15)
RegByteOut(0xAc, brightness);
RegByteOut(0xAd, MAX_brightness-MIN_brightness-brightness);
#else //if MVRL_NEC15
RegByteOut(0xAc, MAX_brightness-MIN_brightness-brightness);
RegByteOut(0xAd, brightness);
#endif
RegBitOut(0xAB,0x14,0x14);
}
#endif
/***********************************
* pitch adjustment *
************************************/
void adjPitch(char delta,bit show)
{
if (eepModeData.pitch_val > MAX_pitch) eepModeData.pitch_val = MAX_pitch;
if (eepModeData.pitch_val < MIN_pitch) eepModeData.pitch_val = MIN_pitch;
if ((eepModeData.pitch_val + delta) >= MIN_pitch &&
(eepModeData.pitch_val + delta) <= MAX_pitch)
{
eepModeData.pitch += delta;
eepModeData.pitch_val += delta;
miscSetADCPitch(eepModeData.pitch);
}
if (show)
{
/* data */
PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, clockData[eepData.language], sizeof(clockData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)MAX_pitch,(unsigned int)eepModeData.pitch_val);
PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
//converInt((int)eepModeData.pitch_val);
converInt((int)eepModeData.pitch_val);
PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
}
updateModeData();
}
/***********************************
* phase adjustment *
************************************/
void adjPhase(char delta,bit show)
{
if (eepModeData.phase > MAX_phase) eepModeData.phase = MAX_phase;
if (eepModeData.phase < MIN_phase) eepModeData.phase = MIN_phase;
if((eepModeData.phase + delta) >= MIN_phase && (eepModeData.phase + delta) <= MAX_phase)
{
eepModeData.phase += delta;
miscSetADCPhase(eepModeData.phase);
}
if (show)
{
PortDataOut((MainMenuCols+1)*4+9, UPDATE_CODE, phaseData[eepData.language], sizeof(phaseData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)MAX_phase, (unsigned int)(eepModeData.phase&PHASEMSK));
PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
ival = (unsigned int)(eepModeData.phase&PHASEMSK);
ival = ival*100/MAX_phase;
converInt((int) ival);
PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);
}
updateModeData();
}
/*************************************************
* Display H possition adjustment *
**************************************************/
void adjHPos(char delta,bit show)
{
if (eepModeData.hstart > MAX_hstart) eepModeData.hstart = MAX_hstart;
if (eepModeData.hstart < MIN_hstart) eepModeData.hstart = MIN_hstart;
if ((eepModeData.def_hstart >= 51)&&(eepModeData.def_hstart <= 300))
{
MAX_Hstart = eepModeData.def_hstart + 50;
MIN_Hstart = eepModeData.def_hstart - 50;
}
else if (eepModeData.def_hstart < 51)
{
MAX_Hstart = MIN_hstart+100;
MIN_Hstart = MIN_hstart;
}
else if (eepModeData.def_hstart > 300)
{
MAX_Hstart = MAX_hstart;
MIN_Hstart = MAX_hstart-100;
}
if ((eepModeData.hstart-delta) >= MIN_Hstart && (eepModeData.hstart-delta) <= MAX_Hstart)
{
eepModeData.hstart -= delta;
buff[0] = eepModeData.hstart & 0xFF;
buff[1] = (eepModeData.hstart >>8) &0x07;
RegDataOut(0x34, buff, 2);
}
if(show)
{
/* data */
PortDataOut((MainMenuCols+1)*4+8, UPDATE_CODE, hposData[eepData.language], sizeof(hposData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)(MAX_Hstart-MIN_Hstart), (unsigned int)(MAX_Hstart-eepModeData.hstart));
PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
//if (eepModeData.def_hstart < 51)
// converInt(MAX_Hstart-eepModeData.hstart-50-(51-eepModeData.def_hstart));
//else
converInt(MAX_Hstart-eepModeData.hstart);
PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);
}
updateModeData();
}
/**********************************************
* Display V possition adjustment *
***********************************************/
void adjVPos(char delta,bit show)
{
unsigned char step;
if (eepModeData.vstart > MAX_vstart) eepModeData.vstart = MAX_vstart;
if (eepModeData.vstart < MIN_vstart) eepModeData.vstart = MIN_vstart;
step = ((eepModeData.def_vstart - MIN_vstart) > (MAX_vstart - eepModeData.def_vstart)) ? (MAX_vstart - eepModeData.def_vstart):(eepModeData.def_vstart - MIN_vstart);
step = (step > 30) ? 30: step;
if ((eepModeData.def_vstart >= step+2 ) && (eepModeData.def_vstart <= MAX_vstart-step ))
{
MAX_Vstart = eepModeData.def_vstart + step;
MIN_Vstart = eepModeData.def_vstart - step;
}
else if (eepModeData.def_vstart < step+2 )
{
MAX_Vstart = (step*2)+2;
MIN_Vstart = 2;
}
else if (eepModeData.def_vstart > MAX_vstart-step )
{
MAX_Vstart = MAX_vstart;
MIN_Vstart = MAX_vstart-2*step;
}
if ((eepModeData.vstart+delta) >= MIN_Vstart && (eepModeData.vstart+delta) <= MAX_Vstart)
{
eepModeData.vstart += delta;
buff[0] = eepModeData.vstart & 0xFF;
buff[1] = 0;
RegDataOut(0x36, buff, 2);
}
if (show)
{
/* data */
PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, vposData[eepData.language], sizeof(vposData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)(MAX_Vstart-MIN_Vstart), (unsigned int)(eepModeData.vstart-MIN_Vstart));
PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
ival = eepModeData.vstart-MIN_Vstart;
ival *= 100;
ival /= (MAX_Vstart-MIN_Vstart);
converInt(ival);
PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
}
updateModeData();
}
/************************************************
* OSD Time adjustment *
*************************************************/
void adjOSDTime(char delta, bit show)
{
int val;
val = eepData.osdTime + delta;
if (val >= MIN_osdTime && val <= MAX_osdTime)
{
eepData.osdTime = val;
if (show)
{
PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, osdtimeroutData[eepData.language], sizeof(osdtimeroutData[0]) / sizeof(char));
DisplayScrollBar((unsigned int)MAX_osdTime, val);
PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
if(AdjustFlag)
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
else
// PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
converInt(val);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -