⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amp_gui.c

📁 amp_gui for 8202r source(modified)
💻 C
📖 第 1 页 / 共 3 页
字号:
				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 + -