A1210/Core/Src/keys.c

154 lines
4.5 KiB
C
Raw Normal View History

#include "keys.h"
#include "screen.h"
#include "struct.h"
#include "my.h"
extern UserData_TypeDef currentData;
extern int menuPointer;
extern uint16_t dvd;
extern int ignoreOff_flag;
uint16_t kpr_temp[5];
__IO uint16_t KEY_STATE = 0;
void keysHandler(void){
uint16_t key = KEY_STATE;
KEY_STATE = 0;
if(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_RESET) ignoreOff_flag=0; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET)&&(ignoreOff_flag==0))
{HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin , GPIO_PIN_SET);} //
if(key==OK_BTN_Pin){ //<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
//if(menuPointer==GROUND){menuPointer=WORK;} //todo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
menuPointer++; //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
}
switch (menuPointer){
case KPR0:
if(key==UP_BTN_Pin) {
if((currentData.IK0<9)&&(currentData.IK0>=0)) currentData.IK0++;
else if(currentData.IK0=='~') currentData.IK0=0;
else if(currentData.IK0==9) currentData.IK0='~';
};
if((key==DN_BTN_Pin)) {
if(currentData.IK0==0) currentData.IK0='~';
else if ((currentData.IK0<=9)&&(currentData.IK0>0)) currentData.IK0--;
else if(currentData.IK0='~') currentData.IK0=9;
}
break;
case KPR1:
if((key==UP_BTN_Pin)) {
if((currentData.IK1<9)&&(currentData.IK1>=0)) currentData.IK1++;
else if(currentData.IK1=='~') currentData.IK1=0;
else if(currentData.IK1==9) currentData.IK1='~';
}
if((key==DN_BTN_Pin)) {
if(currentData.IK1==0) currentData.IK1='~';
else if ((currentData.IK1<=9)&&(currentData.IK1>0)) currentData.IK1--;
else if(currentData.IK1='~') currentData.IK1=9;
}
break;
case KPR2:
if((key==UP_BTN_Pin)) {
if((currentData.IK2<9)&&(currentData.IK2>=0)) currentData.IK2++;
else if(currentData.IK2=='~') currentData.IK2=0;
else if(currentData.IK2==9) currentData.IK2='~';
}
if((key==DN_BTN_Pin)) {
if(currentData.IK2==0) currentData.IK2='~';
else if ((currentData.IK2<=9)&&(currentData.IK2>0)) currentData.IK2--;
else if(currentData.IK2='~') currentData.IK2=9;
}
break;
case KPR3:
if((key==UP_BTN_Pin)) {
if((currentData.IK3<9)&&(currentData.IK3>=0)) currentData.IK3++;
else if(currentData.IK3=='~') currentData.IK3=0;
else if(currentData.IK3==9) currentData.IK3='~';
}
if((key==DN_BTN_Pin)) {
if(currentData.IK3==0) currentData.IK3='~';
else if ((currentData.IK3<=9)&&(currentData.IK3>0)) currentData.IK3--;
else if(currentData.IK3='~') currentData.IK3=9;
}
break;
if((key==UP_BTN_Pin)) {
if((currentData.IK4<9)&&(currentData.IK4>=0)) currentData.IK4++;
else if(currentData.IK4=='~') currentData.IK4=0;
else if(currentData.IK4==9) currentData.IK4='~';
}
case KPR4:
if((key==DN_BTN_Pin)) {
if(currentData.IK4==0) currentData.IK4='~';
else if ((currentData.IK4<=9)&&(currentData.IK4>0)) currentData.IK4--;
else if(currentData.IK4='~') currentData.IK4=9;
}
break;
case KPRSAVING:
kpr_temp[0]=currentData.IK0;
kpr_temp[1]=currentData.IK1;
kpr_temp[2]=currentData.IK2;
kpr_temp[3]=currentData.IK3;
kpr_temp[4]=currentData.IK4;
asciiToFloat4(kpr_temp);
if (asciiToFloat4(kpr_temp)||currentData.SENS<0.001||currentData.SENS>1000){
currentData.IK0=kpr_temp[0];
currentData.IK1=kpr_temp[1];
currentData.IK2=kpr_temp[2];
currentData.IK3=kpr_temp[3];
currentData.IK4=kpr_temp[4];
menuPointer=WORK; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
};
menuPointer++;
break;
case OUT:
if((key==UP_BTN_Pin)&&(currentData.IKU<Ku500)) {currentData.IKU++; sh_applysetting(&currentData, dvd);}
if((key==DN_BTN_Pin)&&(currentData.IKU>Ku0_1)) {currentData.IKU--; sh_applysetting(&currentData, dvd);}
break;
case FVCH:
if((key==UP_BTN_Pin)&&(currentData.IFV<Hp10)) {currentData.IFV++; sh_applysetting(&currentData, dvd);}
if((key==DN_BTN_Pin)&&(currentData.IFV>Hp0_1)) {currentData.IFV--; sh_applysetting(&currentData, dvd);}
break;
case FNCH:
if((key==UP_BTN_Pin)&&(currentData.IFN<Lp100000)) {currentData.IFN++; sh_applysetting(&currentData, dvd);}
if((key==DN_BTN_Pin)&&(currentData.IFN>Lp100)) {currentData.IFN--; sh_applysetting(&currentData, dvd);}
break;
case GROUND:
if((key==UP_BTN_Pin)) {currentData.IPZ=1; sh_applysetting(&currentData, dvd);}
if((key==DN_BTN_Pin)) {currentData.IPZ=0; sh_applysetting(&currentData, dvd);}
break;
case SAVING:
wrPar();
menuPointer=WORK;
sh_applysetting(&currentData, dvd);//todo <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
break;
} //close switch
}; //close keysHandler