enc_test.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "include.h"
  2. #define TRACE_EN 0
  3. #if TRACE_EN
  4. #define TRACE(...) printf(__VA_ARGS__)
  5. #else
  6. #define TRACE(...)
  7. #endif
  8. void smic_test_set_en(bool smic_en);
  9. void dmic_test_set_channel(u8 ch);
  10. void tx_ack(uint8_t *packet, uint16_t len);
  11. #if ENC_DBG_EN
  12. static const char tbl_enc_header[3] = "ENC";
  13. static const char tbl_smic_header[4] = "SMIC";
  14. static void bsp_enc_dbg_ack(u8 channel, u8 errcode)
  15. {
  16. u8 ack[4];
  17. memset(ack, 0, 4);
  18. if (errcode > 0) {
  19. ack[0] = 'N';
  20. } else {
  21. ack[0] = 'Y';
  22. }
  23. ack[1] = channel;
  24. ack[2] = errcode;
  25. ack[3] = 0xff;
  26. #if TRACE_EN
  27. printf("ENC TX:");
  28. print_r(ack, 4);
  29. #endif
  30. tx_ack(ack, 4);
  31. }
  32. u32 getcfg_dmic_ch(void)
  33. {
  34. u32 mic_xcfg_cfg = (xcfg_cb.bt_mmic_cfg) | (xcfg_cb.bt_smic_cfg << 4);
  35. return mic_xcfg_cfg;
  36. }
  37. void bsp_enc_parse_cmd(void)
  38. {
  39. u8 *ptr = eq_rx_buf;
  40. #if TRACE_EN
  41. printf("ENC RX:");
  42. print_r(ptr, 10);
  43. #endif
  44. if (memcmp((char *)ptr, tbl_smic_header, 4) == 0) {
  45. u8 smic_type = ptr[6];
  46. u8 ctlcmd = ptr[7];
  47. if (smic_type > '2' || smic_type == '0') {
  48. bsp_enc_dbg_ack(smic_type, 2); //error code 2:channel error
  49. return;
  50. }
  51. if (ctlcmd == 'N') {
  52. smic_test_set_en(1); //smic dbg
  53. bsp_enc_dbg_ack(smic_type, 0); //sucess
  54. } else if (ctlcmd == 'Y') {
  55. smic_test_set_en(0); //smic dbg close
  56. bsp_enc_dbg_ack(smic_type, 0); //sucess
  57. } else {
  58. bsp_enc_dbg_ack(smic_type, 3); //error code 3:ctlcmd error
  59. }
  60. } else if (memcmp((char *)ptr, tbl_enc_header, 3) == 0) {
  61. u8 channel = ptr[5];
  62. u8 ctlcmd = ptr[6];
  63. //printf("channel = %c; ctlcmd = %c\n",channel,ctlcmd);
  64. if (channel > '3' || channel == '0') {
  65. bsp_enc_dbg_ack(channel, 2); //error code 2:channel error
  66. return;
  67. }
  68. if (ctlcmd == '1' || ctlcmd == '2') {
  69. dmic_test_set_channel(channel);
  70. bsp_enc_dbg_ack(channel, 0); //sucess
  71. } else if (ctlcmd == '3') { //设置主MIC端口
  72. xcfg_cb.bt_mmic_cfg = ptr[7] - '0';
  73. TRACE("ENC Test change mmic port:%x\n", xcfg_cb.bt_mmic_cfg);
  74. bsp_enc_dbg_ack(channel, 0); //sucess
  75. } else {
  76. bsp_enc_dbg_ack(channel, 3); //error code 3:ctlcmd error
  77. }
  78. }
  79. }
  80. #endif