func_charge.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "include.h"
  2. #include "func.h"
  3. #include "hlw_func.h"
  4. #if HLW_UI
  5. AT(.text.func.charge.msg)
  6. void func_charge_message(u16 msg)
  7. {
  8. switch (msg) {
  9. #if HLW_UI
  10. case KU_ANC:
  11. //no ANC
  12. break;
  13. #endif
  14. case EVT_NTC_CONTROL:
  15. hlw_func_ntc_control_handle();
  16. break;
  17. case EVT_PC_INSERT:
  18. //printf("EVT_PC_INSERT %d\n",dev_is_online(DEV_USBPC));
  19. if (dev_is_online(DEV_USBPC)) {
  20. func_cb.sta = FUNC_USBDEV;
  21. }
  22. break;
  23. default:
  24. //func_message(msg);
  25. break;
  26. }
  27. }
  28. #endif
  29. AT(.text.func.charge)
  30. void func_charge_process(void)
  31. {
  32. while (1) {
  33. WDT_CLR();
  34. #if HLW_UI
  35. func_charge_message(msg_dequeue());
  36. #endif
  37. #if QTEST_EN
  38. if(qtest_get_mode() || qtest_cb.sta){
  39. func_cb.sta = func_cb.last;
  40. break;;
  41. }
  42. #endif
  43. #if CHARGE_LOW_POWER_EN
  44. delay_us(200);
  45. #else
  46. delay_5ms(1);
  47. #endif
  48. #if CHARGE_EN
  49. if (charge_charge_on_process()) {
  50. func_cb.sta = func_cb.last;
  51. break;
  52. }
  53. #endif
  54. #if HLW_UI
  55. if(func_cb.sta == FUNC_USBDEV)
  56. {
  57. break;
  58. }
  59. if(hlw_func_exit_charge_handle())
  60. {
  61. break;
  62. }
  63. #endif
  64. }
  65. }
  66. AT(.text.func.charge)
  67. static void func_charge_enter(void)
  68. {
  69. #if ANC_EN
  70. if(xcfg_cb.anc_en && sys_cb.anc_user_mode) {
  71. bsp_anc_stop(); //bsp_anc_set_mode(0);
  72. }
  73. #endif
  74. #if BT_MUSIC_EFFECT_EN
  75. music_effect_alg_suspend(MUSIC_EFFECT_SUSPEND_FOR_CHARGE);
  76. #endif // BT_MUSIC_EFFECT_EN
  77. dac_power_off();
  78. lock_code_charge();
  79. #if CHARGE_EN
  80. charge_enter(1);
  81. #endif
  82. #if HLW_UI
  83. led_init();
  84. hlw_func_charge_init_handle();
  85. hlw_func_charge_electric_init();
  86. hlw_func_ntc_var_init();
  87. hlw_cb.charge_qian30s_flag = true;
  88. hlw_cb.charge_qian30s_count = 0;
  89. hlw_cb.charging_flag = true;
  90. hlw_cb.exit_charge_count = 0;
  91. vusb4s_reset_en();
  92. #endif
  93. }
  94. AT(.text.func.charge)
  95. static void func_charge_exit(void)
  96. {
  97. #if CHARGE_EN
  98. charge_exit();
  99. #endif
  100. unlock_code_charge();
  101. printf("dc out\n");
  102. #if HLW_UI
  103. hlw_func_charge_electric_control_handle(0);
  104. hlw_func_charge_enable_handle(0);
  105. #endif
  106. bsp_res_set_enable(true);
  107. func_bt_init();
  108. en_auto_pwroff();
  109. if (xcfg_cb.bt_tws_pair_mode > 1) {
  110. bt_tws_set_scan(0x03);
  111. }
  112. if (!bsp_dac_off_for_bt_conn()) {
  113. dac_restart();
  114. }
  115. #if BT_MUSIC_EFFECT_EN
  116. music_effect_alg_restart();
  117. #endif // BT_MUSIC_EFFECT_EN
  118. #if !HLW_UI
  119. #if ANC_EN
  120. if(sys_cb.anc_user_mode) {
  121. bsp_anc_set_mode(sys_cb.anc_user_mode);
  122. }
  123. dac_fade_in();
  124. #endif
  125. if (xcfg_cb.bt_outbox_voice_pwron_en) {
  126. mp3_res_play(RES_BUF_POWERON, RES_LEN_POWERON);
  127. }
  128. #endif
  129. }
  130. AT(.text.func.charge)
  131. void func_charge(void)
  132. {
  133. printf("%s\n", __func__);
  134. func_charge_enter();
  135. func_charge_process();
  136. func_charge_exit();
  137. }