version 1.0

Dependencies:   CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed

Fork of SolarOnFoils_MainModule_20150518 by Dannis Brugman

menu.h

Committer:
Dannis_mbed
Date:
2015-08-11
Revision:
2:f6d058931b17
Parent:
1:b4a0d63db637

File content as of revision 2:f6d058931b17:

#ifndef MENU_H_INCLUDED
#define MENU_H_INCLUDED

#include "mbed.h"
#include "systemVar.h"

//Solar on Foils display screens
enum SCREEN_t
{
//////////////////////////////////////////////////////////////////////////////////////
// base screens                                                                     //
//////////////////////////////////////////////////////////////////////////////////////    
    _INIT = 0,              // Initialize screen
    _STANDBY,               // Standby screen
    _ACTIVE,                // Active screen
//////////////////////////////////////////////////////////////////////////////////////
// menulayer 0 settings                                                             //
//////////////////////////////////////////////////////////////////////////////////////    
    _SETTINGS0,             // Settings level 0 screen
    _SETTINGS1,             // Settings level 1 screen
    _SETTINGS2,             // Settings level 2 screen
//////////////////////////////////////////////////////////////////////////////////////
// menulayer 1 settings                                                             //
//////////////////////////////////////////////////////////////////////////////////////    
    _SYSTEMVAR0,            // System variable groep select level 0 screen
    _SYSTEMVAR1,            // Safety margins level 1 screen
    _SYSTEMVAR2,            // Safety margins level 2 screen
    _SYSTEMVAR3,            // Safety margins level 3 screen
    _SYSTEMVAR4,            // Safety margins level 4 screen
//////////////////////////////////////////////////////////////////////////////////////
// menulayer 2 settings                                                             //
//////////////////////////////////////////////////////////////////////////////////////    
    _SYSTEMVARSELECT0,      // Select system variable to change level 0 screen
    _SYSTEMVARSELECT1,      // Select system variable to change level 1 screen
    _SYSTEMVARSELECT2,      // Select system variable to change level 2 screen
    _SYSTEMVARSELECT3,      // Select system variable to change level 3 screen
    _SYSTEMVARSELECT4,      // Select system variable to change level 4 screen
    _SYSTEMVARSELECT5,      // Select system variable to change level 5 screen
//////////////////////////////////////////////////////////////////////////////////////
// menulayer 3 settings                                                             //
//////////////////////////////////////////////////////////////////////////////////////    
    _MUTATESYSTEMVAR0,      // mutate system variable level 0 screen
    _MUTATESYSTEMVAR1,      // mutate system variable level 1 screen
    _MUTATESYSTEMVAR2,      // mutate system variable level 2 screen
    _MUTATESYSTEMVAR3,      // mutate system variable level 3 screen
    _MUTATESYSTEMVAR4,      // mutate system variable level 4 screen
    _MUTATESYSTEMVAR5,      // mutate system variable level 5 screen
    _MUTATESYSTEMVAR6,      // mutate system variable level 6 screen
    _MUTATESYSTEMVAR7,      // mutate system variable level 7 screen
    
    _FOILBORNE,             // foilborne screen
    _FOILASSIST,            // foil assist screen
    _HOMESCREEN,            // home screen
//////////////////////////////////////////////////////////////////////////////////////
// CAN messages                                                                     //
//////////////////////////////////////////////////////////////////////////////////////    
    _CANINIT,
    _CANFAIL,
    _CANERROR,
    _CANOK,
    _CANNORESPONSE,
    _CANID101OK,
    _CANID102OK,
    _CANID201OK,
    _CANID202OK,
    _CANID205OK,
    _CANID1001OK,
    _CANID101FAIL,
    _CANID102FAIL,
    _CANID201FAIL,
    _CANID202FAIL,
    _CANID205FAIL,
    _CANID1001FAIL,
//////////////////////////////////////////////////////////////////////////////////////
// IMU messages                                                                     //
//////////////////////////////////////////////////////////////////////////////////////         
    _IMUREADY,
    _IMUFAIL,
    _ROLLTEST,              // roll test displays roll value
    _PITCHTEST,             // pitch test displays pitch value
    _HEIGHTTEST,
    _SHOWHEIGHTFB,          // display height value
    _PULSE_IS,
    _CAUTION,               // Caution screen
//////////////////////////////////////////////////////////////////////////////////////
// multiple used screens                                                            //
//////////////////////////////////////////////////////////////////////////////////////     
    _BACK,                  // Back screen
    _HOME,                  // Home screen
    _PROGRESS               // development screen
};
//////////////////////////////////////////////////////////////////////////////////////
// MENU_t conform menu structure Functioneel_ontwerp_03_20150609                    //
//////////////////////////////////////////////////////////////////////////////////////
enum MENU_t
{
    _MENU0_0 = 0,           // Initialize screen
    _MENU0_1,               // Standby screen
    
    _MENU0_2,               // Settings screen
    _MENU1_20,              // Variable settings screen 0
    _MENU1_21,              // Variable settings screen 1
    _MENU1_22,              // Variable settings screen 2
    _MENU1_23,              // Variable settings screen 3
    _MENU1_24,              // Variable settings screen 4
    
    _MENU2_20,              // Variable settings select screen 0
    _MENU2_21,              // Variable settings select screen 1
    _MENU2_22,              // Variable settings select screen 2
    _MENU2_23,              // Variable settings select screen 3
    _MENU2_24,              // Variable settings select screen 4
    _MENU2_25,              // Variable settings select screen 5
    
    _MENU3_20,              // Variable settings mutatie screen 0
    _MENU3_21,              // Variable settings mutatie screen 1
    _MENU3_22,              // Variable settings mutatie screen 2
    _MENU3_23,              // Variable settings mutatie screen 3
    _MENU3_24,              // Variable settings mutatie screen 4
    _MENU3_25,              // Variable settings mutatie screen 5
    _MENU3_26,              // Variable settings mutatie screen 6
    
    _MENU0_3,               // Viewsettings screen
    _MENU1_31,              // View roll angle screen
    _MENU1_32,              // View pitch angle screen
    _MENU1_33,              // View height settings screen
    _MENU1_34,              // View port height measured
    
    _MENU0_4,               // Diagnosis screen
    _MENU1_4,               // Diagnosis menu screen
    
    _BACKBACK,              // Back back
    _BACKHOME               // Back home
};

class Menu
{
    private:
        // variable
                
        char cTextLine1[18];
        char cTextLine2[18];
        char cStatus;
        
        SCREEN_t screen;
        MENU_t menu, nextMenu, prevMenu, confMenu, backToFrom;
        VALUE_t valueToChange;
        
        uint32_t uiCounter;
                
        bool bMenu;             // true item is menu, false item is value
        bool bConfirm;          // confirm menu or value item 
        bool bReadHeight;       // allow writing CAN height module on CANbus
        bool bError;
        
    public:
        // Constructor
        Menu();
        // Destructor
        ~Menu();
        
        // Init
        void init(void);
        // Gets
        char* getLine1(void);
        char* getLine2(void); 
        SCREEN_t getScreen(void); 
        bool bGetReadHeight(void);   

        // Sets

        // Other functions
        void vShowScreen(SCREEN_t);
        void vSelectMenu(MENU_t);
        void vRotaryUp(void);
        void vRotaryDown(void);
        void vRotaryConfirm(void);
        void vFillString1(void);        // Fill string1 upto 16 characters
        void vFillString2(void);        // Fill string2 upto 16 characters
        void vCheckReadHeight(void);
        
};
#endif