226 lines
11 KiB
C
226 lines
11 KiB
C
#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
|
||
|