#include "include.h" #include "func.h" #include "app_variable.h" #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif #define FINDPHONE_POS_Y_MAX 74 #define FINDPHONE_POS_Y_MIN 54 #define FINDPHONE_FIND_TIME_MAX 5000 typedef struct f_findphone_t_ { u8 cur_sta; u16 pos_xy; u8 flag_find; u32 find_tick; u8 index_num; } f_findphone_t; enum { COMPO_ID_TEXT_FIND = 1, COMPO_ID_PIC_FIND, COMPO_ID_PIC_FIND_TEXT, COMPO_ID_PIC_FIND_CLICK, }; //查找手机检测状态 enum { FP_STA_IDLE, //空闲 FP_STA_WORKING, //查找中 }; //创建查找手机窗体 compo_form_t *func_findphone_form_create(void) { //新建窗体 compo_form_t *frm = compo_form_create(true); //设置标题栏 compo_form_set_mode(frm, COMPO_FORM_MODE_SHOW_TITLE | COMPO_FORM_MODE_SHOW_TIME); compo_form_set_title(frm, i18n[STR_FIND_PHONE]); //新建图像 compo_form_add_image(frm, UI_BUF_COMMON_FIND_PHONE_BIN, GUI_SCREEN_CENTER_X-3, GUI_SCREEN_CENTER_Y-13); // compo_picturebox_t *pic; // pic = compo_picturebox_create(frm, UI_BUF_COMMON_FIND_PHONE_BIN); // compo_setid(pic, COMPO_ID_PIC_FIND); // compo_picturebox_set_pos(pic, GUI_SCREEN_CENTER_X, 42+32); //创建动画 compo_picturebox_t *pic; pic = compo_picturebox_create(frm, UI_BUF_REMIND_FIND_DT_BIN); compo_picturebox_cut(pic, 0, 3); //默认第1张图 compo_picturebox_set_pos(pic, GUI_SCREEN_CENTER_X+2, GUI_SCREEN_CENTER_Y-16); compo_picturebox_set_size(pic, 30, 30); compo_setid(pic, COMPO_ID_PIC_FIND); // compo_animation_t *animation = compo_animation_create(frm, UI_BUF_REMIND_FIND_DT_BIN); // compo_animation_set(animation,UI_BUF_REMIND_FIND_DT_BIN); // compo_animation_set_radix(animation, 3); // compo_animation_set_pos(animation, GUI_SCREEN_CENTER_X+2, GUI_SCREEN_CENTER_Y-16); // // compo_animation_set_size(animation, 30, 30); // // compo_animation_set_interval(animation, 70); // compo_setid(animation, COMPO_ID_PIC_FIND); //创建矩形 widget_rect_t *rect = widget_rect_create(frm->page); widget_rect_set_color(rect,make_color(0, 228, 198)); widget_set_location(rect, GUI_SCREEN_CENTER_X, 122+13, 116, 26); widget_rect_set_radius(rect,14); //创建按钮 compo_button_t *btn = compo_button_create(frm); compo_setid(btn, COMPO_ID_PIC_FIND_CLICK); compo_button_set_location(btn, GUI_SCREEN_CENTER_X, 122+13, 116, 26); //新建文字 compo_textbox_t *txt = compo_textbox_create(frm, 100); compo_setid(txt, COMPO_ID_PIC_FIND_TEXT); compo_textbox_set_location(txt, GUI_SCREEN_CENTER_X, 122+13, 96, 30); compo_textbox_set(txt, i18n[STR_FIND_PHONE]); compo_textbox_set_align_center(txt, true); compo_textbox_set_autoroll_mode(txt, TEXT_AUTOROLL_MODE_SROLL_CIRC); return frm; } static void func_findphone_stop(void) { f_findphone_t *f_act = (f_findphone_t *)func_cb.f_cb; compo_picturebox_t *pic = compo_getobj_byid(COMPO_ID_PIC_FIND); compo_textbox_t *text = compo_getobj_byid(COMPO_ID_PIC_FIND_TEXT); if (f_act == NULL || pic == NULL || text == NULL) return; bsp_motor_stop(MOTOR_PORT); Send_Protocol_Stop_FindPhone(); compo_textbox_set(text, i18n[STR_FIND_PHONE]); // compo_picturebox_set_size(pic, gui_image_get_size(UI_BUF_COMMON_FIND_PHONE_BIN).wid, // gui_image_get_size(UI_BUF_COMMON_FIND_PHONE_BIN).hei); f_act->cur_sta = FP_STA_IDLE; if(bt_a2dp_is_connected() == 0) { bt_a2dp_profile_en(); } } //查找手机功能事件处理 static void func_findphone_process(void) { f_findphone_t *f_act = (f_findphone_t *)func_cb.f_cb; compo_picturebox_t *pic = compo_getobj_byid(COMPO_ID_PIC_FIND); // compo_animation_t *animation = compo_getobj_byid(COMPO_ID_PIC_FIND); static u32 ticks = 0; // if (animation->interval == 0) { // return; // } // 判断 蓝牙是否连接 if ((SysVariable.ble_state == TRUE)) { if ((f_act->cur_sta == FP_STA_WORKING)) { if (tick_check_expire(f_act->find_tick, FINDPHONE_FIND_TIME_MAX)) { func_findphone_stop(); return; } // 开始查找手机 if (tick_check_expire(ticks, 300)) { ticks = tick_get(); f_act->index_num++; if (f_act->index_num > 2) { f_act->index_num = 0; } compo_picturebox_cut(pic,f_act->index_num,3); // if (f_act->pos_xy <= FINDPHONE_POS_Y_MAX && f_act->flag_find) // { // f_act->pos_xy++; // } // else // { // f_act->flag_find = 0; // f_act->pos_xy--; // if (f_act->pos_xy <= FINDPHONE_POS_Y_MIN) // { // f_act->flag_find = 1; // } // } } // compo_picturebox_set_size(pic, f_act->pos_xy, f_act->pos_xy); } else{ compo_picturebox_cut(pic,0,3); } } else{ compo_picturebox_cut(pic,0,3); } func_process(); } //按键事件处理 static void func_findphone_click(void) { f_findphone_t *f_act = (f_findphone_t *)func_cb.f_cb; compo_textbox_t *text = compo_getobj_byid(COMPO_ID_PIC_FIND_TEXT); static u32 ticks = 0; int id = compo_get_button_id(); switch (id) { case COMPO_ID_PIC_FIND_CLICK: if ((SysVariable.ble_state == TRUE)) { if (f_act->cur_sta == FP_STA_IDLE) { Send_Protocol_FindPhone(); if (bt_a2dp_is_connected() == 1) { bt_a2dp_profile_dis(); } sys_cb.motor_flag = 1; set_func_motor(80, 2, 2, 1); f_act->cur_sta = FP_STA_WORKING; f_act->find_tick = tick_get(); compo_textbox_set(text, i18n[STR_FIND_PHONEING]); } else { func_findphone_stop(); } } else { if (f_act->cur_sta == FP_STA_WORKING) { func_findphone_stop(); } else { func_popup_new(POPUP_ID_BLE_REMIND); } } break; default: break; } } //查找手机功能消息处理 static void func_findphone_message(size_msg_t msg) { switch (msg) { case MSG_CTP_CLICK: func_findphone_click(); break; case MSG_CTP_SHORT_UP: break; case MSG_CTP_SHORT_DOWN: break; case MSG_CTP_SHORT_RIGHT: func_message(msg); break; case MSG_CTP_LONG: break; case KU_BACK: func_back_to(); break; default: func_message(msg); break; } } //进入查找手机功能 static void func_findphone_enter(void) { func_cb.f_cb = func_zalloc(sizeof(f_findphone_t)); func_cb.frm_main = func_findphone_form_create(); f_findphone_t *f_act = (f_findphone_t *)func_cb.f_cb; f_act->pos_xy = 64; f_act->index_num = 0; f_act->cur_sta = FP_STA_IDLE; } //退出查找手机功能 static void func_findphone_exit(void) { //关闭查找手机 Send_Protocol_Stop_FindPhone(); func_cb.last = FUNC_FINDPHONE; if(bt_a2dp_is_connected() == 0) { bt_a2dp_profile_en(); } } //查找手机功能 void func_findphone(void) { printf("%s\n", __func__); func_findphone_enter(); while (func_cb.sta == FUNC_FINDPHONE) { func_findphone_process(); func_findphone_message(msg_dequeue()); } func_findphone_exit(); }