📄 osdctrl.c
字号:
//---------------------------------------------------------------------------
// Terawins Inc. Company Confidential Strictly Private
//
// $Archive: OSDCtrl.c $
// $Revision: 2.0 $
// $Author: jwang $
// $Date: 2003/08/13 $
//
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Copyright 2002 (c) Terawins Inc.
// This is an unpublished work.
// --------------------------------------------------------------------------
#include <reg51.h>
#include "common.h"
#include "System.h"
#include "SRC_ctrl.h"
#include "TW803Reg.h"
#include "OSDCtrl.h"
#include "TwoWire.h"
#include "OSDDraw.h"
#include "Keypad.h"
#include "Tuner.h"
#define __GLOBAL_H__
#include "Global.h"
#include "NVRam.h"
#include "OSDTbl.h"
#define _OSDMENU_H_
#include "OSDMenu.h"
#include "intrins.h"
#include "T803OSD.h"
#define __OSD_ESTR__
#include "E_OSDString.H"
#include "timer0.h"
bit idata skipon=0;
void OSDItemAdj(uCHAR cAdj)
{
uCHAR str_index=ALL_MENU[m_cOSDMenu]->Item_Num*EepPublic.cOSDLang;
uCHAR Val=ALL_MENU[m_cOSDMenu]->EEProm[m_cItem];
uCHAR Max=ALL_MENU[m_cOSDMenu]->Par[m_cItem].ucValMAX;
uCHAR Min=ALL_MENU[m_cOSDMenu]->Par[m_cItem].ucValMIN;
uCHAR dev_addr,dev_reg;
//void (*fff)(void);
if(cAdj==INCREASE)
{
if(Val<Max)
Val++;
else if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_CYCLE)
Val=Min;
}
if(cAdj==DECREASE)
{
if(Val>Min)
Val--;
else if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_CYCLE)
Val=Max;
}
if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].Def!=NULL)
{
dev_addr=ALL_MENU[m_cOSDMenu]->Par[m_cItem].Def->ucDevVal;
dev_reg=ALL_MENU[m_cOSDMenu]->Par[m_cItem].Def->ucRegAdr;
if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].Def->ucDatalen==2)
{
I2CWriteByte(dev_addr,dev_reg,Val>>8);
I2CWriteByte(dev_addr,dev_reg+1,Val&0xFF);
}
else
I2CWriteByte(dev_addr,dev_reg,Val);
}
if(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_GUAGE)
OSDDrawGauge(Val,Max,0,ALL_MENU[m_cOSDMenu]->Item_Num+2, COL_GAUGE);
if(ALL_MENU[m_cOSDMenu]->Par[m_cItem+str_index].cDataAttr&OSD_VALUE)
{
OSDCleanLine(NUM_STAT,ALL_MENU[m_cOSDMenu]->Item_Num+2,COL_NORMAL,NUM_STAT+3);
OSDDrawNum(Val,Max,NUM_STAT,ALL_MENU[m_cOSDMenu]->Item_Num+2,COL_NORMAL,DRAW_BLANK);
}
// if((ALL_MENU[m_cOSDMenu]->Par->cDataAttr&OSD_ITEM)&&(((uCHAR *)ALL_MENU[m_cOSDMenu]->Par[m_cItem].Item)!=NULL))
if((ALL_MENU[m_cOSDMenu]->Par[m_cItem+str_index].cDataAttr&OSD_ITEM)&&(((uCHAR *)ALL_MENU[m_cOSDMenu]->Par[m_cItem].Item)!=NULL))
OSDShowItem((uCHAR *)ALL_MENU[m_cOSDMenu]->Par[m_cItem].Item[Val], ITEM_STAT, m_cItem);
ALL_MENU[m_cOSDMenu]->EEProm[m_cItem]=Val;
if((ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_FUNC)&&((ALL_MENU[m_cOSDMenu]->Par[m_cItem].func)!=NULL))
{
ALL_MENU[m_cOSDMenu]->Par[m_cItem].func(cAdj);
}
#ifdef NVRAM
if(!(ALL_MENU[m_cOSDMenu]->Par[m_cItem].cDataAttr&OSD_DISEPOM)){
I2CWriteByte(ALL_MENU[m_cOSDMenu]->EEPROM_BLOCK, ALL_MENU[m_cOSDMenu]->EEPROM_OFFSET+ m_cItem,Val);
twdDelay(NVRDELAY);
}
#endif
}
#ifdef TV
void AdjTVSkip(void)
{
//////////////////////////////////////////////////
uCHAR cTmp;
if(EepTV.cMode){ //Cable mode
cTmp = I2CReadByte(EEPTVCABLE_BLOCK, 2*EepTV.cChannelNum+1);
twdDelay(NVRDELAY);
if(cTmp & 0x80){
I2CWriteByte(EEPTVCABLE_BLOCK, 2*EepTV.cChannelNum+1, (cTmp&0x7F) );
OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, COL_TITLE, LBLUE_RED|0x03);
}else{
I2CWriteByte(EEPTVCABLE_BLOCK, 2*EepTV.cChannelNum+1, (cTmp|0x80) );
// OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, DBLUE_RED, LBLUE_RED|0x03);
OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, 0x44, LBLUE_RED|0x03);
}
}else{ //Air mode
cTmp = I2CReadByte(EEPTVAIR_BLOCK, 2*EepTV.cChannelNum+1);
twdDelay(NVRDELAY);
if(cTmp & 0x80){
I2CWriteByte(EEPTVAIR_BLOCK, 2*EepTV.cChannelNum+1, (cTmp&0x7F) );
OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, COL_TITLE, LBLUE_RED|0x03);
}else{
I2CWriteByte(EEPTVAIR_BLOCK, 2*EepTV.cChannelNum+1, (cTmp|0x80) );
// OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, DBLUE_RED, LBLUE_RED|0x03);
OSDDrawNum(EepTV.cChannelNum, 0, 19, m_cItem, 0x44, LBLUE_RED|0x03);
}
}
}
//////////////////////////////////////////////////
void AdjFavoriteCHL(void)
{
uCHAR cTemp,m_cTV_Num;
cTemp=I2CReadByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_ChanelIndex);
if(cTemp == 0x30){ // second and third key number.
m_cTV_Num = I2CReadByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_Oneth);
m_cTV_Num = 100 + 10*I2CReadByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_Tenth) + m_cTV_Num;
if(m_cTV_Num < 126){
I2CWriteByte(EEPGLOBAL_BLOCK, EEPFAV_OFFSET+m_cItem,m_cTV_Num);
twdDelay(5);
OSDCleanLine(19,m_cItem,0,32);
OSDDrawNum(m_cTV_Num, 0, NUM_STAT, m_cItem, BLUE_PURPLE, LBLUE_RED|0x03);
EepFav.cFav_list[m_cItem-1] = m_cTV_Num;
}
}else if(cTemp == 0x10){
m_cTV_Num = I2CReadByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_Oneth);
m_cTV_Num = 10*I2CReadByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_Tenth) + m_cTV_Num;
I2CWriteByte(EEPGLOBAL_BLOCK, EEPFAV_OFFSET+m_cItem,m_cTV_Num);
twdDelay(5);
OSDCleanLine(19,m_cItem,0,32);
OSDDrawNum(m_cTV_Num, 0, NUM_STAT, m_cItem, BLUE_PURPLE, LBLUE_RED|0x03);
EepFav.cFav_list[m_cItem-1] = m_cTV_Num;
}
Timer0Start();
OSDCleanLine(19,0,0,32);
I2CWriteByte(EEPGLOBAL_BLOCK , EEPTV_OFFSET+TV_ChanelIndex,0x00);
twdDelay(5);
}
#ifdef PAL // kenny 20060406
void AdjTVSoundSystem(void)
{
if(EepTV.PAL_Audio_Type==PAL_I)
EepTV.PAL_Audio_Type=PAL_DK;
else
EepTV.PAL_Audio_Type=PAL_I;
//Ruby OSDDrawSoundSystem();
I2CWriteByte(0x86, 0x02,EepTV.PAL_Audio_Type);
// ir_data=0;
}
#endif // kenny 20060406
void AdjTVFineTune(sCHAR sStep)
{
// uCHAR cTemp;
uCHAR i;
uDWORD dTemp;
uCHAR code iNegative []={0x2D,0x20,0x20,EOL};
uCHAR code iPostive []={0x2B,0x20,0x20,EOL};
uCHAR code iZero []={0x20,0x20,0x20,EOL};
//uCHAR code iAfc_E []={'A','F','C',EOL};
/* ruby
cTemp = I2CReadByte(EEPVIDEOBLOCK, TV_cChannel);
twdDelay(NVRDELAY);
if(EepTV.cMode)
{
wTemp=I2CReadByte(EEPVIDEOBLOCK+4, idTVCHANNEL_STAT+(cTemp-1)*2);
wTemp<<=8;
twdDelay(NVRDELAY);
wTemp|=I2CReadByte(EEPVIDEOBLOCK+4, idTVCHANNEL_STAT+(cTemp-1)*2+1);
}
else
{
wTemp=I2CReadByte(EEPVIDEOBLOCK+2, idTVCHANNEL_STAT+(cTemp-1)*2);
wTemp<<=8;
twdDelay(NVRDELAY);
wTemp|=I2CReadByte(EEPVIDEOBLOCK+2, idTVCHANNEL_STAT+(cTemp-1)*2+1);
}
rub */
if(sStep==INCREASE){
sStep = 1;
}else if(sStep==DECREASE){
sStep = -1;
}else{
sStep = 0;
}
// wTemp=TVEEPGetChFreq(EepTV.cChannelNum); //ruby
//This funciton stay in tunexxx.c , thomas
dTemp=TVEEPGetChFreq(); //ruby
I2CWriteByte(EEPTVCABLE_BLOCK,2*EepTV.cChannelNum,(I2CReadByte(EEPTVCABLE_BLOCK,2*EepTV.cChannelNum)+sStep));
twdDelay(NVRDELAY);
dTemp += sStep*ADCRatio; //unit, 10KHZ
i=I2CReadByte(EEPTVCABLE_BLOCK,2*EepTV.cChannelNum);
if(i == 0){
OSDShowLine(iZero,NUM_STAT-1,m_cItem,BLUE_PURPLE, LBLUE_RED|0x03);
OSDDrawNum(i, 0, NUM_STAT, m_cItem, BLUE_PURPLE, LBLUE_RED|0x03);
}else if(i < 0x80){
OSDShowLine(iPostive,NUM_STAT-1,m_cItem,BLUE_PURPLE, LBLUE_RED|0x03);
OSDDrawNum(i, 0, NUM_STAT, m_cItem, BLUE_PURPLE, LBLUE_RED|0x03);
}else{
i = 0xff-i+1;
OSDShowLine(iNegative,NUM_STAT-1,m_cItem,BLUE_PURPLE, LBLUE_RED|0x03);
OSDDrawNum(i, 0, NUM_STAT, m_cItem, BLUE_PURPLE, LBLUE_RED|0x03);
}
Tuner_WriteFreq(dTemp);
//Ruby OSDDrawTVFreq(wTemp);
#ifdef PAL
//Ruby OSDDrawBand(wTemp);
#endif
//kenny 20060406==============================
// SetTuner(wTemp);
// Tuner_WriteFreq(dTemp);
//kenny 20060406==============================
// EEPSaveTVChannel(cTemp-1, dTemp);
// OSDShowTVData(); // mark by Sherman 05'11'14
}
#endif
void AdjGamma(void)
{
if(EepVideo.cGamma == 1){
I2CWriteByte(TW803_P0,IMG_FUN_CTRL,(I2CReadByte(TW803_P0,IMG_FUN_CTRL)& ~0x03)|0x03);
/*-------------------------------------------------------------------------
20060906 ,may have a good style here ,now for testing
-------------------------------------------------------------------------*/
#if (defined __FUJI_17_DIGITAL__)
I2CWriteByte(TW803_P0,IMG_FUN_CTRL,(I2CReadByte(TW803_P0,IMG_FUN_CTRL)& ~0x03));
#endif
/*-------------------------------------------------------------------------
20060906
-------------------------------------------------------------------------*/
}else{
I2CWriteByte(TW803_P0,IMG_FUN_CTRL,(I2CReadByte(TW803_P0,IMG_FUN_CTRL)& ~0x03));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -