ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Revision:
29:207111ffd6e6
Parent:
17:358987e9f30e
Child:
30:08cc4ec58d07
--- a/Menu/Menu.cpp	Mon May 25 10:46:02 2020 +0000
+++ b/Menu/Menu.cpp	Mon May 25 20:00:31 2020 +0000
@@ -1,6 +1,8 @@
 #include "mbed.h"
 #include "Menu.h"
 
+//Global Variables
+volatile int g_mainmenu_flag;
 //objects
 Front front;
 
@@ -15,12 +17,12 @@
 // PUBLIC methods---------------------------------------------------------------
 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
 {
-    menusize=4;
+    g_mainmenu_flag=0; //Globals Init
     g_selecty=10;
-    submenu=1; //initialises starting point
+    submenu=menuflag=1; //Variables Init
+    menusize=4;
     printmainmenu(lcd); //prints menu to display
-    int menuflag=1; //sets flag
-    pad.reset_buttons();
+    pad.reset_buttons();//elimnates Prev Button Press
     while (menuflag==1) {
         s=scroll(lcd, pad, submenu, menusize);
         if (s==1) {
@@ -35,86 +37,78 @@
         }
         if ( pad.A_pressed())  { //selects
             // printf("A pressed\n");
-            printf("SubMenu %d selected\n", submenu);
+            //printf("SubMenu %d selected\n", submenu);
             wait_ms(200); //debounce
             menuflag=0;
         }
     }
-    while (1) {
-        if (submenu==1) { //waveform submenu launch
-            subwaveforms(lcd, pad);
-            break;
-        }
-        if (submenu==2) { //instructions submenu launch
+    switch (submenu) {
+        case 1:
+            subwaveforms(lcd,pad);
+        case 2:
             subinstructions(lcd,pad);
-            break;
-        }
-        if (submenu==3) { //credits subemnu launch
-            subcredits(lcd, pad);
-            break;
-        }
-        if (submenu==4) { //credits subemnu launch
-            subsettings(lcd, pad);
-            break;
-        }
+        case 3:
+            subsettings(lcd,pad);
+        case 4:
+            subcredits(lcd,pad);
     }
 }
 
 void Menu::subwaveforms(N5110 &lcd, Gamepad &pad) //waveforms sub
 {
-    menusize=3;
-    g_selecty=10;
-    submenu=1; //initialises starting point
-    int menuflag=1; //resets flag
-    printf("Waveforms menu \n");
-    lcd.clear(); //clear buffer
-    lcd.printString("Waveforms:",3,0);
-    printsubwaveforms(lcd);
-    pad.reset_buttons();
-    while (menuflag==1) { //looped
-        s=scroll(lcd,pad,submenu,menusize);
-        //printf("S= %d",s);
-        if (s==1) {
-            printsubwaveforms(lcd);
-            submenu++;
-            wait_ms(200);
+    while (1) {
+        g_selecty=10; //initialises Global var
+        submenu=menuflag=1; //initialises Variables
+        menusize=3;
+        //printf("Waveforms menu \n"); //Debug
+        printsubwaveforms(lcd);
+        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);
+                submenu--;
+                wait_ms(200);
+            }
+            if (pad.A_pressed())  { //Select
+                //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
+            }
         }
-        if (s==-1) {
-            printsubwaveforms(lcd);
-            submenu--;
-            wait_ms(200);
-        }
-        if (pad.A_pressed())  { //go back menu
-            // printf("A pressed\n");
-            printf("Submenu: %d selected\n", submenu); //debug
-            wait_ms(200); //debounce
-            menuflag=0; //sets flag
+        if(submenu==0) { //allows main selected
+            mainmenu(lcd,pad);
+            break;
         }
-        if (pad.B_pressed())  { //go back menu
-            // printf("B pressed\n");
-            printf("Main Menu selected\n"); //debug
-            submenu=0;
-            wait_ms(200); //debounce
-            menuflag=0; //sets flag
+        if(submenu>=1) { //allows waveform selected
+            front.frontrun(lcd,pad,submenu);
         }
-    }
-
-    if(submenu==0) { //allows main selected
         mainmenu(lcd,pad);
-    }
-    if(submenu>=1) { //allows waveform selected
-        front.frontrun(lcd,pad,submenu);
+        break;
     }
 }
 
 void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub
 {
     menuflag=1; //sets flag
-    printf("Instructions menu \n");
+    //printf("Instructions menu \n");
     lcd.clear();
-    lcd.printString("Instructions:",3,0);
-    subunavailiable(lcd); //currently unused
+    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())  {
             // printf("B pressed\n");
@@ -131,7 +125,7 @@
 
 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu
 {
-    printf("Credits \n");
+    //printf("Credits \n");
     lcd.clear();
     lcd.printString("Credits",22,0); //prints credits to screen
     lcd.printString("Coded,Produced",0,1);
@@ -143,8 +137,7 @@
     pad.reset_buttons();
     while (menuflag==1) {
         if (pad.B_pressed())  { //go back 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
@@ -154,19 +147,17 @@
         mainmenu(lcd,pad);
     }
 }
+
 void Menu::subsettings(N5110 &lcd, Gamepad &pad)
 {
+    g_selecty=10;
+    submenu=menuflag=1; //initialises Variables
     menusize=3;
-    g_selecty=10;
-    submenu=1; //initialises starting point
-    menuflag=1; //resets flag
-    printf("Settings menu \n");
-    lcd.clear(); //clear buffer
+    //printf("Settings menu \n");
     printsubsettings(lcd);
     pad.reset_buttons();
     while (menuflag==1) { //looped
         s=scroll(lcd,pad,submenu,menusize);
-        //printf("S= %d",s);
         if (s==1) {
             printsubsettings(lcd);
             submenu++;
@@ -178,41 +169,39 @@
             wait_ms(200);
         }
         if (pad.A_pressed())  { //go back menu
-            // printf("A pressed\n");
-            printf("Submenu: %d selected\n", submenu); //debug
+            //printf("Submenu: %d selected\n", submenu); //debug
             wait_ms(200); //debounce
             menuflag=0; //sets flag
         }
         if (pad.B_pressed())  { //go back menu
-            // printf("B pressed\n");
-            printf("Main Menu selected\n"); //debug
+            //printf("Main Menu selected\n"); //debug
             submenu=0;
             wait_ms(200); //debounce
             menuflag=0; //sets flag
         }
     }
-
-    if(submenu==0) { //allows main selected
-        mainmenu(lcd,pad);
-    }
-    if(submenu==1) { //allows volume selected
-        volumerun(lcd,pad);
-    }
-    if(submenu==2) { //allows MIDI selected
-        MIDIsettings(lcd,pad);
-    }
-    if(submenu==3) { //allows contrast selected
-        contrastrun(lcd,pad);
+    switch (submenu) {
+        case 0:
+            mainmenu(lcd,pad);
+        case 1:
+            volumerun(lcd,pad);
+        case 2:
+            MIDIsettings(lcd,pad);
+        case 3:
+            contrastrun(lcd,pad);
     }
 }
 
 void Menu::volumerun(N5110 &lcd, Gamepad &pad)
 {
+    //printf("Volume Settings \n");
     menuflag=1; //sets flag
-    printf("Volume Settings \n");
     lcd.clear();
     lcd.printString("Volume:",3,0);
-    subunavailiable(lcd); //currently unused
+    lcd.printString("Use screw",3,1);
+    lcd.printString("potentiometer",3,2);
+    lcd.printString("on rear",3,3);
+    lcd.refresh();
     pad.reset_buttons();
     while (menuflag==1) {
         if (pad.B_pressed())  {
@@ -262,38 +251,35 @@
     while (menuflag==1) { //looped
         s=scroll(lcd,pad,10,20);
         if (s!=s_1) {
-            printf("S= %d",s);
+            //printf("S= %d",s);
             if (s==1) {
                 printcontrast(lcd,contrast);
                 contrast=contrast+0.05f;
                 lcd.setContrast(contrast);
-                printf("CONTRAST UP\n");
+                //printf("CONTRAST UP\n");
                 wait_ms(200);
             }
             if (s==-1) {
                 printcontrast(lcd,contrast);
                 contrast=contrast-0.05f;
                 lcd.setContrast(contrast);
-                printf("CONTRAST DOWN\n");
+                //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",12,3);
-                lcd.refresh();
-                wait_ms(500); //debounce + display
-                menuflag=0; //sets flag
-            }
+        }
+        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;
     }
-
-    if(submenu==0) { //allows main menu select
-        subsettings(lcd,pad);
-    }
+    subsettings(lcd,pad);
 }
 
 
@@ -307,10 +293,11 @@
     //SUBMENU TITLES
     lcd.printString("Waveforms",3,1);
     lcd.printString("Instructions",3,2);
-    lcd.printString("Credits",3,3);
-    lcd.printString("Settings",3,4);
+    lcd.printString("Settings",3,3);
+    lcd.printString("Credits",3,4);
     lcd.refresh(); //updates display
 }
+
 void Menu::printsubwaveforms(N5110 &lcd)   //prints subwaveforms menu
 {
     printf("Printing Waveforms menu\n");
@@ -326,7 +313,7 @@
 
 void Menu::printsubsettings(N5110 &lcd)   //prints settings menu
 {
-    printf("Printing Settings menu\n");
+    //printf("Printing Settings menu\n");
     lcd.clear();
     lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
     lcd.printString("Settings:",3,0); //title print
@@ -344,9 +331,10 @@
     lcd.printString("VISIBILITY",12,3);
     lcd.refresh();
 }
+
 void Menu::subunavailiable(N5110 &lcd)   //for currently undeveloped menu
 {
-    printf("sub unavailiable\n");
+    //printf("sub unavailiable\n");
     lcd.printString("Unavailiable",3,1);
     lcd.refresh();
 }
@@ -356,20 +344,19 @@
     int d=scroll_check(pad);
     if(d != 0) {
         if (d==1)  { //N scrolls up
-            printf("N \n"); //debug
+            //printf("N \n"); //debug
             submenu--;
             g_selecty=g_selecty-8; //line size=8
-            if (submenu<=0) { //3 items in menu stops overflow
+            if (submenu<=0) { //stops overflow
                 submenu++;
                 g_selecty = g_selecty+8;
                 return(0);
             }
-            //printmainmenu(lcd); //reprints main
-            printf("SubMenu= %d\n", submenu); //debug
+            //printf("SubMenu= %d\n", submenu); //debug
             return(-1);
         }
         if (d==5)  { //S scrolls down
-            printf("S \n");
+            //printf("S \n");
             submenu++;
             g_selecty=g_selecty+8;
             if (submenu >menusize) { //stops overflow
@@ -377,12 +364,10 @@
                 g_selecty = g_selecty-8;
                 return(0);
             }
-            //printmainmenu(lcd); //reprints menu
-            printf("SubMenu= %d\n", submenu); //debug
+            //printf("SubMenu= %d\n", submenu); //debug
             return(1);
         }
         wait_ms(200); //debounce
-
     }
     return(0);
 }