📄 bbktuner.~c
字号:
/**************************************************************************************/
/*********************** BBK CONFIDENTIAL ************************/
/*********************** ************************/
/*********************** Description : Digital Audio Process ************************/
/*********************** ************************/
/*********************** Company: BBK AV ELECTRONICS CORP.,LTD ************************/
/*********************** ************************/
/*********************** Programmer : Terry Lee ******** ****************/
/**************************************************************************************/
#define BBKTUNER_PAR
#pragma NOAREGS
#include "general.h"
#include "..\..\procdef.h"
#include "..\..\typedef.h"
#include "..\..\vardef.h"
#if defined(DV997K) || defined(DV979) || defined(DV985) || defined(DVR003)
sbit V_MUTE = P3^0;
#endif
extern BOOL fgCOMVolumeDownKey(void) large;
extern BOOL fgCOMMuteKey(void) large;
extern BOOL fgCOMVolumeUpKey(void) large;
extern BYTE bSetMic(WORD wEEPos, BYTE bValue) large;
extern void vKaraOkTunerToDvd(void)large;
//#define BBKTUNER_DEBUG
#ifdef BBKTUNER_DEBUG
extern void DRS232LogS(char * pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
#ifdef BBK_RD2_OLD_TUNER
//#define BBKTUNER_DEBUG
#ifdef BBKTUNER_DEBUG
extern void DRS232LogS(char * pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vBandKey(void) large
{
_bProcess=RUN_KEYAMFM;
_bRunStep=0;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vAmStepKey(void) large
{
if(_fgAmFm!=AMFM_AM) return;
_bProcess=RUN_KEYAMFM;
_bRunStep=13;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vAutoManKey(void) large
{
_bRunStep=8;
_bProcess=RUN_KEYAMFM;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vStepUpDownKey(BYTE conreg) large
{
_bRunStep=2;
if(conreg==0x0F)
{
_fgTunerDir=T_FREQUP;
}
else
{
_fgTunerDir=T_FREQDN;
}
_bProcess=RUN_KEYAMFM;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vSearchUpDownKey(BYTE conreg) large
{
_bRunStep=3;
if(conreg==0x0F)
{
_fgTunerDir=T_FREQUP;
}
else
{
_fgTunerDir=T_FREQDN;
}
_bProcess=RUN_KEYAMFM;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vAutoSearchLongKey(void) large
{
_bRunStep=0;
_bProcess=RUN_KEYAUTOSEARCH;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void fgTunerSleepKey(void) large
{
_bRunStep=0;
_bProcess=RUN_TUNERSLEEP;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vTunerMemoryKey(void) large
{
_bRunStep=0;
_bProcess=RUN_KEYTUNEMORY;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vTunerChKey(BYTE channel) large
{
static BYTE xdata r_ch0;
static BYTE xdata r_ch1;
if(_fgTuneKey==0)
{
if(channel==0)
{
return;
}
r_ch1=0;
r_ch0=0;
}
if(channel==10)
{
r_ch0=0;
r_ch1+=10;
if(r_ch1>=40)
{
r_ch1=40;
_fgTuneKey=0;
}
else
{
_fgTuneKey=1;
}
}
else
{
r_ch0=channel;
//_bKeyEnable=ENABLE_NON_KEY;
}
_bProgram=r_ch1+r_ch0;
_bRunStep=0;
_bProcess=RUN_KEYCHANNEL;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vPresetUpDownKey(BYTE conreg) large
{
if(conreg==0x0F)
{
_bRunStep=0; // UP
}
else
{
_bRunStep=2; // DN
}
_bProcess=RUN_KEYTUNEPRESET;
}
#ifdef TUNER_SHOWVOLUME
/*============================================================================*/
/*============================================================================*/
/* system master volume processor */
/*============================================================================*/
/*============================================================================*/
void vVolKey(BYTE conreg)large
{
//if(f_mute==MUTE_ON) f_mute=MUTE_OFF;
if(conreg==0x0F) _bRunStep=0;
else _bRunStep=1;
_bProcess=RUN_KEYNORMALKEY;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
#if 1
void vMuteKey(void )large
{
_bProcess=RUN_KEYMUTE;
_bRunStep=0;
}
#endif
#endif
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void vTunerClearKey(void) large
{
_bRunStep=0; // UP
_bProcess=RUN_KEYTUNCLEAR;
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
BOOL vIrKeyEnableTunerPro(void) large
{
#ifdef BBKTUNER_DEBUG
DRS232LogB(_bIRKey, 0, 0, 1);
#endif
switch(_bIRKey)
{
case IR_AMP_SAVE:
vTunerMemoryKey();
break;
case IR_AMP_BAND:
case IR_AMP_FUN_RADIO:
vBandKey();
break;
case IR_AMP_AUTO_MAN:
vAutoManKey();
break;
case IR_AMP_AM_STEP:
vAmStepKey();
break;
//case IR_FR:
case IR_LEFT:
vStepUpDownKey(0xf0);
break;
//case IR_FF:
case IR_RIGHT:
vStepUpDownKey(0x0f);
break;
// case IR_DOWNSEARCH:
case IR_DOWN:
_bVfdTimer=0;
vSearchUpDownKey(0xf0);
break;
// case IR_UPSEARCH:
case IR_UP:
_bVfdTimer=0;
vSearchUpDownKey(0x0f);
break;
case IR_AMP_SEARCHLONG:
vAutoSearchLongKey();
break;
case IR_NUM0:
case IR_NUM1:
case IR_NUM2:
case IR_NUM3:
case IR_NUM4:
case IR_NUM5:
case IR_NUM6:
case IR_NUM7:
case IR_NUM8:
case IR_NUM9:
case IR_ADD10:
vTunerChKey(_bIRKey);
break;
case IR_PREV:
vPresetUpDownKey(0xf0);
break;
case IR_NEXT:
vPresetUpDownKey(0x0f);
break;
case IR_AMP_TUNER_CLEAR:
#ifdef BBKTUNER_DEBUG
DRS232LogB(_bIRKey, 0, 0, 2);
#endif
vTunerClearKey();
break;
default:
break;
}
return(1);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
bBBKTunerSpecKey(void) large
{
BOOL bRet = 1;//RET_SUCCESS;
switch(_bIRKey)
{
case IR_AMP_MUTE:
//fgNonDvdCOMMuteKey();
break;
/*This keys are processed in main keyproc!*/
case IR_POWER:
//_bBBKSysState = SYS_STATE_POWERDOWN;
vBBKTunerExit();
//fgSetPlayPostKey(IR_POWER);
break;
#ifdef BBK_RD2_RDS
case IR_SETUP:
vRDSDispDeal();
break;
#endif
#ifdef TIME_SLEEP_FUCTION
case IR_AMP_SLEEP:
vVfdClearAll();
fgTunerSleepKey();
break;
#endif
case IR_AMP_FUN_DVD:
vBBKDvdEnter();
break;
case IR_AMP_FUN:
_bIRKey=IR_AMP_FUN_AUX;
// case IR_AMP_FUN_DVD:
case IR_AMP_FUN_OPTICAL:
case IR_AMP_FUN_COAXIAL:
//case IR_AMP_FUN_AUX:
case IR_FUNCTION:
case IR_CAPTURE:
vBBKTunerExit();
break;
/*case IR_AMP_FUN:
case IR_AMP_FUN_AUDIO:
#ifdef RDS_USE_BU1924
MDisableTimer1();
#endif
fgAmpFunAudioKey();
break;
case IR_AMP_FUN_MMUI:
fgAmpFunUsbKey();
break;*/
case IR_AMP_CHANNEL_LEFT:
fgAmpChannelLeftKey();
break;
case IR_AMP_CHANNEL_RIGHT:
fgAmpChannelRightKey();
break;
case IR_AMP_CHANNEL_UP:
fgAmpChannelUpKey();
break;
case IR_AMP_CHANNEL_DN:
fgAmpChannelDnKey();
break;
case IR_AMP_BASS_UP:
fgAmpBassUpKey();
break;
case IR_AMP_BASS_DN:
fgAmpBassDnKey();
break;
case IR_AMP_TREBLE_UP:
fgAmpTrebleUpKey();
break;
case IR_AMP_TRENLE_DN:
fgAmpTrebleDnKey();
break;
case IR_AMP_BASS_BOOST:
fgAmpBassBoostKey();
break;
#ifdef TUNER_SHOWVOLUME
case IR_VOLUME_DOWN:
//fgCOMVolumeDownKey();
vVolKey(0XF0);
break;
case IR_VOLUME_UP:
// fgCOMVolumeUpKey();
vVolKey(0X0F);
break;
case IR_MUTE:
vMuteKey();
break;
#else
case IR_VOLUME_UP:
//bSetMic(NULL_POSITION, 1);
fgCOMVolumeUpKey();
break;
case IR_VOLUME_DOWN:
fgCOMVolumeDownKey();
// bSetMic(NULL_POSITION, 0);
break;
case IR_MUTE:
fgNonDvdMuteKey();
break;
#endif
default:
bRet = 0;//RET_FAILURE;
break;
}
return(bRet);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
static void vBBKTunerModeKey(void) large
{
switch(_eTunerMode)
{
case TUNER_MODE_INIT:
_bIRKey = IR_NONE;
break;
case TUNER_MODE_NORMAL:
switch(_bProcess)
{
case RUN_NOTHING:
break;
default:
switch(_bIRKey)
{
case IR_AMP_MUTE:
#ifdef TIME_SLEEP_FUCTION
case IR_AMP_SLEEP:
#endif
case IR_AMP_CHANNEL_LEFT:
case IR_AMP_CHANNEL_RIGHT:
case IR_AMP_CHANNEL_UP:
case IR_AMP_CHANNEL_DN:
case IR_AMP_BASS_UP:
case IR_AMP_BASS_DN:
case IR_AMP_TREBLE_UP:
case IR_AMP_TRENLE_DN:
case IR_AMP_BASS_BOOST:
_bIRKey=IR_NONE;
break;
default:
break;
}
}
}
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void eeprom_save_am(BYTE bChannel) large
{
WORD bAddress;
bAddress = TUNER_AM_STATION1 + (bChannel - 1);
fgEepromWriteByte(bAddress,_bAmFreq);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void eeprom_clear_am(BYTE bChannel) large
{
WORD bAddress;
bAddress = TUNER_AM_STATION1 + (bChannel - 1);
fgEepromWriteByte(bAddress,0xff);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
BYTE eeprom_call_am(BYTE bChannel) large
{
WORD bAddress;
WORD wFreqBuf;
bAddress = TUNER_AM_STATION1 + (bChannel - 1);
wFreqBuf = (WORD)(bEepromReadByte(bAddress));
if((wFreqBuf>MAX_AMFREQ9K)&&(_fgStep9K10K==STEP_9K))
{
wFreqBuf=0;
}
else if((wFreqBuf>MAX_AMFREQ10K)&&(_fgStep9K10K==STEP_10K))
{
wFreqBuf=0;
}
if(((_fgStep9K10K==STEP_9K) &&(wFreqBuf<=MAX_AMFREQ9K))||(wFreqBuf<=MAX_AMFREQ10K))
{
_bAmFreq=wFreqBuf;
_fgRunTuner=ON;
return(1);
}
return(0);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void eeprom_save_fm(BYTE bChannel) large
{
WORD bAddress;
bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
fgEepromWriteByte(bAddress+1, bHiByte(_bFmFreq));
fgEepromWriteByte(bAddress, bLoByte(_bFmFreq));
//fgEepromWriteByte(bAddress, bHiByte(_bFmFreq));
//fgEepromWriteByte(bAddress+1, bLoByte(_bFmFreq));
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
WORD eeprom_call_fm(BYTE bChannel) large
{
WORD bAddress;
WORD wFreqBuf;
union
{
WORD wWord;
BYTE bByte[2];
}uChannel;
bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
uChannel.bByte[0] = bEepromReadByte(bAddress);
uChannel.bByte[1] = bEepromReadByte(bAddress+1);
//wFreqBuf = uChannel.wWord;
wFreqBuf = (uChannel.bByte[1]<<8)+uChannel.bByte[0];
if(wFreqBuf>MAX_FMFREQ)
{
wFreqBuf=0;
}
if(wFreqBuf<=MAX_FMFREQ)
{
_bFmFreq=wFreqBuf;
_fgRunTuner=ON;
return(1);
}
return(0);
}
/***************************************************************************************
Function :
Description :
Parameter :
Return :
***************************************************************************************/
void eeprom_clear_fm(BYTE bChannel) large
{
WORD bAddress;
bAddress = TUNER_FM_STATION1 + (bChannel - 1) * 2;
fgEepromWriteByte(bAddress, 0xff);
fgEepromWriteByte(bAddress+1, 0xff);
}
/***************************************************************************************
Function :
Description :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -