system.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #ifndef __SYSTEM_H
  2. #define __SYSTEM_H
  3. #include "mute.h"
  4. #include "param.h"
  5. #include "device.h"
  6. #include "vbat.h"
  7. #define VOL_MAX xcfg_cb.vol_max //最大音量级数
  8. typedef struct {
  9. u32 rst_reason;
  10. u8 play_mode;
  11. u8 db_level;
  12. u8 vol;
  13. u8 hfp_vol;
  14. u8 eq_mode;
  15. u8 cur_dev;
  16. u8 lang_id;
  17. #if HLW_UI
  18. u16 lpwr_warning_cnt;
  19. #else
  20. u8 lpwr_warning_cnt;
  21. #endif // HLW_UI
  22. u8 lpwr_warning_times; //播报低电次数,0xff表示一直播
  23. u8 vbat_nor_cnt;
  24. s8 gain_offset; //用于动态修改音量表
  25. u8 hfp2sys_mul; //系统音量与HFP音量倍数,手机HFP音量只有16级。
  26. u8 lpwr_cnt; //低电计数
  27. u8 dac_sta_bck;
  28. #if BT_TWS_EN
  29. #if (CHARGE_BOX_TYPE == CBOX_SSW)
  30. u8 loc_house_state; //bit0=is_open, bit1=key_state
  31. u8 rem_house_bat;
  32. u8 rem_bat;
  33. u8 rem_house_state; //bit0=is_open, bit1=key_state
  34. u8 loc_house_bat;
  35. u8 loc_bat;
  36. u8 popup_en;
  37. #endif
  38. u8 tws_left_channel; //TWS左声道标志.
  39. u8 name_suffix_en; //TWS名称是否增加后缀名了
  40. u8 tws_force_channel; //1: 固定左声道, 2:固定右声道
  41. u8 vusb_force_channel; //VUSB UART固定的声道
  42. #if USER_INEAR_DETECT_EN
  43. u8 rem_ear_sta; //对耳的入耳状态,0为入耳,1为出耳
  44. u8 loc_ear_sta; //耳机的入耳状态,0为入耳,1为出耳
  45. #endif // USER_INEAR_DETECT_EN
  46. #endif // BT_TWS_EN
  47. u8 vusb_uart_flag; //vusb uart打开标志
  48. u8 discon_reason;
  49. #if CHARGE_LOW_POWER_EN
  50. u32 charge_timr0_pr;
  51. #endif
  52. volatile u8 incall_flag;
  53. u8 fmrx_type;
  54. u8 inbox_wken_flag;
  55. u8 outbox_pwron_flag;
  56. u16 kh_vol_msg;
  57. u16 vbat;
  58. u32 sleep_time;
  59. u32 pwroff_time;
  60. u32 sleep_delay;
  61. u32 pwroff_delay;
  62. u32 sleep_wakeup_time;
  63. u32 ms_ticks; //ms为单位
  64. u32 rand_seed;
  65. u8 tws_res_brk;
  66. u8 tws_res_wait;
  67. u8 wav_sysclk_bak;
  68. u8 wko_pwrkey_en;
  69. u8 tkey_pwrdwn_en;
  70. u8 sw_rst_flag;
  71. u8 sleep_counter; //sleepmode,定时计数
  72. volatile u8 cm_times;
  73. volatile u8 loudspeaker_mute; //功放MUTE标志
  74. volatile u8 pwrkey_5s_check; //是否进行开机长按5S的PWRKEY检测
  75. volatile u8 pwrkey_5s_flag; //长按5秒PWRKEY开机标志
  76. volatile u8 charge_sta; //0:充电关闭, 1:充电开启, 2:充满
  77. volatile u8 charge_bled_flag; //charge充满蓝灯常亮标志
  78. volatile u8 ch_bled_cnt; //charge充满蓝灯亮时间计数
  79. volatile u8 micl_en; //MICL enable working标志
  80. volatile u8 poweron_flag; //pwrkey开机标志
  81. volatile u8 pwrdwn_tone_en; //POWER DOWN是否播放提示音
  82. volatile u8 key2unmute_cnt; //按键操作延时解mute
  83. volatile u8 pwrdwn_hw_flag; //模拟硬开关,关机标志
  84. volatile u8 dc_in_filter; //DC IN filter
  85. #if REC_FAST_PLAY
  86. u16 rec_num; //记录最新的录音文件编号
  87. u32 ftime;
  88. #endif
  89. #if SYS_KARAOK_EN
  90. u8 echo_level; //混响等级
  91. u8 echo_delay; //混响间隔
  92. u8 mic_vol; //MIC音量
  93. u8 music_vol; //MUSIC音量
  94. u8 rec_msc_vol; //KARAOK录音时MUSIC的音量保存
  95. u8 magic_type;
  96. u8 magic_level;
  97. #endif
  98. #if ANC_EN || TINY_TRANSPARENCY_EN
  99. u8 anc_user_mode; //anc模式, 0:关闭, 1:ANC, 2:通透
  100. u8 ttp_start;
  101. u8 ttp_sta;
  102. #endif
  103. #if ANC_EN
  104. u8 anc_start;
  105. u8 anc_init;
  106. s8 adjust_val[8]; //mic调整值
  107. u32 mic_gain[4]; //mic初始值
  108. #endif
  109. #if USER_NTC
  110. u8 ntc_2_pwrdwn_flag;
  111. #endif
  112. #if ANC_ALG_EN
  113. volatile u8 anc_alg_en;
  114. u32 anc_alg_type_bak;
  115. #endif // ANC_ALG_EN
  116. ///位变量不要用于需要在中断改值的变量。 请谨慎使用位变量,尽量少定义位变量。
  117. u8 rtc_first_pwron : 1, //RTC是否第一次上电
  118. mute : 1, //系统MUTE控制标志
  119. cm_factory : 1, //是否第一次FLASH上电
  120. cm_vol_change : 1, //音量级数是否需要更新到FLASH
  121. bthid_mode : 1, //独立HID拍照模式标志
  122. port2led_en : 1, //1个IO推两个灯
  123. voice_evt_brk_en : 1, //播放提示音时,U盘、SD卡、LINEIN等插入事件是否立即响应.
  124. karaok_init : 1; //karaok初始化标志
  125. u8 sleep_en : 1, //用于控制是否进入sleep
  126. lowbat_flag : 1,
  127. hfp_karaok_en : 1, //通话模式是否打开K歌功能。
  128. eq_app_total_gain_en : 1; //用于控制是否使用app eq总增益
  129. u8 led_scan_en;
  130. #if USER_INEAR_DETECT_EN
  131. u8 in_ear_en;
  132. #endif
  133. #if BT_MAP_EN
  134. u8 map_retry;
  135. #endif
  136. #if ABP_EN
  137. u8 abp_mode;
  138. #endif
  139. #if ASR_EN
  140. u8 asr_enable;
  141. #endif
  142. #if FUNC_USBDEV_EN
  143. u8 ude_mic_spr; //usb mic spr
  144. #endif
  145. #if ANC_ALG_DYVOL_FF_EN
  146. s8 dyvol_local;
  147. s8 dyvol_real;
  148. s8 dyvol_overlap;
  149. #if BT_TWS_EN
  150. s8 dyvol_remote;
  151. #endif // BT_TWS_EN
  152. #endif // ANC_ALG_DYVOL_FF_EN
  153. } sys_cb_t;
  154. extern sys_cb_t sys_cb;
  155. extern volatile int micl2gnd_flag;
  156. extern volatile u32 ticks_50ms;
  157. void sys_init(void);
  158. void sys_update_init(void);
  159. void timer1_irq_init(void);
  160. void bsp_sys_mute(void);
  161. void bsp_sys_unmute(void);
  162. void bsp_clr_mute_sta(void);
  163. #if LOUDSPEAKER_MUTE_EN
  164. void bsp_loudspeaker_mute(void);
  165. void bsp_loudspeaker_unmute(void);
  166. #else
  167. #define bsp_loudspeaker_mute()
  168. #define bsp_loudspeaker_unmute()
  169. #endif
  170. void uart0_mapping_sel(void);
  171. void linein_detect(void);
  172. bool linein_micl_is_online(void);
  173. void get_usb_chk_sta_convert(void);
  174. uint bsp_get_bat_level(void);
  175. void sd_soft_cmd_detect(u32 check_ms);
  176. #endif // __SYSTEM_H