ELEC2645 (2019/20) / Mbed 2 deprecated el18loc_final

Dependencies:   mbed

Committer:
lukeocarwright
Date:
Fri May 08 20:08:36 2020 +0000
Revision:
12:7a399a476cfd
Parent:
8:f305ea78b2b1
Child:
13:27300c533dd1
Added suitable title screen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lukeocarwright 8:f305ea78b2b1 1 #include "mbed.h"
lukeocarwright 8:f305ea78b2b1 2 #include "Menu.h"
lukeocarwright 8:f305ea78b2b1 3
lukeocarwright 8:f305ea78b2b1 4 //objects
lukeocarwright 8:f305ea78b2b1 5 Front front;
lukeocarwright 8:f305ea78b2b1 6
lukeocarwright 8:f305ea78b2b1 7 //constructor/destructor
lukeocarwright 8:f305ea78b2b1 8 Menu::Menu()
lukeocarwright 8:f305ea78b2b1 9 {
lukeocarwright 8:f305ea78b2b1 10 }
lukeocarwright 8:f305ea78b2b1 11 Menu::~Menu()
lukeocarwright 8:f305ea78b2b1 12 {
lukeocarwright 8:f305ea78b2b1 13 }
lukeocarwright 8:f305ea78b2b1 14
lukeocarwright 8:f305ea78b2b1 15 // PUBLIC methods---------------------------------------------------------------
lukeocarwright 8:f305ea78b2b1 16 void Menu::mainmenu(N5110 &lcd, Gamepad &pad) //main menu
lukeocarwright 8:f305ea78b2b1 17 {
lukeocarwright 8:f305ea78b2b1 18 menusize=3;
lukeocarwright 8:f305ea78b2b1 19 g_selecty=10;
lukeocarwright 8:f305ea78b2b1 20 submenu=1; //initialises starting point
lukeocarwright 8:f305ea78b2b1 21 printmainmenu(lcd); //prints menu to display
lukeocarwright 8:f305ea78b2b1 22 int menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 23 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 24 s=scroll(lcd, pad);
lukeocarwright 8:f305ea78b2b1 25 if (s==1) {
lukeocarwright 8:f305ea78b2b1 26 printmainmenu(lcd);
lukeocarwright 8:f305ea78b2b1 27 }
lukeocarwright 8:f305ea78b2b1 28 if ( pad.A_pressed()) { //selects
lukeocarwright 8:f305ea78b2b1 29 // printf("A pressed\n");
lukeocarwright 8:f305ea78b2b1 30 printf("SubMenu %d selected\n", submenu);
lukeocarwright 8:f305ea78b2b1 31 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 32 menuflag=0;
lukeocarwright 8:f305ea78b2b1 33 }
lukeocarwright 8:f305ea78b2b1 34 }
lukeocarwright 8:f305ea78b2b1 35 while (1) {
lukeocarwright 8:f305ea78b2b1 36 if (submenu==1) { //waveform submenu launch
lukeocarwright 8:f305ea78b2b1 37 subwaveforms(lcd, pad, submenu);
lukeocarwright 8:f305ea78b2b1 38 break;
lukeocarwright 8:f305ea78b2b1 39 }
lukeocarwright 8:f305ea78b2b1 40 if (submenu==2) { //instructions submenu launch
lukeocarwright 8:f305ea78b2b1 41 subinstructions(lcd,pad);
lukeocarwright 8:f305ea78b2b1 42 break;
lukeocarwright 8:f305ea78b2b1 43 }
lukeocarwright 8:f305ea78b2b1 44 if (submenu==3) { //credits subemnu launch
lukeocarwright 8:f305ea78b2b1 45 subcredits(lcd, pad);
lukeocarwright 8:f305ea78b2b1 46 break;
lukeocarwright 8:f305ea78b2b1 47 }
lukeocarwright 8:f305ea78b2b1 48 }
lukeocarwright 8:f305ea78b2b1 49 }
lukeocarwright 8:f305ea78b2b1 50
lukeocarwright 8:f305ea78b2b1 51 void Menu::subwaveforms(N5110 &lcd, Gamepad &pad, int submenu) //waveforms sub
lukeocarwright 8:f305ea78b2b1 52 {
lukeocarwright 8:f305ea78b2b1 53 menusize=3;
lukeocarwright 8:f305ea78b2b1 54 g_selecty=10;
lukeocarwright 8:f305ea78b2b1 55 submenu=1; //initialises starting point
lukeocarwright 8:f305ea78b2b1 56 menuflag=1; //resets flag
lukeocarwright 8:f305ea78b2b1 57 printf("Waveforms menu \n");
lukeocarwright 8:f305ea78b2b1 58 lcd.clear(); //clear buffer
lukeocarwright 8:f305ea78b2b1 59 lcd.printString("Waveforms:",3,0);
lukeocarwright 8:f305ea78b2b1 60 printsubwaveforms(lcd);
lukeocarwright 8:f305ea78b2b1 61 while (menuflag==1) { //looped
lukeocarwright 8:f305ea78b2b1 62 s=scroll(lcd,pad);
lukeocarwright 8:f305ea78b2b1 63 if (s==1) {
lukeocarwright 8:f305ea78b2b1 64 printsubwaveforms(lcd);
lukeocarwright 12:7a399a476cfd 65 submenu++;
lukeocarwright 8:f305ea78b2b1 66 }
lukeocarwright 12:7a399a476cfd 67 if (s==-1) {
lukeocarwright 12:7a399a476cfd 68 printsubwaveforms(lcd);
lukeocarwright 12:7a399a476cfd 69 submenu--;
lukeocarwright 12:7a399a476cfd 70 }
lukeocarwright 8:f305ea78b2b1 71 if (pad.A_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 72 // printf("A pressed\n");
lukeocarwright 8:f305ea78b2b1 73 printf("Submenu: %d selected\n", submenu); //debug
lukeocarwright 8:f305ea78b2b1 74 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 75 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 76 }
lukeocarwright 8:f305ea78b2b1 77 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 78 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 79 printf("Main Menu selected\n"); //debug
lukeocarwright 8:f305ea78b2b1 80 submenu=0;
lukeocarwright 8:f305ea78b2b1 81 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 82 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 83 }
lukeocarwright 8:f305ea78b2b1 84 }
lukeocarwright 8:f305ea78b2b1 85
lukeocarwright 8:f305ea78b2b1 86 if(submenu==0) { //allows main selected
lukeocarwright 8:f305ea78b2b1 87 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 88 }
lukeocarwright 8:f305ea78b2b1 89 if(submenu>=1) { //allows waveform selected
lukeocarwright 8:f305ea78b2b1 90 front.frontrun(lcd,pad,submenu);
lukeocarwright 8:f305ea78b2b1 91 }
lukeocarwright 8:f305ea78b2b1 92 }
lukeocarwright 8:f305ea78b2b1 93
lukeocarwright 8:f305ea78b2b1 94
lukeocarwright 8:f305ea78b2b1 95 void Menu::subinstructions(N5110 &lcd, Gamepad &pad) //instruction sub
lukeocarwright 8:f305ea78b2b1 96 {
lukeocarwright 8:f305ea78b2b1 97 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 98 printf("Instructions menu \n");
lukeocarwright 8:f305ea78b2b1 99 lcd.clear();
lukeocarwright 8:f305ea78b2b1 100 lcd.printString("Instructions:",3,0);
lukeocarwright 8:f305ea78b2b1 101 subunavailiable(lcd); //currently unused
lukeocarwright 8:f305ea78b2b1 102 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 103 if (pad.B_pressed()) {
lukeocarwright 8:f305ea78b2b1 104 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 105 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 106 submenu=0;
lukeocarwright 8:f305ea78b2b1 107 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 108 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 109 }
lukeocarwright 8:f305ea78b2b1 110 }
lukeocarwright 8:f305ea78b2b1 111 if(submenu==0) { //allows main menu select
lukeocarwright 8:f305ea78b2b1 112 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 113 }
lukeocarwright 8:f305ea78b2b1 114 }
lukeocarwright 8:f305ea78b2b1 115
lukeocarwright 8:f305ea78b2b1 116
lukeocarwright 8:f305ea78b2b1 117 void Menu::subcredits(N5110 &lcd, Gamepad &pad) //credits sub menu
lukeocarwright 8:f305ea78b2b1 118 {
lukeocarwright 8:f305ea78b2b1 119 printf("Credits \n");
lukeocarwright 8:f305ea78b2b1 120 lcd.clear();
lukeocarwright 8:f305ea78b2b1 121 lcd.printString("Credits",22,0); //prints credits to screen
lukeocarwright 8:f305ea78b2b1 122 lcd.printString("Coded,Produced",0,1);
lukeocarwright 8:f305ea78b2b1 123 lcd.printString("+ Built by",10,2);
lukeocarwright 8:f305ea78b2b1 124 lcd.printString("Luke",30,3);
lukeocarwright 8:f305ea78b2b1 125 lcd.printString("Cartwright",13,4);
lukeocarwright 8:f305ea78b2b1 126 lcd.refresh(); //refresh buffer
lukeocarwright 8:f305ea78b2b1 127 menuflag=1; //sets flag
lukeocarwright 8:f305ea78b2b1 128 while (menuflag==1) {
lukeocarwright 8:f305ea78b2b1 129 if (pad.B_pressed()) { //go back menu
lukeocarwright 8:f305ea78b2b1 130 // printf("B pressed\n");
lukeocarwright 8:f305ea78b2b1 131 printf("Main Menu selected\n");
lukeocarwright 8:f305ea78b2b1 132 submenu=0;
lukeocarwright 8:f305ea78b2b1 133 wait_ms(200); //debounce
lukeocarwright 8:f305ea78b2b1 134 menuflag=0; //sets flag
lukeocarwright 8:f305ea78b2b1 135 }
lukeocarwright 8:f305ea78b2b1 136 }
lukeocarwright 8:f305ea78b2b1 137 if(submenu==0) { //back to main
lukeocarwright 8:f305ea78b2b1 138 mainmenu(lcd,pad);
lukeocarwright 8:f305ea78b2b1 139 }
lukeocarwright 8:f305ea78b2b1 140 }
lukeocarwright 8:f305ea78b2b1 141
lukeocarwright 8:f305ea78b2b1 142
lukeocarwright 8:f305ea78b2b1 143 //Private Methods--------------------------------------------------------------
lukeocarwright 8:f305ea78b2b1 144 void Menu::printmainmenu(N5110 &lcd) //prints main menu
lukeocarwright 8:f305ea78b2b1 145 {
lukeocarwright 8:f305ea78b2b1 146 printf("Printing Main Menu \n");
lukeocarwright 8:f305ea78b2b1 147 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 148 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 149 lcd.printString("MAIN MENU",3,0); //title print
lukeocarwright 8:f305ea78b2b1 150 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 151 lcd.printString("Waveforms",3,1);
lukeocarwright 8:f305ea78b2b1 152 lcd.printString("Instructions",3,2);
lukeocarwright 8:f305ea78b2b1 153 lcd.printString("Credits",3,3);
lukeocarwright 8:f305ea78b2b1 154 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 155 }
lukeocarwright 8:f305ea78b2b1 156 void Menu::printsubwaveforms(N5110 &lcd)//prints subwaveforms menu
lukeocarwright 8:f305ea78b2b1 157 {
lukeocarwright 8:f305ea78b2b1 158 printf("Printing Waveforms menu\n");
lukeocarwright 8:f305ea78b2b1 159 lcd.clear(); //clears current buffer
lukeocarwright 8:f305ea78b2b1 160 lcd.drawRect(78,g_selecty,5,5,FILL_BLACK); //prints select box at y value
lukeocarwright 8:f305ea78b2b1 161 lcd.printString("WAVEFORMS:",3,0); //title print
lukeocarwright 8:f305ea78b2b1 162 //SUBMENU TITLES
lukeocarwright 8:f305ea78b2b1 163 lcd.printString("Sine",3,1);
lukeocarwright 8:f305ea78b2b1 164 lcd.printString("Triangle",3,2);
lukeocarwright 8:f305ea78b2b1 165 lcd.printString("Square",3,3);
lukeocarwright 8:f305ea78b2b1 166 lcd.refresh(); //updates display
lukeocarwright 8:f305ea78b2b1 167 }
lukeocarwright 8:f305ea78b2b1 168
lukeocarwright 8:f305ea78b2b1 169 void Menu::subunavailiable(N5110 &lcd) //for currently undeveloped menu
lukeocarwright 8:f305ea78b2b1 170 {
lukeocarwright 8:f305ea78b2b1 171 printf("sub unavailiable\n");
lukeocarwright 8:f305ea78b2b1 172 lcd.printString("Unavailiable",3,1);
lukeocarwright 8:f305ea78b2b1 173 lcd.refresh();
lukeocarwright 8:f305ea78b2b1 174 }
lukeocarwright 8:f305ea78b2b1 175
lukeocarwright 8:f305ea78b2b1 176 int Menu::scroll(N5110 &lcd, Gamepad &pad) //checks srolling
lukeocarwright 8:f305ea78b2b1 177 {
lukeocarwright 8:f305ea78b2b1 178 int d=scroll_check(pad);
lukeocarwright 8:f305ea78b2b1 179 if(d != 0) {
lukeocarwright 8:f305ea78b2b1 180 if (d==5) { //N scrolls up
lukeocarwright 8:f305ea78b2b1 181 //printf("N \n"); //debug
lukeocarwright 8:f305ea78b2b1 182 g_selecty=g_selecty+8; //line size=8
lukeocarwright 8:f305ea78b2b1 183 submenu++;
lukeocarwright 8:f305ea78b2b1 184 if (submenu > menusize) { //3 items in menu stops overflow
lukeocarwright 8:f305ea78b2b1 185 submenu = submenu-1;
lukeocarwright 8:f305ea78b2b1 186 g_selecty = g_selecty-8;
lukeocarwright 8:f305ea78b2b1 187 }
lukeocarwright 8:f305ea78b2b1 188 //printmainmenu(lcd); //reprints main
lukeocarwright 8:f305ea78b2b1 189 //prntf("SubMenu= %d\n", submenu); //debug
lukeocarwright 12:7a399a476cfd 190 return(-1);
lukeocarwright 8:f305ea78b2b1 191 }
lukeocarwright 8:f305ea78b2b1 192 if (d==1) { //S scrolls down
lukeocarwright 8:f305ea78b2b1 193 //printf("S \n");
lukeocarwright 8:f305ea78b2b1 194 g_selecty=g_selecty-8;
lukeocarwright 8:f305ea78b2b1 195 submenu=submenu-1;
lukeocarwright 8:f305ea78b2b1 196 if (submenu <=0) { //stops overflow
lukeocarwright 8:f305ea78b2b1 197 submenu = submenu+1;
lukeocarwright 8:f305ea78b2b1 198 g_selecty = g_selecty+8;
lukeocarwright 8:f305ea78b2b1 199 }
lukeocarwright 8:f305ea78b2b1 200 //printmainmenu(lcd); //reprints menu
lukeocarwright 8:f305ea78b2b1 201 //printf("SubMenu= %d\n", submenu); //debug
lukeocarwright 12:7a399a476cfd 202 return(1);
lukeocarwright 8:f305ea78b2b1 203 }
lukeocarwright 8:f305ea78b2b1 204 wait_ms(200); //debounce
lukeocarwright 12:7a399a476cfd 205
lukeocarwright 8:f305ea78b2b1 206 } else {
lukeocarwright 8:f305ea78b2b1 207 return(0);
lukeocarwright 8:f305ea78b2b1 208 }
lukeocarwright 8:f305ea78b2b1 209 }
lukeocarwright 8:f305ea78b2b1 210 int Menu::scroll_check (Gamepad &pad)
lukeocarwright 8:f305ea78b2b1 211 {
lukeocarwright 8:f305ea78b2b1 212 return(pad.get_direction()); //checks for stick
lukeocarwright 8:f305ea78b2b1 213 }