#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; } }