My final year project

Dependencies:   BSP_DISCO_F746NG F746_GUI LCD_DISCO_F746NG SDFileSystem TS_DISCO_F746NG ResistiveTouchController Map CYS8218Controller MedianFilter

Committer:
Kerneels Bezuidenhout
Date:
Sun Oct 02 18:45:48 2016 +0200
Revision:
19:ef78ac1a98f8
Parent:
18:1b9579ac9f41
Child:
20:70c5b1e499f0
Testing AutomaticControlScreen logic

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Generic 15:bc63b55a426d 1 #include "AutomaticControlScreen.hpp"
Kerneels Bezuidenhout 14:5beb6b4850b7 2
Generic 15:bc63b55a426d 3 AutomaticControlScreen::AutomaticControlScreen(int *nextScreen, float *xPos, float *yPos, int *Ts, bool *started, int *ballOnPlate, float *xSP, float *ySP) :
Kerneels Bezuidenhout 14:5beb6b4850b7 4 Screen(),
Kerneels Bezuidenhout 14:5beb6b4850b7 5 _lbTitle( SCREEN_W/2, 0, "Automatic", Label::CENTER, Font24),
Kerneels Bezuidenhout 14:5beb6b4850b7 6 _btBack( 0, SCREEN_H-30, 100, 30, "Back"),
Kerneels Bezuidenhout 14:5beb6b4850b7 7 _btSettings(SCREEN_W-100, SCREEN_H-30, 100, 30, "Settings"),
Kerneels Bezuidenhout 14:5beb6b4850b7 8 _btStart(0, SCREEN_H-65, SCREEN_W, 30, "Start"), //TODO Custom colors and disabled featrure
Generic 17:3b6d66253c97 9 _btStop(0, SCREEN_H-65, SCREEN_W, 30, "Start"), //TODO Custom colors
Generic 15:bc63b55a426d 10 _btMore((SCREEN_W/2)-50, SCREEN_H-30, 100, 30, "More"),
Kerneels Bezuidenhout 14:5beb6b4850b7 11 _nlbTs( SCREEN_W/2, 26, "Cycle Time (us):%d", *Ts, Label::CENTER),
Generic 17:3b6d66253c97 12 _gXPos( 0, 40, SCREEN_W/2-1, 158, -170, 170, "X Position (mm)"),
Generic 15:bc63b55a426d 13 _gYPos( SCREEN_W/2+1, 40, SCREEN_W/2-1, 158, -136, 136, "Y Position (mm)")
Kerneels Bezuidenhout 14:5beb6b4850b7 14 {
Kerneels Bezuidenhout 14:5beb6b4850b7 15 _nextScreen = nextScreen;
Kerneels Bezuidenhout 14:5beb6b4850b7 16 _xPos = xPos;
Kerneels Bezuidenhout 14:5beb6b4850b7 17 _yPos = yPos;
Kerneels Bezuidenhout 14:5beb6b4850b7 18 _Ts = Ts;
Kerneels Bezuidenhout 14:5beb6b4850b7 19 _started = started;
Kerneels Bezuidenhout 14:5beb6b4850b7 20 _xSP = xSP;
Kerneels Bezuidenhout 14:5beb6b4850b7 21 _ySP = ySP;
Kerneels Bezuidenhout 14:5beb6b4850b7 22 }
Kerneels Bezuidenhout 14:5beb6b4850b7 23
Kerneels Bezuidenhout 14:5beb6b4850b7 24 void AutomaticControlScreen::Draw()
Kerneels Bezuidenhout 14:5beb6b4850b7 25 {
Kerneels Bezuidenhout 14:5beb6b4850b7 26 Clear();
Kerneels Bezuidenhout 14:5beb6b4850b7 27 _lbTitle.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 28 _btBack.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 29 _btSettings.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 30 _btStart.Inactivate();
Kerneels Bezuidenhout 14:5beb6b4850b7 31 _btStart.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 32 _btMore.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 33 _nlbTs.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 34 _gXPos.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 35 _gYPos.Draw();
Kerneels Bezuidenhout 14:5beb6b4850b7 36 }
Kerneels Bezuidenhout 14:5beb6b4850b7 37
Generic 15:bc63b55a426d 38 void AutomaticControlScreen::Process()
Kerneels Bezuidenhout 14:5beb6b4850b7 39 {
Kerneels Bezuidenhout 14:5beb6b4850b7 40 if( _btBack.Touched() )
Kerneels Bezuidenhout 14:5beb6b4850b7 41 {
Kerneels Bezuidenhout 14:5beb6b4850b7 42 *_nextScreen = MAIN_MENU_SCREEN;
Kerneels Bezuidenhout 14:5beb6b4850b7 43 // TODO Add safety logic
Kerneels Bezuidenhout 14:5beb6b4850b7 44 }
Kerneels Bezuidenhout 14:5beb6b4850b7 45
Kerneels Bezuidenhout 14:5beb6b4850b7 46 if( _btSettings.Touched() )
Kerneels Bezuidenhout 14:5beb6b4850b7 47 {
Kerneels Bezuidenhout 14:5beb6b4850b7 48 //TODO Add AutomaticSettingsScreen
Kerneels Bezuidenhout 14:5beb6b4850b7 49 }
Kerneels Bezuidenhout 14:5beb6b4850b7 50
Kerneels Bezuidenhout 14:5beb6b4850b7 51 if( _btMore.Touched() )
Kerneels Bezuidenhout 14:5beb6b4850b7 52 {
Kerneels Bezuidenhout 18:1b9579ac9f41 53 *_nextScreen = AUTOMATIC_MORE_SCREEN;
Kerneels Bezuidenhout 18:1b9579ac9f41 54 //TODO Ensure control system is not active
Kerneels Bezuidenhout 14:5beb6b4850b7 55 }
Kerneels Bezuidenhout 14:5beb6b4850b7 56
Generic 16:6b553c9008ec 57
Kerneels Bezuidenhout 19:ef78ac1a98f8 58 if( !_btStart.IsActive() )
Kerneels Bezuidenhout 19:ef78ac1a98f8 59 {
Kerneels Bezuidenhout 19:ef78ac1a98f8 60 if( _ballOnPlate() )
Kerneels Bezuidenhout 19:ef78ac1a98f8 61 _btStart.Activate();
Kerneels Bezuidenhout 19:ef78ac1a98f8 62 }
Kerneels Bezuidenhout 19:ef78ac1a98f8 63 else
Kerneels Bezuidenhout 14:5beb6b4850b7 64 {
Kerneels Bezuidenhout 19:ef78ac1a98f8 65 if( _ballOnPlate() )
Generic 16:6b553c9008ec 66 {
Kerneels Bezuidenhout 19:ef78ac1a98f8 67 if( _btStart.Touched() )
Kerneels Bezuidenhout 19:ef78ac1a98f8 68 {
Kerneels Bezuidenhout 19:ef78ac1a98f8 69
Kerneels Bezuidenhout 19:ef78ac1a98f8 70 }
Kerneels Bezuidenhout 19:ef78ac1a98f8 71 }
Kerneels Bezuidenhout 19:ef78ac1a98f8 72 else
Kerneels Bezuidenhout 19:ef78ac1a98f8 73 {
Kerneels Bezuidenhout 19:ef78ac1a98f8 74 _btStart.Inactivate();
Generic 16:6b553c9008ec 75 }
Kerneels Bezuidenhout 14:5beb6b4850b7 76 }
Kerneels Bezuidenhout 14:5beb6b4850b7 77
Kerneels Bezuidenhout 19:ef78ac1a98f8 78 //TODO Add stop logic
Generic 16:6b553c9008ec 79
Kerneels Bezuidenhout 14:5beb6b4850b7 80
Kerneels Bezuidenhout 14:5beb6b4850b7 81 if( *_started && *_ballOnPlate )
Kerneels Bezuidenhout 14:5beb6b4850b7 82 {
Kerneels Bezuidenhout 14:5beb6b4850b7 83 _gXPos.Insert(*_xPos);
Kerneels Bezuidenhout 14:5beb6b4850b7 84 _gXPos.Update();
Kerneels Bezuidenhout 14:5beb6b4850b7 85
Kerneels Bezuidenhout 14:5beb6b4850b7 86 if( *_xSP != 0 )
Kerneels Bezuidenhout 14:5beb6b4850b7 87 _gXPos.HLine(*_xSP);
Kerneels Bezuidenhout 14:5beb6b4850b7 88
Generic 15:bc63b55a426d 89 _gYPos.Insert(*_yPos);
Kerneels Bezuidenhout 14:5beb6b4850b7 90 _gYPos.Update();
Kerneels Bezuidenhout 14:5beb6b4850b7 91
Kerneels Bezuidenhout 14:5beb6b4850b7 92 if( *_ySP != 0 )
Kerneels Bezuidenhout 14:5beb6b4850b7 93 _gYPos.HLine(*_ySP);
Kerneels Bezuidenhout 18:1b9579ac9f41 94
Generic 15:bc63b55a426d 95 _nlbTs.Draw("Cycle Time (us):%d", *_Ts);
Kerneels Bezuidenhout 14:5beb6b4850b7 96
Kerneels Bezuidenhout 14:5beb6b4850b7 97 }
Kerneels Bezuidenhout 14:5beb6b4850b7 98
Kerneels Bezuidenhout 14:5beb6b4850b7 99 }