#include "include.h" #include "func.h" #include "tjd_watch_transmit.h" #define TRACE_EN 0 #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif typedef struct f_dial_push_t_ { u32 enter_tick; u32 last_num; } f_dial_push_t; enum { COMPO_ID_ARC_START = 1, COMPO_ID_TEXT, }; extern PUSHDIAL_CMDDATA_T pushDialCmdData; // size, arc_w, rotation, s_angle, e_angle, content_color, bg_color static const int16_t push_arc_info[5] = { GUI_SCREEN_WIDTH/4*3, 20, 0, 0, 3600, //kcal }; //创建ota界面窗体 compo_form_t *func_dial_push_form_create(void) { //新建窗体 compo_form_t *frm = compo_form_create(true); //创建圆弧 compo_arc_t *arc = compo_arc_create(frm); compo_arc_set_alpha(arc, 0xff, 0); compo_arc_set_location(arc, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, push_arc_info[0], push_arc_info[0]); compo_arc_set_width(arc, push_arc_info[1]); compo_arc_set_rotation(arc, push_arc_info[2]); compo_arc_set_angles(arc, push_arc_info[3], push_arc_info[4]); compo_arc_set_color(arc, make_color(12,237,65), make_color(255,255,255)); compo_arc_set_value(arc, 0); compo_setid(arc, COMPO_ID_ARC_START); char buf_pect[10] = {0}; compo_textbox_t *txt = compo_textbox_create(frm, 10); compo_textbox_set_pos(txt, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_textbox_set_forecolor(txt, make_color(255,255,255)); compo_textbox_set_font(txt, UI_BUF_0FONT_FONT_DIN_LIGHT_NUM_15_BIN); snprintf(buf_pect, sizeof(buf_pect), "%d%%", (int)(pushDialCmdData.curPackNum / pushDialCmdData.totalPackNum)); compo_textbox_set(txt, buf_pect); compo_setid(txt, COMPO_ID_TEXT); return frm; } static void func_dial_push_animation(void) { char buf_pect[10] = {0}; f_dial_push_t *f_dial_push = (f_dial_push_t *)func_cb.f_cb; #if TRACE_EN pushDialCmdData.curPackNum = pushDialCmdData.totalPackNum; // if( pushDialCmdData.curPackNum > pushDialCmdData.totalPackNum) // pushDialCmdData.curPackNum = 0; #endif reset_sleep_delay_all(); // printf("func_dial_push_animation[%d,%d,%d]",f_dial_push->last_num,pushDialCmdData.curPackNum,pushDialCmdData.totalPackNum); if(f_dial_push->last_num != (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum) { f_dial_push->last_num = (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum; compo_arc_t *arc = compo_getobj_byid(COMPO_ID_ARC_START); compo_arc_set_value(arc, f_dial_push->last_num*10); compo_textbox_t *txt = compo_getobj_byid(COMPO_ID_TEXT); snprintf(buf_pect, sizeof(buf_pect), "%d%%", (int)(f_dial_push->last_num)); compo_textbox_set(txt, buf_pect); } } //ota界面能事件处理 static void func_dial_push_process(void) { func_dial_push_animation(); func_process(); } //ota界面功能消息处理 static void func_dial_push_message(size_msg_t msg) { switch (msg) { case MSG_CTP_CLICK: break; case MSG_CTP_SHORT_LEFT: case MSG_CTP_SHORT_RIGHT: case MSG_CTP_SHORT_DOWN: case MSG_CTP_SHORT_UP: case MSG_QDEC_FORWARD: case MSG_QDEC_BACKWARD: break; case KU_LEFT: case KU_RIGHT: case KU_BACK: break; case MSG_CTP_LONG: break; default: func_message(msg); break; } } //进入ota界面提醒功能 static void func_dial_push_enter(void) { // printf("func_dial_push_enter = %d",pushDialCmdData.totalPackNum); func_cb.f_cb = func_zalloc(sizeof(f_dial_push_t)); func_cb.frm_main = func_dial_push_form_create(); f_dial_push_t *f_dial_push = (f_dial_push_t *)func_cb.f_cb; f_dial_push->last_num = (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum; } //退出ota界面功能 static void func_dial_push_exit(void) { func_cb.last = FUN_DIAL_PUSH; SysVariable.dial_push_screen = false; } //ota界面功能 void func_dial_push(void) { printf("%s\n", __func__); #if TRACE_EN pushDialCmdData.curPackNum = 0; pushDialCmdData.totalPackNum = 10000; #endif SysVariable.dial_push_screen = true; func_dial_push_enter(); while (func_cb.sta == FUN_DIAL_PUSH || pushDialCmdData.work) { func_dial_push_process(); func_dial_push_message(msg_dequeue()); } func_dial_push_exit(); }