#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