mcu_ab568x/app/platform/bsp/bsp_sys.h
2025-05-30 18:03:10 +08:00

226 lines
11 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _BSP_SYS_H
#define _BSP_SYS_H
#define VOL_MAX xcfg_cb.vol_max //最大音量级数
//控制位汇总
#define SYS_CTL_BT 0 //蓝牙开关
#define SYS_CTL_CALL_RING 1 //来电铃声
#define SYS_CTL_ACLOCK_MON 2 //闹钟设置星期一
#define SYS_CTL_ACLOCK_TUE 3 //闹钟设置星期二
#define SYS_CTL_ACLOCK_WED 4 //闹钟设置星期三
#define SYS_CTL_ACLOCK_THU 5 //闹钟设置星期四
#define SYS_CTL_ACLOCK_FRI 6 //闹钟设置星期五
#define SYS_CTL_ACLOCK_SAT 7 //闹钟设置星期六
#define SYS_CTL_ACLOCK_SUN 8 //闹钟设置星期日
#define SYS_CTL_ACLOCK1_ON 9 //闹钟1开关
#define SYS_CTL_ACLOCK2_ON 10 //闹钟2开关
#define SYS_CTL_ACLOCK3_ON 11 //闹钟3开关
#define SYS_CTL_FUNC_SPORT_ON 12 //运动功能界面选择
#define SYS_CTL_FUNC_SLEEP_ON 13 //睡眠功能界面选择
#define SYS_CTL_FUNC_ACTIVITY_ON 14 //活动数据功能界面选择
#define SYS_CTL_FUNC_HEART_ON 15 //心率功能界面选择
#define SYS_CTL_FUNC_SPO2_ON 16 //血氧功能界面选择
#define SYS_CTL_FUNC_HRV_ON 17 //血压功能界面选择
#define SYS_CTL_FUNC_BT_CALL_ON 18 //电话功能界面选择
#define SYS_CTL_FUNC_WEATHER_ON 19 //天气功能界面选择
#define SYS_CTL_FUNC_MUSIC_ON 20 //音乐功能界面选择
#define SYS_CTL_FUNC_BREATHE_ON 21 //呼吸训练功能界面选择
#define SYS_CTL_FUNC_SMS_ON 22 //消息功能界面选择
#define SYS_CTL_FUNC_GAME_ON 23 //游戏功能界面选择
#define SYS_CTL_FUNC_CALCUL_ON 24 //计算器功能界面选择
#define SYS_CTL_FUNC_ALARM_ON 25 //闹钟功能界面选择
#define SYS_CTL_FUNC_TIMER_ON 26 //定时器功能界面选择
#define SYS_CTL_FUNC_STODWATCH_ON 27 //秒表功能界面选择
#define SYS_CTL_FUNC_SETTINGS_ON 28 //设置功能界面选择
#define SYS_CTL_FUNC_STYLE_ON 29 //风格功能界面选择
#define SYS_CTL_FUNC_FLASHLIGHT_ON 30 //手电筒功能界面选择
#define SYS_CTL_KEY_DEF_SPORT_ON 31 //快捷键定义:运动
#define SYS_CTL_KEY_DEF_HEART_ON 32 //快捷键定义:心率
#define SYS_CTL_KEY_DEF_WEATHER_ON 33 //快捷键定义:天气
#define SYS_CTL_KEY_DEF_ALARM_ON 34 //快捷键定义:闹钟
#define SYS_CTL_KEY_DEF_FLASHLIGHT_ON 35 //快捷键定义:手电筒
#define SYS_CTL_KEY_DEF_STODWATCH_ON 36 //快捷键定义:秒表
#define SYS_CTL_TOTAL_BITS 256
#define SYS_CTL_TOTAL_BYTES ((SYS_CTL_TOTAL_BITS + 7) / 8) //系统控制位
//功能
#define ALARM_CLOCK_NUM_MAX 3 //闹钟最大数量需要同步修改列表item
#define STOPWATCH_REC_NUM_MAX 10 //秒表最大数量需要同步修改列表item
#define WEATHER_CNT 13 //天气类型数量
typedef struct {
//控制位
u8 ctl_bits[SYS_CTL_TOTAL_BYTES]; //控制位汇总
//TE控制相关
bool tft_bglight_kick; //背光控制
u8 tft_bglight_last_duty; //背光pwm上一次占空比
bool tft_bglight_frist_set;
bool te_mode;
bool te_mode_next;
u8 te_bglight_cnt; //在收到需要打开背光控制时,推完第一帧数据后延时打开背光
u8 despi_baud;
u8 despi_baud1;
u8 despi_baud2;
u8 play_mode;
u8 vol;
u8 hfp_vol;
u8 eq_mode;
u8 cur_dev;
u8 lang_id;
u8 ble_dial_updated; //0:预设表盘 1推送过的表盘 2恢复出厂后的状态表盘无效
u8 lpwr_warning_cnt;
u8 lpwr_warning_times; //播报低电次数0xff表示一直播
u8 vbat_nor_cnt;
s8 gain_offset; //用于动态修改系统音量表
u8 hfp2sys_mul; //系统音量与HFP音量倍数手机HFP音量只有16级。
u8 lpwr_cnt; //低电计数
#if DAC_DNR_EN
u8 dnr_sta; //动态降噪状态
#endif
u16 vbat; //当前电压值(mv)
u16 vbat_percent; //电量百分比
u16 kh_vol_msg;
u32 vusb;
u32 ms_ticks; //ms为单位
u32 rand_seed;
u32 sleep_exit_tick;
volatile u8 cm_times;
volatile u8 loudspeaker_mute; //功放MUTE标志
volatile u8 charge_sta; //0:充电关闭, 1充电开启 2充满
volatile u8 charge_bled_flag; //charge充满蓝灯常亮标志
volatile u8 ch_bled_cnt; //charge充满蓝灯亮时间计数
volatile u8 poweron_flag; //pwrkey开机标志
volatile u8 pwrdwn_hw_flag; //模拟硬开关,关机标志
volatile u8 incall_flag;
volatile u8 gui_sleep_sta;
volatile u8 motor_flag;
volatile u8 gui_need_wakeup;
volatile u8 off_show_clock;
volatile u8 off_show_count;
volatile u8 password_show;
///位变量不要用于需要在中断改值的变量。 请谨慎使用位变量,尽量少定义位变量。
u8 rtc_first_pwron : 1, //RTC是否第一次上电
mute : 1, //系统MUTE控制标志
cm_factory : 1, //是否第一次FLASH上电
cm_vol_change : 1, //音量级数是否需要更新到FLASH
port2led_en : 1, //1个IO推两个灯
voice_evt_brk_en : 1; //播放提示音时U盘、SD卡、LINEIN等插入事件是否立即响应.
u8 sleep_en : 1, //用于控制是否进入sleep
lowbat_flag : 1,
bt_reconn_flag : 1, //回连失败时候发起一键双连标志
chg_on : 1, //配合工作RTCCON8开个充电; 1打开状态0关闭状态
flag_pwroff : 1; //关机标志位
#if BT_MAP_EN
u8 map_retry;
#endif
//运动
u8 sport_idx; //运动列表编号
//设置
u8 set_idx; //设置菜单编号
//定时器
u8 timer_sta; //计时器工作状态0:未开启 1:正在计时 2:暂停 3:结束 4:复位)
u32 timer_total_sec; //当前计时器总时间 (单位:秒)
u32 timer_left_sec; //当前计时器剩余时间 (单位:秒)
u32 timer_custom_sec; //计时器自定义时间记忆值
u32 timer_tick; //运行Tick (单位:毫秒)
u32 timer_temp_tick; //暂停临时保存Tick时间
//秒表
u8 stopwatch_sta; //秒表工作状态0:暂停/复位 1:正在计时)
u32 stopwatch_total_msec; //当前秒表时间总计 (单位:毫秒)
u32 record_msec; //当前记录的时间 (单位:毫秒)
u32 stopwatch_temp_msec; //暂停时临时保存时间
u32 stopwatch_rec_view[STOPWATCH_REC_NUM_MAX]; //秒表最大记录
u8 stopwatch_rec_cnt; //秒表记录总数
u32 stopwatch_tick; //运行Tick (单位:毫秒)
//日期
u16 year;
u8 mon;
u8 day;
//呼吸训练
u8 breathe_duration; //训练时间
u8 breathe_mode; //训练模式 0:2,慢中快
//天气
// u8 weather_idx;
// s8 temperature[2]; //温度0:最低 1:最高)
//运动
// u16 step_cur;
// u16 step_goal;
// u8 distance_cur;
// u8 distance_goal;
// u8 kcal_cur;
// u8 kcal_goal;
char outgoing_number[20];
char outgoing_name[30];
u8 pop_id; //弹窗id
u8 wkp_flag;//计步唤醒休眠
u8 raise_hand;
u8 ble_flag;//ble唤醒休眠
u8 rtc_cal_cnt; //休眠后RTC校准次数可通过差值判断是否已校准
bool sco_state;
#if SECURITY_PAY_EN
//支付宝状态
bool alipay_state;
#endif // SECURITY_PAY_EN
u8 multiline_id; //多行文本id
bool app_gesture_flag; //app是否打开体感游戏界面标志位
bool rename_bt; //app是否打开体感游戏界面标志位
bool msg_motor; //熄屏时来消息震动标志位
u8 reconnect_flag;
u8 card_id; // 进入卡包二维码的id
bool rtc_flag; // RTC需校准唤醒标志
#if defined(TJD_MENU_ADD_BACKGROUND)
bool switch_flag; // 退出菜单界面标志位
#endif
#ifdef __SCREEN_DARK_CLOCK_SHOW__
bool raise_dark_clock; //抬手亮屏进入熄屏时钟界面
#endif
u8 tft_idle_count;
volatile u8 flush_is_activ;
} sys_cb_t;
extern sys_cb_t sys_cb;
extern volatile int micl2gnd_flag;
extern volatile u32 ticks_50ms;
typedef void (*isr_t)(void);
isr_t register_isr(int vector, isr_t isr);
void bsp_sys_init(void);
u8 bsp_sys_get_ctlbit(uint n); //获取系统控制位
void bsp_sys_set_ctlbit(uint n, u8 v); //设置系统控制位
void bsp_sys_reverse_ctlbit(uint n); //反转系统控制位
void bsp_sys_tm_update(void); //更新tm结构体
void bsp_update_init(void);
void timer1_irq_init(void);
void bsp_sys_mute(void);
void bsp_sys_unmute(void);
void bsp_clr_mute_sta(void);
bool bsp_get_mute_sta(void);
void bsp_loudspeaker_mute(void);
void bsp_loudspeaker_unmute(void);
void uart0_mapping_sel(void);
void linein_detect(void);
bool linein_micl_is_online(void);
void get_usb_chk_sta_convert(void);
void sd_soft_cmd_detect(u32 check_ms);
void print_info(void);
void huart_module_init(void);
void huart_wait_tx_finish(void);
void huart_putbuf(void *buf, u32 len);
void rtc_printf(void);
void my_msg_enqueue(u16 msg);
#endif // _BSP_SYS_H