ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Revision:
30:08cc4ec58d07
Parent:
29:207111ffd6e6
Child:
31:cfdb014ff086
--- a/Menu/Menu.cpp	Mon May 25 20:00:31 2020 +0000
+++ b/Menu/Menu.cpp	Tue May 26 10:17:47 2020 +0000
@@ -152,7 +152,7 @@
 {
     g_selecty=10;
     submenu=menuflag=1; //initialises Variables
-    menusize=3;
+    menusize=4;
     //printf("Settings menu \n");
     printsubsettings(lcd);
     pad.reset_buttons();
@@ -186,9 +186,11 @@
         case 1:
             volumerun(lcd,pad);
         case 2:
-            MIDIsettings(lcd,pad);
+            backlightrun(lcd,pad);
         case 3:
             contrastrun(lcd,pad);
+        case 4:
+            inverse_mode(lcd,pad);
     }
 }
 
@@ -217,32 +219,39 @@
     }
 }
 
-void Menu::MIDIsettings(N5110 &lcd, Gamepad &pad)
+void Menu::inverse_mode(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();
+    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.B_pressed())  {
-            // printf("B pressed\n");
-            printf("Back Menu\n");
-            submenu=0;
-            wait_ms(200); //debounce
-            menuflag=0; //sets flag
+        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;
         }
     }
-    if(submenu==0) { //allows main menu select
-        subsettings(lcd,pad);
-    }
+    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");
+    //printf("Contrast Settings \n");
     lcd.clear();
     lcd.printString("Contrast:",3,0);
     contrast=0.5;
@@ -282,11 +291,40 @@
     subsettings(lcd,pad);
 }
 
+void Menu::backlightrun(N5110 &lcd, Gamepad &pad)
+{
+    lcd.clear();
+    lcd.printString("Backlight:",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.backLightOn();
+                toggle=false;
+            } else if (toggle==false) {
+                lcd.backLightOff();
+                toggle=true;
+            }
+            wait_ms(500);//debounce
+
+        }
+        if (pad.B_pressed()) {
+            menuflag=0;
+        }
+    }
+    wait_ms(500);//debounce
+    pad.reset_buttons();
+    subsettings(lcd,pad);
+}
 
 //Private Methods--------------------------------------------------------------
 void Menu::printmainmenu(N5110 &lcd)   //prints main menu
 {
-    printf("Printing Main Menu \n");
+    //printf("Printing Main Menu \n");
     lcd.clear(); //clears current buffer
     lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
     lcd.printString("MAIN MENU",3,0); //title print
@@ -319,8 +357,9 @@
     lcd.printString("Settings:",3,0); //title print
     //SUBMENU TITLES
     lcd.printString("Volume",3,1);
-    lcd.printString("MIDI",3,2);
+    lcd.printString("Backlight",3,2);
     lcd.printString("Contrast",3,3);
+    lcd.printString("Inverse Mode",3,4);
     lcd.refresh(); //updates display
 }