20190816

Dependencies:   LCD_DISCO_F429ZI TS_DISCO_F429ZI BSP_DISCO_F429ZI

Committer:
VASKO
Date:
Fri Aug 16 22:22:05 2019 +0000
Revision:
0:81007dc65bac
20190816

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VASKO 0:81007dc65bac 1 #include "PrjDefs.h"
VASKO 0:81007dc65bac 2
VASKO 0:81007dc65bac 3 #define mSperTick 10
VASKO 0:81007dc65bac 4 #define DelayBetweenTouch 5
VASKO 0:81007dc65bac 5 #define DelayAfter1stTouch 50
VASKO 0:81007dc65bac 6 #define PauseDelay 10
VASKO 0:81007dc65bac 7 #define DelayBefore1stTouch 1
VASKO 0:81007dc65bac 8
VASKO 0:81007dc65bac 9 int32_t TickCtr = 0;
VASKO 0:81007dc65bac 10 int32_t TouchNum = 0;
VASKO 0:81007dc65bac 11 uint32_t TouchDelay = DelayBefore1stTouch;
VASKO 0:81007dc65bac 12 float pwm = 0;
VASKO 0:81007dc65bac 13 uint16_t x;
VASKO 0:81007dc65bac 14 uint16_t y;
VASKO 0:81007dc65bac 15
VASKO 0:81007dc65bac 16 void Incrementer(float *f,float step,float max){
VASKO 0:81007dc65bac 17 (*f) += step;
VASKO 0:81007dc65bac 18 if((*f) > max) (*f) = max;
VASKO 0:81007dc65bac 19 }
VASKO 0:81007dc65bac 20
VASKO 0:81007dc65bac 21 void Decrementer(float *f,float step,float min){
VASKO 0:81007dc65bac 22 (*f) -= step;
VASKO 0:81007dc65bac 23 if((*f) < min) (*f) = min;
VASKO 0:81007dc65bac 24 }
VASKO 0:81007dc65bac 25
VASKO 0:81007dc65bac 26 bool HitTest(RT_Pars *rp){
VASKO 0:81007dc65bac 27 if(x < ((rp->xr) + (rp->gap))) return false;
VASKO 0:81007dc65bac 28 if(x > ((rp->xr) + (rp->wr) - (rp->gap))) return false;
VASKO 0:81007dc65bac 29 if(y < ((rp->yr) + (rp->gap))) return false;
VASKO 0:81007dc65bac 30 if(y > ((rp->yr) + (rp->hr) - (rp->gap))) return false;
VASKO 0:81007dc65bac 31 return true;
VASKO 0:81007dc65bac 32 }//HitTest
VASKO 0:81007dc65bac 33
VASKO 0:81007dc65bac 34 void SetChangingParam(uint8_t v){
VASKO 0:81007dc65bac 35 if(ChangingParam == v)ChangingParam = ChangingParamNone;
VASKO 0:81007dc65bac 36 else ChangingParam = v;
VASKO 0:81007dc65bac 37 MsgType *_mail;
VASKO 0:81007dc65bac 38 _mail = MsgMail.alloc();
VASKO 0:81007dc65bac 39 _mail->cmd = dTdt_Selected;
VASKO 0:81007dc65bac 40 _mail->pars.f[0] = dTdt;
VASKO 0:81007dc65bac 41 MsgMail.put(_mail);
VASKO 0:81007dc65bac 42 _mail = MsgMail.alloc();
VASKO 0:81007dc65bac 43 _mail->cmd = TempS_Selected;
VASKO 0:81007dc65bac 44 _mail->pars.f[0] = TempS;
VASKO 0:81007dc65bac 45 MsgMail.put(_mail);
VASKO 0:81007dc65bac 46 _mail = MsgMail.alloc();
VASKO 0:81007dc65bac 47 switch (ExtraSelected){
VASKO 0:81007dc65bac 48 case KP_Selected: { _mail->cmd = KP_Selected; _mail->pars.f[0] = KProp; break; }
VASKO 0:81007dc65bac 49 case KI_Selected: { _mail->cmd = KI_Selected; _mail->pars.f[0] = KInt; break; }
VASKO 0:81007dc65bac 50 case KD_Selected: { _mail->cmd = KD_Selected; _mail->pars.f[0] = KDif; break; }
VASKO 0:81007dc65bac 51 case PWM_Selected: { _mail->cmd = PWM_Selected; _mail->pars.f[0] = PWM; break; }
VASKO 0:81007dc65bac 52 default: { _mail->cmd = PrjEventNone; break; }
VASKO 0:81007dc65bac 53 }//switch (ExtraSelected)
VASKO 0:81007dc65bac 54 MsgMail.put(_mail);
VASKO 0:81007dc65bac 55 }//SetChangingParam
VASKO 0:81007dc65bac 56
VASKO 0:81007dc65bac 57 void SelExtraPar(uint8_t v){
VASKO 0:81007dc65bac 58 if(++ExtraSelected > PWM_Selected) ExtraSelected = KP_Selected;
VASKO 0:81007dc65bac 59 SetChangingParam(ChangingParamNone);
VASKO 0:81007dc65bac 60 }//SelExtraPar
VASKO 0:81007dc65bac 61
VASKO 0:81007dc65bac 62 bool TouchDispatcher(){
VASKO 0:81007dc65bac 63
VASKO 0:81007dc65bac 64 MsgType _msg;
VASKO 0:81007dc65bac 65
VASKO 0:81007dc65bac 66
VASKO 0:81007dc65bac 67 if(HitTest(&Start_Rect)){
VASKO 0:81007dc65bac 68 if(TouchNum == 1){
VASKO 0:81007dc65bac 69 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 70 _mail->cmd = CmdStart;
VASKO 0:81007dc65bac 71 if(Start) { PWM = 0; StopH(); }
VASKO 0:81007dc65bac 72 else { Start_H();}
VASKO 0:81007dc65bac 73 _mail->pars.ui8[0] = Start;
VASKO 0:81007dc65bac 74 MsgMail.put(_mail);
VASKO 0:81007dc65bac 75 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 76 }//if(HitTest(&Start_Rect))
VASKO 0:81007dc65bac 77 else if(HitTest(&TempR_Rect)){
VASKO 0:81007dc65bac 78 if(TouchNum == 1){
VASKO 0:81007dc65bac 79 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 80 if(TempR_Selected == cT_Selected){
VASKO 0:81007dc65bac 81 TempR_Selected = dT_Selected;
VASKO 0:81007dc65bac 82 _mail->cmd = cT_Selected;
VASKO 0:81007dc65bac 83 _mail->pars.f[0] = cT;
VASKO 0:81007dc65bac 84 }else{
VASKO 0:81007dc65bac 85 TempR_Selected = cT_Selected;
VASKO 0:81007dc65bac 86 _mail->cmd = dT_Selected;
VASKO 0:81007dc65bac 87 _mail->pars.f[0] = dT;
VASKO 0:81007dc65bac 88 }
VASKO 0:81007dc65bac 89 MsgMail.put(_mail);
VASKO 0:81007dc65bac 90 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 91 }//if(HitTest(&TempR_Rect))
VASKO 0:81007dc65bac 92 else if(HitTest(&TempS_Rect)){
VASKO 0:81007dc65bac 93 if(TouchNum == 1){
VASKO 0:81007dc65bac 94 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 95 if(ChangingParam != TempS_Changing) SetChangingParam(TempS_Changing);
VASKO 0:81007dc65bac 96 else SetChangingParam(TempS_Selected);
VASKO 0:81007dc65bac 97 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 98 _mail->pars.f[0] = TempS;
VASKO 0:81007dc65bac 99 MsgMail.put(_mail);
VASKO 0:81007dc65bac 100 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 101 }//if(HitTest(&TempS_Rect))
VASKO 0:81007dc65bac 102 else if(HitTest(&dTdt_Rect)){
VASKO 0:81007dc65bac 103 if(TouchNum == 1){
VASKO 0:81007dc65bac 104 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 105 if(ChangingParam != dTdt_Changing) SetChangingParam(dTdt_Changing);
VASKO 0:81007dc65bac 106 else SetChangingParam(dTdt_Selected);
VASKO 0:81007dc65bac 107 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 108 _mail->pars.f[0] = dTdt;
VASKO 0:81007dc65bac 109 MsgMail.put(_mail);
VASKO 0:81007dc65bac 110 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 111 }//if(HitTest(&dTdt_Rect))
VASKO 0:81007dc65bac 112 else if(HitTest(&SelExtra_Rect)){
VASKO 0:81007dc65bac 113 if(TouchNum == 1){
VASKO 0:81007dc65bac 114 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 115 SelExtraPar(0);
VASKO 0:81007dc65bac 116 switch (ExtraSelected){
VASKO 0:81007dc65bac 117 case KP_Selected: { _mail->cmd = KP_Selected; _mail->pars.f[0] = KProp; break; }
VASKO 0:81007dc65bac 118 case KI_Selected: { _mail->cmd = KI_Selected; _mail->pars.f[0] = KInt; break; }
VASKO 0:81007dc65bac 119 case KD_Selected: { _mail->cmd = KD_Selected; _mail->pars.f[0] = KDif; break; }
VASKO 0:81007dc65bac 120 case PWM_Selected: { _mail->cmd = PWM_Selected; _mail->pars.f[0] = PWM; break; }
VASKO 0:81007dc65bac 121 default: { _mail->cmd = PrjEventNone; break; }
VASKO 0:81007dc65bac 122 }//switch (ExtraSelected)
VASKO 0:81007dc65bac 123 MsgMail.put(_mail);
VASKO 0:81007dc65bac 124 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 125 }//if(HitTest(&ChooseExOpt_Rect))
VASKO 0:81007dc65bac 126 else if(HitTest(&Extra_Rect)){
VASKO 0:81007dc65bac 127 if(TouchNum == 1){
VASKO 0:81007dc65bac 128 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 129 switch (ExtraSelected){
VASKO 0:81007dc65bac 130 case KP_Selected: {
VASKO 0:81007dc65bac 131 if(ChangingParam != KP_Changing) SetChangingParam(KP_Changing);
VASKO 0:81007dc65bac 132 else SetChangingParam(KP_Selected);
VASKO 0:81007dc65bac 133 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 134 _mail->pars.f[0] = KProp;
VASKO 0:81007dc65bac 135 break; }//KP_Selected
VASKO 0:81007dc65bac 136 case KI_Selected: {
VASKO 0:81007dc65bac 137 if(ChangingParam != KI_Changing) SetChangingParam(KI_Changing);
VASKO 0:81007dc65bac 138 else SetChangingParam(KI_Selected);
VASKO 0:81007dc65bac 139 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 140 _mail->pars.f[0] = KInt;
VASKO 0:81007dc65bac 141 break; }
VASKO 0:81007dc65bac 142 case KD_Selected: {
VASKO 0:81007dc65bac 143 if(ChangingParam != KD_Changing) SetChangingParam(KD_Changing);
VASKO 0:81007dc65bac 144 else SetChangingParam(KD_Selected);
VASKO 0:81007dc65bac 145 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 146 _mail->pars.f[0] = KDif;
VASKO 0:81007dc65bac 147 break; }
VASKO 0:81007dc65bac 148 case PWM_Selected: {
VASKO 0:81007dc65bac 149 if(ChangingParam != PWM_Changing) SetChangingParam(PWM_Changing);
VASKO 0:81007dc65bac 150 else SetChangingParam(PWM_Selected);
VASKO 0:81007dc65bac 151 _mail->cmd = ChangingParam;
VASKO 0:81007dc65bac 152 _mail->pars.f[0] = PWM;
VASKO 0:81007dc65bac 153 break; }
VASKO 0:81007dc65bac 154 default: { _mail->cmd = PrjEventNone; break; }
VASKO 0:81007dc65bac 155 }//switch (ExtraSelected)
VASKO 0:81007dc65bac 156 MsgMail.put(_mail);
VASKO 0:81007dc65bac 157 }//if(TouchNum == 1)
VASKO 0:81007dc65bac 158 }//if(HitTest(&Extra_Rect))
VASKO 0:81007dc65bac 159 else if(HitTest(&Plus_Rect)){
VASKO 0:81007dc65bac 160 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 161 switch(ChangingParam){
VASKO 0:81007dc65bac 162 case TempS_Changing:{
VASKO 0:81007dc65bac 163 Incrementer(&TempS,1,MaxTempS);
VASKO 0:81007dc65bac 164 _mail->cmd = TempS_Changing;
VASKO 0:81007dc65bac 165 _mail->pars.f[0] = TempS;
VASKO 0:81007dc65bac 166 ReStartH();
VASKO 0:81007dc65bac 167 break;}
VASKO 0:81007dc65bac 168 case dTdt_Changing:{
VASKO 0:81007dc65bac 169 Incrementer(&dTdt,dTdtStep,Max_dTdt);
VASKO 0:81007dc65bac 170 _mail->cmd = dTdt_Changing;
VASKO 0:81007dc65bac 171 _mail->pars.f[0] = dTdt;
VASKO 0:81007dc65bac 172 break;}
VASKO 0:81007dc65bac 173 case KP_Changing:{
VASKO 0:81007dc65bac 174 Incrementer(&KProp,KPropStep,MaxKProp);
VASKO 0:81007dc65bac 175 _mail->cmd = KP_Changing;
VASKO 0:81007dc65bac 176 _mail->pars.f[0] = KProp;
VASKO 0:81007dc65bac 177 break;}
VASKO 0:81007dc65bac 178 case KI_Changing:{
VASKO 0:81007dc65bac 179 Incrementer(&KInt,KIntStep,MaxKInt);
VASKO 0:81007dc65bac 180 _mail->cmd = KI_Changing;
VASKO 0:81007dc65bac 181 _mail->pars.f[0] = KInt;
VASKO 0:81007dc65bac 182 break;}
VASKO 0:81007dc65bac 183 case KD_Changing:{
VASKO 0:81007dc65bac 184 Incrementer(&KDif,KDifStep,MaxKDif);
VASKO 0:81007dc65bac 185 _mail->cmd = KD_Changing;
VASKO 0:81007dc65bac 186 _mail->pars.f[0] = KDif;
VASKO 0:81007dc65bac 187 break;}
VASKO 0:81007dc65bac 188 case PWM_Changing:{
VASKO 0:81007dc65bac 189 Incrementer(&PWM,PWM_Step,MaxPWM);
VASKO 0:81007dc65bac 190 _mail->cmd = PWM_Changing;
VASKO 0:81007dc65bac 191 _mail->pars.f[0] = PWM;
VASKO 0:81007dc65bac 192 break;}
VASKO 0:81007dc65bac 193 default: { _mail->cmd = PrjEventNone; break; }
VASKO 0:81007dc65bac 194 }//switch(ChangingParam)
VASKO 0:81007dc65bac 195 MsgMail.put(_mail);
VASKO 0:81007dc65bac 196 }//if(HitTest(&Plus_Rect))
VASKO 0:81007dc65bac 197 else if(HitTest(&Minus_Rect)){
VASKO 0:81007dc65bac 198 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 199 switch(ChangingParam){
VASKO 0:81007dc65bac 200 case TempS_Changing:{
VASKO 0:81007dc65bac 201 Decrementer(&TempS,1,0);
VASKO 0:81007dc65bac 202 _mail->cmd = TempS_Changing;
VASKO 0:81007dc65bac 203 _mail->pars.f[0] = TempS;
VASKO 0:81007dc65bac 204 ReStartH();
VASKO 0:81007dc65bac 205 break;}
VASKO 0:81007dc65bac 206 case dTdt_Changing:{
VASKO 0:81007dc65bac 207 Decrementer(&dTdt,dTdtStep,0);
VASKO 0:81007dc65bac 208 _mail->cmd = dTdt_Changing;
VASKO 0:81007dc65bac 209 _mail->pars.f[0] = dTdt;
VASKO 0:81007dc65bac 210 break;}
VASKO 0:81007dc65bac 211 case KP_Changing:{
VASKO 0:81007dc65bac 212 Decrementer(&KProp,KPropStep,0); //_f=(*(float *))ui32;
VASKO 0:81007dc65bac 213 _mail->cmd = KP_Changing;
VASKO 0:81007dc65bac 214 _mail->pars.f[0] = KProp;
VASKO 0:81007dc65bac 215 break;}
VASKO 0:81007dc65bac 216 case KI_Changing:{
VASKO 0:81007dc65bac 217 Decrementer(&KInt,KIntStep,0);
VASKO 0:81007dc65bac 218 _mail->cmd = KI_Changing;
VASKO 0:81007dc65bac 219 _mail->pars.f[0] = KInt;
VASKO 0:81007dc65bac 220 break;}
VASKO 0:81007dc65bac 221 case KD_Changing:{
VASKO 0:81007dc65bac 222 Decrementer(&KDif,KDifStep,0);
VASKO 0:81007dc65bac 223 _mail->cmd = KD_Changing;
VASKO 0:81007dc65bac 224 _mail->pars.f[0] = KDif;
VASKO 0:81007dc65bac 225 break;}
VASKO 0:81007dc65bac 226 case PWM_Changing:{
VASKO 0:81007dc65bac 227 Decrementer(&PWM,PWM_Step,0);
VASKO 0:81007dc65bac 228 _mail->cmd = PWM_Changing;
VASKO 0:81007dc65bac 229 _mail->pars.f[0] = PWM;
VASKO 0:81007dc65bac 230 break;}
VASKO 0:81007dc65bac 231 default: { _mail->cmd = PrjEventNone; break; }
VASKO 0:81007dc65bac 232 }//switch(ChangingParam)
VASKO 0:81007dc65bac 233 MsgMail.put(_mail);
VASKO 0:81007dc65bac 234 }//if(HitTest(&Minus_Rect))
VASKO 0:81007dc65bac 235 else return 0;
VASKO 0:81007dc65bac 236 return 1;
VASKO 0:81007dc65bac 237 /*
VASKO 0:81007dc65bac 238 if(HitTest(&ExOptions_Rect,TS_State.X,TS_State.Y)){
VASKO 0:81007dc65bac 239 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 240 _mail->cmd = ExOptSetting;
VASKO 0:81007dc65bac 241 MsgMail.put(_mail);
VASKO 0:81007dc65bac 242 }
VASKO 0:81007dc65bac 243 if(HitTest(&ChooseExOpt_Rect,TS_State.X,TS_State.Y)){
VASKO 0:81007dc65bac 244 MsgType *_mail = MsgMail.alloc();
VASKO 0:81007dc65bac 245 _mail->cmd = ExOptChoosing;
VASKO 0:81007dc65bac 246 MsgMail.put(_mail);
VASKO 0:81007dc65bac 247 }
VASKO 0:81007dc65bac 248 */
VASKO 0:81007dc65bac 249 }//TouchDispatcher
VASKO 0:81007dc65bac 250
VASKO 0:81007dc65bac 251 void TouchScreenThrdFunc(){
VASKO 0:81007dc65bac 252 TS_StateTypeDef TS_State;
VASKO 0:81007dc65bac 253 while(1){
VASKO 0:81007dc65bac 254 ts.GetState(&TS_State);
VASKO 0:81007dc65bac 255 if(TS_State.TouchDetected){
VASKO 0:81007dc65bac 256 x = TS_State.X;
VASKO 0:81007dc65bac 257 y = TS_State.Y;
VASKO 0:81007dc65bac 258 if(++TickCtr > TouchDelay){
VASKO 0:81007dc65bac 259 TickCtr=0;
VASKO 0:81007dc65bac 260 TouchNum++;
VASKO 0:81007dc65bac 261 if(!TouchDispatcher()){
VASKO 0:81007dc65bac 262 TickCtr=0;
VASKO 0:81007dc65bac 263 TouchNum=0;
VASKO 0:81007dc65bac 264 TouchDelay = DelayBefore1stTouch;
VASKO 0:81007dc65bac 265 }
VASKO 0:81007dc65bac 266 if(TouchNum == 1) TouchDelay = DelayAfter1stTouch;
VASKO 0:81007dc65bac 267 else TouchDelay = DelayBetweenTouch;
VASKO 0:81007dc65bac 268 }//if(++TickCtr>TouchDelay)
VASKO 0:81007dc65bac 269
VASKO 0:81007dc65bac 270 }else{//if(TS_State.TouchDetected)
VASKO 0:81007dc65bac 271 TickCtr=0;
VASKO 0:81007dc65bac 272 TouchNum=0;
VASKO 0:81007dc65bac 273 TouchDelay = DelayBefore1stTouch;
VASKO 0:81007dc65bac 274 }
VASKO 0:81007dc65bac 275 ThisThread::sleep_for(mSperTick);
VASKO 0:81007dc65bac 276 }//while(1)
VASKO 0:81007dc65bac 277 }//TouchScreenThrdFunc
VASKO 0:81007dc65bac 278 /*
VASKO 0:81007dc65bac 279 pwm += 0.001; if (pwm > 1) pwm = 0;
VASKO 0:81007dc65bac 280 _msg.cmd = 0x17;
VASKO 0:81007dc65bac 281 _msg.pars.f[0] = pwm;
VASKO 0:81007dc65bac 282 SendMsg(&_msg.cmd);
VASKO 0:81007dc65bac 283 */