ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Revision:
31:cfdb014ff086
Parent:
30:08cc4ec58d07
--- a/Menu/Menu.cpp	Tue May 26 10:17:47 2020 +0000
+++ b/Menu/Menu.cpp	Tue May 26 14:21:36 2020 +0000
@@ -1,8 +1,6 @@
 #include "mbed.h"
 #include "Menu.h"
 
-//Global Variables
-volatile int g_mainmenu_flag;
 //objects
 Front front;
 
@@ -17,29 +15,26 @@
 // PUBLIC methods---------------------------------------------------------------
 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
 {
-    g_mainmenu_flag=0; //Globals Init
-    g_selecty=10;
+    g_selecty=10; //POSITION OF SELECT BOX
     submenu=menuflag=1; //Variables Init
     menusize=4;
     printmainmenu(lcd); //prints menu to display
     pad.reset_buttons();//elimnates Prev Button Press
     while (menuflag==1) {
-        s=scroll(lcd, pad, submenu, menusize);
+        s=scroll(lcd, pad, submenu, menusize); //Performs Scroll
         if (s==1) {
             printmainmenu(lcd);
-            submenu++;
+            submenu++; //Increase Menu Selected
             wait_ms(200);
-        }
-        if (s==-1) {
+        }   else if (s==-1) {
             printmainmenu(lcd);
-            submenu--;
+            submenu--; //Decrease menu Selected
             wait_ms(200);
         }
         if ( pad.A_pressed())  { //selects
-            // printf("A pressed\n");
             //printf("SubMenu %d selected\n", submenu);
             wait_ms(200); //debounce
-            menuflag=0;
+            menuflag=0;//exits
         }
     }
     switch (submenu) {
@@ -61,16 +56,15 @@
         submenu=menuflag=1; //initialises Variables
         menusize=3;
         //printf("Waveforms menu \n"); //Debug
-        printsubwaveforms(lcd);
+        printsubwaveforms(lcd); //Prints Screen
         pad.reset_buttons();
         while (menuflag==1) { //looped
             s=scroll(lcd,pad,submenu,menusize);
             if (s==1) {
-                printsubwaveforms(lcd);
-                submenu++;
-                wait_ms(200);
-            }
-            if (s==-1) {
+                printsubwaveforms(lcd); //Prints Waveform sub
+                submenu++; //increases selected sub
+                wait_ms(200); //debounce
+            }  else if (s==-1) {
                 printsubwaveforms(lcd);
                 submenu--;
                 wait_ms(200);
@@ -103,16 +97,16 @@
 {
     menuflag=1; //sets flag
     //printf("Instructions menu \n");
-    lcd.clear();
+    lcd.clear(); //LCD setup
     lcd.printString("Instructions:",2,0);
     lcd.printString("See attached",3,1);
     lcd.printString("User Manual",3,2);
     pad.reset_buttons();
     lcd.refresh();
     while (menuflag==1) {
-        if (pad.B_pressed())  {
+        if (pad.B_pressed())  { //returns to main menu
             // printf("B pressed\n");
-            printf("Main Menu selected\n");
+            //printf("Main Menu selected\n");
             submenu=0;
             wait_ms(200); //debounce
             menuflag=0; //sets flag
@@ -123,6 +117,46 @@
     }
 }
 
+void Menu::subsettings(N5110 &lcd, Gamepad &pad)
+{
+    g_selecty=10; //Global Var initial value
+    submenu=menuflag=1; //initialises Variables
+    menusize=4;
+    //printf("Settings menu \n");
+    printsubsettings(lcd); //prints to LCD
+    pad.reset_buttons(); //Stops Buttons from prev menu
+    while (menuflag==1) { //looped
+        s=scroll(lcd,pad,submenu,menusize);
+        if (s==1) {
+            printsubsettings(lcd);
+            submenu++;
+            wait_ms(200);
+        } else if (s==-1) {
+            printsubsettings(lcd);
+            submenu--;
+            wait_ms(200);
+        }
+        if (pad.A_pressed())  { //select menu
+            //printf("Submenu: %d selected\n", submenu); //debug
+            wait_ms(200); //debounce
+            menuflag=0; //sets flag
+        }
+        if (pad.B_pressed())  { //go back menu
+            //printf("Main Menu selected\n"); //debug
+            submenu=0;
+            wait_ms(200); //debounce
+            menuflag=0; //sets flag
+        }
+    }
+    switch (submenu) { //submenu select
+        case 0:  mainmenu(lcd,pad); //returns to main
+        case 1:  volumerun(lcd,pad);
+        case 2:  backlightrun(lcd,pad);
+        case 3:  contrastrun(lcd,pad);
+        case 4:  inverse_mode(lcd,pad);
+    }
+}
+
 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu
 {
     //printf("Credits \n");
@@ -148,57 +182,44 @@
     }
 }
 
-void Menu::subsettings(N5110 &lcd, Gamepad &pad)
+int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize)   //checks srolling
 {
-    g_selecty=10;
-    submenu=menuflag=1; //initialises Variables
-    menusize=4;
-    //printf("Settings menu \n");
-    printsubsettings(lcd);
-    pad.reset_buttons();
-    while (menuflag==1) { //looped
-        s=scroll(lcd,pad,submenu,menusize);
-        if (s==1) {
-            printsubsettings(lcd);
-            submenu++;
-            wait_ms(200);
-        }
-        if (s==-1) {
-            printsubsettings(lcd);
+    int d=scroll_check(pad);
+    if(d != 0) {
+        if (d==1)  { //N scrolls up
+            //printf("N \n"); //debug
             submenu--;
-            wait_ms(200);
+            g_selecty=g_selecty-8; //line size=8
+            if (submenu<=0) { //stops overflow
+                submenu++;
+                g_selecty = g_selecty+8; //moves select box
+                return(0);
+            }
+            //printf("SubMenu= %d\n", submenu); //debug
+            return(-1);
         }
-        if (pad.A_pressed())  { //go back menu
-            //printf("Submenu: %d selected\n", submenu); //debug
-            wait_ms(200); //debounce
-            menuflag=0; //sets flag
+        if (d==5)  { //S scrolls down
+            //printf("S \n");
+            submenu++;
+            g_selecty=g_selecty+8; //movews select box
+            if (submenu >menusize) { //stops overflow
+                submenu--;
+                g_selecty = g_selecty-8;
+                return(0);
+            }
+            //printf("SubMenu= %d\n", submenu); //debug
+            return(1);
         }
-        if (pad.B_pressed())  { //go back menu
-            //printf("Main Menu selected\n"); //debug
-            submenu=0;
-            wait_ms(200); //debounce
-            menuflag=0; //sets flag
-        }
+        wait_ms(200); //debounce
     }
-    switch (submenu) {
-        case 0:
-            mainmenu(lcd,pad);
-        case 1:
-            volumerun(lcd,pad);
-        case 2:
-            backlightrun(lcd,pad);
-        case 3:
-            contrastrun(lcd,pad);
-        case 4:
-            inverse_mode(lcd,pad);
-    }
+    return(0);
 }
 
 void Menu::volumerun(N5110 &lcd, Gamepad &pad)
 {
     //printf("Volume Settings \n");
     menuflag=1; //sets flag
-    lcd.clear();
+    lcd.clear(); //Sets Up LCD
     lcd.printString("Volume:",3,0);
     lcd.printString("Use screw",3,1);
     lcd.printString("potentiometer",3,2);
@@ -219,81 +240,9 @@
     }
 }
 
-void Menu::inverse_mode(N5110 &lcd, Gamepad &pad)
-{
-    lcd.clear();
-    lcd.printString("Inverse Mode:",3,0);
-    lcd.printString("Press A to",3,1);
-    lcd.printString("toggle",3,2);
-    lcd.refresh();
-    menuflag=1;
-    toggle=true;
-    while (menuflag==1) {
-        if (pad.A_pressed()) {
-            if (toggle==true) {
-                lcd.normalMode();
-                toggle=false;
-            } else if (toggle==false) {
-                lcd.inverseMode();
-                toggle=true;
-            }
-            wait_ms(500);//debounce
-        }
-        if (pad.B_pressed()) {
-            menuflag=0;
-        }
-    }
-    wait_ms(500);//debounce
-    pad.reset_buttons();
-    subsettings(lcd,pad);
-}
-
-void Menu::contrastrun(N5110 &lcd, Gamepad &pad)
-{
-    menuflag=1; //sets flag
-    //printf("Contrast Settings \n");
-    lcd.clear();
-    lcd.printString("Contrast:",3,0);
-    contrast=0.5;
-    pad.reset_buttons();
-    printcontrast(lcd,contrast);
-    while (menuflag==1) { //looped
-        s=scroll(lcd,pad,10,20);
-        if (s!=s_1) {
-            //printf("S= %d",s);
-            if (s==1) {
-                printcontrast(lcd,contrast);
-                contrast=contrast+0.05f;
-                lcd.setContrast(contrast);
-                //printf("CONTRAST UP\n");
-                wait_ms(200);
-            }
-            if (s==-1) {
-                printcontrast(lcd,contrast);
-                contrast=contrast-0.05f;
-                lcd.setContrast(contrast);
-                //printf("CONTRAST DOWN\n");
-                wait_ms(200);
-            }
-        }
-        if (pad.B_pressed())  { //go back menu
-            // printf("B pressed\n");
-            //printf("Main Menu selected\n"); //debug
-            submenu=0;
-            lcd.clear();
-            lcd.printString("Contrast Set",3,3);
-            lcd.refresh();
-            wait_ms(900); //debounce + display
-            menuflag=0; //sets flag
-        }
-        s=s_1;
-    }
-    subsettings(lcd,pad);
-}
-
 void Menu::backlightrun(N5110 &lcd, Gamepad &pad)
 {
-    lcd.clear();
+    lcd.clear(); //sets up LCD
     lcd.printString("Backlight:",3,0);
     lcd.printString("Press A to",3,1);
     lcd.printString("toggle",3,2);
@@ -310,17 +259,81 @@
                 toggle=true;
             }
             wait_ms(500);//debounce
-
         }
         if (pad.B_pressed()) {
-            menuflag=0;
+            menuflag=0; //alows loop exit
         }
     }
     wait_ms(500);//debounce
     pad.reset_buttons();
+    subsettings(lcd,pad); //launches setting menu
+}
+
+void Menu::contrastrun(N5110 &lcd, Gamepad &pad)
+{
+    menuflag=1; //sets flag
+    //printf("Contrast Settings \n");
+    contrast=0.5; //initialises
+    pad.reset_buttons();
+    printcontrast(lcd,contrast);
+    while (menuflag==1) { //looped
+        s=scroll(lcd,pad,10,20);
+        if (s!=s_1) {
+            //printf("S= %d",s);
+            if (s==1) {
+                contrast=contrast+0.05f;
+                lcd.setContrast(contrast);
+                //printf("CONTRAST UP\n");
+            } else if (s==-1) {
+                contrast=contrast-0.05f;
+                lcd.setContrast(contrast);
+                //printf("CONTRAST DOWN\n");
+            }
+            printcontrast(lcd,contrast);
+            wait_ms(200);
+        }
+        if (pad.B_pressed())  { //go back menu
+            //printf("Settings Menu selected\n"); //debug
+            lcd.clear();
+            lcd.printString("Contrast Set",3,3);
+            lcd.refresh();
+            wait_ms(900); //debounce + display
+            menuflag=0; //sets flag
+        }
+        s=s_1;
+    }
     subsettings(lcd,pad);
 }
 
+void Menu::inverse_mode(N5110 &lcd, Gamepad &pad)
+{
+    lcd.clear(); //Sets up LCD
+    lcd.printString("Inverse Mode:",3,0);
+    lcd.printString("Press A to",3,1);
+    lcd.printString("toggle",3,2);
+    lcd.refresh();
+    menuflag=1;// initial value
+    toggle=true;
+    while (menuflag==1) {
+        if (pad.A_pressed()) {
+            if (toggle==true) {
+                lcd.normalMode();
+                toggle=false;
+            } else if (toggle==false) {
+                lcd.inverseMode();
+                toggle=true;
+            }
+            wait_ms(500);//debounce
+        }
+        if (pad.B_pressed()) {
+            menuflag=0;//allows loop exit
+        }
+    }
+    wait_ms(500);//debounce
+    pad.reset_buttons();
+    subsettings(lcd,pad);//launches setting submenu
+}
+
 //Private Methods--------------------------------------------------------------
 void Menu::printmainmenu(N5110 &lcd)   //prints main menu
 {
@@ -338,7 +351,7 @@
 
 void Menu::printsubwaveforms(N5110 &lcd)   //prints subwaveforms menu
 {
-    printf("Printing Waveforms menu\n");
+    //printf("Printing Waveforms menu\n");
     lcd.clear(); //clears current buffer
     lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
     lcd.printString("WAVEFORMS:",3,0); //title print
@@ -371,46 +384,6 @@
     lcd.refresh();
 }
 
-void Menu::subunavailiable(N5110 &lcd)   //for currently undeveloped menu
-{
-    //printf("sub unavailiable\n");
-    lcd.printString("Unavailiable",3,1);
-    lcd.refresh();
-}
-
-int Menu::scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize)   //checks srolling
-{
-    int d=scroll_check(pad);
-    if(d != 0) {
-        if (d==1)  { //N scrolls up
-            //printf("N \n"); //debug
-            submenu--;
-            g_selecty=g_selecty-8; //line size=8
-            if (submenu<=0) { //stops overflow
-                submenu++;
-                g_selecty = g_selecty+8;
-                return(0);
-            }
-            //printf("SubMenu= %d\n", submenu); //debug
-            return(-1);
-        }
-        if (d==5)  { //S scrolls down
-            //printf("S \n");
-            submenu++;
-            g_selecty=g_selecty+8;
-            if (submenu >menusize) { //stops overflow
-                submenu--;
-                g_selecty = g_selecty-8;
-                return(0);
-            }
-            //printf("SubMenu= %d\n", submenu); //debug
-            return(1);
-        }
-        wait_ms(200); //debounce
-    }
-    return(0);
-}
-
 int Menu::scroll_check (Gamepad &pad)
 {
     return(pad.get_direction()); //checks for stick