[C] 纯文本查看 复制代码 #include <rtthread.h>
#include "include.h"
#define DBG_TAG "options_menu"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
static rt_uint8_t options_now = GX_PIXELMAP_ID_OPTIONS_CHECK;
static void options_menu_changed(rt_uint8_t mode)
{
if (mode)
options_now++;
else
options_now--;
if (options_now > GX_PIXELMAP_ID_OPTIONS_SET)
options_now = GX_PIXELMAP_ID_OPTIONS_CHECK;
else if (options_now < GX_PIXELMAP_ID_OPTIONS_CHECK)
options_now = GX_PIXELMAP_ID_OPTIONS_SET;
gx_icon_pixelmap_set(&window_menu.window_menu_options_icon, options_now, GX_NULL);
gx_prompt_text_id_set(&window_menu.window_menu_menu_text, options_now - GX_PIXELMAP_ID_OPTIONS_CHECK + 1);
}
static void task_options_menu_key_event_handler(void *arg)
{
flex_button_t *btn = (flex_button_t *)arg;
/********************* btn1 ***********************/
if (btn->id == USER_BUTTON_1)
{
switch (btn->event)
{
case FLEX_BTN_PRESS_SHORT_UP:
options_menu_changed(0);
break;
}
}
/********************* btn2 ***********************/
else if (btn->id == USER_BUTTON_2)
{
if (btn->event == FLEX_BTN_PRESS_SHORT_UP)
{
switch (options_now)
{
case GX_PIXELMAP_ID_OPTIONS_CHECK:
user_system.state = STATE_MEASURING;
break;
case GX_PIXELMAP_ID_OPTIONS_LOG:
user_system.state = STATE_LOG;
break;
case GX_PIXELMAP_ID_OPTIONS_SET:
user_system.state = STATE_SET;
break;
}
}
}
/********************* btn3 ***********************/
else if (btn->id == USER_BUTTON_3)
{
switch (btn->event)
{
case FLEX_BTN_PRESS_SHORT_UP:
options_menu_changed(1);
break;
}
}
default_btn_evt_cb(arg);
}
void task_options_menu(void)
{
LOG_W("in task_options_menu...");
window_jump((GX_WIDGET *)&window_main, GX_USER_EVENT_IN_MENU);
button_callback_set(task_options_menu_key_event_handler);
while (user_system.state == STATE_OPTIONS_MENU)
{
rt_thread_mdelay(10);
}
window_jump((GX_WIDGET *)&window_menu, GX_USER_EVENT_OUT_MENU);
LOG_W("exit task_options_menu...");
} |