Files
99_7018_lmx/cpu/br28/audio_hearing/audio_hearing_aid.h
2025-10-29 13:10:02 +08:00

128 lines
5.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _AUD_HEARING_AID_H_
#define _AUD_HEARING_AID_H_
#include "generic/typedef.h"
#include "board_config.h"
/*************************************************************************
* 可选功能模块配置(Optinal Module Define)
************************************************************************/
#define DHA_DATA_EXPORT_ENABLE 0 //数据导出使能, 需要先开APP_PCM_DEBUG
#define DHA_RUN_TIME_TRACE_ENABLE 0 //运行时间log跟踪
#define DHA_RUN_TIME_IO_DEBUG_ENABLE 0 //运行时间IO跟踪
#ifdef DHA_RUN_TIME_IO_DEBUG_ENABLE
#define IO_IDX 7
#define IO_INTERVAL_IDX 4 /*DHA节奏唤醒间隔*/
#define DHA_IO_DEBUG_INIT() JL_PORTA->DIR &= ~BIT(IO_IDX)
#define DHA_IO_DEBUG_1() JL_PORTA->OUT |= BIT(IO_IDX)
#define DHA_IO_DEBUG_0() JL_PORTA->OUT &= ~BIT(IO_IDX)
#define DHA_IO_INTERVAL() {JL_PORTA->DIR &= ~BIT(IO_INTERVAL_IDX);JL_PORTA->OUT ^= BIT(IO_INTERVAL_IDX);}
#else
#define DHA_IO_DEBUG_INIT(...)
#define DHA_IO_DEBUG_1(...)
#define DHA_IO_DEBUG_0(...)
#define DHA_IO_INTERVAL(...)
#endif/*DHA_RUN_TIME_IO_DEBUG_ENABLE*/
/*************************************************************************
* 可选功能模块配置(Optinal Module Define)
************************************************************************/
#define DHA_AND_MEDIA_MUTEX_ENABLE 1 //辅听功能和多媒体播放互斥
#define DHA_SRC_USE_HW_ENABLE 0 //SRC选择1:使用硬件SRC0:使用软件SRC
#define DHA_MIC_DATA_CBUF_ENABLE 0 //是否使用cbuf缓存mic的数据
#define DHA_DAC_OUTPUT_ENHANCE_ENABLE 0 //DAC输出音量增强使能用来提高辅听的动态范围
#define DHA_TDE_ENABLE 0 //辅听信号延时估计
#define DHA_IN_LOUDNESS_TRACE_ENABLE 0 //跟踪获取当前mic输入幅值
#define DHA_OUT_LOUDNESS_TRACE_ENABLE 0 //跟踪获取算法输出幅值
#define DHA_USE_WDRC_ENABLE 1 //DRC选择1:使用WDRC0:使用普通限幅器DRC
/*************************************************************************
* 验配功能定义(DHA Fitting Define)
************************************************************************/
/*听力验配版本号*/
#define DHA_FITTING_VERSION 0x01
/*验配通道数*/
#define DHA_FITTING_CHANNEL_MAX 6
/*通道频率*/
#define DHA_CH0_FREQ 250
#define DHA_CH1_FREQ 500
#define DHA_CH2_FREQ 1000
#define DHA_CH3_FREQ 2000
#define DHA_CH4_FREQ 4000
#define DHA_CH5_FREQ 6000
/*
* 1. PayLoad Format
* +---------+---------------+------+
* |cmd[8bit]|data_len[16bit]| data |
* +---------+---------------+------+
* 2.DHA Fitting Commands
*/
/*(1)验配信息交互:版本、通道数、通道频率*/
#define DHA_FITTING_CMD_INFO 0x50
typedef struct {
u8 version; /*版本号DHA_FITTING_VERSION*/
u8 ch_num; /*通道数DHA_FITTING_CHANNEL_MAX*/
u16 ch_freq[DHA_FITTING_CHANNEL_MAX]; /*通道频率组获取通道对应的freq*/
} dha_fitting_info_t;
/*(2)通道验配*/
#define DHA_FITTING_CMD_ADJUST 0x51
typedef struct {
u8 channel: 1; /*左右声道标识:0=左声道 1=右声道*/
u8 sine: 2; /*开关验配单频音的标志: BIT(0) = 1 左耳播单频音BIT(0) = 0 左耳静音
BIT(1) = 1 右耳播单频音BIT(1) = 0 右耳静音*/
u8 reserve0: 5; /*保留*/
u8 reserve1; /*保留*/
u16 freq; /*通道频率*/
float gain; /*通道增益*/
} dha_fitting_adjust_t;
/*(3)验配结果保存更新*/
/*
+---------+------------+--------------------+-------------+---------------+
|cmd[8bit]|len[16bit] | type(8bit)左/右/双耳|N个左耳[float]| N个右耳[float] |
+---------+------------+--------------------+-------------+---------------+
type(8bit) 0:左耳数据1:右耳数据2:双耳数据
*/
#define DHA_FITTING_CMD_UPDATE 0x52
/*(4)左右耳打开辅听的状态*/
#define DHA_FITTING_CMD_STATE 0x53
typedef struct {
u8 state_left: 1;
u8 state_right: 1;
u8 reserve: 6;
} dha_fitting_state_t;
/*************************************************************************
* 辅听耳机接口声明(DHA APIs Declaration)
************************************************************************/
int audio_hearing_aid_open(void);
int audio_hearing_aid_close(void);
void audio_hearing_aid_demo(void);
void audio_hearing_aid_resume(void);
void audio_hearing_aid_suspend(void);
int hearing_aid_fitting_parse(u8 *data, u16 len);
int hearing_aid_fitting_start(u8 en);
int get_hearing_aid_fitting_info(u8 *data);
u8 get_hearing_aid_state(void);
u8 get_hearing_aid_fitting_state(void);
u8 set_hearing_aid_fitting_state(u8 state);
void audio_dha_fitting_sync_close(void);
int get_hearing_aid_state_cmd_info(u8 *data);
/*************************************************************************
* 其他引用(Other Reference)
************************************************************************/
extern int aec_uart_open(u8 nch, u16 single_size);
extern int aec_uart_fill(u8 ch, void *buf, u16 size);
extern void aec_uart_write(void);
extern int aec_uart_close(void);
#endif/*_AUD_HEARING_AID_H_*/