ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Wed Apr 24 17:38:41 2019 +0000
Revision:
24:c7df5aa476a9
Parent:
21:20478f086bc2
Child:
25:aa145767fda5
Updated Documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 9:fff2009f826e 1 #ifndef MENU_H
lewisgw 9:fff2009f826e 2 #define MENU_H
lewisgw 9:fff2009f826e 3
lewisgw 9:fff2009f826e 4 #include "mbed.h"
lewisgw 9:fff2009f826e 5 #include "N5110.h"
lewisgw 9:fff2009f826e 6 #include "Gamepad.h"
lewisgw 12:ebaefda53dd0 7 #include "EngineController.h"
lewisgw 12:ebaefda53dd0 8
lewisgw 24:c7df5aa476a9 9 /** Menu Class
lewisgw 24:c7df5aa476a9 10 * @brief Class to control the overall state of the game
lewisgw 24:c7df5aa476a9 11 * @author Lewis Wooltorton
lewisgw 24:c7df5aa476a9 12 * @date April 2019
lewisgw 24:c7df5aa476a9 13 */
lewisgw 24:c7df5aa476a9 14
lewisgw 24:c7df5aa476a9 15 /** State for finite state machine struct */
lewisgw 12:ebaefda53dd0 16 struct State {
lewisgw 12:ebaefda53dd0 17 int output;
lewisgw 12:ebaefda53dd0 18 int next_state[4];
lewisgw 12:ebaefda53dd0 19 };
lewisgw 9:fff2009f826e 20
lewisgw 9:fff2009f826e 21 class Menu {
lewisgw 9:fff2009f826e 22 public:
lewisgw 21:20478f086bc2 23 // Constructor and Destructor.
lewisgw 21:20478f086bc2 24 /**
lewisgw 21:20478f086bc2 25 * @brief Constructor @details Non user specified.
lewisgw 21:20478f086bc2 26 */
lewisgw 9:fff2009f826e 27 Menu();
lewisgw 21:20478f086bc2 28 /**
lewisgw 21:20478f086bc2 29 * @brief Destructor @details Non user specified.
lewisgw 21:20478f086bc2 30 */
lewisgw 9:fff2009f826e 31 ~Menu();
lewisgw 12:ebaefda53dd0 32
lewisgw 21:20478f086bc2 33 // Mutators
lewisgw 21:20478f086bc2 34 /**
lewisgw 21:20478f086bc2 35 * @brief Initalises the Menu object.
lewisgw 21:20478f086bc2 36 */
lewisgw 9:fff2009f826e 37 void init();
lewisgw 21:20478f086bc2 38 /**
lewisgw 21:20478f086bc2 39 * @brief Runs the menu via a state machine.
lewisgw 21:20478f086bc2 40 * @param &lcd @details The lcd object from the N5110 class
lewisgw 21:20478f086bc2 41 * @param &gamepad @details The gamepad object from Gamepad class
lewisgw 21:20478f086bc2 42 */
lewisgw 12:ebaefda53dd0 43 void run(N5110 &lcd, Gamepad &gamepad);
lewisgw 9:fff2009f826e 44
lewisgw 9:fff2009f826e 45 private:
lewisgw 13:bcf6bb69c597 46 void set_input(bool start, bool back, bool x);
lewisgw 12:ebaefda53dd0 47 void run_game(N5110 &lcd, Gamepad &gamepad);
lewisgw 12:ebaefda53dd0 48 void display_menu(N5110 &lcd, Gamepad &gamepad);
lewisgw 12:ebaefda53dd0 49 void display_controls(N5110 &lcd, Gamepad &gamepad);
lewisgw 12:ebaefda53dd0 50 void output(N5110 &lcd, Gamepad &gamepad);
lewisgw 20:a8cad4e044ea 51 void play_tone(Gamepad &gamepad);
lewisgw 21:20478f086bc2 52 void play_chord_a(Gamepad &gamepad);
lewisgw 21:20478f086bc2 53 void play_chord_b(Gamepad &gamepad);
lewisgw 12:ebaefda53dd0 54
lewisgw 12:ebaefda53dd0 55 int _menu_input;
lewisgw 12:ebaefda53dd0 56 EngineController _controller;
lewisgw 12:ebaefda53dd0 57 bool _button;
lewisgw 12:ebaefda53dd0 58 int _state;
lewisgw 12:ebaefda53dd0 59 int _output;
lewisgw 20:a8cad4e044ea 60 bool _tone_flag;
lewisgw 20:a8cad4e044ea 61 int _tone_counter;
lewisgw 21:20478f086bc2 62 int _chord_counter;
lewisgw 9:fff2009f826e 63 };
lewisgw 12:ebaefda53dd0 64 #endif