menu.cpp (2393B)
1 /* menu system 2 * 3 */ 4 5 #include <Arduino.h> 6 7 #include "../include/menu.h" 8 #include "../include/display.h" 9 #include "../include/sensor.h" 10 11 /* function declarations */ 12 static int get_input(void); 13 static int goto_main(void); 14 static void print_main(void); 15 static void select_menu_item(int input); 16 static void menu_item1(void); 17 static void menu_item2(void); 18 static void menu_item3(void); 19 static void print_live(void); 20 21 /* function implementations */ 22 static int 23 get_input(void) 24 { 25 /* implement handling of physical buttons */ 26 int input = 0; 27 28 while (Serial.available() <= 0) { delay(100); } 29 30 if (Serial.available() > 0) 31 input = Serial.parseInt(); 32 33 return input; 34 } 35 36 static int 37 goto_main(void) 38 { 39 char input = 0; 40 41 dsp_print_gotomain(); 42 do { 43 Serial.print("Enter 'b' to return.\n\r"); 44 while (Serial.available() <= 0) { delay(10); } 45 input = Serial.read(); 46 } while (input != 'b'); 47 menu_main(); 48 } 49 50 static void 51 print_main(void) 52 { 53 dsp_print_main(); 54 Serial.print("\e[1;1H\e[2J"); 55 Serial.print("Main menu\n\r"); 56 Serial.print("1. Analyze\n\r"); 57 Serial.print("2. Config\n\r"); 58 Serial.print("3. Params\n\r"); 59 } 60 61 static void 62 select_menu_item(int input) 63 { 64 switch (input) { 65 case 1: 66 menu_item1(); 67 break; 68 case 2: 69 menu_item2(); 70 break; 71 case 3: 72 menu_item3(); 73 break; 74 default: 75 Serial.print("Invalid input!\n\r"); 76 goto_main(); 77 break; 78 } 79 } 80 81 static void 82 menu_item1(void) 83 { 84 int res = 0; 85 86 Serial.print("\e[1;1H\e[2J"); 87 dsp_print_menu1(); 88 Serial.print("Wait for analysis\n\r"); 89 res = sensor_analyze(); 90 dsp_print_result(res); 91 goto_main(); 92 } 93 94 static void 95 menu_item2(void) 96 { 97 Serial.print("\e[1;1H\e[2J"); 98 dsp_print_menu2(); 99 Serial.println("You chose item 2."); 100 print_live(); 101 goto_main(); 102 } 103 104 static void 105 menu_item3(void) 106 { 107 Serial.print("\e[1;1H\e[2J"); 108 dsp_print_menu3(); 109 Serial.println("You chose item 3."); 110 goto_main(); 111 } 112 113 static void 114 print_live(void) 115 { 116 int rx, in = 0; 117 118 /* implement for loop to print from all sensors */ 119 while (Serial.available() <= 0) { 120 rx = sensor_read(0); 121 dsp_print_result(rx); 122 Serial.print("\e[1;1H\e[2J"); 123 Serial.print("Sensor: "); 124 Serial.print(rx); 125 delay(500); 126 } 127 128 /* don't clog buffer */ 129 if (Serial.available() > 0) 130 in = Serial.parseInt(); 131 132 Serial.print("\n\r"); 133 } 134 135 void 136 menu_main(void) 137 { 138 int input = 0; 139 140 print_main(); 141 input = get_input(); 142 select_menu_item(input); 143 Serial.println("You're not supposed to be here!"); 144 } 145