#ifndef _APP_AUDIO_H_ #define _APP_AUDIO_H_ #include "generic/typedef.h" #include "audio_dvol.h" #include "app_config.h" #include "audio_config_def.h" #include "asm/audio_adc.h" extern struct audio_dac_hdl dac_hdl; extern struct audio_adc_hdl adc_hdl; struct adc_platform_cfg { u8 mic_mode; // MIC工作模式 u8 mic_ain_sel; // 0/1/2 u8 mic_bias_sel; // A(PA0)/B(PA1)/C(PC10)/D(PA5) u8 mic_bias_rsel; // 单端隔直电容mic bias rsel u8 mic_dcc; // DCC level u16 power_io; // MIC供电IO }; struct adc_file_param { u8 mic_gain; // MIC增益 u8 mic_pre_gain; // MIC前级增益 0:0dB 1:6dB } __attribute__((packed)); //MIC电源控制 typedef enum { MIC_PWR_INIT = 1, /*开机状态*/ MIC_PWR_ON, /*工作状态*/ MIC_PWR_OFF, /*空闲状态*/ MIC_PWR_DOWN, /*低功耗状态*/ } audio_mic_pwr_t; static const char *audio_vol_str[] = { "Vol_BtmMusic", "Vol_BtcCall", "Vol_LinMusic", "Vol_FileMusic", "Vol_FmMusic", "Vol_SpdMusic", "Vol_USBMusic", "Vol_SysTone", "Vol_SysKTone", "NULL", }; //音量名称index typedef enum { AppVol_BT_MUSIC = 0, AppVol_BT_CALL, AppVol_LINEIN, AppVol_MUSIC, AppVol_FM, AppVol_SPDIF, AppVol_USB, SysVol_TONE, SysVol_KEY_TONE, Vol_NULL, } audio_vol_index_t; /* ********************************************************************* * Audio Volume Get * Description: 音量获取 * Arguments : state 要获取音量值的音量状态 * Return : 返回指定状态对应得音量值 * Note(s) : None. ********************************************************************* */ s16 app_audio_get_volume(u8 state); /* ********************************************************************* * Audio Mute Get * Description: mute状态获取 * Arguments : state 要获取是否mute的音量状态 * Return : 返回指定状态对应的mute状态 * Note(s) : None. ********************************************************************* */ u8 app_audio_get_mute_state(u8 state); /* ********************************************************************* * Audio Mute Set * Description: mute状态设置 * Arguments : state 要设置是否mute的音量状态 * mute_en 是否使能静音, 0:不使能,1:使能 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_set_mute_state(u8 state, u8 mute_en); /* ********************************************************************* * Audio Volume Set * Description: 音量设置 * Arguments : state 目标声音通道 * volume 目标音量值 * fade 是否淡入淡出 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_set_volume(u8 state, s16 volume, u8 fade); /* ********************************************************************* * Audio Volume Set * Description: 改变音量状态保存值 * Arguments : state 目标声音通道 * volume 目标音量值 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_change_volume(u8 state, s16 volume); /* ********************************************************************* * Audio Volume Up * Description: 增加当前音量通道的音量 * Arguments : value 要增加的音量值 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_volume_up(u8 value); /* ********************************************************************* * Audio Volume Down * Description: 减少当前音量通道的音量 * Arguments : value 要减少的音量值 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_volume_down(u8 value); /* ********************************************************************* * Audio State Switch * Description: 切换声音状态 * Arguments : state * max_volume * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_state_switch(u8 state, s16 max_volume, dvol_handle *dvol_hdl); /* ********************************************************************* * Audio State Exit * Description: 退出当前的声音状态 * Arguments : state 要退出的声音状态 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_state_exit(u8 state); /* ********************************************************************* * Audio State Get * Description: 获取当前声音状态 * Arguments : None. * Return : 返回当前的声音状态 * Note(s) : None. ********************************************************************* */ u8 app_audio_get_state(void); void app_audio_mute(u8 value); u8 app_audio_get_dac_digital_mute(); //获取DAC 是否mute /* ********************************************************************* * Audio Volume_Max Get * Description: 获取当前声音通道的最大音量 * Arguments : None. * Return : 返回当前的声音通道最大音量 * Note(s) : None. ********************************************************************* */ s16 app_audio_get_max_volume(void); /* ********************************************************************* * Audio Set Max Volume * Description: 设置最大音量 * Arguments : state 要设置最大音量的声音状态 * max_volume 最大音量 * Return : None. * Note(s) : None. ********************************************************************* */ void app_audio_set_max_volume(u8 state, s16 max_volume); u8 app_audio_bt_volume_update(u8 *btaddr, u8 state); void app_audio_bt_volume_save(u8 state); int audio_digital_vol_default_init(void); void volume_up_down_direct(s16 value); void audio_combined_vol_init(u8 cfg_en); void audio_volume_list_init(u8 cfg_en); void dac_power_on(void); void dac_power_off(void); void mic_capless_trim_init(int update); void mic_capless_trim_run(void); /*打印audio模块的数字模拟增益:DAC/ADC*/ void audio_config_dump(); void audio_adda_dump(void); //打印所有的dac,adc寄存器 //MIC静音标志获取 u8 audio_common_mic_mute_en_get(void); //MIC静音设置接口 void audio_common_mic_mute_en_set(u8 mute_en); void app_audio_set_volume_def_state(u8 volume_def_state); /* ********************************************************************* * audio_dac_volume_enhancement_mode_set * Description: DAC 音量增强模式切换 * Arguments : mode 1:音量增强模式 0:普通模式 * Return : NULL * Note(s) : None. ********************************************************************* */ void app_audio_dac_vol_mode_set(u8 mode); /* ********************************************************************* * app_audio_dac_vol_mode_get * Description: DAC 音量增强模式状态获取 * Arguments : None. * Return : 1:音量增强模式 0:普通模式 * Note(s) : None. ********************************************************************* */ u8 app_audio_dac_vol_mode_get(void); /* ********************************************************************* * audio_mic_pwr_ctl * Description: MIC电源普通IO供电管理 * Arguments : None. * Return : state MIC电源状态 * Note(s) : None. ********************************************************************* */ void audio_mic_pwr_ctl(audio_mic_pwr_t state); /* ********************************************************************* * app_audio_volume_max_query * Description: 音量最大值查询 * Arguments : 目标音量index. * Return : 目标音量最大值 * Note(s) : None. ********************************************************************* */ s16 app_audio_volume_max_query(audio_vol_index_t index); /********************************************************************* * Audio Volume MUTE * Description: 将数据静音或者解开静音 * Arguments : mute_en 是否使能静音, 0:不使能,1:使能 * Return : None. * Note(s) : None. ********************************************************************* */ void audio_app_mute_en(u8 mute_en); void dac_node_write_callback_add(const char *name, u8 scene, void (*cb)(void *, int)); void dac_node_write_callback_del(const char *name); void audio_adc_param_fill(struct mic_open_param *mic_param, struct adc_platform_cfg *platform_cfg); void audio_linein_param_fill(struct linein_open_param *linein_param, const struct adc_platform_cfg *platform_cfg); void audio_fast_mode_test(); #endif/*_APP_AUDIO_H_*/