version 1.0

Dependencies:   CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed

Fork of SolarOnFoils_MainModule_20150518 by Dannis Brugman

Committer:
Dannis_mbed
Date:
Tue Aug 11 08:38:55 2015 +0000
Revision:
2:f6d058931b17
Parent:
1:b4a0d63db637
Test version mainmodule

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dannis_mbed 0:81b21910454e 1 #include "menu.h"
Dannis_mbed 0:81b21910454e 2 #include "string.h"
Dannis_mbed 0:81b21910454e 3
Dannis_mbed 1:b4a0d63db637 4 #define DEVICE_ID 201
Dannis_mbed 0:81b21910454e 5
Dannis_mbed 0:81b21910454e 6 // Contructor
Dannis_mbed 0:81b21910454e 7 Menu::Menu() :
Dannis_mbed 0:81b21910454e 8 uiCounter(0),
Dannis_mbed 1:b4a0d63db637 9 bMenu(1),
Dannis_mbed 1:b4a0d63db637 10 bReadHeight(0),
Dannis_mbed 0:81b21910454e 11 bError(0)
Dannis_mbed 0:81b21910454e 12 {
Dannis_mbed 0:81b21910454e 13 init();
Dannis_mbed 0:81b21910454e 14 };
Dannis_mbed 0:81b21910454e 15
Dannis_mbed 0:81b21910454e 16 Menu::~Menu()
Dannis_mbed 0:81b21910454e 17 {
Dannis_mbed 0:81b21910454e 18 };
Dannis_mbed 0:81b21910454e 19
Dannis_mbed 1:b4a0d63db637 20 extern Menu mLCDMenu;
Dannis_mbed 0:81b21910454e 21 extern SystemVar svSoF;
Dannis_mbed 0:81b21910454e 22 extern Serial debug;
Dannis_mbed 1:b4a0d63db637 23 extern CAN CANbus;
Dannis_mbed 0:81b21910454e 24 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 25 // init //
Dannis_mbed 0:81b21910454e 26 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 27 void Menu::init(void)
Dannis_mbed 0:81b21910454e 28 {
Dannis_mbed 0:81b21910454e 29 memset (cTextLine1,' ',16);
Dannis_mbed 0:81b21910454e 30 memset (cTextLine2,' ',16);
Dannis_mbed 0:81b21910454e 31 }
Dannis_mbed 0:81b21910454e 32 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 33 // set's //
Dannis_mbed 0:81b21910454e 34 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 35
Dannis_mbed 0:81b21910454e 36 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 37 // get's //
Dannis_mbed 0:81b21910454e 38 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 39 char* Menu::getLine1(void)
Dannis_mbed 0:81b21910454e 40 {
Dannis_mbed 0:81b21910454e 41 static char* pLine1;
Dannis_mbed 0:81b21910454e 42 pLine1 = cTextLine1;
Dannis_mbed 0:81b21910454e 43 return pLine1;
Dannis_mbed 0:81b21910454e 44 }
Dannis_mbed 0:81b21910454e 45
Dannis_mbed 0:81b21910454e 46 char* Menu::getLine2(void)
Dannis_mbed 0:81b21910454e 47 {
Dannis_mbed 0:81b21910454e 48 static char* pLine2;
Dannis_mbed 0:81b21910454e 49 pLine2 = cTextLine2;
Dannis_mbed 0:81b21910454e 50 return pLine2;
Dannis_mbed 0:81b21910454e 51 }
Dannis_mbed 0:81b21910454e 52
Dannis_mbed 1:b4a0d63db637 53 SCREEN_t Menu::getScreen(void)
Dannis_mbed 1:b4a0d63db637 54 {
Dannis_mbed 1:b4a0d63db637 55 return screen;
Dannis_mbed 1:b4a0d63db637 56 }
Dannis_mbed 1:b4a0d63db637 57
Dannis_mbed 1:b4a0d63db637 58 bool Menu::bGetReadHeight(void)
Dannis_mbed 1:b4a0d63db637 59 {
Dannis_mbed 1:b4a0d63db637 60 return bReadHeight;
Dannis_mbed 1:b4a0d63db637 61 }
Dannis_mbed 0:81b21910454e 62 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 63 // other //
Dannis_mbed 0:81b21910454e 64 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 65 void Menu::vRotaryUp(void)
Dannis_mbed 1:b4a0d63db637 66 {
Dannis_mbed 2:f6d058931b17 67 if((nextMenu != _BACKBACK)||(nextMenu != _BACKHOME)) backToFrom = nextMenu; // remember previous menu exept back and home
Dannis_mbed 1:b4a0d63db637 68 if(bMenu) vSelectMenu(nextMenu);
Dannis_mbed 2:f6d058931b17 69 else if(!bMenu)
Dannis_mbed 2:f6d058931b17 70 {
Dannis_mbed 2:f6d058931b17 71 svSoF.vIncrease(valueToChange); // to construct
Dannis_mbed 2:f6d058931b17 72 vSelectMenu(nextMenu);
Dannis_mbed 2:f6d058931b17 73 }
Dannis_mbed 1:b4a0d63db637 74 vCheckReadHeight();
Dannis_mbed 2:f6d058931b17 75 //debug.printf("backToFrom %i\r\n", backToFrom);
Dannis_mbed 1:b4a0d63db637 76 }
Dannis_mbed 1:b4a0d63db637 77
Dannis_mbed 1:b4a0d63db637 78 void Menu::vRotaryDown(void)
Dannis_mbed 1:b4a0d63db637 79 {
Dannis_mbed 2:f6d058931b17 80 if((nextMenu != _BACKBACK)||(nextMenu != _BACKHOME)) backToFrom = nextMenu; // remember previous menu exept back and home
Dannis_mbed 1:b4a0d63db637 81 if(bMenu) vSelectMenu(prevMenu);
Dannis_mbed 2:f6d058931b17 82 else if(!bMenu)
Dannis_mbed 2:f6d058931b17 83 {
Dannis_mbed 2:f6d058931b17 84 svSoF.vDecrease(valueToChange); // to construct
Dannis_mbed 2:f6d058931b17 85 vSelectMenu(nextMenu);
Dannis_mbed 2:f6d058931b17 86 }
Dannis_mbed 1:b4a0d63db637 87 vCheckReadHeight();
Dannis_mbed 2:f6d058931b17 88 //debug.printf("backToFrom %i\r\n", backToFrom);
Dannis_mbed 1:b4a0d63db637 89 }
Dannis_mbed 1:b4a0d63db637 90
Dannis_mbed 1:b4a0d63db637 91 void Menu::vRotaryConfirm(void)
Dannis_mbed 1:b4a0d63db637 92 {
Dannis_mbed 1:b4a0d63db637 93 if(bMenu) vSelectMenu(confMenu);
Dannis_mbed 2:f6d058931b17 94 else if (!bMenu)
Dannis_mbed 2:f6d058931b17 95 {
Dannis_mbed 2:f6d058931b17 96 bMenu = true;
Dannis_mbed 2:f6d058931b17 97 vSelectMenu(confMenu);
Dannis_mbed 2:f6d058931b17 98 }
Dannis_mbed 1:b4a0d63db637 99 //debug.printf("rotary confirm\r\n");
Dannis_mbed 1:b4a0d63db637 100 }
Dannis_mbed 1:b4a0d63db637 101
Dannis_mbed 1:b4a0d63db637 102 void Menu::vFillString1(void)
Dannis_mbed 1:b4a0d63db637 103 {
Dannis_mbed 1:b4a0d63db637 104 int i;
Dannis_mbed 1:b4a0d63db637 105 int length = strlen(cTextLine1);
Dannis_mbed 1:b4a0d63db637 106 for (i=length; i < 16; i++) strcat(cTextLine1," ");
Dannis_mbed 1:b4a0d63db637 107 }
Dannis_mbed 1:b4a0d63db637 108
Dannis_mbed 0:81b21910454e 109 void Menu::vFillString2(void)
Dannis_mbed 0:81b21910454e 110 {
Dannis_mbed 0:81b21910454e 111 int i;
Dannis_mbed 0:81b21910454e 112 int length = strlen(cTextLine2);
Dannis_mbed 0:81b21910454e 113 for (i=length; i < 16; i++) strcat(cTextLine2," ");
Dannis_mbed 0:81b21910454e 114 }
Dannis_mbed 0:81b21910454e 115
Dannis_mbed 2:f6d058931b17 116 void Menu::vCheckReadHeight(void) // used for project demo only
Dannis_mbed 1:b4a0d63db637 117 {
Dannis_mbed 1:b4a0d63db637 118 if(bReadHeight)
Dannis_mbed 1:b4a0d63db637 119 {
Dannis_mbed 1:b4a0d63db637 120 cStatus = 0xff;
Dannis_mbed 1:b4a0d63db637 121 CANbus.write(CANMessage(DEVICE_ID, &cStatus, 1)); // send clearance true to port height
Dannis_mbed 1:b4a0d63db637 122 }
Dannis_mbed 1:b4a0d63db637 123 else
Dannis_mbed 1:b4a0d63db637 124 {
Dannis_mbed 1:b4a0d63db637 125 cStatus = 0x00;
Dannis_mbed 2:f6d058931b17 126 CANbus.write(CANMessage(DEVICE_ID, &cStatus, 1)); // send clearance false to port height
Dannis_mbed 1:b4a0d63db637 127 }
Dannis_mbed 1:b4a0d63db637 128 }
Dannis_mbed 1:b4a0d63db637 129
Dannis_mbed 0:81b21910454e 130 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 131 // show screens //
Dannis_mbed 0:81b21910454e 132 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 133 void Menu::vShowScreen(SCREEN_t s)
Dannis_mbed 0:81b21910454e 134 {
Dannis_mbed 0:81b21910454e 135 screen = s;
Dannis_mbed 0:81b21910454e 136 uiCounter = rand()% 100 + 1;
Dannis_mbed 0:81b21910454e 137 switch(screen)
Dannis_mbed 0:81b21910454e 138 {
Dannis_mbed 2:f6d058931b17 139 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 140 // base screens //
Dannis_mbed 2:f6d058931b17 141 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 142 case _INIT: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 0:81b21910454e 143 strcpy(cTextLine2," Initialize "); break;
Dannis_mbed 0:81b21910454e 144
Dannis_mbed 1:b4a0d63db637 145 case _STANDBY: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 1:b4a0d63db637 146 strcpy(cTextLine2," system STANDBY "); break;
Dannis_mbed 2:f6d058931b17 147
Dannis_mbed 2:f6d058931b17 148 case _ACTIVE: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 2:f6d058931b17 149 strcpy(cTextLine2," system ACTIVE "); break;
Dannis_mbed 2:f6d058931b17 150 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 151 // menulayer 0 settings //
Dannis_mbed 2:f6d058931b17 152 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 153 case _SETTINGS0: strcpy(cTextLine1,">Settings ");
Dannis_mbed 1:b4a0d63db637 154 strcpy(cTextLine2," View settings "); break;
Dannis_mbed 1:b4a0d63db637 155
Dannis_mbed 2:f6d058931b17 156 case _SETTINGS1: strcpy(cTextLine1,">View settings ");
Dannis_mbed 2:f6d058931b17 157 strcpy(cTextLine2," Diagnosis "); break;
Dannis_mbed 1:b4a0d63db637 158
Dannis_mbed 1:b4a0d63db637 159 case _SETTINGS2: strcpy(cTextLine1," View settings ");
Dannis_mbed 1:b4a0d63db637 160 strcpy(cTextLine2,">Diagnosis "); break;
Dannis_mbed 2:f6d058931b17 161
Dannis_mbed 2:f6d058931b17 162 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 163 // menulayer 1 settings //
Dannis_mbed 2:f6d058931b17 164 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 165 case _SYSTEMVAR0: strcpy(cTextLine1,">Safety margins ");
Dannis_mbed 2:f6d058931b17 166 strcpy(cTextLine2," Take-off speed "); break;
Dannis_mbed 0:81b21910454e 167
Dannis_mbed 2:f6d058931b17 168 case _SYSTEMVAR1: strcpy(cTextLine1,">Take-off speed ");
Dannis_mbed 2:f6d058931b17 169 strcpy(cTextLine2," Height F-borne "); break;
Dannis_mbed 2:f6d058931b17 170
Dannis_mbed 2:f6d058931b17 171 case _SYSTEMVAR2: strcpy(cTextLine1,">Height f-borne ");
Dannis_mbed 2:f6d058931b17 172 strcpy(cTextLine2," Height f-assist"); break;
Dannis_mbed 2:f6d058931b17 173
Dannis_mbed 2:f6d058931b17 174 case _SYSTEMVAR3: strcpy(cTextLine1,">Height f-assist");
Dannis_mbed 2:f6d058931b17 175 strcpy(cTextLine2," AOA f-assist "); break;
Dannis_mbed 2:f6d058931b17 176
Dannis_mbed 2:f6d058931b17 177 case _SYSTEMVAR4: strcpy(cTextLine1,">AOA f-assist ");
Dannis_mbed 2:f6d058931b17 178 strcpy(cTextLine2," Back "); break;
Dannis_mbed 2:f6d058931b17 179
Dannis_mbed 2:f6d058931b17 180 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 181 // menulayer 2 settings //
Dannis_mbed 2:f6d058931b17 182 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 183 case _SYSTEMVARSELECT0: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 184 strcpy(cTextLine2,">Roll angle "); break;
Dannis_mbed 2:f6d058931b17 185
Dannis_mbed 2:f6d058931b17 186 case _SYSTEMVARSELECT1: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 187 strcpy(cTextLine2,">Pitch angle "); break;
Dannis_mbed 2:f6d058931b17 188
Dannis_mbed 2:f6d058931b17 189 case _SYSTEMVARSELECT2: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 190 strcpy(cTextLine2,">Take-off speed "); break;
Dannis_mbed 2:f6d058931b17 191
Dannis_mbed 2:f6d058931b17 192 case _SYSTEMVARSELECT3: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 193 strcpy(cTextLine2,">Height f-borne "); break;
Dannis_mbed 2:f6d058931b17 194
Dannis_mbed 2:f6d058931b17 195 case _SYSTEMVARSELECT4: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 196 strcpy(cTextLine2,">Height f-assist"); break;
Dannis_mbed 2:f6d058931b17 197
Dannis_mbed 2:f6d058931b17 198 case _SYSTEMVARSELECT5: strcpy(cTextLine1," Agree to change");
Dannis_mbed 2:f6d058931b17 199 strcpy(cTextLine2,">AOA f-assist "); break;
Dannis_mbed 2:f6d058931b17 200
Dannis_mbed 2:f6d058931b17 201 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 202 // menulayer 2 settings //
Dannis_mbed 2:f6d058931b17 203 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 204 case _MUTATESYSTEMVAR0: svSoF.cShowValue(_MAXROLL);
Dannis_mbed 2:f6d058931b17 205 strcpy(cTextLine1," max roll angle ");
Dannis_mbed 2:f6d058931b17 206 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 207 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 208 strcat(cTextLine2,"\xDF");
Dannis_mbed 2:f6d058931b17 209 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 210
Dannis_mbed 2:f6d058931b17 211 case _MUTATESYSTEMVAR1: svSoF.cShowValue(_MINPITCH);
Dannis_mbed 2:f6d058931b17 212 strcpy(cTextLine1," min pitch angle");
Dannis_mbed 2:f6d058931b17 213 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 214 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 215 strcat(cTextLine2,"\xDF");
Dannis_mbed 2:f6d058931b17 216 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 217
Dannis_mbed 2:f6d058931b17 218 case _MUTATESYSTEMVAR2: svSoF.cShowValue(_MAXPITCH);
Dannis_mbed 2:f6d058931b17 219 strcpy(cTextLine1," max pitch angle ");
Dannis_mbed 2:f6d058931b17 220 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 221 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 222 strcat(cTextLine2,"\xDF");
Dannis_mbed 2:f6d058931b17 223 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 224
Dannis_mbed 2:f6d058931b17 225 case _MUTATESYSTEMVAR3: svSoF.cShowValue(_TAKEOFFSPEED);
Dannis_mbed 2:f6d058931b17 226 strcpy(cTextLine1," max T-O speed ");
Dannis_mbed 2:f6d058931b17 227 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 228 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 229 strcat(cTextLine2,"knots");
Dannis_mbed 2:f6d058931b17 230 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 231
Dannis_mbed 2:f6d058931b17 232 case _MUTATESYSTEMVAR4: svSoF.cShowValue(_HEIGHTFOILBORNE);
Dannis_mbed 2:f6d058931b17 233 strcpy(cTextLine1," foilborne height");
Dannis_mbed 2:f6d058931b17 234 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 235 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 236 strcat(cTextLine2,"cm.");
Dannis_mbed 2:f6d058931b17 237 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 238
Dannis_mbed 2:f6d058931b17 239 case _MUTATESYSTEMVAR5: svSoF.cShowValue(_HEIGHTFOILASSIST);
Dannis_mbed 2:f6d058931b17 240 strcpy(cTextLine1," f-assist height ");
Dannis_mbed 2:f6d058931b17 241 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 242 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 243 strcat(cTextLine2,"cm.");
Dannis_mbed 2:f6d058931b17 244 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 245
Dannis_mbed 2:f6d058931b17 246 case _MUTATESYSTEMVAR6: svSoF.cShowValue(_AOAFOILASSIST);
Dannis_mbed 2:f6d058931b17 247 strcpy(cTextLine1," AOA foil assist ");
Dannis_mbed 2:f6d058931b17 248 strcpy(cTextLine2," ");
Dannis_mbed 2:f6d058931b17 249 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 2:f6d058931b17 250 strcat(cTextLine2,"\xDF");
Dannis_mbed 2:f6d058931b17 251 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 252
Dannis_mbed 2:f6d058931b17 253 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 254 // Multiple used screens //
Dannis_mbed 2:f6d058931b17 255 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 256 case _BACK: strcpy(cTextLine1,">Back ");
Dannis_mbed 2:f6d058931b17 257 strcpy(cTextLine2," Home "); break;
Dannis_mbed 2:f6d058931b17 258
Dannis_mbed 2:f6d058931b17 259 case _HOME: strcpy(cTextLine1," Back ");
Dannis_mbed 2:f6d058931b17 260 strcpy(cTextLine2,">Home "); break;
Dannis_mbed 2:f6d058931b17 261
Dannis_mbed 2:f6d058931b17 262 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 263 // CAN messages //
Dannis_mbed 2:f6d058931b17 264 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 265
Dannis_mbed 1:b4a0d63db637 266 case _FOILBORNE: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 1:b4a0d63db637 267 strcpy(cTextLine2," FOILBORNE mode "); break;
Dannis_mbed 1:b4a0d63db637 268
Dannis_mbed 1:b4a0d63db637 269 case _FOILASSIST: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 1:b4a0d63db637 270 strcpy(cTextLine2," FOILASSIST mode"); break;
Dannis_mbed 1:b4a0d63db637 271
Dannis_mbed 1:b4a0d63db637 272 case _HOMESCREEN: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 2:f6d058931b17 273 strcpy(cTextLine2,">Home "); break;
Dannis_mbed 1:b4a0d63db637 274
Dannis_mbed 1:b4a0d63db637 275 case _PROGRESS: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 1:b4a0d63db637 276 strcpy(cTextLine2,"work in progress"); break;
Dannis_mbed 2:f6d058931b17 277
Dannis_mbed 2:f6d058931b17 278 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 279 // CAN messages //
Dannis_mbed 2:f6d058931b17 280 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 281 case _CANINIT: strcpy(cTextLine1," Solar on Foils ");
Dannis_mbed 1:b4a0d63db637 282 strcpy(cTextLine2," CAN INITIALIZE "); break;
Dannis_mbed 0:81b21910454e 283
Dannis_mbed 1:b4a0d63db637 284 case _CANOK: strcpy(cTextLine2," System OK "); break;
Dannis_mbed 0:81b21910454e 285
Dannis_mbed 0:81b21910454e 286 case _CANID101OK: strcpy(cTextLine1," PORT FOIL ");
Dannis_mbed 0:81b21910454e 287 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 288 case _CANID102OK: strcpy(cTextLine1," STARB FOIL ");
Dannis_mbed 0:81b21910454e 289 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 290 case _CANID201OK: strcpy(cTextLine1," PORT HEIGHT ");
Dannis_mbed 0:81b21910454e 291 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 292 case _CANID202OK: strcpy(cTextLine1," STARB HEIGHT ");
Dannis_mbed 0:81b21910454e 293 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 294 case _CANID205OK: strcpy(cTextLine1," GYRO/GPS ");
Dannis_mbed 0:81b21910454e 295 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 296 case _CANID1001OK: strcpy(cTextLine1," EXTERN UI ");
Dannis_mbed 0:81b21910454e 297 strcpy(cTextLine2," CAN OK "); break;
Dannis_mbed 0:81b21910454e 298 case _CANID101FAIL: strcpy(cTextLine1," PORT FOIL ");
Dannis_mbed 0:81b21910454e 299 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 300 case _CANID102FAIL: strcpy(cTextLine1," STARB FOIL ");
Dannis_mbed 0:81b21910454e 301 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 302 case _CANID201FAIL: strcpy(cTextLine1," PORT HEIGHT ");
Dannis_mbed 0:81b21910454e 303 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 304 case _CANID202FAIL: strcpy(cTextLine1," STARB HEIGHT ");
Dannis_mbed 0:81b21910454e 305 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 306 case _CANID205FAIL: strcpy(cTextLine1," GYRO/GPS ");
Dannis_mbed 0:81b21910454e 307 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 308 case _CANID1001FAIL: strcpy(cTextLine1," EXTERN UI ");
Dannis_mbed 0:81b21910454e 309 strcpy(cTextLine2," CAN FAIL "); break;
Dannis_mbed 0:81b21910454e 310
Dannis_mbed 0:81b21910454e 311 case _CANFAIL: strcpy(cTextLine2," System FAIL "); break;
Dannis_mbed 0:81b21910454e 312
Dannis_mbed 0:81b21910454e 313 case _CANNORESPONSE: strcpy(cTextLine2," No CAN responce"); break;
Dannis_mbed 0:81b21910454e 314
Dannis_mbed 0:81b21910454e 315 case _PULSE_IS: strcpy(cTextLine1,"Pulse is: ");
Dannis_mbed 0:81b21910454e 316 // char *intStr = itoa(uiCounter);
Dannis_mbed 0:81b21910454e 317 //string str = string(intStr);
Dannis_mbed 0:81b21910454e 318 // strcpy(cTextLine2, intStr); // about to test
Dannis_mbed 0:81b21910454e 319 break;
Dannis_mbed 2:f6d058931b17 320
Dannis_mbed 2:f6d058931b17 321 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 322 // IMU messages //
Dannis_mbed 2:f6d058931b17 323 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 324 case _IMUREADY: strcpy(cTextLine1,"MPU9150 is ready"); break;
Dannis_mbed 0:81b21910454e 325
Dannis_mbed 2:f6d058931b17 326 case _IMUFAIL: strcpy(cTextLine1,"MPU9150init fail"); break;
Dannis_mbed 2:f6d058931b17 327
Dannis_mbed 2:f6d058931b17 328 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 329 // Test screens //
Dannis_mbed 2:f6d058931b17 330 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 331 case _ROLLTEST: svSoF.cShowValue(_ROLL);
Dannis_mbed 0:81b21910454e 332 strcpy(cTextLine1," Confirm to end ");
Dannis_mbed 0:81b21910454e 333 strcpy(cTextLine2,"Roll: ");
Dannis_mbed 0:81b21910454e 334 if(svSoF.iGetRollPolarity()!= 0) strcat(cTextLine2,"+");
Dannis_mbed 0:81b21910454e 335 else strcat(cTextLine2,"-");
Dannis_mbed 0:81b21910454e 336 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 0:81b21910454e 337 strcat(cTextLine2,"\xDF");
Dannis_mbed 0:81b21910454e 338 vFillString2(); break;
Dannis_mbed 0:81b21910454e 339
Dannis_mbed 0:81b21910454e 340 case _PITCHTEST: svSoF.cShowValue(_PITCH);
Dannis_mbed 0:81b21910454e 341 strcpy(cTextLine1," Confirm to end ");
Dannis_mbed 0:81b21910454e 342 strcpy(cTextLine2,"Pitch:");
Dannis_mbed 0:81b21910454e 343 if(svSoF.iGetPitchPolarity()!= 0) strcat(cTextLine2,"+");
Dannis_mbed 0:81b21910454e 344 else strcat(cTextLine2,"-");
Dannis_mbed 0:81b21910454e 345 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 0:81b21910454e 346 strcat(cTextLine2,"\xDF");
Dannis_mbed 1:b4a0d63db637 347 vFillString2(); break;
Dannis_mbed 1:b4a0d63db637 348
Dannis_mbed 1:b4a0d63db637 349 case _HEIGHTTEST: svSoF.cShowValue(_PHEIGHT);
Dannis_mbed 1:b4a0d63db637 350 strcpy(cTextLine1," Confirm to end ");
Dannis_mbed 1:b4a0d63db637 351 strcpy(cTextLine2,"Port:");
Dannis_mbed 1:b4a0d63db637 352 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 1:b4a0d63db637 353 strcat(cTextLine2," cm.");
Dannis_mbed 1:b4a0d63db637 354 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 355
Dannis_mbed 1:b4a0d63db637 356 case _SHOWHEIGHTFB: svSoF.cShowValue(_HEIGHTFOILBORNE);
Dannis_mbed 1:b4a0d63db637 357 strcpy(cTextLine1," Confirm to end ");
Dannis_mbed 1:b4a0d63db637 358 strcpy(cTextLine2,"Height:");
Dannis_mbed 1:b4a0d63db637 359 strcat(cTextLine2, svSoF.getValue());
Dannis_mbed 1:b4a0d63db637 360 strcat(cTextLine2," cm.");
Dannis_mbed 2:f6d058931b17 361 vFillString2(); break;
Dannis_mbed 2:f6d058931b17 362 } // End switch case
Dannis_mbed 0:81b21910454e 363 if(strlen(cTextLine1) > 18) strcpy(cTextLine1," Line overflow ");
Dannis_mbed 0:81b21910454e 364 if(strlen(cTextLine2) > 18) strcpy(cTextLine2," Line overflow ");
Dannis_mbed 0:81b21910454e 365 }
Dannis_mbed 0:81b21910454e 366
Dannis_mbed 1:b4a0d63db637 367 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 368 // select menu screens //
Dannis_mbed 1:b4a0d63db637 369 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 370 void Menu::vSelectMenu(MENU_t m)
Dannis_mbed 1:b4a0d63db637 371 {
Dannis_mbed 1:b4a0d63db637 372 menu = m;
Dannis_mbed 1:b4a0d63db637 373 switch(menu)
Dannis_mbed 1:b4a0d63db637 374 {
Dannis_mbed 1:b4a0d63db637 375 case _MENU0_0: mLCDMenu.vShowScreen(_INIT); nextMenu = _MENU0_1; break;
Dannis_mbed 1:b4a0d63db637 376
Dannis_mbed 2:f6d058931b17 377 case _MENU0_1: mLCDMenu.vShowScreen(_STANDBY); nextMenu = prevMenu = confMenu = _MENU0_2; break;
Dannis_mbed 1:b4a0d63db637 378
Dannis_mbed 2:f6d058931b17 379 case _MENU0_2: mLCDMenu.vShowScreen(_SETTINGS0); nextMenu = _MENU0_3; prevMenu = _MENU0_4; confMenu = _MENU1_20; break;
Dannis_mbed 1:b4a0d63db637 380
Dannis_mbed 1:b4a0d63db637 381 case _MENU0_3: mLCDMenu.vShowScreen(_SETTINGS1); nextMenu = _MENU0_4; prevMenu = _MENU0_2; confMenu = _MENU1_31; break;
Dannis_mbed 1:b4a0d63db637 382
Dannis_mbed 1:b4a0d63db637 383 case _MENU0_4: mLCDMenu.vShowScreen(_SETTINGS2); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_4; break;
Dannis_mbed 1:b4a0d63db637 384
Dannis_mbed 2:f6d058931b17 385 case _MENU1_20: mLCDMenu.vShowScreen(_SYSTEMVAR0); nextMenu = _MENU1_21; prevMenu = _MENU1_20; confMenu = _MENU2_20; break;
Dannis_mbed 2:f6d058931b17 386
Dannis_mbed 2:f6d058931b17 387 case _MENU1_21: mLCDMenu.vShowScreen(_SYSTEMVAR1); nextMenu = _MENU1_22; prevMenu = _MENU1_20; confMenu = _MENU2_21; break;
Dannis_mbed 2:f6d058931b17 388
Dannis_mbed 2:f6d058931b17 389 case _MENU1_22: mLCDMenu.vShowScreen(_SYSTEMVAR2); nextMenu = _MENU1_23; prevMenu = _MENU1_21; confMenu = _MENU2_22; break;
Dannis_mbed 2:f6d058931b17 390
Dannis_mbed 2:f6d058931b17 391 case _MENU1_23: mLCDMenu.vShowScreen(_SYSTEMVAR3); nextMenu = _MENU1_24; prevMenu = _MENU1_22; confMenu = _MENU2_23; break;
Dannis_mbed 2:f6d058931b17 392
Dannis_mbed 2:f6d058931b17 393 case _MENU1_24: mLCDMenu.vShowScreen(_SYSTEMVAR4); nextMenu = _BACKBACK; prevMenu = _MENU1_23; confMenu = _MENU2_24; break;
Dannis_mbed 2:f6d058931b17 394
Dannis_mbed 2:f6d058931b17 395 case _MENU2_20: mLCDMenu.vShowScreen(_SYSTEMVARSELECT0); nextMenu = _MENU2_21; prevMenu = _MENU2_20; confMenu = _MENU3_20; valueToChange = _MAXROLL; break;
Dannis_mbed 2:f6d058931b17 396
Dannis_mbed 2:f6d058931b17 397 case _MENU2_21: mLCDMenu.vShowScreen(_SYSTEMVARSELECT1); nextMenu = _MENU2_22; prevMenu = _MENU2_20; confMenu = _MENU3_21; valueToChange = _MINPITCH; break;
Dannis_mbed 2:f6d058931b17 398
Dannis_mbed 2:f6d058931b17 399 case _MENU2_22: mLCDMenu.vShowScreen(_SYSTEMVARSELECT2); nextMenu = _MENU2_23; prevMenu = _MENU2_21; confMenu = _MENU3_23; valueToChange = _TAKEOFFSPEED; break;
Dannis_mbed 2:f6d058931b17 400
Dannis_mbed 2:f6d058931b17 401 case _MENU2_23: mLCDMenu.vShowScreen(_SYSTEMVARSELECT3); nextMenu = _MENU2_24; prevMenu = _MENU2_22; confMenu = _MENU3_24; valueToChange = _HEIGHTFOILBORNE; break;
Dannis_mbed 2:f6d058931b17 402
Dannis_mbed 2:f6d058931b17 403 case _MENU2_24: mLCDMenu.vShowScreen(_SYSTEMVARSELECT4); nextMenu = _MENU2_25; prevMenu = _MENU2_23; confMenu = _MENU3_25; valueToChange = _HEIGHTFOILASSIST; break;
Dannis_mbed 1:b4a0d63db637 404
Dannis_mbed 2:f6d058931b17 405 case _MENU2_25: mLCDMenu.vShowScreen(_SYSTEMVARSELECT5); nextMenu = _BACKBACK; prevMenu = _MENU2_24; confMenu = _MENU3_26; valueToChange = _AOAFOILASSIST; break;
Dannis_mbed 2:f6d058931b17 406
Dannis_mbed 2:f6d058931b17 407 // system variabele aanpassen
Dannis_mbed 2:f6d058931b17 408 case _MENU3_20: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR0); confMenu = _MENU2_20; break;
Dannis_mbed 2:f6d058931b17 409
Dannis_mbed 2:f6d058931b17 410 case _MENU3_21: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR1); confMenu = _MENU3_22; valueToChange = _MAXPITCH; break;
Dannis_mbed 2:f6d058931b17 411
Dannis_mbed 2:f6d058931b17 412 case _MENU3_22: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR2); confMenu = _MENU2_21; break;
Dannis_mbed 2:f6d058931b17 413
Dannis_mbed 2:f6d058931b17 414 case _MENU3_23: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR3); confMenu = _MENU2_22; break;
Dannis_mbed 1:b4a0d63db637 415
Dannis_mbed 2:f6d058931b17 416 case _MENU3_24: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR4); confMenu = _MENU2_23; break;
Dannis_mbed 2:f6d058931b17 417
Dannis_mbed 2:f6d058931b17 418 case _MENU3_25: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR5); confMenu = _MENU2_24; break;
Dannis_mbed 2:f6d058931b17 419
Dannis_mbed 2:f6d058931b17 420 case _MENU3_26: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR6); confMenu = _MENU2_25; break;
Dannis_mbed 2:f6d058931b17 421
Dannis_mbed 2:f6d058931b17 422
Dannis_mbed 2:f6d058931b17 423 case _MENU1_4: mLCDMenu.vShowScreen(_PROGRESS); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_20; break;
Dannis_mbed 2:f6d058931b17 424
Dannis_mbed 2:f6d058931b17 425 case _MENU1_31: mLCDMenu.vShowScreen(_ROLLTEST); nextMenu = _MENU1_32; prevMenu = _BACKHOME; confMenu = _MENU1_31; break;
Dannis_mbed 1:b4a0d63db637 426
Dannis_mbed 1:b4a0d63db637 427 case _MENU1_32: mLCDMenu.vShowScreen(_PITCHTEST); nextMenu = _MENU1_33; prevMenu = _MENU1_31; confMenu = _MENU1_32; break;
Dannis_mbed 1:b4a0d63db637 428
Dannis_mbed 1:b4a0d63db637 429 case _MENU1_33: mLCDMenu.vShowScreen(_SHOWHEIGHTFB); bReadHeight = false; nextMenu = _MENU1_34; prevMenu = _MENU1_32; confMenu = _MENU1_33; break;
Dannis_mbed 1:b4a0d63db637 430
Dannis_mbed 2:f6d058931b17 431 case _MENU1_34: mLCDMenu.vShowScreen(_HEIGHTTEST); bReadHeight = true; nextMenu = _BACKHOME; prevMenu = _MENU1_33; confMenu = _MENU1_34; break;
Dannis_mbed 2:f6d058931b17 432 // Todo confMenu to previous menu layer
Dannis_mbed 2:f6d058931b17 433 case _BACKBACK: mLCDMenu.vShowScreen(_BACK); bReadHeight = false; nextMenu = _BACKHOME; prevMenu = backToFrom; confMenu = _MENU0_2; break;
Dannis_mbed 1:b4a0d63db637 434
Dannis_mbed 2:f6d058931b17 435 case _BACKHOME: mLCDMenu.vShowScreen(_HOME); bReadHeight = false; nextMenu = _BACKHOME; prevMenu = _BACKBACK; confMenu = _MENU0_2; break;
Dannis_mbed 1:b4a0d63db637 436
Dannis_mbed 1:b4a0d63db637 437 }//end switch
Dannis_mbed 1:b4a0d63db637 438 }
Dannis_mbed 0:81b21910454e 439