#include "include.h" #include "func.h" #include "app_variable.h" #include "protocol_device.h" #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif #define FINDPHONE_POS_ICON_RIGHT 127 #define FINDPHONE_POS_ICON_DOWN GUI_SCREEN_CENTER_Y+7 #define FINDPHONE_POS_ICON_LEFT 113 #define FINDPHONE_POS_ICON_UP GUI_SCREEN_CENTER_Y-7 #define FINDPHONE_FIND_TIME_MAX 5000 typedef struct f_findphone_t_ { u8 cur_sta; u16 pos_x; u16 pos_y; u8 flag_find; u32 find_tick; bool music_flag; //是否在播放音乐标志位 u8 pos_flag; } f_findphone_t; enum { COMPO_ID_TEXT_FIND = 1, COMPO_ID_PIC_FIND, COMPO_ID_PIC_FIND_TEXT, COMPO_ID_PIC_FIND_CLICK, COMPO_ID_PIC_FIND_ICON, }; //查找手机检测状态 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_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, 78+60); //创建矩形 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, 230+25, 216, 50); 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, 230+25, 216, 50); //创建按钮 // btn = compo_button_create_by_image(frm, UI_BUF_COMMON_BG_GREEN_BIN); // compo_setid(btn, COMPO_ID_PIC_FIND_CLICK); // compo_button_set_pos(btn, GUI_SCREEN_CENTER_X, 230+25); //新建文字 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, 230+25, 180, 30); compo_textbox_set(txt, i18n[STR_FIND_PHONE1]); compo_textbox_set_align_center(txt, true); compo_textbox_set_autoroll_mode(txt, TEXT_AUTOROLL_MODE_SROLL_CIRC); //放大境 compo_picturebox_create_coordinate(frm,UI_BUF_FIND_PHONE_ICON_BIN,GUI_SCREEN_CENTER_X,GUI_SCREEN_CENTER_Y,COMPO_ID_PIC_FIND_ICON,true); return frm; } static void func_findphone_stop(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); compo_picturebox_t *icon = compo_getobj_byid(COMPO_ID_PIC_FIND_ICON); if (f_act == NULL || text == NULL) return; bsp_motor_stop(MOTOR_PORT); Send_Protocol_Stop_FindPhone(); compo_textbox_set(text, i18n[STR_FIND_PHONE1]); f_act->cur_sta = FP_STA_IDLE; #ifdef TJD_SETTING_AUDIO_SWITCH if(bt_a2dp_is_connected() == 0 && SysVariable.bt_a2dp_profile_state){ #else if(bt_a2dp_is_connected() == 0){ #endif printf("[%s %d][bt_a2dp_profile_en() <<<<<<<<<<<<<<]\n", __func__, __LINE__); bt_a2dp_profile_en(); } f_act->pos_x=GUI_SCREEN_CENTER_X; f_act->pos_y=GUI_SCREEN_CENTER_Y+7; f_act->pos_flag=0; compo_picturebox_set_pos(icon,GUI_SCREEN_CENTER_X,GUI_SCREEN_CENTER_Y); } //查找手机功能事件处理 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_picturebox_t *icon = compo_getobj_byid(COMPO_ID_PIC_FIND_ICON); static u32 ticks = 0; // 判断 蓝牙是否连接 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, 25)) { ticks = tick_get(); if (f_act->pos_x <= FINDPHONE_POS_ICON_RIGHT&&f_act->pos_flag==0) { f_act->pos_x++; f_act->pos_y--; if(f_act->pos_x == FINDPHONE_POS_ICON_RIGHT) f_act->pos_flag=1; } else if(f_act->pos_y >= FINDPHONE_POS_ICON_UP&&f_act->pos_flag==1) { f_act->pos_x--; f_act->pos_y--; if(f_act->pos_y == FINDPHONE_POS_ICON_UP) f_act->pos_flag=2; } else if(f_act->pos_x >= FINDPHONE_POS_ICON_LEFT&&f_act->pos_flag==2) { f_act->pos_x--; f_act->pos_y++; if(f_act->pos_x == FINDPHONE_POS_ICON_LEFT) f_act->pos_flag=3; } else { f_act->pos_x++; f_act->pos_y++; if(f_act->pos_y == FINDPHONE_POS_ICON_DOWN) f_act->pos_flag=0; } } compo_picturebox_set_pos(icon,f_act->pos_x,f_act->pos_y); } else{/* f_act->pos_x=GUI_SCREEN_CENTER_X; f_act->pos_y=GUI_SCREEN_CENTER_Y+7; f_act->pos_flag=0; compo_picturebox_set_pos(icon,GUI_SCREEN_CENTER_X,GUI_SCREEN_CENTER_Y);*/ } } 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); int id = compo_get_button_id(); switch (id) { case COMPO_ID_PIC_FIND_CLICK: if ((SysVariable.ble_state == TRUE)) { if (bt_get_status() == BT_STA_PLAYING) { f_act->music_flag = true; bt_music_pause(); } else { f_act->music_flag = false; } if (f_act->cur_sta == FP_STA_IDLE) { Send_Protocol_FindPhone(); if (bt_a2dp_is_connected()) { printf("[%s %d][bt_a2dp_profile_dis() <<<<<<<<<<<<<<]\n", __func__, __LINE__); 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) { f_findphone_t *f_act = (f_findphone_t *)func_cb.f_cb; 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: if (f_act->cur_sta == FP_STA_WORKING) { func_findphone_stop(); } 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->cur_sta = FP_STA_IDLE; f_act->pos_x=GUI_SCREEN_CENTER_X; f_act->pos_y=GUI_SCREEN_CENTER_Y+7; f_act->pos_flag=0; } //退出查找手机功能 static void func_findphone_exit(void) { //关闭查找手机 printf("%s\n", __func__); Send_Protocol_Stop_FindPhone(); func_cb.last = FUNC_FINDPHONE; #ifdef TJD_SETTING_AUDIO_SWITCH if(bt_a2dp_is_connected() == 0 && SysVariable.bt_a2dp_profile_state) #else if(bt_a2dp_is_connected() == 0) #endif { bt_a2dp_profile_en(); } printf("%s22\n", __func__); } //查找手机功能 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(); }