strong_symbol.c 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868
  1. /**********************************************************************
  2. *
  3. * strong_symbol.c
  4. * 定义库里面部分WEAK函数的Strong函数,动态关闭库代码
  5. ***********************************************************************/
  6. #include "include.h"
  7. uint32_t cfg_sdk_version = SDK_VERSION;
  8. #if !FUNC_USBDEV_EN
  9. void usb_dev_isr(void){}
  10. void ude_ep_reset(void){}
  11. void ude_control_flow(void){}
  12. void ude_isoc_tx_process(void){}
  13. void ude_isoc_rx_process(void){}
  14. void lock_code_usbdev(void){}
  15. #endif //FUNC_USBDEV_EN
  16. #if !FUNC_REC_EN
  17. bool puts_rec_encbuf(u8 *buf, u16 len) {return false;}
  18. bool gets_rec_obuf(u8 *buf, u16 len) {return false;}
  19. #endif
  20. #if (REC_TYPE_SEL != REC_MP3)
  21. int mpa_encode_frame(void) {return 0;}
  22. #endif //(REC_TYPE_SEL != REC_MP3)
  23. #if (REC_TYPE_SEL != REC_SBC)
  24. #if (!BT_HFP_MSBC_EN)
  25. bool msbc_encode_init(void){return false;}
  26. #endif
  27. bool sbc_encode_init(u8 spr, u8 nch){return false;}
  28. void sbc_encode_process(void){}
  29. #endif
  30. #if (REC_TYPE_SEL != REC_ADPCM && !BT_HFP_REC_EN)
  31. void adpcm_encode_process(void){}
  32. #endif //(REC_TYPE_SEL != REC_ADPCM)
  33. #if !MUSIC_WAV_SUPPORT
  34. int wav_dec_init(void){return 0;}
  35. bool wav_dec_frame(void){return false;}
  36. void lock_code_wavdec(void){}
  37. int wav_decode_init(void){return 0;}
  38. #endif // MUSIC_WAV_SUPPORT
  39. #if !MUSIC_WMA_SUPPORT
  40. int wma_dec_init(void){return 0;}
  41. bool wma_dec_frame(void){return false;}
  42. void lock_code_wmadec(void){}
  43. int wma_decode_init(void){return 0;}
  44. #endif // MUSIC_WMA_SUPPORT
  45. #if !MUSIC_APE_SUPPORT
  46. int ape_dec_init(void){return 0;}
  47. bool ape_dec_frame(void){return false;}
  48. void lock_code_apedec(void){}
  49. int ape_decode_init(void){return 0;}
  50. #else
  51. AT(.com_text.dac)
  52. void obuf_put_one_sample(u32 left, u32 right)
  53. {
  54. dac_put_sample_16bit(left, right);
  55. }
  56. #endif // MUSIC_APE_SUPPORT
  57. #if !MUSIC_FLAC_SUPPORT
  58. int flac_dec_init(void){return 0;}
  59. bool flac_dec_frame(void){return false;}
  60. void lock_code_flacdec(void){}
  61. int flac_decode_init(void){return 0;}
  62. #endif // MUSIC_FLAC_SUPPORT
  63. #if !MUSIC_SBC_SUPPORT
  64. int sbcio_dec_init(void){return 0;}
  65. bool sbcio_dec_frame(void){return false;}
  66. int sbcio_decode_init(void){return 0;}
  67. AT(.sbcdec.code)
  68. void codec_sbcdec_update(void){}
  69. AT(.sbcdec.code)
  70. void codec_sbcdec_init(void *param){}
  71. #endif // MUSIC_SBC_SUPPORT
  72. #if !MUSIC_AAC_SUPPORT
  73. int aacio_dec_init(void) {return 0;}
  74. int aacio_decode_init(void) {return 0;}
  75. #endif
  76. #if !MUSIC_M4A_SUPPORT
  77. int m4a_decode_init(void){return 0;}
  78. int m4a_dec_init(void){return 0;}
  79. bool aacio_sub_process(void){return true;}
  80. #endif
  81. #if !MUSIC_AAC_SUPPORT && !MUSIC_M4A_SUPPORT
  82. bool aacio_dec_frame(void) {return false;}
  83. #endif
  84. #if (!(MUSIC_WMA_SUPPORT | MUSIC_APE_SUPPORT | MUSIC_FLAC_SUPPORT))
  85. void msc_stream_start(u8 *ptr) {}
  86. void msc_stream_end(void) {}
  87. int msc_stream_read(void *buf, unsigned int size) {return 0;}
  88. bool msc_stream_seek(unsigned int ofs, int whence) {return false;}
  89. void os_stream_fill(void) {}
  90. void os_stream_read(void) {}
  91. void os_stream_seek(void) {}
  92. void os_stream_end(void) {}
  93. AT(.com_text.stream)
  94. void msc_stream_fill(void) {}
  95. #endif
  96. #if !FUNC_AUX_EN
  97. void sdadc_analog_aux_start(u8 adc_ch_get, u8 str_ch, u8 ana_gain){}
  98. void sdadc_analog_aux_exit(u8 adc_ch_get, u8 str_ch){}
  99. u8 noise_detect(void *p, u16 pow) {return 0;}
  100. u8 aux_dnr_process(u8 *ptr, u32 len) {return 0;}
  101. void aux_dnr_init(u16 v_cnt, u16 v_pow, u16 s_cnt, u16 s_pow){}
  102. #endif
  103. #if !FUNC_MUSIC_EN
  104. int mp3_dec_init(void) {return 0;}
  105. int mp3_decode_init(void){return 0;}
  106. int music_decode_init(void){return 0;}
  107. void mp3_get_total_time(void){}
  108. void update_codec_playtime_callback(void *s){}
  109. int mad_layer_I(void) { return 0; }
  110. int mad_layer_II(void) { return 0; }
  111. bool mp3_save_point(void *frame) {return false;}
  112. void mp3_qskip_start(void *frame) {}
  113. bool mp3_qskip_process(void *frame) {return false;}
  114. AT(.text.qskip)
  115. void codec_qskip_init(u32 block_start, u16 block_align) {}
  116. AT(.text.qskip)
  117. void music_qskip(bool direct, u8 second) {}
  118. AT(.text.qskip)
  119. void calc_qskip_target_offset(void) {}
  120. AT(.text.qskip)
  121. void music_qskip_end(void) {}
  122. AT(.text.qskip)
  123. void music_set_jump(void *brkpt) {}
  124. AT(.text.qskip)
  125. void music_get_breakpiont(void *brkpt) {}
  126. #if !WARNING_MP3_EN
  127. int spi_mp3_dec_init(void) { return 0; }
  128. void mp3_end(void) {}
  129. bool mp3_dec_frame(void) {return false;}
  130. #endif
  131. #endif
  132. #if !BT_MUSIC_EFFECT_EN
  133. void msc_pcm_out_var_init(void) {}
  134. void msc_pcm_out_start(void) {}
  135. void msc_pcm_out_stop(void) {}
  136. u8 codecs_pcm_is_start(void) {return 0;}
  137. AT(.com_text.codecs.pcm)
  138. void msc_pcm_effect_process(u8 *buf, u32 samples, u32 nch, u32 is_24bit, u32 pcm_info) {}
  139. AT(.com_text.codecs.pcm)
  140. void msc_pcm_out_24bit_process(u32 left, u32 right) {}
  141. AT(.com_text.codecs.pcm)
  142. void msc_pcm_out_16bit_process(u32 left, u32 right) {}
  143. AT(.com_text.codecs.alg)
  144. void alg_music_effect_process(void) {}
  145. void mp3_pcm_out_start(void) {}
  146. AT(.mp3dec.pcm)
  147. void mp3_pcm_out_process(u32 samples) {}
  148. AT(.sbcdec.pcm)
  149. void sbc_pcm_out_start(void) {}
  150. AT(.sbcdec.pcm)
  151. bool sbc_pcm_out_process(u32 samples, bool is_tws) { return false; }
  152. AT(.aacdec.pcm)
  153. void aac_pcm_out_start(void) {}
  154. AT(.aacdec.pcm)
  155. void aac_pcm_out_process(u32 samples, bool is_tws) {}
  156. AT(.aacdec.pcm.clear)
  157. void aac_tws_obuf_clear(void) {}
  158. AT(.wavdec.code)
  159. void obuf_put_16bit_sample_wav(u32 left, u32 right)
  160. {
  161. dac_put_sample_16bit_w(left, right);
  162. }
  163. AT(.wavdec.code)
  164. void obuf_put_24bit_sample_wav(u32 left, u32 right)
  165. {
  166. dac_put_sample_24bit_w(left, right);
  167. }
  168. AT(.apedec.code)
  169. void obuf_put_one_sample_wma(u32 left, u32 right)
  170. {
  171. dac_put_sample_16bit_w(left, right);
  172. }
  173. AT(.flacdec.code)
  174. void obuf_put_one_sample_flac(u32 left, u32 right)
  175. {
  176. dac_put_sample_16bit_w(left, right);
  177. }
  178. #endif
  179. #if !BT_MUSIC_EFFECT_DBB_EN
  180. u8 music_dbb_get_level_cnt(void) {return 0;}
  181. u8 music_dbb_get_bass_level(void) {return 0;}
  182. int music_dbb_stop(void) {return 0;}
  183. int music_dbb_update_param(u8 vol_level, u8 bass_level) {return 0;}
  184. int music_dbb_init(dbb_param_cb_t* p) {return 0;}
  185. #endif
  186. #if !BT_MUSIC_EFFECT_SPATIAL_AU_EN
  187. void v3d_frame_process(u32* buf, u32 samples, u32 in_nch, u32 in_24bits) {}
  188. void v3d_clear_cache(void) {}
  189. void v3d_set_param(int mode, u16 wet, u16 dry) {}
  190. void v3d_set_fade(u32 fade) {}
  191. bool v3d_fade_is_done(u32 fade) {return true;}
  192. void v3d_exit(void) {}
  193. void v3d_init(void) {}
  194. #else
  195. #if BT_TWS_EN
  196. AT(.audio_text.headset_v3d.stereo)
  197. void v3d_process(s16 *data_l, s16 *data_r) {}
  198. #else
  199. AT(.audio_text.headset_v3d.tws)
  200. void v3d_process_tws(s16 *data_l, s16 *data_r, u32 ch) {}
  201. #endif // BT_TWS_EN
  202. #if BT_MUSIC_EFFECT_SPATIAL_AU_L1
  203. int v3d_get_data_ptr(u32* ptr) {return v3d_get_data_ptr_l1(ptr);}
  204. int v3d_get_data_ptr_l0(u32* ptr) {return 0;}
  205. #endif // BT_MUSIC_EFFECT_SPATIAL_AU_L1
  206. #if !BT_MUSIC_EFFECT_SPATIAL_AU_DLEN
  207. AT(.audio_text.headset_v3d)
  208. void v3d_delay_buf_clear_cache(void) {}
  209. AT(.audio_text.headset_v3d)
  210. void v3d_delay_buf_process(s16* buf_l, s16* buf_r) {}
  211. bool v3d_delay_buf_init(void* ptr_l, u32 buf_l_size, u32 delay_l_samples, void* ptr_r, u32 buf_r_size, u32 delay_r_samples) {return false;}
  212. #endif
  213. #endif
  214. #if !BT_MUSIC_EFFECT_VBASS_EN && !BT_MUSIC_EFFECT_DYEQ_VBASS_EN
  215. int vbass_process(void *cb, s16 *data) {return 0;}
  216. void vbass_init(void *cb, vbass_param_cb_t *p) {}
  217. void vbass_set_param(void *cb, u32 cutoff_frequency, u32 intensity, u8 vbass_high_frequency_set, u32 pregain) {}
  218. #endif
  219. #if !BT_MUSIC_EFFECT_DYEQ_EN
  220. void dynamic_eq_process(void *cb, s32 *samples) {}
  221. void dyeq_init(void *cb, dyeq_param_cb_t *p) {}
  222. void dyeq_coef_update(void *cb, u8 *buf) {}
  223. void dyeq_clear_cache(void *cb) {}
  224. #endif
  225. #if !BT_MUSIC_EFFECT_XDRC_EN
  226. s32 xdrc_softeq_proc(void *cb, s32 input) {return 0;}
  227. int xdrc_softeq_cb_init(void *cb, u32 cb_len, u32 res_addr, u32 res_len) {return -5;}
  228. void xdrc_softeq_coef_update(void *cb, u32 cb_len, u32 *coef, u32 band, bool pregain) {}
  229. void xdrc_softeq_clear_cache(void *cb) {}
  230. s32 xdrc_drc_process_gain(void *cb, s32 data_in) {return 0;}
  231. s32 xdrc_drc_get_pcm32_s(s32 data, int g) {return 0;}
  232. s16 xdrc_drc_process_s16(void *cb, s32 data_in) {return 0;}
  233. int xdrc_drcv1_cb_init(void *cb, u32 cb_len, u32 res_addr, u32 res_len) {return -5;}
  234. void xdrc_drcv1_coef_update(void* cb, u32 *tbl) {}
  235. s32 pcmdelay_mono_s32(void *cb, s32 pcm) {return 0;}
  236. int pcmdelay_init(void *cb,void *delay_buf, u16 delay_buf_len, u16 samples_size, u16 delay_samples) {return -5;}
  237. bool pcmdelay_coef_update(void *cb, u16 delay_samples) {return false;}
  238. #endif
  239. #if !ABP_EN
  240. void alpha_beta_pink_generation_init(ABP_generation_init_cb_t *p) {}
  241. void alpha_beta_pink_generation(s16 *samples, s32 len, u8 idx) {}
  242. void alpha_beta_pink_generation_stereo(s16 *samples, s32 len) {}
  243. void dac1_fade_in_real(void) {}
  244. void dac1_fade_out_real(void) {}
  245. void abp_kick_start(void) {}
  246. #endif
  247. #if !BT_MUSIC_EFFECT_HRTF_RT_EN
  248. void hrtf_rt_init(hrtf_rt_cb_t *p) {}
  249. void hrtf_rt_audio_frame_process(u32* buf, u32 samples, u32 in_nch, u32 in_24bits) {}
  250. void hrtf_rt_update_angle_process(s16 az, s16 el) {}
  251. #endif
  252. #if !BT_MUSIC_EFFECT_HRTF_RT_RST_EN
  253. s32 hrtf_rt_angle_filter(s32 in_angle) {return 0;}
  254. void hrtf_rt_angle_filter_init(u32 filter_cnt_total, s16 delta_thr, s16 step) {}
  255. #endif
  256. //是否支持BT AAC音频
  257. #if !BT_A2DP_AAC_AUDIO_EN
  258. void aac_dec_init(void) {}
  259. void aac_decode_init(void) {}
  260. bool aac_dec_frame(void) {return false;}
  261. bool aac_nor_dec_frame(void) {return false;};
  262. bool aac_tws_dec_frame(void) {return false;};
  263. void aac_cache_free_do(void) {}
  264. size_t aac_cache_read_do(uint8_t *buf, uint max_size) {return 0;}
  265. uint16_t tws_pack_aac(uint8_t *buf) {
  266. return 0;
  267. }
  268. AT(.com_text.aac.obuf)
  269. void aac_fill_tws_obuf(void) {}
  270. AT(.aacdec.text)
  271. void aac_obuf_tws_cpy(void) {}
  272. AT(.aacdec.text)
  273. bool aac_decode(void) { return false; }
  274. #else
  275. void aac_decode_init_do(void);
  276. bool aac_dec_frame_do(void);
  277. void aac_cache_free_do(void);
  278. size_t aac_cache_read_do(uint8_t *buf, uint max_size);
  279. AT(.text.music.init.aac)
  280. void aac_decode_init(void) {
  281. aac_decode_init_do();
  282. }
  283. AT(.aacdec.text)
  284. bool aac_dec_frame(void) {
  285. return aac_dec_frame_do();
  286. }
  287. AT(.aacdec.text)
  288. void aac_cache_free(void) {
  289. #if BT_TWS_EN
  290. aac_cache_free_do();
  291. #endif
  292. }
  293. AT(.aacdec.text)
  294. size_t aac_cache_read(uint8_t *buf, uint max_size) {
  295. #if BT_TWS_EN
  296. return aac_cache_read_do(buf, max_size);
  297. #else
  298. return 0;
  299. #endif
  300. }
  301. #endif
  302. #if !BT_A2DP_LHDC_AUDIO_EN
  303. void bt_lhdc_dec_init(void) {}
  304. void lhdc_decode_init(u16 codec_id, u8 *value){}
  305. bool lhdc_dec_init(u16 codec_id, u8 *value) {return false;}
  306. bool lhdc_dec_frame(void) {return false;}
  307. int lhdc_decode_frame(bool is_tws){return 0;}
  308. void lhdc_dec_destory(void){}
  309. void au0_dmain_start(void){}
  310. void au0_dmain_stop(void){}
  311. void au0_dmain_kick(s32 *ptr, u32 samples){}
  312. AT(.com_text.au0dma)
  313. void au0_dmain_isr(void){}
  314. void au0_dmain_sem_init(void){}
  315. void spiflash_security_uid_read(void){}
  316. void lhdc_obuf_tws_cpy(void) {}
  317. void lhdc_fill_tws_obuf(void) {}
  318. void lhdc_cpy_tws_obuf(void) {}
  319. AT(.com_text.sbc.play)
  320. void lhdc_dec_kick_isr(uint32_t ticks){}
  321. u8 avdtp_tws_get_lhdc_spr(uint16_t codec_id, uint8_t spec_val){return 0x01;}
  322. bool lhdc_nor_dec_frame(void){return false;}
  323. bool lhdc_tws_dec_frame(void){return false;}
  324. void lhdc_pcm_out_start(void);
  325. void lhdc_pcm_out_process(u8 *buf, u32 samples, u32 nch, u32 in_24bits, bool is_tws) {}
  326. void gpdma_lhdc_kick(u32 *ptr, u32 samples, u32 in_24bits) {}
  327. void lhdc_kick_copy_tws_obuf(void){}
  328. void lhdc_gpdma_done(void) {}
  329. AT(.com_text.bt.api.codec)
  330. bool bt_decode_is_lhdc(void) {return false;}
  331. #else
  332. size_t lhdc_cache_read_do(uint8_t *buf, uint max_size);
  333. void lhdc_cache_free_do(void);
  334. AT(.text.lhdc.dec.cache)
  335. void lhdc_cache_free(void) {
  336. #if BT_TWS_EN
  337. lhdc_cache_free_do();
  338. #endif
  339. }
  340. AT(.text.lhdc.dec.cache)
  341. size_t lhdc_cache_read(uint8_t *buf, uint max_size) {
  342. #if BT_TWS_EN
  343. return lhdc_cache_read_do(buf, max_size);
  344. #else
  345. return 0;
  346. #endif
  347. }
  348. #endif
  349. #if !BT_A2DP_LDAC_AUDIO_EN
  350. void bt_ldac_dec_init(void) {}
  351. void ldac_decode_init(u16 codec_id, u8 *value){}
  352. bool ldac_dec_init(u16 codec_id, u8 *value) {return false;}
  353. bool ldac_dec_frame(void) {return false;}
  354. int ldac_decode_frame(bool is_tws){return 0;}
  355. void ldac_dec_destory(void){}
  356. void ldac_obuf_tws_cpy(void) {}
  357. void ldac_fill_tws_obuf(void) {}
  358. void ldac_cpy_tws_obuf(void) {}
  359. AT(.com_text.sbc.play)
  360. void ldac_dec_kick_isr(uint32_t ticks){}
  361. u8 avdtp_tws_get_ldac_spr_idx(uint8_t spr_bitmap){return 0x01;}
  362. bool ldac_nor_dec_frame(void){return false;}
  363. bool ldac_tws_dec_frame(void){return false;}
  364. void ldac_kick_copy_tws_obuf(void) {}
  365. bool ldac_tws_dec_waiting(void){return true;}
  366. void ldac_pcm_out_start(void) {}
  367. void ldac_pcm_out_process(u8 *buf, u32 samples, u32 nch, u32 in_24bits, bool is_tws) {}
  368. void ldac_gpdma_done(void) {}
  369. void gpdma_ldac_kick(u32 *ptr, u32 samples, u32 in_24bits) {}
  370. AT(.com_text.bt.api.codec)
  371. bool bt_decode_is_ldac(void) {return false;}
  372. #else
  373. size_t ldac_cache_read_do(uint8_t *buf, uint max_size);
  374. void ldac_cache_free_do(void);
  375. AT(.text.ldac.dec.cache)
  376. void ldac_cache_free(void) {
  377. #if BT_TWS_EN
  378. ldac_cache_free_do();
  379. #endif
  380. }
  381. AT(.text.ldac.dec.cache)
  382. size_t ldac_cache_read(uint8_t *buf, uint max_size) {
  383. #if BT_TWS_EN
  384. return ldac_cache_read_do(buf, max_size);
  385. #else
  386. return 0;
  387. #endif
  388. }
  389. #endif
  390. #if !FMRX_REC_EN
  391. void fmrx_rec_start(void){}
  392. void fmrx_rec_stop(void){}
  393. #endif // FMRX_REC_EN
  394. #if !BT_REC_EN && !KARAOK_REC_EN
  395. void bt_music_rec_start(void) {}
  396. void bt_music_rec_stop(void) {}
  397. void au0_dma_isr(void){}
  398. #endif
  399. #if !USB_SUPPORT_EN
  400. void usb_isr(void){}
  401. void usb_init(void){}
  402. #endif
  403. #if ((!SD_SUPPORT_EN) && (!FUNC_USBDEV_EN))
  404. void sd_disk_init(void){}
  405. void sdctl_isr(void){}
  406. void sd0_insert(u8 index){}
  407. void sd0_remove(u8 index){}
  408. void sd_disk_switch(u8 index){}
  409. bool sd0_stop(bool type){return false;}
  410. bool sd0_init(void){return false;}
  411. bool sd0_read(void *buf, u32 lba){return false;}
  412. bool sd0_write(void* buf, u32 lba){return false;}
  413. #endif
  414. #if !FUNC_MUSIC_EN
  415. u32 fs_get_file_size(void){return 0;}
  416. void fs_save_file_info(unsigned char *buf){}
  417. void fs_load_file_info(unsigned char *buf){}
  418. #endif // FUNC_MUSIC_EN
  419. #if !SYS_KARAOK_EN
  420. void karaok_process(void){}
  421. AT(.com_text.karaok)
  422. void karaok_sdadc_process(u8 *ptr, u32 samples, int ch_mode){}
  423. #endif
  424. #if !SYS_ECHO_EN
  425. s16 *karaok_echo_get_buf(u32 buf_num) {return NULL;}
  426. AT(.com_text.karaok)
  427. void karaok_sdadc_echo_process(s16 *rptr){}
  428. void echo_reset_buf(void *cfg){}
  429. void echo_set_delay(u16 delay){}
  430. void echo_set_level(const u16 *vol){}
  431. #endif
  432. #if !SYS_MAGIC_VOICE_EN
  433. AT(.com_text.karaok)
  434. void karaok_sdadc_magic_process(s16 *rptr){}
  435. void magic_voice_process(void) {}
  436. void mav_kick_start(void) {}
  437. #endif
  438. #if !FUNC_SPDIF_EN
  439. void spdif_pcm_process(void){}
  440. bool spdif_smprate_detect(void) { return false;}
  441. AT(.com_text.isr.spdif)
  442. void spdif_isr(u32 spfrx_pnd){}
  443. #endif
  444. #if !FUNC_SPDIF_TX_EN
  445. AT(.com_text.isr.spdif)
  446. void spdif_tx_isr(u32 spftx_pnd) {}
  447. #endif
  448. #if ((!MUSIC_UDISK_EN)&&(!MUSIC_SDCARD_EN))
  449. FRESULT fs_open(const char *path, u8 mode){return 0;}
  450. FRESULT fs_read (void* buff, UINT btr, UINT* br){return 0;}
  451. FRESULT fs_lseek (DWORD ofs, u8 whence){return 0;}
  452. #endif
  453. #if !KARAOK_REC_EN
  454. AT(.com_text.karaok.rec)
  455. bool karaok_rec_fill_buf(u8 *buf, u16 len) {return false;}
  456. #endif
  457. #if !I2S_DMA_EN
  458. void i2s_isr(void) {}
  459. void i2s_process(void) {}
  460. #endif
  461. void voice_assistant_enc_process(void);
  462. #if !LE_DUEROS_DMA_EN && !OPUS_ENC_EN
  463. AT(.com_text.opus)
  464. void opus_enc_process(void) {}
  465. #endif
  466. #if !QTEST_EN
  467. void qtest_var_init(void) {}
  468. AT(.com_text.qtest)
  469. void qtest_only_pair(void) {}
  470. AT(.com_text.qtest)
  471. u8 qtest_get_mode(void) {return 0;}
  472. bool qtest_is_send_btmsg(void) {return false;}
  473. AT(.com_text.bsp.uart.vusb)
  474. void qtest_packet_huart_recv(u8 *rx_buf){};
  475. AT(.com_text.bsp.uart.vusb)
  476. void qtest_packet_uart1_recv(u8 data);
  477. void qcheck_save_checkcode(u32 checkcode) {}
  478. #endif
  479. #if (CHARGE_BOX_INTF_SEL != INTF_UART1) && (TEST_INTF_SEL != INTF_UART1)
  480. AT(.text.sys_clk)
  481. void update_uart1baud_in_sysclk_set(u32 baudrate){} //关闭智能充电仓,切换系统频率不重新设置uart1波特率
  482. #endif
  483. #if (CHARGE_BOX_INTF_SEL != INTF_UART2) && (TEST_INTF_SEL != INTF_UART2)
  484. AT(.text.sys_clk)
  485. void update_uart2baud_in_sysclk_set(u32 baudrate){} //关闭智能充电仓,切换系统频率不重新设置uart2波特率
  486. #endif
  487. //#if (UART0_PRINTF_SEL == PRINTF_NONE)
  488. void wdt_irq_init(void) {}
  489. //#endif
  490. #if SYS_SLEEP_LEVEL > 2
  491. void sys_sleep_restore(void);
  492. AT(.com_text.ret.bb)
  493. void nanos_sleep_restore(void)
  494. {
  495. sys_sleep_restore();
  496. }
  497. AT(.sleep_text.sleep.cb)
  498. void sys_sleep_proc_cb(u8 lpclk_type)
  499. {
  500. sys_sleep_proc_lv(lpclk_type, 0x84);
  501. }
  502. #endif
  503. #if !USER_TKEY
  504. AT(.com_text.tkey.isr)
  505. void tkey_isr(void) {}
  506. #endif
  507. #if !ANC_DS_DMA_EN
  508. void anc_process(u8 flag) {}
  509. int anc_dma_start(anc_dma_cfg_cb* cfg, u8 kick_start) {return -1;}
  510. int anc_dma_exit(void) {return -1;}
  511. bool anc_dma_is_use(void) {return false;}
  512. #endif
  513. #if !ANC_ALG_EN
  514. void alg_anc_process(void) {}
  515. void anc_alg_sdadc_process(u8* ptr, u32 samples, int ch_mode) {}
  516. void anc_alg_ram_clear(void) {}
  517. int anc_alg_init(anc_alg_param_cb* p) {return -1;}
  518. int anc_alg_exit(anc_alg_param_cb* p) {return -1;}
  519. void anc_alg_rdft_hw_forward_512(s32 *buf) {}
  520. void anc_alg_rdft_hw_forward_256(s32 *buf) {}
  521. void anc_alg_rdft_hw_forward_128(s32 *buf) {}
  522. void anc_alg_rdft_hw_init(void) {}
  523. #endif
  524. #if !ANC_ALG_STEREO_EN
  525. AT(.anc_text.process.comm.stereo)
  526. void anc_alg_sdadc_process_fffb_r(u8* ptr, u32 samples, int ch_mode) {}
  527. AT(.anc_text.process.comm.stereo)
  528. void alg_anc_process_fffb_r_do(void) {}
  529. #endif
  530. #if (!ANC_DS_DMA_EN) || (!ANC_ALG_EN)
  531. AT(.anc_text.process.ancdma)
  532. void anc_alg_ancdma_process(u8* ptr, u32 samples, int ch_mode) {}
  533. AT(.anc_text.process.ancdma)
  534. void alg_anc_process_ancdma_do(void) {}
  535. #endif
  536. #if !ANC_ALG_DUMP_EN
  537. s16* alg_anc_dump_data_ptr_by_idx(int x, int idx) {return NULL;}
  538. void alg_anc_dump_process(void) {}
  539. void anc_alg_dump_3ch(s16* buf0, s16* buf1, s16* buf2, u32 frame_len, u8 interleave) {}
  540. void anc_alg_dump_dmic(s16* buf_l, s16* buf_r, u32 frame_len, u8 interleave) {}
  541. void anc_alg_dump(void* buf, u32 frame_len) {}
  542. void anc_alg_dump_init(u32 frame_len) {}
  543. #endif
  544. #if !ANC_ALG_WIND_NOISE_FF_TALK_EN
  545. void dewind_dm_init(void* cfg) {}
  546. bool dewind_dm_set(u8* ptr, u16 size, u8 ch) {return false;}
  547. int dewind_dm_process(s16* data_talk, s16* data_ff, int* wind_level, int* ene_level) {return -1;}
  548. void alg_anc_windnoise_ff_talk_do(int num) {}
  549. bool alg_anc_windnoise_ff_talk_set(void* ptr, u16 size, u8 ch) {return false;}
  550. void alg_anc_windnoise_ff_talk_init(int num) {}
  551. #endif
  552. #if !ANC_ALG_WIND_NOISE_FF_FB_EN
  553. void anc_wind_ff_fb_init(void* cfg, u8 ch) {}
  554. bool anc_wind_ff_fb_set(u8* ptr, u16 size, u8 ch) {return false;}
  555. int anc_wind_ff_fb_process(s16* ffdata, s16* fbdata, s16* txdata, int* res, u8 ch) {return -1;}
  556. void alg_anc_windnoise_ff_fb_do(int num) {}
  557. bool alg_anc_windnoise_ff_fb_set(void* ptr, u16 size, u8 ch) {return false;}
  558. void alg_anc_windnoise_ff_fb_init(int num) {}
  559. #endif
  560. #if (!ANC_ALG_ASM_SIM_FF_EN) && (!ANC_ALG_ASM_FF_EN)
  561. void asm_simple_init(void* cfg, u8 ch) {}
  562. bool asm_simple_set(u8* ptr, u16 size, u8 ch) {return false;}
  563. int anc_asm_simple_block_process(s16* ff, int* res, s16 asm_flag, u8 ch) {return -1;}
  564. #endif
  565. #if !ANC_ALG_ASM_SIM_FF_EN
  566. void alg_anc_asm_simple_do(int num) {}
  567. bool alg_anc_asm_simple_set(void* ptr, u16 size, u8 ch) {return false;}
  568. void alg_anc_asm_simple_init(int num) {}
  569. #endif
  570. #if !ANC_ALG_ASM_FF_EN
  571. void alg_anc_asm_do(int num) {}
  572. bool alg_anc_asm_set(void* ptr, u16 size, u8 ch) {return false;}
  573. void alg_anc_asm_init(int num) {}
  574. #endif
  575. #if (!ANC_ALG_HOWLING_FB_EN) && (!ANC_ALG_HOWLING_FF_EN)
  576. void anc_howling_config(void* config_p) {}
  577. bool anc_howling_set(u8* ptr, u16 size, u8 ch) {return false;}
  578. int anc_howling_block_process(s16* ancout, s16* mic, int* res, u8 ch) {return -1;}
  579. #endif
  580. #if !ANC_ALG_HOWLING_FB_EN
  581. void alg_anc_howling_fb_do(int num) {}
  582. bool alg_anc_howling_fb_set(void* ptr, u16 size, u8 ch) {return false;}
  583. void alg_anc_howling_fb_init(int num) {}
  584. #endif
  585. #if !ANC_ALG_HOWLING_FF_EN
  586. void alg_anc_howling_ff_do(int num) {}
  587. bool alg_anc_howling_ff_set(void* ptr, u16 size, u8 ch) {return false;}
  588. void alg_anc_howling_ff_init(int num) {}
  589. #endif
  590. #if !ANC_ALG_DYVOL_FF_EN
  591. void dyvol_process(void* buf, int* res) {}
  592. void dyvol_init(void* cb) {}
  593. void dyvol_set_enable(u8 en) {}
  594. void alg_anc_dyvol_ff_do(int num) {}
  595. void alg_anc_dyvol_ff_init(int num) {}
  596. #endif
  597. #if !ANC_ALG_MSC_ADP_FB_EN
  598. void anc_msc_adp_process(s16* fbdata, s16* txdata, int* res, u8 ch) {}
  599. bool anc_msc_adp_set(u8* ptr, u16 size, u8 ch) {return false;}
  600. void anc_msc_adp_init(void* cb, u8 ch) {}
  601. void alg_anc_msc_adp_fb_do(int num) {}
  602. bool alg_anc_msc_adp_fb_set(void* ptr, u16 size, u8 ch) {return false;}
  603. void alg_anc_msc_adp_fb_init(int num) {}
  604. #endif
  605. #if !ANC_ALG_ADP_EQ_FF_FB_EN
  606. void adp_eq_init(void* cb, u8 ch) {}
  607. bool adp_eq_set(u8* ptr, u16 size, u8 ch) {return false;}
  608. void adp_eq_process(s16* ffdata, s16* fbdata, s16* txdata, int* res, u8 ch) {}
  609. void alg_anc_adp_eq_ff_fb_do(int num) {}
  610. bool alg_anc_adp_eq_ff_fb_set(void* ptr, u16 size, u8 ch) {return false;}
  611. void alg_anc_adp_eq_ff_fb_init(int num) {}
  612. #endif
  613. #if !ANC_ALG_FIT_DETECT_FF_FB_EN
  614. void anc_fd_process(s16* ffdata, s16* fbdata, s16* txdata, u8 aem_flag, int* res, u8 ch) {}
  615. void anc_fd_init(void* cfg, u8 ch) {}
  616. bool anc_fd_set(u8* ptr, u16 size, u8 ch) {return false;}
  617. void alg_anc_fit_detect_ff_fb_do(int num) {}
  618. bool alg_anc_fit_detect_ff_fb_set(void* ptr, u16 size, u8 ch) {return false;}
  619. void alg_anc_fit_detect_ff_fb_init(int num) {}
  620. #endif
  621. #if !ANC_ALG_AI_WN_FF_EN
  622. void wnn_buffer_init(void *st) {}
  623. void wnn_npu_init(void) {}
  624. void wnn_prepare(u8 is_2ch) {}
  625. void wn_ai_layer_m1_npu_proc(void* st) {}
  626. void wnn_npu_kick_start(s32* input_x, u8 ch) {}
  627. void wnn_exit(void) {}
  628. #endif
  629. #if !ANC_ALG_AI_WN_DSP_FF_EN
  630. void wnn_dsp_init(void) {}
  631. bool wnn_set(u8* ptr, u16 size, u8 ch) {return false;}
  632. void wn_ai_layer_m1_proc(u8 ch) {}
  633. #endif
  634. #if (!ANC_ALG_AI_WN_FF_EN) && (!ANC_ALG_AI_WN_DSP_FF_EN)
  635. void anc_ai_wn_block_process(s16 *data, int* res) {}
  636. void wnn_init(void* cfg, u8 ch) {}
  637. void wnn_comm_init(void) {}
  638. void alg_anc_ai_wn_ff_do(int num) {}
  639. void alg_anc_ai_wn_ff_init(int num) {}
  640. void alg_anc_ai_wn_ff_exit(int num) {}
  641. bool alg_anc_ai_wn_ff_set(void* ptr, u16 size, u8 ch) {return false;}
  642. #endif
  643. #if !ANC_ALG_LIMITER_FF_EN
  644. void anc_limiter_init(void) {}
  645. void anc_limiter_config(void* config_p) {}
  646. int anc_limiter_block_process(s16* ancout, int* res) {return -1;}
  647. void alg_anc_limiter_ff_do(int num) {}
  648. void alg_anc_limiter_ff_init(int num) {}
  649. #endif
  650. #if !ANC_ALG_AEM_RT_FF_FB_EN
  651. void aem_rt_init(void* cb) {}
  652. void aem_rt_process(s16* ffdata, s16* fbdata, s16* txdata, int* res) {}
  653. void alg_anc_aem_rt_ff_fb_do(int num) {}
  654. void alg_anc_aem_rt_ff_fb_init(int num) {}
  655. #endif
  656. #if !ANC_SNDP_SAE_SHIELD_ADAPTER_EN
  657. void alg_anc_sndp_sae_shield_leak_do(int num) {}
  658. void alg_anc_sndp_sae_shield_leak_init(int num) {}
  659. void alg_anc_sndp_sae_adapter_anc_do(int num) {}
  660. void alg_anc_sndp_sae_adapter_anc_init(int num) {}
  661. int SAE_EL01_shield_leakagaedet_process(short* in_fb, int* leakaga_level, short* anc_mode, int* frm_cnt) {return -1;}
  662. int SAE_EL01_adapter_anc_process(short* sMicInFrm, int* anc_mode, short* ff_total_gain, int* frm_cnt) {return -1;}
  663. int SAE_EL01_init(int type, int* param, int param_len) {return -1;}
  664. #endif
  665. #if !ANC_SNDP_SAE_WIND_DETECT_EN
  666. void alg_anc_sndp_sae_dwind_do(int num) {}
  667. void alg_anc_sndp_sae_dwind_init(int num) {}
  668. int SAE_EW02_dwind_process(short* sMicInFrm, int* windLevel, int* frm_cnt) {return -1;}
  669. int SAE_EW02_init(void) {return -1;}
  670. #endif
  671. #if !ANC_ALG_USER_EN
  672. AT(.anc_text.process.anc_alg_user)
  673. void alg_anc_user_do(int num, int* res, u32* res_len) {}
  674. AT(.anc_text.process.anc_alg_user)
  675. void alg_anc_user_do_process(s16* ff, s16* fb, s16* talk, int* res, u32* res_len, int num) {}
  676. void alg_anc_user_init(void* param) {}
  677. void alg_anc_user_exit(void) {}
  678. #endif
  679. #if USB_DET_VER_SEL
  680. AT(.com_text.usb.dectect)
  681. void usbchk_switch_otg_device(void) {}
  682. void usbchk_switch_otg_host(void) {}
  683. void usbchk_only_host(void) {}
  684. void usbchk_only_device(void) {}
  685. u8 usbchk_connect(u8 mode) {return 0;}
  686. #else
  687. AT(.com_text.usb.dectect)
  688. u8 usb_connect(void) {return 0;}
  689. #endif
  690. #if !TINY_TRANSPARENCY_EN
  691. AT(.com_text.tiny.proc)
  692. void ttp_sdadc_process(u8 *ptr, u32 samples, int ch_mode){}
  693. AT(.com_text.tiny.dnr)
  694. void alg_mic_dnr_process(void){}
  695. AT(.com_text.thread.dnr)WEAK
  696. void mic_dnr_kick_start(void){}
  697. #endif
  698. //不够flash空间时可去掉差分或VCMBUF模式
  699. #if DAC_DIFF_DIS
  700. void dac_diff_ang_power_on(u32 restart) { printk("diff error\n");}
  701. void dac_diff_power_off(void) {}
  702. #endif
  703. #if DAC_VCMBUF_DIS
  704. void dac_vcmbuf_ang_power_on(u32 restart) { printk("vcmbuf error\n");}
  705. void dac_vcmbuf_power_off(void) {}
  706. #endif
  707. #if !FOT_EN && !AB_MATE_APP_EN
  708. u8 fot_checksum_cal(u8 *buf) {return 0;}
  709. #endif
  710. #if !USER_TKEY_SLIDE
  711. AT(.com_text.tkey.isr)
  712. void tkey_slide_param_reint(tk_cb_t *s) {}
  713. AT(.com_text.tkey.isr)
  714. void tkey_slide_up_down_check(tk_cb_t *s, tk_cb_t *p) {}
  715. AT(.com_text.tkey.isr)
  716. void tkey_slide_process(tk_cb_t *s, tk_cb_t *p, u16 tkcnt, u32 variance) {}
  717. AT(.com_text.tkey)
  718. void tkey_slide_msg(u8 silde_up) {}
  719. #endif
  720. #if !DAC_DNC_EN
  721. void dac_dnc_init(void) {}
  722. void dac_dnc_start(void) {}
  723. void dac_dnc_stop(void) {}
  724. AT(.com_text.dac.dnc)
  725. void dnc_detect_process(void) {}
  726. bool dac_dnc_is_en(void) { return false; }
  727. #endif
  728. #if !USB_USER_HID_OUT_EN
  729. AT(.com_text.usbdev)
  730. void ude_hid_get_data(void){}
  731. #endif
  732. #if USB_BC_EN
  733. void usb_bc_init(u8 set){}
  734. #endif
  735. #if !DAC_SYNC_DET_EN
  736. AT(.com_text.dac.det)
  737. void dac_sync_detect_isr(void) {}
  738. void dac_sync_detect_start(void) {}
  739. void dac_sync_detect_stop(void) {}
  740. #endif
  741. #if !ASR_EN
  742. void npu_matrix_init(void){}
  743. void npu_matrix_exit(void){}
  744. void matrix_hw(int32_t* sum, int8_t* x0, int8_t *y0, s16 loop){}
  745. void matrix_hw_1(int32_t* sum, int8_t* x0, int8_t *y0, s16 loop1, s16 loop2){}
  746. void spiflash_lock(void){}
  747. void spiflash_unlock(void){}
  748. bool spiflash_read_kick(void *buf, u32 addr, uint len){return false;}
  749. bool spiflash_read_wait(void){return false;}
  750. #endif
  751. #if !WARNING_WSBC_EN
  752. void load_code_btdec(void)
  753. {
  754. extern u32 __nrram_dec_comm_lma, __nrram_dec_comm_size, __nrram_dec_comm_vma;
  755. memcpy(&__nrram_dec_comm_vma, & __nrram_dec_comm_lma, (u32)&__nrram_dec_comm_size);
  756. }
  757. #endif
  758. #if !SRC_EN
  759. void src_init(u8 in_sample_rate, u16 out_samples_expected, u8 channel, uint idx){}
  760. void src_audio_input(u8 *buf, u32 in_samples, uint idx){}
  761. void src_out_done_cb(uint idx){}
  762. void src0_adjust_speed(int speed){}
  763. void src0_audio_input(u8 *buf, u32 samples){}
  764. void src_out_process(u8 all_flag){}
  765. void src_isr(void){}
  766. #endif