Files
soc-codegen-template/apps/common/icsd/adt/icsd_adt_client_board.c
T
2026-08-19 16:05:36 +08:00

297 lines
10 KiB
C

#if ADT_CLIENT_BOARD == HT03_HYBRID_6G
const u8 ADT_TWS_MODE = 1;
//const u8 ADT_DET_VER = 2;
//const u8 ADT_PATH_CONFIG = 0;
const u8 ADT_DET_VER = 4;
const u8 ADT_PATH_CONFIG = ADT_PATH_DAC_SRC_EN;
const u8 ADT_EIN_VER = ADT_EIN_TWS_V0;
const float ref_gain_sel = 3;
const float err_gain_sel = 3;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 100;
const float wat_pn_gain = 1;
const float wat_bypass_gain = 16;
const float wat_anc_gain = 1;
const u8 final_speech_even_thr = 4;
const float wdac_senc = 1;
const float wdac[8] = {1, 1, 0.92, 0.80, 0.67, 0.62, 0.7, 0.7};//播放一笑江湖DJ /100
const float wref[8] = {6.78, 3.66, 0.58, 0.37, 0.31, 0.29, 0.28, 0.27};//播放外部噪声
const float wref_tran[8] = {1.26, 1.06, 1.06, 1.00, 1.00, 1.18, 1.16, 1.03 };
const float wref_ancs[8] = {2.06, 2.00, 0.011, 0.006, 0.009, 0.012, 0.014, 0.018 };
const float fdac[8] = {0.18, 0.051, 0.02, 0.02, 0.02, 0.02, 0.02, 0.05};//播放一笑江湖DJ /1000
u8 icsd_get_ang_flag(float *_target_angle)
{
u8 af1 = _target_angle[1] > 15 || _target_angle[1] < -130;
u8 af2 = _target_angle[2] > 15 || _target_angle[2] < -130;
u8 af3 = _target_angle[3] > 15 || _target_angle[3] < -130;
u8 ang_flag = af1 && af2 && af3;
return ang_flag;
}
#elif ADT_CLIENT_BOARD == G96_HYBRID
const u8 ADT_TWS_MODE = 1;
//const u8 ADT_DET_VER = 5;
//const u8 ADT_PATH_CONFIG = 0;
const u8 ADT_DET_VER = 4;
const u8 ADT_PATH_CONFIG = ADT_PATH_DAC_SRC_EN;
const u8 ADT_EIN_VER = ADT_EIN_TWS_V0;
const float ref_gain_sel = 4;
const float err_gain_sel = 1;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 135;
const float wat_pn_gain = 2.4;
const float wat_bypass_gain = 16;
const float wat_anc_gain = 2.5;
const u8 final_speech_even_thr = 4;
const float wdac_senc = 1;
const float wdac[8] = {2.98, 2.29, 1.94, 1.95, 1.76, 1.54, 1.44, 1.29};
const float wref[8] = {6.76, 1.98, 1.57, 1.50, 1.41, 1.32, 1.16, 1.02};
const float wref_tran[8] = {4.26, 2.36, 2.36, 2.79, 3.00, 3.18, 3.16, 3.03 };
const float wref_ancs[8] = {2.06, 2.00, 0.11, 0.06, 0.09, 0.12, 0.14, 0.18 };
const float fdac[8] = {0.008, 0.008, 0.008, 0.008, 0.01, 0.01, 0.01, 0.01};
u8 icsd_get_ang_flag(float *_target_angle)
{
u8 af1 = _target_angle[4] < 15 && _target_angle[4] > -150;
u8 af2 = _target_angle[2] < 15 && _target_angle[2] > -150;
u8 af3 = _target_angle[3] < 15 && _target_angle[3] > -150;
u8 ang_flag = af1 && af2 && af3;
return ang_flag;
}
#elif ADT_CLIENT_BOARD == G97_HYBRID
const u8 ADT_TWS_MODE = 1;
const u8 ADT_DET_VER = 3;
const u8 ADT_PATH_CONFIG = 0;
//const u8 ADT_DET_VER = 4;
//const u8 ADT_PATH_CONFIG = ADT_PATH_DAC_SRC_EN;
const u8 ADT_EIN_VER = ADT_EIN_UNSUPPORT;
const float ref_gain_sel = 2;
const float err_gain_sel = 1;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 135;
const float wat_pn_gain = 2.88;
const float wat_bypass_gain = 19.2;
const float wat_anc_gain = 3;
const u8 final_speech_even_thr = 4;
const float wdac_senc = 1;
const float wdac[8] = {10.43, 4.85, 1.36, 1.09, 0.87, 0.71, 0.63, 0.59};
const float wref[8] = {7.31, 1.90, 0.43, 0.33, 0.28, 0.25, 0.22, 0.20};
const float wref_tran[8] = {8.23, 3.33, 1.72, 1.64, 1.48, 1.30, 1.12, 1.04};
const float wref_ancs[8] = {4.62, 1.32, 0.09, 0.06, 0.07, 0.10, 0.13, 0.15 };
const float fdac[8] = {0.18, 0.051, 0.02, 0.02, 0.02, 0.02, 0.02, 0.05};
u8 icsd_get_ang_flag(float *_target_angle)
{
u8 af1 = _target_angle[1] < -120 || _target_angle[1] > 20;
u8 af2 = _target_angle[2] < -120 || _target_angle[2] > 20;
u8 af3 = _target_angle[3] < -120 || _target_angle[3] > 20;
u8 ang_flag = af1 && af2 && af3;
printf("ang:%d %d %d af:%d %d %d\n", (int)_target_angle[1], (int)_target_angle[2], (int)_target_angle[3], af1, af2, af3);
return ang_flag;
}
#elif ADT_CLIENT_BOARD == H3_HYBRID
const u8 ADT_TWS_MODE = 0;
const u8 ADT_DET_VER = 1;
const u8 ADT_PATH_CONFIG = 0;
const u8 ADT_EIN_VER = ADT_EIN_HEADSET_V0;
const float ref_gain_sel = 3;
const float err_gain_sel = 3;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 135;
const float wat_pn_gain = 1;
const float wat_bypass_gain = 16;
const float wat_anc_gain = 1;
const u8 final_speech_even_thr = 4;
const float wdac_senc = 1;
const float wref[8] = {6.78, 3.66, 0.58, 0.37, 0.31, 0.29, 0.28, 0.27};
const float wdac[8] = {1, 1, 0.92, 0.80, 0.67, 0.62, 0.7, 0.7};
const float wref_tran[8] = {4.26, 2.36, 2.36, 2.79, 3.00, 3.18, 3.16, 3.03 };
const float wref_ancs[8] = {2.06, 2.00, 0.011, 0.006, 0.009, 0.012, 0.014, 0.018 };
const float fdac[8] = {0.18, 0.051, 0.02, 0.02, 0.02, 0.02, 0.02, 0.05};
#elif ADT_CLIENT_BOARD == ANC05_HYBRID
const u8 ADT_TWS_MODE = 0;
const u8 ADT_DET_VER = 1;
const u8 ADT_PATH_CONFIG = 0;
const u8 ADT_EIN_VER = ADT_EIN_UNSUPPORT;
const float ref_gain_sel = 3;
const float err_gain_sel = 3;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 135;
const float wat_pn_gain = 1;
const float wat_bypass_gain = 16;
const float wat_anc_gain = 1;
const u8 final_speech_even_thr = 4;
const float wdac_senc = 1;
const float wref[8] = {6.78, 3.66, 0.58, 0.37, 0.31, 0.29, 0.28, 0.27};
const float wdac[8] = {1, 1, 0.92, 0.80, 0.67, 0.62, 0.7, 0.7};
const float wref_tran[8] = {4.26, 2.36, 2.36, 2.79, 3.00, 3.18, 3.16, 3.03 };
const float wref_ancs[8] = {2.06, 2.00, 0.011, 0.006, 0.009, 0.012, 0.014, 0.018 };
const float fdac[8] = {0.18, 0.051, 0.02, 0.02, 0.02, 0.02, 0.02, 0.05};
#else
const float wdac_senc = 1;
const u8 ADT_TWS_MODE = 1;
const u8 ADT_DET_VER = 0;
const u8 ADT_PATH_CONFIG = 0;
const u8 ADT_EIN_VER = ADT_EIN_UNSUPPORT;
const float ref_gain_sel = 3;
const float err_gain_sel = 3;
u8 pnc_ref_pwr_thr = 160;
u8 pnc_err_pwr_thr = 100;
u8 tpc_ref_pwr_thr = 120;
u8 tpc_err_pwr_thr = 100;
u8 anc_ref_pwr_thr = 120;
u8 anc_err_pwr_thr = 135;
const float wat_pn_gain = 1;
const float wat_bypass_gain = 16;
const float wat_anc_gain = 1;
const u8 final_speech_even_thr = 4;
const float wref[8] = {6.78, 3.66, 0.58, 0.37, 0.31, 0.29, 0.28, 0.27};
const float wdac[8] = {1, 1, 0.92, 0.80, 0.67, 0.62, 0.7, 0.7};
const float wref_tran[8] = {4.26, 2.36, 2.36, 2.79, 3.00, 3.18, 3.16, 3.03 };
const float wref_ancs[8] = {2.06, 2.00, 0.011, 0.006, 0.009, 0.012, 0.014, 0.018 };
const float fdac[8] = {0.18, 0.051, 0.02, 0.02, 0.02, 0.02, 0.02, 0.05};
#endif
void icsd_adt_ein_parm_HT03(__icsd_adt_parm *_ADT_PARM)
{
_ADT_PARM->anc_in_pz_sum = -80;
_ADT_PARM->anc_out_pz_sum = 0;
_ADT_PARM->anc_in_sz_mean = 1;
_ADT_PARM->anc_out_sz_mean = -12;
_ADT_PARM->anc_in_fb_sum = 60;
_ADT_PARM->anc_out_fb_sum = 30;
_ADT_PARM->pnc_in_pz_sum = -80;
_ADT_PARM->pnc_out_pz_sum = 0;
_ADT_PARM->pnc_in_sz_mean = 1;
_ADT_PARM->pnc_out_sz_mean = -12;
_ADT_PARM->pnc_in_fb_sum = 60;
_ADT_PARM->pnc_out_fb_sum = 30;
_ADT_PARM->trans_in_pz_sum = 2;
_ADT_PARM->trans_out_pz_sum = 26;
_ADT_PARM->trans_in_sz_mean = 2;
_ADT_PARM->trans_out_sz_mean = -7;
_ADT_PARM->trans_in_fb_sum = 20;
_ADT_PARM->trans_out_fb_sum = -20;
}
void icsd_adt_ein_parm(__icsd_adt_parm *_ADT_PARM)
{
_ADT_PARM->anc_in_pz_sum = -80;
_ADT_PARM->anc_out_pz_sum = 0;
_ADT_PARM->anc_in_sz_mean = 1;
_ADT_PARM->anc_out_sz_mean = -12;
_ADT_PARM->anc_in_fb_sum = 60;
_ADT_PARM->anc_out_fb_sum = 30;
_ADT_PARM->pnc_in_pz_sum = -80;
_ADT_PARM->pnc_out_pz_sum = 0;
_ADT_PARM->pnc_in_sz_mean = 1;
_ADT_PARM->pnc_out_sz_mean = -12;
_ADT_PARM->pnc_in_fb_sum = 60;
_ADT_PARM->pnc_out_fb_sum = 30;
_ADT_PARM->trans_in_pz_sum = 2;
_ADT_PARM->trans_out_pz_sum = 26;
_ADT_PARM->trans_in_sz_mean = 2;
_ADT_PARM->trans_out_sz_mean = -7;
_ADT_PARM->trans_in_fb_sum = 20;
_ADT_PARM->trans_out_fb_sum = -20;
}
void icsd_adt_voice_board_data()
{
__icsd_adt_parm *ADT_PARM;
ADT_PARM = zalloc(sizeof(__icsd_adt_parm));
#if ADT_CLIENT_BOARD == HT03_HYBRID_6G
adt_printf("ADT HT03\n");
extern const float HT03_ADT_FLOAT_DATA[];
extern const float HT03_sz_out_data[28];
extern const float HT03_pz_out_data[28];
ADT_PARM->adt_float_data = (void *)HT03_ADT_FLOAT_DATA;
ADT_PARM->sz_inptr = (float *)HT03_sz_out_data;
ADT_PARM->pz_inptr = (float *)HT03_pz_out_data;
icsd_adt_ein_parm_HT03(ADT_PARM);
#elif ADT_CLIENT_BOARD == G96_HYBRID
adt_printf("ADT G96\n");
extern const float G96_ADT_FLOAT_DATA[];
extern const float G96_sz_out_data[28];
extern const float G96_pz_out_data[28];
ADT_PARM->adt_float_data = (void *)G96_ADT_FLOAT_DATA;
ADT_PARM->sz_inptr = (float *)G96_sz_out_data;
ADT_PARM->pz_inptr = (float *)G96_pz_out_data;
icsd_adt_ein_parm(ADT_PARM);
#elif ADT_CLIENT_BOARD == G97_HYBRID
adt_printf("ADT G97\n");
extern const float G97_ADT_FLOAT_DATA[];
extern const float G97_sz_out_data[28];
extern const float G97_pz_out_data[28];
ADT_PARM->adt_float_data = (void *)G97_ADT_FLOAT_DATA;
ADT_PARM->sz_inptr = (float *)G97_sz_out_data;
ADT_PARM->pz_inptr = (float *)G97_pz_out_data;
icsd_adt_ein_parm(ADT_PARM);
#elif ADT_CLIENT_BOARD == H3_HYBRID
adt_printf("ADT H3\n");
extern const float H3_ADT_FLOAT_DATA[];
extern const float H3_sz_out_data[28];
extern const float H3_pz_out_data[28];
ADT_PARM->adt_float_data = (void *)H3_ADT_FLOAT_DATA;
ADT_PARM->sz_inptr = (float *)H3_sz_out_data;
ADT_PARM->pz_inptr = (float *)H3_pz_out_data;
icsd_adt_ein_parm(ADT_PARM);
#elif ADT_CLIENT_BOARD == ANC05_HYBRID
adt_printf("ADT ANC05\n");
extern const float ANC05_ADT_FLOAT_DATA[];
extern const float ANC05_sz_out_data[28];
extern const float ANC05_pz_out_data[28];
ADT_PARM->adt_float_data = (void *)ANC05_ADT_FLOAT_DATA;
ADT_PARM->sz_inptr = (float *)ANC05_sz_out_data;
ADT_PARM->pz_inptr = (float *)ANC05_pz_out_data;
icsd_adt_ein_parm(ADT_PARM);
#else
adt_printf("ADT XXX\n");
#endif
icsd_adt_parm_set(ADT_PARM);
free(ADT_PARM);
icsd_adt_szout_init();
}