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 #ifndef MENU_H_INCLUDED
Dannis_mbed 0:81b21910454e 2 #define MENU_H_INCLUDED
Dannis_mbed 0:81b21910454e 3
Dannis_mbed 0:81b21910454e 4 #include "mbed.h"
Dannis_mbed 0:81b21910454e 5 #include "systemVar.h"
Dannis_mbed 0:81b21910454e 6
Dannis_mbed 0:81b21910454e 7 //Solar on Foils display screens
Dannis_mbed 0:81b21910454e 8 enum SCREEN_t
Dannis_mbed 0:81b21910454e 9 {
Dannis_mbed 2:f6d058931b17 10 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 11 // base screens //
Dannis_mbed 2:f6d058931b17 12 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 13 _INIT = 0, // Initialize screen
Dannis_mbed 1:b4a0d63db637 14 _STANDBY, // Standby screen
Dannis_mbed 1:b4a0d63db637 15 _ACTIVE, // Active screen
Dannis_mbed 2:f6d058931b17 16 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 17 // menulayer 0 settings //
Dannis_mbed 2:f6d058931b17 18 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 19 _SETTINGS0, // Settings level 0 screen
Dannis_mbed 1:b4a0d63db637 20 _SETTINGS1, // Settings level 1 screen
Dannis_mbed 1:b4a0d63db637 21 _SETTINGS2, // Settings level 2 screen
Dannis_mbed 2:f6d058931b17 22 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 23 // menulayer 1 settings //
Dannis_mbed 2:f6d058931b17 24 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 25 _SYSTEMVAR0, // System variable groep select level 0 screen
Dannis_mbed 2:f6d058931b17 26 _SYSTEMVAR1, // Safety margins level 1 screen
Dannis_mbed 2:f6d058931b17 27 _SYSTEMVAR2, // Safety margins level 2 screen
Dannis_mbed 2:f6d058931b17 28 _SYSTEMVAR3, // Safety margins level 3 screen
Dannis_mbed 2:f6d058931b17 29 _SYSTEMVAR4, // Safety margins level 4 screen
Dannis_mbed 2:f6d058931b17 30 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 31 // menulayer 2 settings //
Dannis_mbed 2:f6d058931b17 32 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 33 _SYSTEMVARSELECT0, // Select system variable to change level 0 screen
Dannis_mbed 2:f6d058931b17 34 _SYSTEMVARSELECT1, // Select system variable to change level 1 screen
Dannis_mbed 2:f6d058931b17 35 _SYSTEMVARSELECT2, // Select system variable to change level 2 screen
Dannis_mbed 2:f6d058931b17 36 _SYSTEMVARSELECT3, // Select system variable to change level 3 screen
Dannis_mbed 2:f6d058931b17 37 _SYSTEMVARSELECT4, // Select system variable to change level 4 screen
Dannis_mbed 2:f6d058931b17 38 _SYSTEMVARSELECT5, // Select system variable to change level 5 screen
Dannis_mbed 2:f6d058931b17 39 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 40 // menulayer 3 settings //
Dannis_mbed 2:f6d058931b17 41 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 42 _MUTATESYSTEMVAR0, // mutate system variable level 0 screen
Dannis_mbed 2:f6d058931b17 43 _MUTATESYSTEMVAR1, // mutate system variable level 1 screen
Dannis_mbed 2:f6d058931b17 44 _MUTATESYSTEMVAR2, // mutate system variable level 2 screen
Dannis_mbed 2:f6d058931b17 45 _MUTATESYSTEMVAR3, // mutate system variable level 3 screen
Dannis_mbed 2:f6d058931b17 46 _MUTATESYSTEMVAR4, // mutate system variable level 4 screen
Dannis_mbed 2:f6d058931b17 47 _MUTATESYSTEMVAR5, // mutate system variable level 5 screen
Dannis_mbed 2:f6d058931b17 48 _MUTATESYSTEMVAR6, // mutate system variable level 6 screen
Dannis_mbed 2:f6d058931b17 49 _MUTATESYSTEMVAR7, // mutate system variable level 7 screen
Dannis_mbed 2:f6d058931b17 50
Dannis_mbed 1:b4a0d63db637 51 _FOILBORNE, // foilborne screen
Dannis_mbed 1:b4a0d63db637 52 _FOILASSIST, // foil assist screen
Dannis_mbed 1:b4a0d63db637 53 _HOMESCREEN, // home screen
Dannis_mbed 2:f6d058931b17 54 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 55 // CAN messages //
Dannis_mbed 2:f6d058931b17 56 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 57 _CANINIT,
Dannis_mbed 0:81b21910454e 58 _CANFAIL,
Dannis_mbed 0:81b21910454e 59 _CANERROR,
Dannis_mbed 0:81b21910454e 60 _CANOK,
Dannis_mbed 0:81b21910454e 61 _CANNORESPONSE,
Dannis_mbed 0:81b21910454e 62 _CANID101OK,
Dannis_mbed 0:81b21910454e 63 _CANID102OK,
Dannis_mbed 0:81b21910454e 64 _CANID201OK,
Dannis_mbed 0:81b21910454e 65 _CANID202OK,
Dannis_mbed 0:81b21910454e 66 _CANID205OK,
Dannis_mbed 0:81b21910454e 67 _CANID1001OK,
Dannis_mbed 0:81b21910454e 68 _CANID101FAIL,
Dannis_mbed 0:81b21910454e 69 _CANID102FAIL,
Dannis_mbed 0:81b21910454e 70 _CANID201FAIL,
Dannis_mbed 0:81b21910454e 71 _CANID202FAIL,
Dannis_mbed 0:81b21910454e 72 _CANID205FAIL,
Dannis_mbed 0:81b21910454e 73 _CANID1001FAIL,
Dannis_mbed 2:f6d058931b17 74 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 75 // IMU messages //
Dannis_mbed 2:f6d058931b17 76 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 77 _IMUREADY,
Dannis_mbed 0:81b21910454e 78 _IMUFAIL,
Dannis_mbed 1:b4a0d63db637 79 _ROLLTEST, // roll test displays roll value
Dannis_mbed 1:b4a0d63db637 80 _PITCHTEST, // pitch test displays pitch value
Dannis_mbed 1:b4a0d63db637 81 _HEIGHTTEST,
Dannis_mbed 1:b4a0d63db637 82 _SHOWHEIGHTFB, // display height value
Dannis_mbed 2:f6d058931b17 83 _PULSE_IS,
Dannis_mbed 1:b4a0d63db637 84 _CAUTION, // Caution screen
Dannis_mbed 2:f6d058931b17 85 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 86 // multiple used screens //
Dannis_mbed 2:f6d058931b17 87 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 2:f6d058931b17 88 _BACK, // Back screen
Dannis_mbed 2:f6d058931b17 89 _HOME, // Home screen
Dannis_mbed 1:b4a0d63db637 90 _PROGRESS // development screen
Dannis_mbed 1:b4a0d63db637 91 };
Dannis_mbed 1:b4a0d63db637 92 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 93 // MENU_t conform menu structure Functioneel_ontwerp_03_20150609 //
Dannis_mbed 1:b4a0d63db637 94 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 1:b4a0d63db637 95 enum MENU_t
Dannis_mbed 1:b4a0d63db637 96 {
Dannis_mbed 1:b4a0d63db637 97 _MENU0_0 = 0, // Initialize screen
Dannis_mbed 1:b4a0d63db637 98 _MENU0_1, // Standby screen
Dannis_mbed 2:f6d058931b17 99
Dannis_mbed 1:b4a0d63db637 100 _MENU0_2, // Settings screen
Dannis_mbed 2:f6d058931b17 101 _MENU1_20, // Variable settings screen 0
Dannis_mbed 2:f6d058931b17 102 _MENU1_21, // Variable settings screen 1
Dannis_mbed 2:f6d058931b17 103 _MENU1_22, // Variable settings screen 2
Dannis_mbed 2:f6d058931b17 104 _MENU1_23, // Variable settings screen 3
Dannis_mbed 2:f6d058931b17 105 _MENU1_24, // Variable settings screen 4
Dannis_mbed 2:f6d058931b17 106
Dannis_mbed 2:f6d058931b17 107 _MENU2_20, // Variable settings select screen 0
Dannis_mbed 2:f6d058931b17 108 _MENU2_21, // Variable settings select screen 1
Dannis_mbed 2:f6d058931b17 109 _MENU2_22, // Variable settings select screen 2
Dannis_mbed 2:f6d058931b17 110 _MENU2_23, // Variable settings select screen 3
Dannis_mbed 2:f6d058931b17 111 _MENU2_24, // Variable settings select screen 4
Dannis_mbed 2:f6d058931b17 112 _MENU2_25, // Variable settings select screen 5
Dannis_mbed 2:f6d058931b17 113
Dannis_mbed 2:f6d058931b17 114 _MENU3_20, // Variable settings mutatie screen 0
Dannis_mbed 2:f6d058931b17 115 _MENU3_21, // Variable settings mutatie screen 1
Dannis_mbed 2:f6d058931b17 116 _MENU3_22, // Variable settings mutatie screen 2
Dannis_mbed 2:f6d058931b17 117 _MENU3_23, // Variable settings mutatie screen 3
Dannis_mbed 2:f6d058931b17 118 _MENU3_24, // Variable settings mutatie screen 4
Dannis_mbed 2:f6d058931b17 119 _MENU3_25, // Variable settings mutatie screen 5
Dannis_mbed 2:f6d058931b17 120 _MENU3_26, // Variable settings mutatie screen 6
Dannis_mbed 2:f6d058931b17 121
Dannis_mbed 1:b4a0d63db637 122 _MENU0_3, // Viewsettings screen
Dannis_mbed 1:b4a0d63db637 123 _MENU1_31, // View roll angle screen
Dannis_mbed 1:b4a0d63db637 124 _MENU1_32, // View pitch angle screen
Dannis_mbed 1:b4a0d63db637 125 _MENU1_33, // View height settings screen
Dannis_mbed 2:f6d058931b17 126 _MENU1_34, // View port height measured
Dannis_mbed 2:f6d058931b17 127
Dannis_mbed 1:b4a0d63db637 128 _MENU0_4, // Diagnosis screen
Dannis_mbed 1:b4a0d63db637 129 _MENU1_4, // Diagnosis menu screen
Dannis_mbed 1:b4a0d63db637 130
Dannis_mbed 2:f6d058931b17 131 _BACKBACK, // Back back
Dannis_mbed 2:f6d058931b17 132 _BACKHOME // Back home
Dannis_mbed 0:81b21910454e 133 };
Dannis_mbed 0:81b21910454e 134
Dannis_mbed 0:81b21910454e 135 class Menu
Dannis_mbed 0:81b21910454e 136 {
Dannis_mbed 0:81b21910454e 137 private:
Dannis_mbed 0:81b21910454e 138 // variable
Dannis_mbed 0:81b21910454e 139
Dannis_mbed 0:81b21910454e 140 char cTextLine1[18];
Dannis_mbed 0:81b21910454e 141 char cTextLine2[18];
Dannis_mbed 1:b4a0d63db637 142 char cStatus;
Dannis_mbed 0:81b21910454e 143
Dannis_mbed 0:81b21910454e 144 SCREEN_t screen;
Dannis_mbed 2:f6d058931b17 145 MENU_t menu, nextMenu, prevMenu, confMenu, backToFrom;
Dannis_mbed 2:f6d058931b17 146 VALUE_t valueToChange;
Dannis_mbed 0:81b21910454e 147
Dannis_mbed 0:81b21910454e 148 uint32_t uiCounter;
Dannis_mbed 0:81b21910454e 149
Dannis_mbed 2:f6d058931b17 150 bool bMenu; // true item is menu, false item is value
Dannis_mbed 2:f6d058931b17 151 bool bConfirm; // confirm menu or value item
Dannis_mbed 2:f6d058931b17 152 bool bReadHeight; // allow writing CAN height module on CANbus
Dannis_mbed 0:81b21910454e 153 bool bError;
Dannis_mbed 0:81b21910454e 154
Dannis_mbed 0:81b21910454e 155 public:
Dannis_mbed 0:81b21910454e 156 // Constructor
Dannis_mbed 0:81b21910454e 157 Menu();
Dannis_mbed 0:81b21910454e 158 // Destructor
Dannis_mbed 0:81b21910454e 159 ~Menu();
Dannis_mbed 0:81b21910454e 160
Dannis_mbed 0:81b21910454e 161 // Init
Dannis_mbed 0:81b21910454e 162 void init(void);
Dannis_mbed 0:81b21910454e 163 // Gets
Dannis_mbed 0:81b21910454e 164 char* getLine1(void);
Dannis_mbed 1:b4a0d63db637 165 char* getLine2(void);
Dannis_mbed 1:b4a0d63db637 166 SCREEN_t getScreen(void);
Dannis_mbed 1:b4a0d63db637 167 bool bGetReadHeight(void);
Dannis_mbed 0:81b21910454e 168
Dannis_mbed 0:81b21910454e 169 // Sets
Dannis_mbed 0:81b21910454e 170
Dannis_mbed 0:81b21910454e 171 // Other functions
Dannis_mbed 1:b4a0d63db637 172 void vShowScreen(SCREEN_t);
Dannis_mbed 1:b4a0d63db637 173 void vSelectMenu(MENU_t);
Dannis_mbed 1:b4a0d63db637 174 void vRotaryUp(void);
Dannis_mbed 1:b4a0d63db637 175 void vRotaryDown(void);
Dannis_mbed 1:b4a0d63db637 176 void vRotaryConfirm(void);
Dannis_mbed 2:f6d058931b17 177 void vFillString1(void); // Fill string1 upto 16 characters
Dannis_mbed 2:f6d058931b17 178 void vFillString2(void); // Fill string2 upto 16 characters
Dannis_mbed 1:b4a0d63db637 179 void vCheckReadHeight(void);
Dannis_mbed 0:81b21910454e 180
Dannis_mbed 0:81b21910454e 181 };
Dannis_mbed 0:81b21910454e 182 #endif