sggt/App/APP_WU/Src/key_functions.c

338 lines
10 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 "key_functions.h"
KEYS key_pv; //当前按键
KEYS_STATUS key_sts[11] = {KEY_STATUS_DISABLE}; //11个按键的状态排列顺序与枚举顺序一致
//按键数据类型转换
void key_char2struct(void)
{
key_pv.value = (KEYS_VALUE)key;
switch (key_pv.value)
{
case KEY_OUT_VAL:
{
key_pv.tag = KEY_OUT;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_UP_VAL:
{
key_pv.tag = KEY_UP;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_MENU_VAL:
{
key_pv.tag = KEY_MENU;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_IN_VAL:
{
key_pv.tag = KEY_IN;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_LEFT_VAL:
{
key_pv.tag = KEY_LEFT;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_OK_VAL:
{
key_pv.tag = KEY_OK;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_RIGHT_VAL:
{
key_pv.tag = KEY_RIGHT;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_SWITCH_VAL:
{
key_pv.tag = KEY_SWITCH;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_SOURCE_VAL:
{
key_pv.tag = KEY_SOURCE;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_DOWN_VAL:
{
key_pv.tag = KEY_DOWN;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_BACK_VAL:
{
key_pv.tag = KEY_BACK;
key_pv.status = key_sts[key_pv.tag];
}
break;
case KEY_NONE_VAL:
{
key_pv.tag = KEY_NONE;
key_pv.status = KEY_STATUS_DISABLE;
}
break;
case KEY_ALL_VAL:
{
key_pv.tag = KEY_ALL;
key_pv.status = KEY_STATUS_DISABLE;
}
break;
default:
break;
}
}
//按键状态配置
void key_config(KEYS_TAG key_t, KEYS_STATUS sts)
{
if(key_t != KEY_ALL)
{
key_sts[key_t] = sts;
}
else
{
for (uint8_t i = 0; i < 11; i++)
{
key_sts[i] = sts;
}
}
}
//按键配置更新
void key_config_update(OPERATIONS ope)
{
switch (ope)
{
case OPENNING_ANIME:
{
key_config(KEY_ALL, KEY_STATUS_DISABLE);
}
break;
case MAIN_FUNCTION:
{
key_config(KEY_ALL, KEY_STATUS_ENABLE);
}
break;
case SET_ITEM_CHOOSE:
{
//使能上、下、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case SET_CONTENT_CHOOSE:
{
//使能上、下、左、右、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case SET_CONTENT_MODIFY:
{
//使能:左、右、返回
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_UP, KEY_STATUS_DISABLE);
key_config(KEY_DOWN, KEY_STATUS_DISABLE);
key_config(KEY_OK, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case SET_SHOW_LOG:
{
//使能:左、右、返回
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_UP, KEY_STATUS_DISABLE);
key_config(KEY_DOWN, KEY_STATUS_DISABLE);
key_config(KEY_OK, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case SET_COMMUNICATION_SWITCH:
{
//使能上、下、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_LEFT, KEY_STATUS_DISABLE);
key_config(KEY_RIGHT, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case SET_COMMUNICATION_MODIFY:
{
//使能:左、右、返回
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_UP, KEY_STATUS_DISABLE);
key_config(KEY_DOWN, KEY_STATUS_DISABLE);
key_config(KEY_OK, KEY_STATUS_DISABLE);
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case MODBUS_MASTER_CONFIG:
{
//使能上、下、左、右、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case MODBUS_MASTER_CONFIG_MODIFY:
{
//使能上、下、左、右、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case MODBUS_MASTER_TRX:
{
//使能上、下、左、右、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{
//使能上、下、左、右、确认OK、返回
key_config(KEY_UP, KEY_STATUS_ENABLE);
key_config(KEY_DOWN, KEY_STATUS_ENABLE);
key_config(KEY_LEFT, KEY_STATUS_ENABLE);
key_config(KEY_RIGHT, KEY_STATUS_ENABLE);
key_config(KEY_OK, KEY_STATUS_ENABLE);
key_config(KEY_BACK, KEY_STATUS_ENABLE);
//不使能其他按键
key_config(KEY_IN, KEY_STATUS_DISABLE);
key_config(KEY_OUT, KEY_STATUS_DISABLE);
key_config(KEY_SOURCE, KEY_STATUS_DISABLE);
key_config(KEY_MENU, KEY_STATUS_DISABLE);
key_config(KEY_SWITCH, KEY_STATUS_DISABLE);
}
break;
default:
break;
}
}