bsp_sys.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #ifndef _BSP_SYS_H
  2. #define _BSP_SYS_H
  3. #define SW_RST_DC_IN 1
  4. #define SW_QTEST_NORMAL 2
  5. #define SW_QTEST_ONLY_PAIR 3
  6. #define SW_RST_BT_MDM 4
  7. #define SW_RST_FLAG 5 //直接复位系统
  8. #define VOL_MAX sys_cb.vol_max //最大音量级数
  9. ///请勿修改sys_cb_t结构体
  10. typedef struct {
  11. u8 vol;
  12. u8 vol_set;
  13. u8 hfp_vol; //通话音量(范围: 0~15)
  14. u8 eq_mode;
  15. u8 lang_id;
  16. s8 gain_offset; //用于动态修改音量表
  17. u8 hfp2sys_mul; //系统音量与HFP音量倍数,手机HFP音量只有16级。
  18. u8 lpwr_warning_limit_cnt; //低电播报N次自动关机控制
  19. u8 lpwr_leave_vbat; //离开低电的电压差
  20. u16 lpwr_warning_cnt; //低电播放周期计数
  21. u16 lpwr_cnt; //低电关机消抖计数
  22. u16 vol_max;
  23. u16 kh_vol_msg;
  24. u16 vbat;
  25. u32 sleep_time;
  26. u32 pwroff_time;
  27. u32 sleep_delay;
  28. u32 pwroff_delay;
  29. u32 sleep_wakeup_time;
  30. u32 ms_ticks; //ms为单位
  31. u32 rand_seed;
  32. u8 sleep_counter; //sleepmode counter计数
  33. u8 loc_house_state; //bit0=is_open, bit1=key_state
  34. u8 rem_house_bat;
  35. u8 rem_bat;
  36. u8 rem_house_state; //bit0=is_open, bit1=key_state
  37. u8 loc_house_bat;
  38. u8 loc_bat;
  39. u8 bt_tws_lr_mode;
  40. u8 tws_force_channel; //TWS固定声道标志: 0->自动分配, 1->固定右声道, 2->固定左声道
  41. u8 rem_force_channel;
  42. u8 vusb_force_channel; //VUSB固定声道
  43. u8 qtest_force_channel;
  44. u8 name_suffix_en; //TWS名称是否增加后缀名了
  45. u8 tws_res_brk;
  46. u8 house_idx;
  47. u8 sw_rst_flag; //软件复位标志
  48. u8 inbox_pwrdwn_flag;
  49. u8 outbox_pwron_flag; //出仓开机标志
  50. u8 inbox_wken_flag; //inbox wakeup
  51. u8 inbox_sta; //是否在仓内
  52. s8 nr_sta;
  53. u8 nr_bits;
  54. u8 ear_menu_en;
  55. u8 rem_ear_sta; //bit0=in_the_ear, bit1=in_the_house
  56. u8 loc_ear_sta;
  57. u8 popup_bat_hide;
  58. u8 popup_3bat_upd_en;
  59. u8 menu_det_dis;
  60. u8 inear_sta;
  61. u8 wko_pwrkey_en;
  62. u8 tkey_pwrdwn_en;
  63. u16 temp_tecnt;
  64. u32 te_tick;
  65. u8 lowpwr_dwn_flag;
  66. u8 discon_reason; //0=单独关机, 1=同步关机
  67. u8 dac_sta;
  68. volatile u8 dc_rst_flag;
  69. volatile u8 cm_times;
  70. volatile u8 loudspeaker_mute; //功放MUTE标志
  71. volatile u8 pwrkey_5s_check; //是否进行开机长按5S的PWRKEY检测
  72. volatile u8 pwrkey_5s_flag; //长按5秒PWRKEY开机标志
  73. volatile u8 charge_sta; //0:充电关闭, 1:充电开启, 2:充满
  74. volatile u8 charge_full_bled_flag; //charge充满蓝灯常亮标志
  75. volatile u8 ch_bled_cnt; //charge充满蓝灯亮时间计数
  76. volatile u8 poweron_flag; //pwrkey开机标志
  77. volatile u8 pwrdwn_tone_en; //POWER DOWN是否播放提示音
  78. volatile u8 pwrdwn_hw_flag; //模拟硬开关,关机标志
  79. volatile u8 hall_2_pwrdwn_flag;
  80. volatile u8 ntc_2_pwrdwn_flag;
  81. volatile u8 breathe_led_sta; //呼吸灯状态
  82. volatile u8 qtest_flag;
  83. volatile u8 incall_flag;
  84. u8 qtest_ack;
  85. u32 pwroff_tick;
  86. u8 warning_playing;
  87. u8 sleep_aupll_en;
  88. u8 ntc_adc_ch;
  89. u8 adkey_ch;
  90. u8 anc_start;
  91. u8 anc_user_mode; //anc模式, 0:关闭, 1:ANC, 2:通透
  92. s8 anc_adjust_val; //anc mic调整值
  93. u8 tp_adjust_val; //tp anc mic调整值
  94. u32 anc_mic_gain; //anc mic初始值
  95. u8 pdn_boat_flag; //船运模式关机
  96. u8 sleep_dac_en; //sleep休眠时是否保持DAC开启
  97. u8 unmute_rled_on; //充电状态红灯亮, 功放解MUTE。
  98. u8 rled_mux_mute_en; //红灯复用MUTE脚使能
  99. u8 chstop_pwrwn_en; //软关机时关掉充电
  100. ///位变量只能在Main线程修改!!!
  101. u8 rtc_first_pwron : 1, //RTC是否第一次上电
  102. cm_factory : 1, //是否第一次FLASH上电
  103. cm_vol_change : 1, //音量级数是否需要更新到FLASH
  104. cm_inited : 1, //cm_buf是否已经初始化
  105. bthid_mode : 1, //独立HID拍照模式标志
  106. sleep_en : 1, //用于控制是否进入sleep
  107. clr_counter_en : 1; //连接中清自动关机计时
  108. } sys_cb_t;
  109. extern sys_cb_t sys_cb;
  110. ///sys_cb1_t结构体可修改
  111. typedef struct {
  112. u8 a2dp_vol_delay_set;
  113. u8 va_start;
  114. #if BT_TWS_CHARGE_DELAY_EN
  115. u8 dc_in_cnt;
  116. u32 charge_ticks;
  117. #endif
  118. #if CHARGE_TSEN_DETECT
  119. u16 adc_tsen_val; //adc采集内部温度检测tsen值
  120. u8 trick_curr_bkp;
  121. u8 const_curr_bkp;
  122. #endif
  123. #if BT_A2DP_DEFAULT_VOLUME_EN
  124. u8 a2dp_default_volume; //设置连上手机的默认音乐音量
  125. u32 a2dp_default_volume_ticks; //超时清flag
  126. #if BT_A2DP_IOS_DEFAULT_VOLUME_FIX
  127. u32 delay_send_vol_ticks;
  128. #endif
  129. #endif
  130. u8 tws_get_map_time;
  131. u8 dec_eq_enable; //解密eq和dbb功能使能
  132. #if USER_PWM_LED_EN
  133. u8 pwm_bled_on;
  134. u8 pwm_rled_on;
  135. u8 pwm_led_sta;
  136. #endif
  137. #if BT_HFP_CALL_EARPHONE_EN
  138. u8 call_switch; //控制手机端接听后转移到耳机,后续切换不影响
  139. u8 call_need_switch;
  140. u32 call_switch_ticks;
  141. #endif
  142. #if CHARGE_NTC_DETECT
  143. u8 chg_ntc_stop;
  144. #endif
  145. #if BT_DISP_LOW_VBAT_EN
  146. u32 disp_low_vbat_ticks;
  147. u8 disp_low_vbat_flag;
  148. #endif
  149. #if BT_TWS_WARNING_SLAVE_BYPASS_FIX
  150. u8 warning_is_playing;
  151. #endif
  152. #if TRY_KEY_SWITCH
  153. bool change_vol_flag;
  154. u16 change_vol_delay;
  155. #endif // TRY_KEY_SWITCH
  156. #if TRY_WARNING_SWITCH
  157. bool tws_is_slave_flag;
  158. #endif // TRY_WARNING_SWITCH
  159. #if TRY_SYNC_KL_4S_FACTORY_SWITCH
  160. bool factory_flag;
  161. bool sync_kl_flag;
  162. bool sync_kl_l_flag;
  163. bool sync_kl_r_flag;
  164. #endif // TRY_SYNC_KL_4S_FACTORY_SWITCH
  165. #if TRY_LOWBAT_WARNING_SWITCH
  166. u16 lowbat_warning_time_count;
  167. #endif // TRY_LOWBAT_WARNING_SWITCH
  168. #if TRY_CHARGEBOX_PWROFF
  169. bool charge_flag;
  170. bool high_v_time;
  171. bool low_v_time;
  172. u8 high_v_time_count;
  173. u8 low_v_time_count;
  174. u8 high_v_count;
  175. u8 low_v_count;
  176. bool charge_pwroff_flag;
  177. u32 charge_pwroff_check_ticks;
  178. #endif // TRY_CHARGEBOX_PWROFF
  179. #if TRY_KH_VOL_CHANGE_INTERVAL
  180. u8 key_hold_count;
  181. #endif // TRY_KH_VOL_CHANGE_INTERVAL
  182. #if TRY_TOUCH_WARNING_DELAY_FIX
  183. bool pairing_warning_flag;
  184. u16 pairing_warning_delay;
  185. bool mode_warning_flag;
  186. u16 mode_warning_delay;
  187. #endif // TRY_TOUCH_WARNING_DELAY_FIX
  188. #if TRY_TWS_CONN_SCAN_CLOSE
  189. u32 tws_conn_ticks;
  190. #endif // TRY_TWS_CONN_SCAN_CLOSE
  191. } sys_cb1_t;
  192. extern sys_cb1_t sys_cb1;
  193. extern volatile u32 ticks_50ms;
  194. extern uint lt_sdq_valid;
  195. void bsp_sys_init(void);
  196. void bsp_update_init(void);
  197. void timer1_irq_init(void);
  198. void bsp_sys_mute(void);
  199. void bsp_sys_unmute(void);
  200. void set_buck_mode(u8 buck_en);
  201. void bsp_loudspeaker_mute(void);
  202. void bsp_loudspeaker_unmute(void);
  203. void linein_detect(void);
  204. bool linein_micl_is_online(void);
  205. void x26m_cap_tune(void);
  206. void sw_reset_kick(u8 source);
  207. void lt_uart_tx_auth_start(void);
  208. void lt_uart_tx_auth_process(void);
  209. void lt_var_init(void);
  210. void lt_uart_wait_done(void);
  211. void lt_charge_var_init(void);
  212. void lt_charge_poweron(void);
  213. void lt_charge_process(void);
  214. void lt_charge_init(void);
  215. void dongle_check_key(void);
  216. #if TRY_SYNC_KL_4S_FACTORY_SWITCH
  217. void sync_kl_4s_factory_process(void);
  218. #endif // TRY_SYNC_KL_4S_FACTORY_SWITCH
  219. #if TRY_LOWBAT_WARNING_SWITCH
  220. void lowbat_warning_process(void);
  221. #endif // TRY_LOWBAT_WARNING_SWITCH
  222. #endif // _BSP_SYS_H