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

131 lines
3.2 KiB
C
Raw Permalink 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_screentest_t_ {
u32 enter_tick;
} f_screentest_t;
enum {
COMPO_ID_BTN = 1,
};
static u32 ticks = 0;
static int color_index = 0;
static u32 color_tab[] = {0xFFFF, 0xF800, 0x07E0,0x001F,0xFFE0,0xF81F,0x07FF,0x8410,0xAD55};
/* 工厂模式屏幕测试运行状态true正在运行false未在运行 */
static bool fac_screen_test_state = false;
static void func_screen_test_run_state_set(bool state)
{
fac_screen_test_state = state;
}
static bool func_screen_test_run_state_get(void)
{
return fac_screen_test_state;
}
compo_form_t *func_screentest_form_create(void)
{
compo_form_t *frm = compo_form_create(true);
compo_shape_t *rect = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,14);
compo_setid(rect,COMPO_ID_BTN);
compo_shape_set_location(rect, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, GUI_SCREEN_WIDTH, GUI_SCREEN_HEIGHT);
compo_shape_set_color(rect,color_tab[color_index]);
return frm;
}
static void func_screentest_process(void)
{
compo_form_t *rect = compo_getobj_byid(COMPO_ID_BTN);
if (tick_check_expire(ticks, 500)) {
reset_sleep_delay_all();
ticks = tick_get();
color_index++;
if(color_index >= sizeof(color_tab)/sizeof(u16) - 1)
{
color_index = 0;
}
compo_shape_set_color(rect,color_tab[color_index]);
}
func_process();
}
static void func_screentest_message(size_msg_t msg)
{
/* 检测窗体是否被外部改变,只允许用户主动改变退出 */
if (func_cb.sta != FUNC_SUB_SCREEN) {
func_cb.sta = FUNC_SUB_SCREEN;
}
switch (msg) {
case MSG_CTP_CLICK:
break;
case MSG_CTP_SHORT_UP:
break;
case MSG_CTP_SHORT_DOWN:
break;
case MSG_CTP_LONG:
break;
case KU_LEFT:
case KEY_RIGHT:
break;
case KEY_LEFT:
break;
case KEY_BACK:
break;
case MSG_CTP_SHORT_RIGHT:
func_message(msg);
/* 右滑退出厂测模式 */
if (func_cb.sta == FUNC_FACTORY_TEST) {
func_screen_test_run_state_set(false);
}
break;
default:
func_message(msg);
break;
}
}
static void func_screentest_enter(void)
{
func_cb.f_cb = func_zalloc(sizeof(f_screentest_t));
func_cb.frm_main = func_screentest_form_create();
}
static void func_screentest_exit(void)
{
func_cb.last = FUNC_SUB_SCREEN;
}
void func_screentest(void)
{
printf("%s\n", __func__);
func_screentest_enter();
/* 厂测过程除用户主动退出外 不响应外部窗体切换 */
func_screen_test_run_state_set(true);
while (func_screen_test_run_state_get()) {
func_screentest_process();
func_screentest_message(msg_dequeue());
}
func_screentest_exit();
}