203 lines
8.9 KiB
C
203 lines
8.9 KiB
C
#ifndef _FUNC_H
|
|
#define _FUNC_H
|
|
|
|
#include "common/msgbox.h"
|
|
#include "common/listbox.h"
|
|
#include "common/func_switching.h"
|
|
#include "func_clock.h"
|
|
#include "func_bt.h"
|
|
#include "common/func_idle.h"
|
|
#include "common/func_lowpwr.h"
|
|
#include "func_bt_dut.h"
|
|
#include "func_manage.h"
|
|
#include "func_popup.h"
|
|
|
|
#define TICK_IGNORE_KEY 700 //忽略700ms内的部分消息
|
|
|
|
//task number
|
|
enum {
|
|
FUNC_NULL = 0,
|
|
FUNC_MENU, //主菜单
|
|
FUNC_CLOCK, //时钟表盘
|
|
FUNC_CLOCK_PREVIEW, //时钟表盘预览
|
|
FUNC_SIDEBAR, //表盘右滑
|
|
FUNC_CARD, //表盘上拉
|
|
FUNC_HEARTRATE, //心率
|
|
FUNC_BT, //蓝牙播放器(控制手机音乐)
|
|
FUNC_COMPO_SELECT, //组件选择
|
|
FUNC_COMPO_SELECT_SUB, //组件选择子界面
|
|
FUNC_BT_RING, //来电界面
|
|
FUNC_BT_CALL, //通话界面
|
|
FUNC_BT_END, //挂机界面
|
|
FUNC_ALARM_CLOCK, //闹钟
|
|
FUNC_ALARM_CLOCK_SUB_SET, //闹钟--设置
|
|
FUNC_ALARM_CLOCK_SUB_REPEAT, //闹钟--重复
|
|
FUNC_ALARM_CLOCK_SUB_EDIT, //闹钟--编辑
|
|
FUNC_BLOOD_OXYGEN, //血氧
|
|
FUNC_BLOODSUGAR, //血糖
|
|
FUNC_BLOOD_PRESSURE, //血压
|
|
FUNC_BREATHE, //呼吸
|
|
FUNC_CALCULATOR, //计算器
|
|
FUNC_CAMERA, //相机
|
|
FUNC_LIGHT, //亮度调节
|
|
FUNC_TIMER, //定时器
|
|
FUNC_SLEEP, //睡眠
|
|
FUNC_STOPWATCH, //秒表
|
|
FUNC_STOPWATCH_SUB_RECORD, //秒表--秒表记录
|
|
FUNC_WEATHER, //天气
|
|
FUNC_GAME, //游戏
|
|
FUNC_STYLE, //菜单风格
|
|
FUNC_ALTITUDE, //海拔
|
|
FUNC_MAP, //地图
|
|
FUNC_MESSAGE, //消息
|
|
FUNC_MESSAGE_PUSH, //消息推送
|
|
FUNC_SCAN, //扫一扫
|
|
FUNC_VOICE, //语音助手
|
|
FUNC_ALIPAY, //支付宝
|
|
FUNC_COMPASS, //指南针
|
|
FUNC_ADDRESS_BOOK, //电话簿
|
|
FUNC_CALL_SUB_LINKMAN = FUNC_ADDRESS_BOOK,
|
|
FUNC_SPORT, //运动
|
|
FUNC_SPORT_CONFIG, //运动配置
|
|
FUNC_SPORT_SUB_RUN, //运动--室内跑步
|
|
FUNC_SPORT_SWITCH, //运动开启
|
|
FUNC_CALL, //电话
|
|
FUNC_CALL_SUB_RECORD, //电话-最近通话
|
|
FUNC_CALL_SUB_DIAL, //电话-拨打电话
|
|
FUNC_FINDPHONE, //寻找手机
|
|
FUNC_CALENDAER, //日历
|
|
FUNC_VOLUME, //音量
|
|
FUNC_ACTIVITY, //活动记录
|
|
FUNC_FLASHLIGHT, //手电筒
|
|
FUNC_SETTING, //设置
|
|
FUNC_SET_SUB_DOUSING, //设置--熄屏
|
|
FUNC_SET_SUB_WRIST, //设置--抬腕
|
|
FUNC_PERSONALINFO, //设置--个人信息
|
|
FUNC_SET_SUB_DISTURD, //设置--勿扰
|
|
FUNC_SET_GENERAL, //设置--通用
|
|
FUNC_FACTORY_TEST, //工厂测试模式
|
|
FUNC_DISTURD_SUB_SET, //勿扰--时间设置
|
|
FUNC_SET_SUB_SAV, //设置--声音与振动
|
|
FUNC_SET_SUB_LANGUAGE, //设置--语言
|
|
FUNC_LANGUAGE = FUNC_SET_SUB_LANGUAGE,
|
|
FUNC_SET_SUB_TIME, //设置--时间
|
|
FUNC_TIME_SUB_SETDATE, //设置--调整日期
|
|
FUNC_SET_SUB_PASSWORD, //设置--密码锁
|
|
FUNC_PASSWORD_SUB_DISP, //新密码锁设置
|
|
FUNC_PASSWORD_SUB_SELECT, //确认密码锁
|
|
FUNC_SET_SUB_ABOUT, //设置--关于
|
|
FUNC_SET_SUB_RESTART, //设置--重启
|
|
FUNC_RESTART = FUNC_SET_SUB_RESTART,//重启
|
|
FUNC_SET_SUB_RSTFY, //设置--恢复出厂
|
|
FUNC_RSTFY = FUNC_SET_SUB_RSTFY,
|
|
FUNC_SET_SUB_OFF, //设置--关机
|
|
FUNC_OFF = FUNC_SET_SUB_OFF, //关机
|
|
FUNC_MUSIC,
|
|
FUNC_BTHID,
|
|
FUNC_USBDEV,
|
|
FUNC_AUX,
|
|
FUNC_SPDIF,
|
|
FUNC_SPEAKER,
|
|
FUNC_PWROFF,
|
|
FUNC_SLEEPMODE,
|
|
FUNC_I2S,
|
|
FUNC_BT_DUT,
|
|
FUNC_IDLE,
|
|
FUNC_CHARGE,
|
|
FUNC_DEBUG_INFO,
|
|
FUNC_FIND_DEVICE,
|
|
FUN_POWER_ON_LOGO, //开机logo
|
|
FUN_POWER_OFF_LOGO, //关机logo
|
|
FUNC_REMIND_ALARM, //闹钟--编辑
|
|
FUN_REMIND_SIT, //久坐提醒
|
|
FUN_REMIND_DRINK, //喝水提醒
|
|
FUN_DIAL_PUSH, //OTA提示
|
|
FUN_REMIND_DISCONNECT, //蓝牙未连接
|
|
FUN_REMIND_PUSH, //推送提醒
|
|
FUNC_SPORT_PAUSE, //运动暂停
|
|
FUNC_SPORT_END_DETAIL, //运动结束详情界面
|
|
FUNC_SET_TIMETYPE, //设置时制【24h/12h】
|
|
FUNC_SET_TIME, //设置时间
|
|
FUNC_SET_QQ, //qq
|
|
FUNC_SET_WECHAT, //微信
|
|
FUNC_SET_FACEBOOK, //FACEBOOK
|
|
FUNC_SET_TWITTER, //TWITTER
|
|
FUNC_SET_WHATSAPP, //WHATSAPP
|
|
FUNC_SET_SUB_KEY_DEFINITIONS, //设置-按键定义
|
|
FUNC_SET_SUB_NOTICE, //设置--通知
|
|
// FUNC_SUB_KEY, //按键测试
|
|
// FUNC_SUB_SCREEN, //屏幕测试
|
|
// FUNC_SUB_MOTOR, //马达测试
|
|
// FUNC_SUB_RING, //铃声测试
|
|
FUNC_FACTORY_TEST_DETAILS, //工厂测试详情页
|
|
FUNC_FARWAY_HAND, //脱腕检测
|
|
FUNC_MAX_NUM, //用于计数
|
|
};
|
|
|
|
|
|
//task control block
|
|
typedef struct {
|
|
void *f_cb; //当前任务控制指针
|
|
compo_form_t *frm_main; //当前窗体
|
|
void *msg_cb; //对话框控制指针
|
|
u32 enter_tick; //记录进入func的tick
|
|
u8 sta; //cur working task number
|
|
u8 last; //lask task number
|
|
u8 menu_style; //菜单样式
|
|
u8 menu_idx; //菜单编号
|
|
int32_t menu_idx_angle; //菜单编号角度
|
|
u8 sta_break; //被中断的任务
|
|
u8 sort_cnt; //快捷任务个数
|
|
u8 tbl_sort[MAX_FUNC_SORT_CNT]; //快捷任务表
|
|
u8 flag_sort : 1, //已进入快捷任务
|
|
flag_animation : 1; //入场动画
|
|
|
|
void (*mp3_res_play)(u32 addr, u32 len); //各任务的语音播报函数接口
|
|
void (*set_vol_callback)(u8 dir); //设置音量的回调函数,用于各任务的音量事件处理。
|
|
} func_cb_t;
|
|
|
|
|
|
extern func_cb_t func_cb;
|
|
extern const u8 func_sort_table[]; //任务切换排序table
|
|
extern const compo_listbox_item_t tbl_sport_list[];
|
|
ALWAYS_INLINE void func_mp3_res_play(u32 addr, u32 len)
|
|
{
|
|
if (func_cb.mp3_res_play) {
|
|
func_cb.mp3_res_play(addr, len);
|
|
}
|
|
}
|
|
|
|
ALWAYS_INLINE void func_set_vol_callback(u8 dir)
|
|
{
|
|
if (func_cb.set_vol_callback) {
|
|
func_cb.set_vol_callback(dir);
|
|
}
|
|
}
|
|
|
|
void func_run(void);
|
|
compo_form_t *func_create_form(u8 sta); //根据任务名创建窗体
|
|
|
|
void func_switch_prev(bool flag_auto);
|
|
void func_switch_next(bool flag_auto,bool flag_loop);
|
|
|
|
u8 get_funcs_total(void);
|
|
void func_process(void);
|
|
void func_message(size_msg_t msg);
|
|
void evt_message(size_msg_t msg);
|
|
|
|
void func_switch_to(u8 sta, u16 switch_mode);
|
|
void func_switching_to_menu(void);
|
|
void func_backing_to(void); // 页面滑动回退功能
|
|
void func_back_to(void); // 页面按键回退功能
|
|
u8 func_directly_back_to(void); // 页面直接回退,无动画效果
|
|
bool func_switch_to_assign_screen(int select_sta, bool is_destroy_cur); // 进入指定界面(区分优先级)
|
|
void func_switch_to_clock(void);
|
|
void func_switch_to_menu(void);
|
|
extern void func_clock_sub_card(void);
|
|
extern u32 func_duty;
|
|
extern u32 func_vibrationtimes;
|
|
extern u32 func_interval;
|
|
extern u32 func_cnt;
|
|
void set_func_motor(u32 duty, u32 vibrationtimes, u32 interval, u32 cnt);
|
|
#endif // _FUNC_H
|