ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Revision:
16:14c231624f3e
Parent:
14:9cfe0041cc4e
Child:
17:358987e9f30e
--- 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");