summaryrefslogtreecommitdiff
path: root/c/menu/menu.c
blob: 4d3aa1464576350124df8dd19e89653fc0b3d28e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* Menu Thing for RVController - Main Menu
 * A product of Advanced Mesecons Devices, a Cheapie Systems company
 * This is free and unencumbered software released into the public domain.
 * See http://unlicense.org/ for more information */

#include <stdint.h>
#include <stdbool.h>
#include "rvcontroller-ecalls.h"
#include "calculator.h"
#include "digilines.h"
#include "games.h"
#include "screensaver.h"

uint_fast8_t menupage = 0;

void main(void) {
	char inputbuf[32] = {0}; // Overkill for now but it's not like I'm short on RAM
	while (true) {
		switch (menupage) {
			case 0:
				printstr("\nMAIN MENU Page 1\n");
				printstr("< > to change page\n");
				printstr("1: Calculator\n");
				printstr("2: Calendar\n");
				printstr("3: Digilines\n");
				printstr("4: Games");
				break;
			case 1:
				printstr("\nMAIN MENU Page 2\n");
				printstr("< > to change page\n");
				printstr("5: Screensaver\n");
				printstr("6: Text Editor\n");
				printstr("More coming soon\n");
				printstr("(maybe)");
				break;
			default:
				printstr("\nInvalid menu page\n\n\n\n\n\n");
		}

		readstr(inputbuf,32);

		switch (inputbuf[0]) {
			case '<':
				if (menupage > 0) {
					menupage--;
				} else {
					menupage = 1;
				}
				break;
			case '>':
				menupage = (menupage + 1) % 2;
				break;
			case '1':
				runCalculator();
				break;
			case '3':
				runDigilines();
				break;
			case '4':
				runGames();
				break;
			case '5':
				runScreensaver();
				break;
			default:
				printstr("\nUnknown or\n");
				printstr("unimplemented\n");
				printstr("command\n");
				printstr("\n");
				printstr("Press any key\n");
				readstr(inputbuf,32);
		}
	}
}