154 lines
4.5 KiB
C
154 lines
4.5 KiB
C
|
|
#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; //êàê òîëüêî êíîïêó âêëþ÷åíèÿ îòïóñòèëè, ïåðåñòà¸ì å¸ èãíîðèðîâàòü
|
|
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){ //Ïî íàæàòèþ ÎÊ
|
|
//if(menuPointer==GROUND){menuPointer=WORK;} //todo ñäåëàé ñîõðàíåíèå //Åñëè êðàéíèé ïóíêò ìåíþ òî âîçâðàùàåìñÿ ê ðàáîòå
|
|
menuPointer++; //èíà÷å ñëåäóþùèé ïóíêò
|
|
}
|
|
|
|
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; // ÏÅÐÅÑÊÎ×ÈÒ ÑÀÌ
|
|
//ïèøåì ÷òî çíà÷åíèÿ íå âåðíû
|
|
//ðèñóåì íóëè
|
|
};
|
|
menuPointer++;
|
|
break;
|
|
|
|
case OUT:
|
|
if((key==UP_BTN_Pin)&&(currentData.IKU<Ku500)) {currentData.IKU++; sh_applysetting(¤tData, dvd);}
|
|
if((key==DN_BTN_Pin)&&(currentData.IKU>Ku0_1)) {currentData.IKU--; sh_applysetting(¤tData, dvd);}
|
|
break;
|
|
|
|
case FVCH:
|
|
if((key==UP_BTN_Pin)&&(currentData.IFV<Hp10)) {currentData.IFV++; sh_applysetting(¤tData, dvd);}
|
|
if((key==DN_BTN_Pin)&&(currentData.IFV>Hp0_1)) {currentData.IFV--; sh_applysetting(¤tData, dvd);}
|
|
break;
|
|
|
|
case FNCH:
|
|
if((key==UP_BTN_Pin)&&(currentData.IFN<Lp100000)) {currentData.IFN++; sh_applysetting(¤tData, dvd);}
|
|
if((key==DN_BTN_Pin)&&(currentData.IFN>Lp100)) {currentData.IFN--; sh_applysetting(¤tData, dvd);}
|
|
break;
|
|
|
|
case GROUND:
|
|
if((key==UP_BTN_Pin)) {currentData.IPZ=1; sh_applysetting(¤tData, dvd);}
|
|
if((key==DN_BTN_Pin)) {currentData.IPZ=0; sh_applysetting(¤tData, dvd);}
|
|
break;
|
|
|
|
case SAVING:
|
|
wrPar();
|
|
menuPointer=WORK;
|
|
sh_applysetting(¤tData, dvd);//todo Ñäåëàòü ïî íîðìàëüíîìó.
|
|
break;
|
|
|
|
|
|
} //close switch
|
|
|
|
|
|
}; //close keysHandler
|
|
|
|
|
|
|