version 1.0
Dependencies: CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed
Fork of SolarOnFoils_MainModule_20150518 by
Diff: menu.cpp
- Revision:
- 2:f6d058931b17
- Parent:
- 1:b4a0d63db637
--- a/menu.cpp Fri Jun 26 09:21:33 2015 +0000 +++ b/menu.cpp Tue Aug 11 08:38:55 2015 +0000 @@ -64,21 +64,38 @@ ////////////////////////////////////////////////////////////////////////////////////// void Menu::vRotaryUp(void) { + if((nextMenu != _BACKBACK)||(nextMenu != _BACKHOME)) backToFrom = nextMenu; // remember previous menu exept back and home if(bMenu) vSelectMenu(nextMenu); + else if(!bMenu) + { + svSoF.vIncrease(valueToChange); // to construct + vSelectMenu(nextMenu); + } vCheckReadHeight(); - //debug.printf("rotary up %i\r\n", nextMenu); + //debug.printf("backToFrom %i\r\n", backToFrom); } void Menu::vRotaryDown(void) { + if((nextMenu != _BACKBACK)||(nextMenu != _BACKHOME)) backToFrom = nextMenu; // remember previous menu exept back and home if(bMenu) vSelectMenu(prevMenu); + else if(!bMenu) + { + svSoF.vDecrease(valueToChange); // to construct + vSelectMenu(nextMenu); + } vCheckReadHeight(); - //debug.printf("rotary down %i\r\n", prevMenu); + //debug.printf("backToFrom %i\r\n", backToFrom); } void Menu::vRotaryConfirm(void) { if(bMenu) vSelectMenu(confMenu); + else if (!bMenu) + { + bMenu = true; + vSelectMenu(confMenu); + } //debug.printf("rotary confirm\r\n"); } @@ -96,7 +113,7 @@ for (i=length; i < 16; i++) strcat(cTextLine2," "); } -void Menu::vCheckReadHeight(void) +void Menu::vCheckReadHeight(void) // used for project demo only { if(bReadHeight) { @@ -106,7 +123,7 @@ else { cStatus = 0x00; - CANbus.write(CANMessage(DEVICE_ID, &cStatus, 1)); // send clearance false to port height + CANbus.write(CANMessage(DEVICE_ID, &cStatus, 1)); // send clearance false to port height } } @@ -119,23 +136,132 @@ uiCounter = rand()% 100 + 1; switch(screen) { +////////////////////////////////////////////////////////////////////////////////////// +// base screens // +////////////////////////////////////////////////////////////////////////////////////// case _INIT: strcpy(cTextLine1," Solar on Foils "); strcpy(cTextLine2," Initialize "); break; case _STANDBY: strcpy(cTextLine1," Solar on Foils "); strcpy(cTextLine2," system STANDBY "); break; - + + case _ACTIVE: strcpy(cTextLine1," Solar on Foils "); + strcpy(cTextLine2," system ACTIVE "); break; +////////////////////////////////////////////////////////////////////////////////////// +// menulayer 0 settings // +////////////////////////////////////////////////////////////////////////////////////// case _SETTINGS0: strcpy(cTextLine1,">Settings "); strcpy(cTextLine2," View settings "); break; - case _SETTINGS1: strcpy(cTextLine1," Settings "); - strcpy(cTextLine2,">View settings "); break; + case _SETTINGS1: strcpy(cTextLine1,">View settings "); + strcpy(cTextLine2," Diagnosis "); break; case _SETTINGS2: strcpy(cTextLine1," View settings "); strcpy(cTextLine2,">Diagnosis "); break; + +////////////////////////////////////////////////////////////////////////////////////// +// menulayer 1 settings // +////////////////////////////////////////////////////////////////////////////////////// + case _SYSTEMVAR0: strcpy(cTextLine1,">Safety margins "); + strcpy(cTextLine2," Take-off speed "); break; - case _ACTIVE: strcpy(cTextLine1," Solar on Foils "); - strcpy(cTextLine2," system ACTIVE "); break; + case _SYSTEMVAR1: strcpy(cTextLine1,">Take-off speed "); + strcpy(cTextLine2," Height F-borne "); break; + + case _SYSTEMVAR2: strcpy(cTextLine1,">Height f-borne "); + strcpy(cTextLine2," Height f-assist"); break; + + case _SYSTEMVAR3: strcpy(cTextLine1,">Height f-assist"); + strcpy(cTextLine2," AOA f-assist "); break; + + case _SYSTEMVAR4: strcpy(cTextLine1,">AOA f-assist "); + strcpy(cTextLine2," Back "); break; + +////////////////////////////////////////////////////////////////////////////////////// +// menulayer 2 settings // +////////////////////////////////////////////////////////////////////////////////////// + case _SYSTEMVARSELECT0: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">Roll angle "); break; + + case _SYSTEMVARSELECT1: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">Pitch angle "); break; + + case _SYSTEMVARSELECT2: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">Take-off speed "); break; + + case _SYSTEMVARSELECT3: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">Height f-borne "); break; + + case _SYSTEMVARSELECT4: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">Height f-assist"); break; + + case _SYSTEMVARSELECT5: strcpy(cTextLine1," Agree to change"); + strcpy(cTextLine2,">AOA f-assist "); break; + +////////////////////////////////////////////////////////////////////////////////////// +// menulayer 2 settings // +////////////////////////////////////////////////////////////////////////////////////// + case _MUTATESYSTEMVAR0: svSoF.cShowValue(_MAXROLL); + strcpy(cTextLine1," max roll angle "); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"\xDF"); + vFillString2(); break; + + case _MUTATESYSTEMVAR1: svSoF.cShowValue(_MINPITCH); + strcpy(cTextLine1," min pitch angle"); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"\xDF"); + vFillString2(); break; + + case _MUTATESYSTEMVAR2: svSoF.cShowValue(_MAXPITCH); + strcpy(cTextLine1," max pitch angle "); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"\xDF"); + vFillString2(); break; + + case _MUTATESYSTEMVAR3: svSoF.cShowValue(_TAKEOFFSPEED); + strcpy(cTextLine1," max T-O speed "); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"knots"); + vFillString2(); break; + + case _MUTATESYSTEMVAR4: svSoF.cShowValue(_HEIGHTFOILBORNE); + strcpy(cTextLine1," foilborne height"); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"cm."); + vFillString2(); break; + + case _MUTATESYSTEMVAR5: svSoF.cShowValue(_HEIGHTFOILASSIST); + strcpy(cTextLine1," f-assist height "); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"cm."); + vFillString2(); break; + + case _MUTATESYSTEMVAR6: svSoF.cShowValue(_AOAFOILASSIST); + strcpy(cTextLine1," AOA foil assist "); + strcpy(cTextLine2," "); + strcat(cTextLine2, svSoF.getValue()); + strcat(cTextLine2,"\xDF"); + vFillString2(); break; + +////////////////////////////////////////////////////////////////////////////////////// +// Multiple used screens // +////////////////////////////////////////////////////////////////////////////////////// + case _BACK: strcpy(cTextLine1,">Back "); + strcpy(cTextLine2," Home "); break; + + case _HOME: strcpy(cTextLine1," Back "); + strcpy(cTextLine2,">Home "); break; + +////////////////////////////////////////////////////////////////////////////////////// +// CAN messages // +////////////////////////////////////////////////////////////////////////////////////// case _FOILBORNE: strcpy(cTextLine1," Solar on Foils "); strcpy(cTextLine2," FOILBORNE mode "); break; @@ -144,11 +270,14 @@ strcpy(cTextLine2," FOILASSIST mode"); break; case _HOMESCREEN: strcpy(cTextLine1," Solar on Foils "); - strcpy(cTextLine2,">HOME "); break; + strcpy(cTextLine2,">Home "); break; case _PROGRESS: strcpy(cTextLine1," Solar on Foils "); strcpy(cTextLine2,"work in progress"); break; - + +////////////////////////////////////////////////////////////////////////////////////// +// CAN messages // +////////////////////////////////////////////////////////////////////////////////////// case _CANINIT: strcpy(cTextLine1," Solar on Foils "); strcpy(cTextLine2," CAN INITIALIZE "); break; @@ -188,10 +317,17 @@ //string str = string(intStr); // strcpy(cTextLine2, intStr); // about to test break; + +////////////////////////////////////////////////////////////////////////////////////// +// IMU messages // +////////////////////////////////////////////////////////////////////////////////////// case _IMUREADY: strcpy(cTextLine1,"MPU9150 is ready"); break; - case _IMUFAIL: strcpy(cTextLine1,"MPU9150init fail"); break; - + case _IMUFAIL: strcpy(cTextLine1,"MPU9150init fail"); break; + +////////////////////////////////////////////////////////////////////////////////////// +// Test screens // +////////////////////////////////////////////////////////////////////////////////////// case _ROLLTEST: svSoF.cShowValue(_ROLL); strcpy(cTextLine1," Confirm to end "); strcpy(cTextLine2,"Roll: "); @@ -216,21 +352,16 @@ strcat(cTextLine2, svSoF.getValue()); strcat(cTextLine2," cm."); vFillString2(); break; - - + case _SHOWHEIGHTFB: svSoF.cShowValue(_HEIGHTFOILBORNE); strcpy(cTextLine1," Confirm to end "); strcpy(cTextLine2,"Height:"); strcat(cTextLine2, svSoF.getValue()); strcat(cTextLine2," cm."); - vFillString2(); break; - - } // End switch case - //debug.printf("strlen %i\t", strlen(cTextLine2)); // debug stringlength + vFillString2(); break; + } // End switch case if(strlen(cTextLine1) > 18) strcpy(cTextLine1," Line overflow "); if(strlen(cTextLine2) > 18) strcpy(cTextLine2," Line overflow "); - // \xDF for degree sign. - // "\x18\x19\x1a\x1b" arrows } ////////////////////////////////////////////////////////////////////////////////////// @@ -243,27 +374,65 @@ { case _MENU0_0: mLCDMenu.vShowScreen(_INIT); nextMenu = _MENU0_1; break; - case _MENU0_1: mLCDMenu.vShowScreen(_STANDBY); nextMenu = _MENU0_2; break; + case _MENU0_1: mLCDMenu.vShowScreen(_STANDBY); nextMenu = prevMenu = confMenu = _MENU0_2; break; - case _MENU0_2: mLCDMenu.vShowScreen(_SETTINGS0); nextMenu = _MENU0_3; prevMenu = _MENU0_4; confMenu = _MENU1_2; break; + case _MENU0_2: mLCDMenu.vShowScreen(_SETTINGS0); nextMenu = _MENU0_3; prevMenu = _MENU0_4; confMenu = _MENU1_20; break; case _MENU0_3: mLCDMenu.vShowScreen(_SETTINGS1); nextMenu = _MENU0_4; prevMenu = _MENU0_2; confMenu = _MENU1_31; break; case _MENU0_4: mLCDMenu.vShowScreen(_SETTINGS2); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_4; break; - case _MENU1_2: mLCDMenu.vShowScreen(_PROGRESS); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_2; break; + case _MENU1_20: mLCDMenu.vShowScreen(_SYSTEMVAR0); nextMenu = _MENU1_21; prevMenu = _MENU1_20; confMenu = _MENU2_20; break; + + case _MENU1_21: mLCDMenu.vShowScreen(_SYSTEMVAR1); nextMenu = _MENU1_22; prevMenu = _MENU1_20; confMenu = _MENU2_21; break; + + case _MENU1_22: mLCDMenu.vShowScreen(_SYSTEMVAR2); nextMenu = _MENU1_23; prevMenu = _MENU1_21; confMenu = _MENU2_22; break; + + case _MENU1_23: mLCDMenu.vShowScreen(_SYSTEMVAR3); nextMenu = _MENU1_24; prevMenu = _MENU1_22; confMenu = _MENU2_23; break; + + case _MENU1_24: mLCDMenu.vShowScreen(_SYSTEMVAR4); nextMenu = _BACKBACK; prevMenu = _MENU1_23; confMenu = _MENU2_24; break; + + case _MENU2_20: mLCDMenu.vShowScreen(_SYSTEMVARSELECT0); nextMenu = _MENU2_21; prevMenu = _MENU2_20; confMenu = _MENU3_20; valueToChange = _MAXROLL; break; + + case _MENU2_21: mLCDMenu.vShowScreen(_SYSTEMVARSELECT1); nextMenu = _MENU2_22; prevMenu = _MENU2_20; confMenu = _MENU3_21; valueToChange = _MINPITCH; break; + + case _MENU2_22: mLCDMenu.vShowScreen(_SYSTEMVARSELECT2); nextMenu = _MENU2_23; prevMenu = _MENU2_21; confMenu = _MENU3_23; valueToChange = _TAKEOFFSPEED; break; + + case _MENU2_23: mLCDMenu.vShowScreen(_SYSTEMVARSELECT3); nextMenu = _MENU2_24; prevMenu = _MENU2_22; confMenu = _MENU3_24; valueToChange = _HEIGHTFOILBORNE; break; + + case _MENU2_24: mLCDMenu.vShowScreen(_SYSTEMVARSELECT4); nextMenu = _MENU2_25; prevMenu = _MENU2_23; confMenu = _MENU3_25; valueToChange = _HEIGHTFOILASSIST; break; - case _MENU1_4: mLCDMenu.vShowScreen(_PROGRESS); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_2; break; + case _MENU2_25: mLCDMenu.vShowScreen(_SYSTEMVARSELECT5); nextMenu = _BACKBACK; prevMenu = _MENU2_24; confMenu = _MENU3_26; valueToChange = _AOAFOILASSIST; break; + + // system variabele aanpassen + case _MENU3_20: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR0); confMenu = _MENU2_20; break; + + case _MENU3_21: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR1); confMenu = _MENU3_22; valueToChange = _MAXPITCH; break; + + case _MENU3_22: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR2); confMenu = _MENU2_21; break; + + case _MENU3_23: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR3); confMenu = _MENU2_22; break; - case _MENU1_31: mLCDMenu.vShowScreen(_ROLLTEST); nextMenu = _MENU1_32; prevMenu = _HOME; confMenu = _MENU1_31; break; + case _MENU3_24: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR4); confMenu = _MENU2_23; break; + + case _MENU3_25: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR5); confMenu = _MENU2_24; break; + + case _MENU3_26: bMenu = false; mLCDMenu.vShowScreen(_MUTATESYSTEMVAR6); confMenu = _MENU2_25; break; + + + case _MENU1_4: mLCDMenu.vShowScreen(_PROGRESS); nextMenu = _MENU0_2; prevMenu = _MENU0_3; confMenu = _MENU1_20; break; + + case _MENU1_31: mLCDMenu.vShowScreen(_ROLLTEST); nextMenu = _MENU1_32; prevMenu = _BACKHOME; confMenu = _MENU1_31; break; case _MENU1_32: mLCDMenu.vShowScreen(_PITCHTEST); nextMenu = _MENU1_33; prevMenu = _MENU1_31; confMenu = _MENU1_32; break; case _MENU1_33: mLCDMenu.vShowScreen(_SHOWHEIGHTFB); bReadHeight = false; nextMenu = _MENU1_34; prevMenu = _MENU1_32; confMenu = _MENU1_33; break; - case _MENU1_34: mLCDMenu.vShowScreen(_HEIGHTTEST); bReadHeight = true; nextMenu = _HOME; prevMenu = _MENU1_33; confMenu = _MENU1_34; break; + case _MENU1_34: mLCDMenu.vShowScreen(_HEIGHTTEST); bReadHeight = true; nextMenu = _BACKHOME; prevMenu = _MENU1_33; confMenu = _MENU1_34; break; + // Todo confMenu to previous menu layer + case _BACKBACK: mLCDMenu.vShowScreen(_BACK); bReadHeight = false; nextMenu = _BACKHOME; prevMenu = backToFrom; confMenu = _MENU0_2; break; - case _HOME: mLCDMenu.vShowScreen(_HOMESCREEN); bReadHeight = false; nextMenu = _MENU1_31; prevMenu = _MENU1_34; confMenu = _MENU0_2; break; + case _BACKHOME: mLCDMenu.vShowScreen(_HOME); bReadHeight = false; nextMenu = _BACKHOME; prevMenu = _BACKBACK; confMenu = _MENU0_2; break; }//end switch }