ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
lukeocarwright
Date:
Tue May 19 21:45:58 2020 +0000
Parent:
15:1c67f064278e
Child:
17:358987e9f30e
Commit message:
Added settings Menu. Fixed skipping menus bug.

Changed in this revision

Menu/Menu.cpp Show annotated file Show diff for this revision Revisions of this file
Menu/Menu.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Menu/Menu.cpp	Tue May 19 18:38:33 2020 +0000
+++ b/Menu/Menu.cpp	Tue May 19 21:45:58 2020 +0000
@@ -15,12 +15,12 @@
 // PUBLIC methods---------------------------------------------------------------
 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
 {
-
-    menusize=3;
+    menusize=4;
     g_selecty=10;
     submenu=1; //initialises starting point
     printmainmenu(lcd); //prints menu to display
     int menuflag=1; //sets flag
+    pad.reset_buttons();
     while (menuflag==1) {
         s=scroll(lcd, pad, submenu, menusize);
         if (s==1) {
@@ -53,6 +53,10 @@
             subcredits(lcd, pad);
             break;
         }
+        if (submenu==4) { //credits subemnu launch
+            subsettings(lcd, pad);
+            break;
+        }
     }
 }
 
@@ -61,11 +65,12 @@
     menusize=3;
     g_selecty=10;
     submenu=1; //initialises starting point
-    menuflag=1; //resets flag
+    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);
@@ -109,6 +114,7 @@
     lcd.clear();
     lcd.printString("Instructions:",3,0);
     subunavailiable(lcd); //currently unused
+    pad.reset_buttons();
     while (menuflag==1) {
         if (pad.B_pressed())  {
             // printf("B pressed\n");
@@ -134,6 +140,7 @@
     lcd.printString("Cartwright",13,4);
     lcd.refresh(); //refresh buffer
     menuflag=1; //sets flag
+    pad.reset_buttons();
     while (menuflag==1) {
         if (pad.B_pressed())  { //go back menu
             // printf("B pressed\n");
@@ -147,6 +154,123 @@
         mainmenu(lcd,pad);
     }
 }
+void Menu::subsettings(N5110 &lcd, Gamepad &pad)
+{
+    menusize=3;
+    g_selecty=10;
+    submenu=1; //initialises starting point
+    menuflag=1; //resets flag
+    printf("Settings menu \n");
+    lcd.clear(); //clear buffer
+    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++;
+            wait_ms(200);
+        }
+        if (s==-1) {
+            printsubsettings(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 (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==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);
+    }
+}
+
+void Menu::volumerun(N5110 &lcd, Gamepad &pad)
+{   
+    menuflag=1; //sets flag
+    printf("Volume Settings \n");
+    lcd.clear();
+    lcd.printString("Volume:",3,0);
+    subunavailiable(lcd); //currently unused
+    pad.reset_buttons();
+    while (menuflag==1) {
+        if (pad.B_pressed())  {
+            // printf("B pressed\n");
+            printf("Main Menu selected\n");
+            submenu=0;
+            wait_ms(200); //debounce
+            menuflag=0; //sets flag
+        }
+    }
+    if(submenu==0) { //allows main menu select
+        subsettings(lcd,pad);
+    }
+}
+
+void Menu::MIDIsettings(N5110 &lcd, Gamepad &pad)
+{
+    menuflag=1; //sets flag
+    printf("MIDI Settings \n");
+    lcd.clear();
+    lcd.printString("MIDI:",3,0);
+    subunavailiable(lcd); //currently unused
+    pad.reset_buttons();
+    while (menuflag==1) {
+        if (pad.B_pressed())  {
+            // printf("B pressed\n");
+            printf("Back Menu\n");
+            submenu=0;
+            wait_ms(200); //debounce
+            menuflag=0; //sets flag
+        }
+    }
+    if(submenu==0) { //allows main menu select
+        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);
+    subunavailiable(lcd); //currently unused
+    pad.reset_buttons();
+    while (menuflag==1) {
+        if (pad.B_pressed())  {
+            // printf("B pressed\n");
+            printf("Back Menu\n");
+            submenu=0;
+            wait_ms(200); //debounce
+            menuflag=0; //sets flag
+        }
+    }
+    if(submenu==0) { //allows main menu select
+        subsettings(lcd,pad);
+    }
+}
 
 //Private Methods--------------------------------------------------------------
 void Menu::printmainmenu(N5110 &lcd) //prints main menu
@@ -159,6 +283,7 @@
     lcd.printString("Waveforms",3,1);
     lcd.printString("Instructions",3,2);
     lcd.printString("Credits",3,3);
+    lcd.printString("Settings",3,4);
     lcd.refresh(); //updates display
 }
 void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu
@@ -174,6 +299,19 @@
     lcd.refresh(); //updates display
 }
 
+void Menu::printsubsettings(N5110 &lcd)//prints settings menu
+{
+    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
+    //SUBMENU TITLES
+    lcd.printString("Volume",3,1);
+    lcd.printString("MIDI",3,2);
+    lcd.printString("Contrast",3,3);
+    lcd.refresh(); //updates display
+}
+
 void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu
 {
     printf("sub unavailiable\n");
--- a/Menu/Menu.h	Tue May 19 18:38:33 2020 +0000
+++ b/Menu/Menu.h	Tue May 19 21:45:58 2020 +0000
@@ -31,7 +31,11 @@
     void subwaveforms(N5110 &lcd, Gamepad &pad);
     void subinstructions(N5110 &lcd, Gamepad &pad);
     void subcredits(N5110 &lcd, Gamepad &pad);
+    void subsettings(N5110 &lcd, Gamepad &pad);
     int scroll(N5110 &lcd, Gamepad &pad, int submenu, int menusize);
+    void volumerun(N5110 &lcd, Gamepad &pad);
+    void MIDIsettings(N5110 &lcd, Gamepad &pad);
+    void contrastrun(N5110 &lcd, Gamepad &pad);
 
 private: //---------------------------------------------------------------------
     //variables
@@ -45,6 +49,7 @@
     //Methods
     void printmainmenu(N5110 &lcd); //prints menu
     void printsubwaveforms(N5110 &lcd); //prints subwaveforms menu
+    void printsubsettings(N5110 &lcd); //prints settings submenu
     void subunavailiable(N5110 &lcd); //prints error for sub
     int scroll_check(Gamepad &pad);
 };
--- a/main.cpp	Tue May 19 18:38:33 2020 +0000
+++ b/main.cpp	Tue May 19 21:45:58 2020 +0000
@@ -16,7 +16,7 @@
 add Menu functionality from front.cpp
 front.h warning sort
 Settings tab
-ADSR (functionaluty)
+ADSR (functionaluty) (adjust stops sound)
 MIDI
 LEDS INSTALL
 */