338 lines
10 KiB
C
338 lines
10 KiB
C
#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;
|
||
}
|
||
}
|
||
|
||
|