#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_MIC_TEST, //麦克风测试 FUNC_FARWAY_HAND, //脱腕检测 FUNC_GESTURE_GAME, 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