mcu_ab568x/app/projects/AB5682C_128/functions/func_camera.c
2025-05-30 18:03:10 +08:00

206 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "include.h"
#include "func.h"
#include "m_sportInfo.h"
#include "api.h"
#include "ancs_msg.h"
#include "m_storage.h"
#include "app_variable.h"
#if TRACE_EN
#define TRACE(...) printf(__VA_ARGS__)
#else
#define TRACE(...)
#endif
typedef struct f_camera_t_ {
u32 enter_tick;
} f_camera_t;
enum {
COMPO_ID_BTN_CAMERA = 1,
};
/* 拍照界面亮屏最小时间 */
#define FUNC_CAMERA_SHOW_MIN_TIME 600 // 60s
static u32 camera_temp_sleep_time = 0;
//创建相机窗体,创建窗体中不要使用功能结构体 func_cb.f_cb
compo_form_t *func_camera_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_CAMERA]);
if((SysVariable.ble_state == TRUE))
{
compo_form_add_image(frm, UI_BUF_CAMERA_CAMERA_BIN, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y+ 5);
}
else{
compo_form_add_image(frm, UI_BUF_CAMERA_ICON_CAMERA_BIN, GUI_SCREEN_CENTER_X-3, GUI_SCREEN_CENTER_Y-13);
//创建文本
compo_textbox_t *txt = compo_textbox_create(frm, 110);
// compo_textbox_set_align_center(txt, true);
compo_textbox_set_multiline(txt, true);
compo_textbox_set_location(txt, GUI_SCREEN_CENTER_X, 125,106,45);
compo_textbox_set_autosize(txt, false);
compo_textbox_set_autoroll_mode(txt, TEXT_AUTOROLL_MODE_SROLL_CIRC);
compo_textbox_set(txt, i18n[STR_CONNECT_PHONE]);//STR_CAMERA_DISCONNECTION
}
//创建按钮
compo_button_t *btn = compo_button_create(frm);
compo_setid(btn, COMPO_ID_BTN_CAMERA);
compo_button_set_location(btn, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y+ 5, 54, 54);
// //新建按钮
// compo_button_t *btn;
// btn = compo_button_create_by_image(frm, UI_BUF_COMMON_BUTTON_BIN);
// compo_button_set_pos(btn, 160, 336);
//创建文本
// compo_textbox_t *txt = compo_textbox_create(frm, 110);
// // compo_textbox_set_align_center(txt, true);
// compo_textbox_set_multiline(txt, false);
// compo_textbox_set_location(txt, 120, 115,100,20);
// compo_textbox_set_autosize(txt, false);
// compo_textbox_set_autoroll_mode(txt, TEXT_AUTOROLL_MODE_SROLL_CIRC);
// compo_textbox_set(txt, i18n[STR_CAMERA_DISCONNECTION]);
return frm;
}
//按键事件处理
static void func_camera_click(void)
{
int id = compo_get_button_id();
switch (id) {
case COMPO_ID_BTN_CAMERA:
if(ble_is_connected()){
printf("COMPO_ID_BTN_CAMERA");
sys_cb.motor_flag = 1;
set_func_motor(80,2,2,1);
PROTOCOL_TaskPhoto_Start();
}
break;
default:
break;
}
}
// compo_form_add_image(frm, UI_BUF_CAMERA_ICON_CAMERA_BIN, GUI_SCREEN_CENTER_X-10, GUI_SCREEN_CENTER_Y-25);
// static void func_camera_animation(void)
// {
// f_camera_t *f_logo_switching = (f_camera_t *)func_cb.f_cb;
// if(tick_check_expire(func_cb.enter_tick, 5000)) {
// func_cb.sta = FUNC_CLOCK;
// }
// }
//相机功能事件处理
static void func_camera_process(void)
{
// func_camera_animation();
func_process();
}
/* true:公共处理占用中false:空闲 */
volatile bool camera_event_state = false;
volatile bool func_camera_sta_get(void)
{
return camera_event_state;
}
//相机功能消息处理
static void func_camera_message(size_msg_t msg)
{
switch (msg) {
case MSG_CTP_CLICK:
func_camera_click();
break;
case MSG_CTP_SHORT_UP:
break;
case MSG_CTP_SHORT_DOWN:
break;
case MSG_CTP_LONG:
break;
case KU_BACK:
camera_event_state = true;
func_back_to();
camera_event_state = false;
break;
case MSG_CTP_SHORT_LEFT:
case MSG_CTP_SHORT_RIGHT:
camera_event_state = true;
func_message(msg);
camera_event_state = false;
break;
default:
func_message(msg);
break;
}
}
//进入相机功能
static void func_camera_enter(void)
{
func_cb.f_cb = func_zalloc(sizeof(f_camera_t));
func_cb.frm_main = func_camera_form_create();
// func_cb.enter_tick = tick_get();
if(ble_is_connected()){
SysVariable.rockFlag = true;
DeviveControlAppOpenCamera(DEV_CAMERA_OPEN);
}
}
//退出相机功能
static void func_camera_exit(void)
{
SysVariable.rockFlag = false;
/* 临时更改过亮屏时间,恢复原本时间 */
if (camera_temp_sleep_time) {
SysVariable.sleep_time = camera_temp_sleep_time;
SysVariable.guioff_delay = SysVariable.sleep_time;
SysVariable.sleep_delay = SysVariable.sleep_time;
}
if (SysVariable.password_allow_push)
SysVariable.password_allow_push = false;
DeviveControlAppOpenCamera(DEV_CAMERA_CLOSE);
func_cb.last = FUNC_CAMERA;
camera_event_state = false;
bsp_motor_stop(MOTOR_PORT);
}
//相机功能
void func_camera(void)
{
printf("%s\n", __func__);
func_camera_enter();
/* 如果亮屏时间小于一分钟,临时改成亮屏至少一分钟 */
if (SysVariable.sleep_time < FUNC_CAMERA_SHOW_MIN_TIME) {
camera_temp_sleep_time = SysVariable.sleep_time;
SysVariable.sleep_time = FUNC_CAMERA_SHOW_MIN_TIME;
SysVariable.guioff_delay = SysVariable.sleep_time;
SysVariable.sleep_delay = SysVariable.sleep_time;
} else {
camera_temp_sleep_time = 0;
}
while (func_cb.sta == FUNC_CAMERA) {
func_camera_process();
func_camera_message(msg_dequeue());
}
func_camera_exit();
}