func_aux.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #include "include.h"
  2. #include "func.h"
  3. #include "func_aux.h"
  4. #if FUNC_AUX_EN
  5. extern func_aux_t f_aux;
  6. AT(.com_text.aux)
  7. void aux_sdadc_process(u8 *ptr,u32 samples,int ch_mode)
  8. {
  9. //print_r16(ptr, 8);
  10. sdadc_pcm_2_dac(ptr, samples, ch_mode);
  11. }
  12. AT(.text.bsp.aux)
  13. void func_aux_stop(void)
  14. {
  15. if (!f_aux.start) {
  16. return;
  17. }
  18. // printf("%s\n", __func__);
  19. dac_fade_out();
  20. dac_fade_wait(); //等待淡出完成
  21. audio_path_exit(AUDIO_PATH_AUX);
  22. f_aux.start = 0;
  23. }
  24. AT(.text.bsp.aux)
  25. void func_aux_start(void)
  26. {
  27. if (f_aux.start) {
  28. return;
  29. }
  30. // printf("%s\n", __func__);
  31. dac_fade_wait(); //等待淡出完成
  32. audio_path_init(AUDIO_PATH_AUX);
  33. audio_path_start(AUDIO_PATH_AUX);
  34. dac_fade_in();
  35. f_aux.start = 1;
  36. }
  37. AT(.text.bsp.aux)
  38. bool aux_is_start(void)
  39. {
  40. return f_aux.start;
  41. }
  42. AT(.text.func.aux)
  43. void func_aux_pause_play(void)
  44. {
  45. if (f_aux.pause) {
  46. led_aux_play();
  47. func_aux_start();
  48. f_aux.pause = 0;
  49. } else {
  50. led_aux_idle();
  51. func_aux_stop();
  52. f_aux.pause = 1;
  53. }
  54. }
  55. AT(.text.func.aux)
  56. void func_aux_setvol_callback(u8 dir)
  57. {
  58. if (f_aux.pause) {
  59. func_aux_pause_play();
  60. }
  61. }
  62. AT(.text.func.aux)
  63. void func_aux_recover_play(u8 index)
  64. {
  65. if (index == T_WARNING_MAX_VOL) {
  66. f_aux.tick = tick_get();
  67. f_aux.delay_play = 1; //修正HOLD住按键,连续音量语音中间漏出AUX音乐声音的问题
  68. } else {
  69. func_aux_start();
  70. }
  71. }
  72. AT(.text.func.aux)
  73. void func_aux_process(void)
  74. {
  75. if ((f_aux.delay_play) && tick_check_expire(f_aux.tick, 600)) {
  76. f_aux.delay_play = 0;
  77. if (!f_aux.pause) {
  78. func_aux_start();
  79. }
  80. }
  81. func_process();
  82. }
  83. static void func_aux_enter(void)
  84. {
  85. if (!is_linein_enter_enable()) {
  86. func_cb.sta = FUNC_NULL;
  87. return;
  88. }
  89. memset(&f_aux, 0, sizeof(func_aux_t));
  90. func_cb.set_vol_callback = func_aux_setvol_callback;
  91. msg_queue_clear();
  92. #if WARNING_FUNC_AUX
  93. sys_warning_play(T_WARNING_AUX_MODE, PIANO_AUX_MODE);
  94. #endif // WARNING_FUNC_AUX
  95. func_aux_start();
  96. led_aux_play();
  97. }
  98. static void func_aux_exit(void)
  99. {
  100. func_aux_stop();
  101. func_cb.last = FUNC_AUX;
  102. }
  103. AT(.text.func.aux)
  104. void func_aux(void)
  105. {
  106. printf("%s\n", __func__);
  107. func_aux_enter();
  108. while (func_cb.sta == FUNC_AUX) {
  109. func_aux_process();
  110. func_aux_message(msg_dequeue());
  111. }
  112. func_aux_exit();
  113. }
  114. #else
  115. bool aux_is_start(void)
  116. {
  117. return false;
  118. }
  119. void func_aux_stop(void)
  120. {
  121. }
  122. void func_aux_recover_play(u8 index)
  123. {
  124. }
  125. #endif //FUNC_AUX_EN