📄 amp_gui.c
字号:
if(amp_tone_mode>=TONE_MAX)
{
current_channel = VOL_CH_BASS; //for bass Mode
amp_tone_mode = TONE_BASS;
}
else
current_channel = VOL_CH_TREBEL; //for treble Mode
show_channel_msg();
}
}
break;
}
if(amp_tone_mode == TONE_EQ || amp_tone_mode == TONE_IDLE)
return 0;
else
return 1;
}
#endif//#ifdef OP_TREBLE_BASS_OPER_INTERFACE
void init_amp(void)
{
#ifdef PT2258
init_pt2258();
#endif
#ifdef TLV320_DAC //chenzhao20060118
init_tlv320();
#endif
#ifdef TAS_5026_PWM
init_tas_5026();
#elif defined(TAS_5508_PWM)
init_tas_5508();
#elif defined(SUPPORT_APOGEE_AMP)
//disable external amplifier
ddx_disableEPAD();
//mute all channels
ddx_masterMute(1);
ddx_initialization();
ddx_masterMute(0);
ddx_enableEPAD();
#endif
#ifdef DOLBY_AMP_VOLUME_CTRL
init_subvol();
#endif
#ifdef AMP_SUPPORT_EQ
init_amp_eq();
#endif
#ifdef SUPPORT_EX_BASS_FUNC//chenzhao20060117
init_amp_exbass();
#endif
}
#ifdef SUPPORT_AMP_HEADPHONE//chenzhao 20060116
extern inline int AUDIF_Set_OutputMode(UINT8 outmode, UINT16 outparam);
extern void rom_ext_select_headphone(void);
void amp_enable_headphone(void)
{
if((cd_type_loaded==CDDVD)||(cd_subtype==CD_DTS))
AUDIF_Set_OutputMode(OUT_51DownmixL0R0,0); //downmix 5.1ch to FL FR channel hongfeng 2005-08-01
#ifdef SUPPORT_APOGEE_AMP
ddx_enable_headphone();
#endif
#ifdef TAS_5508_PWM
#ifdef USE_ROM_EXT_DET_HEADPHONE
//rom_ext_select_headphone();
tas_5508_enable_headphone();
#endif //USE_ROM_EXT_DET_HEADPHONE
#endif
}
void amp_disable_headphone(void)
{
if((cd_type_loaded==CDDVD)||(cd_subtype==CD_DTS))
AUDIF_Set_OutputMode(OUT_51Channel,0); //output 5.1ch hongfeng 2005-08-01
#ifdef SUPPORT_APOGEE_AMP
ddx_disable_headphone();
#endif
#ifdef TAS_5508_PWM
#ifdef USE_ROM_EXT_DET_HEADPHONE
//rom_ext_select_headphone();
tas_5508_disable_headphone();
#endif //USE_ROM_EXT_DET_HEADPHONE
#endif
}
#endif//#ifdef SUPPORT_HEADPHONE
//--------------------------------------------------------
//For Speaker Test Mapping Speaker in Amplifer
// chenzhao 20060116
//--------------------------------------------------------
#ifdef SUPPORT_TESTSPK
inline void amp_testspk_ch(BYTE ch)
{
#if defined(TAS_5508_PWM) || defined(TAS_5086_PWM)
{
if(ch>=4)
#ifdef TESTSPK_3CHANNEL //for dav6008 2.1 channel use hongfeng modify 2005-10-24
ch=ch-3;//kingslon add for 6008 pink noise
#else
ch=ch+2;
#endif
#ifdef USE_TAS_5508_MUTE_REG
tas_5508_mute((BYTE)(~(0x1<<ch))&0xcf);
#else
#if defined(TAS_5508_PWM)
tas_5508_mute_inputmixer(ch);
#elif defined(TAS_5086_PWM)
tas_5086_mute_inputmixer(ch);
#endif
#endif
}
#elif defined(SUPPORT_DDX8001)
ddx_test_spk(ch);
#endif
}
void amp_testspk_restore_ch(void)
{
#ifdef TAS_5508_PWM
init_tas_5508_input_mixer();
#elif defined(TAS_5086_PWM)
init_tas_5086_input_mixer();
#endif
}
#ifdef TESTSPK_CONTROL_VOL
void set_subvol_vol(BYTE channel,INT16 change)
{
if((channel_vol_offset[channel]+change>=0)&&(channel_vol_offset[channel]+change<=CH_VOL_MAX))
(channel_vol_offset[channel])+=change;
volum_list[channel+1] =GET_ABSOLUTE_VALUE(channel+1);
subvol_channel_volume(channel+1, volum_list[channel+1]);
#ifdef SAVE_AMP_VOLUME
save_amp_variable(channel+1);
#endif
}
inline INT16 get_subvol_vol(BYTE channel)
{
return (channel_vol_offset[channel]-CH_VOL_MAX/2);
}
#endif//#ifdef TESTSPK_CONTROL_VOL
#endif//#ifdef SUPPORT_TESTSPK
#ifdef SUPPORT_EX_BASS_FUNC//chenzhao 20060117
//================================================================
// subwoofer db | soft bass | balance bass | powerful bass |
//================================================================
// + 10 db | -- | +04 db | + 08 db |
// + 09 db | -- | +04 db | + 09 db |
// + 08 db | -- | +05 db | + 10 db |
// + 07 db | -- | +05 db | + 11 db |
// + 06 db | -- | +06 db | + 12 db |
// + 05 db | -- | +06 db | + 13 db |
// + 04 db | -- | +07 db | + 14 db |
// + 03 db | -- | +07 db | + 15 db |
// + 02 db | -- | +08 db | + 16 db |
// + 01 db | -- | +08 db | + 17 db |
// 00 ~ -10 db | -- | +09 db | + 18 db |
//================================================================
//comment: -- no change db |
//================================================================
BYTE sub_volue_tab[10]={8,8,7,7,6,6,5,5,4,4};
EXBASS_TYPE amp_exbass_mode;
BYTE GetExBassVolume(void)
{
BYTE sub_vloume=0,i;
if(amp_exbass_mode == EXBASS_SOFT)
sub_vloume = 0; //0db
else if(amp_exbass_mode == EXBASS_BALANCE)
{
if(GET_ABSOLUTE_VALUE(VOL_CH_SUB)<=MAIN_VOL_MAX) //subwoofer 0 db
{
#ifdef ORITRON_RECEIVER_6008
sub_vloume = 4; //+9db
#elif defined(ORITRON_RECEIVER_6505)
sub_vloume = 9; //+9db
#else
sub_vloume = 7; //+9db
#endif
}
else
{
i = (GET_ABSOLUTE_VALUE(VOL_CH_SUB)-MAIN_VOL_MAX);
if(i>=1 && i<=10)
sub_vloume = sub_volue_tab[i-1];
return sub_vloume; //+4db
}
}
else if(amp_exbass_mode == EXBASS_POWERFUL)
{
if(GET_ABSOLUTE_VALUE(VOL_CH_SUB)<=MAIN_VOL_MAX)
{
#ifdef ORITRON_RECEIVER_6008
sub_vloume = 8; //+18db
#elif defined(ORITRON_RECEIVER_6505)
sub_vloume = 18; //+18db
#else
sub_vloume = 14; //+18db
#endif
}
else
{
#if defined(ORITRON_RECEIVER_6505)
sub_vloume = (18 - (GET_ABSOLUTE_VALUE(VOL_CH_SUB)-MAIN_VOL_MAX));
#else
sub_vloume = (14 - (GET_ABSOLUTE_VALUE(VOL_CH_SUB)-MAIN_VOL_MAX));
#endif
}
}
//printf("GetExBassVolume %d,VOL_CH_SUB %d\n",sub_vloume,GET_ABSOLUTE_VALUE(VOL_CH_SUB));
return sub_vloume;
}
#ifdef SAVE_EX_BASS_MODE//chenzhao20060220
void reset_amp_exbass(void)
{
amp_exbass_mode = DEFAULT_EXBASS_MODE; //EXBASS_SOFT;
BYTE data=(BYTE)amp_exbass_mode;
WriteToI2c(I2C_ID_MEMORY, ADDR_EX_BASS_MODE,&data, 1);
}
#endif
void init_amp_exbass(void)
{
#ifdef SAVE_EX_BASS_MODE//chenzhao20060220
BYTE data;
if(ReadFromI2c(I2C_ID_MEMORY, ADDR_EX_BASS_MODE,&data, 1)>0)
amp_exbass_mode = data;
else
reset_amp_exbass();
#else
amp_exbass_mode = EXBASS_SOFT;
#endif
subvol_channel_volume(VOL_CH_SUB, volum_list[VOL_CH_SUB]);
}
#if defined(SUPPORT_TWO_MODE_EXBASS) //hongfeng add 2005-10-24
const char *amp_exbass_str[EXBASS_MAX]={"BASS ON","","BASS OFF",};
#elif defined(SUPPORT_THERE_MODE_EXBASS)
char *amp_exbass_str[EXBASS_MAX]={"SOFT BASS","BALANCE BASS","POWERFUL BASS",};
#else
#error should select a exbass mode.
#endif
void amp_toggle_ExBass(void)
{
if(action_click)
#ifdef I2C_MASS_DATA_POLLING_WRITE
if(NULL == p_i2c_mass_data)
#endif
{
#if defined(SUPPORT_TWO_MODE_EXBASS) //hongfeng add 2005-10-24
if(EXBASS_SOFT==amp_exbass_mode)
amp_exbass_mode = EXBASS_POWERFUL;
else
amp_exbass_mode = EXBASS_SOFT;
#elif defined(SUPPORT_THERE_MODE_EXBASS)
amp_exbass_mode ++;
if(amp_exbass_mode>=EXBASS_MAX)
amp_exbass_mode = EXBASS_SOFT;
#else
#error should select a exbass mode.
#endif
subvol_channel_volume(VOL_CH_SUB, volum_list[VOL_CH_SUB]);
#ifdef AUDIO_EFFECT_MUTE
set_audio_effect_mute_time(AUDIO_EFFECT_MUTE_TIME);
sub_masterMute(AMP_MUTE);
#endif
#ifdef SAVE_EX_BASS_MODE//chenzhao20060220
BYTE data=(BYTE)amp_exbass_mode;
WriteToI2c(I2C_ID_MEMORY, ADDR_EX_BASS_MODE,&data, 1);
#endif
}
show_exbass_msg();
#ifdef SUPPORT_VFD_SHOW_EXBASS
set_vfd_message_state(VFD_MESSAGE_EXBASS,SUBVOL_TIME_OUT);
#endif
}
void show_exbass_msg(void)
{
psprintf(RegionValStr[REGION1], amp_exbass_str[amp_exbass_mode]);
PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
}
#endif
//******************************************************
//wuzhj 2004/12/10
//for Radio new UI vol control
// Radio_vol_up();Radio_vol_down();Radio_main_vol()
//******************************************************
#ifdef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
void Radio_vol_up()
{
BYTE ch;
if(current_channel == 0) //main vol
{
/*check if reach max,according to DOLBY's spec*/
for(ch = 0;ch <7;ch ++)
{
if (volum_list[ch]>=(MAIN_VOL_MAX-1))
{
return;
}
}
volum_list[0] ++;
subvol_main_vol();
psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
//PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
//osd_DrawString(18+8, 2-2, RegionValStr[REGION1], 2, 11);
}
else//channel vol
{
subvol_time_out = SUBVOL_TIME_OUT;
volum_list[current_channel] = GET_ABSOLUTE_VALUE(current_channel);
if(volum_list[current_channel]>=(MAIN_VOL_MAX-1))
{
return;
}
if((channel_vol_offset[current_channel-1])<CH_VOL_MAX)
(channel_vol_offset[current_channel-1])++;
subvol_channel_volume(current_channel, volum_list[current_channel]);
show_channel_msg();
//PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
}
#ifdef SAVE_AMP_VOLUME
save_amp_variable(current_channel);
#endif
}
void Radio_vol_down()
{
if(current_channel == 0) //main vol
{
if(volum_list[0]>0)
volum_list[0] --;
subvol_main_vol();
psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
//PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
}
else//channel vol
{
subvol_time_out = SUBVOL_TIME_OUT;
volum_list[current_channel] =GET_ABSOLUTE_VALUE(current_channel);
if(volum_list[current_channel]==0)
{
return;
}
if((channel_vol_offset[current_channel-1])>0)
(channel_vol_offset[current_channel-1])--;
subvol_channel_volume(current_channel, volum_list[current_channel]);
show_channel_msg();
PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
}
#ifdef SAVE_AMP_VOLUME
save_amp_variable(current_channel);
#endif
}
void Radio_main_vol()
{
BYTE ch;
for(ch = 1;ch<7;ch++)
{
volum_list[ch]=GET_ABSOLUTE_VALUE(ch);
//huziqin 2004-5-10 avoid volume turn to 255
if(volum_list[ch]>(255-CH_VOL_MAX))
{
volum_list[ch] = 0;
break;
}
if(volum_list[0] == 0) //if main vol ==0,all channel set to zero
subvol_channel_volume(ch,0);
else
subvol_channel_volume(ch,volum_list[ch]);
}
psprintf(RegionValStr[REGION1], " MAIN %d",volum_list[0]);
}
#endif//#ifdef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
#endif //defined(TDA7448)||defined(PT2258)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -