Code for Doug, Elizabeth, and Maruchi's team project: a Mario Kart controller.

Dependencies:   PinDetect USBDevice mbed

Committer:
douglasc
Date:
Mon Sep 29 06:55:14 2014 +0000
Revision:
0:0c8c5c9f7586
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
douglasc 0:0c8c5c9f7586 1 /**
douglasc 0:0c8c5c9f7586 2 * Class KeyManager
douglasc 0:0c8c5c9f7586 3 *
douglasc 0:0c8c5c9f7586 4 * This class tracks the state of the four input
douglasc 0:0c8c5c9f7586 5 * buttons and returns state information and
douglasc 0:0c8c5c9f7586 6 * mappings.
douglasc 0:0c8c5c9f7586 7 *
douglasc 0:0c8c5c9f7586 8 */
douglasc 0:0c8c5c9f7586 9
douglasc 0:0c8c5c9f7586 10 #ifndef KEYMANAGER
douglasc 0:0c8c5c9f7586 11 #define KEYMANAGER
douglasc 0:0c8c5c9f7586 12
douglasc 0:0c8c5c9f7586 13 #include <string>
douglasc 0:0c8c5c9f7586 14 #include <ctype.h>
douglasc 0:0c8c5c9f7586 15
douglasc 0:0c8c5c9f7586 16 class KeyManager {
douglasc 0:0c8c5c9f7586 17 private:
douglasc 0:0c8c5c9f7586 18 // key definitions
douglasc 0:0c8c5c9f7586 19 bool keyA;
douglasc 0:0c8c5c9f7586 20 bool keyB;
douglasc 0:0c8c5c9f7586 21 bool keyC;
douglasc 0:0c8c5c9f7586 22 bool keyZ;
douglasc 0:0c8c5c9f7586 23
douglasc 0:0c8c5c9f7586 24 public:
douglasc 0:0c8c5c9f7586 25
douglasc 0:0c8c5c9f7586 26 // constructor
douglasc 0:0c8c5c9f7586 27 KeyManager() {
douglasc 0:0c8c5c9f7586 28 keyA = false;
douglasc 0:0c8c5c9f7586 29 keyB = false;
douglasc 0:0c8c5c9f7586 30 keyC = false;
douglasc 0:0c8c5c9f7586 31 keyZ = false;
douglasc 0:0c8c5c9f7586 32 }
douglasc 0:0c8c5c9f7586 33
douglasc 0:0c8c5c9f7586 34 // DEBUG: return the status of which keys are pressed
douglasc 0:0c8c5c9f7586 35 char* getStatusString() {
douglasc 0:0c8c5c9f7586 36 std::string status = "the following keys are pressed:";
douglasc 0:0c8c5c9f7586 37 if (keyA) {
douglasc 0:0c8c5c9f7586 38 status += " A";
douglasc 0:0c8c5c9f7586 39 }
douglasc 0:0c8c5c9f7586 40 if (keyB) {
douglasc 0:0c8c5c9f7586 41 status += " B";
douglasc 0:0c8c5c9f7586 42 }
douglasc 0:0c8c5c9f7586 43 if (keyC) {
douglasc 0:0c8c5c9f7586 44 status += " C";
douglasc 0:0c8c5c9f7586 45 }
douglasc 0:0c8c5c9f7586 46 if (keyZ) {
douglasc 0:0c8c5c9f7586 47 status += " Z";
douglasc 0:0c8c5c9f7586 48 }
douglasc 0:0c8c5c9f7586 49 status += "\n";
douglasc 0:0c8c5c9f7586 50 return (char*)status.c_str();
douglasc 0:0c8c5c9f7586 51 }
douglasc 0:0c8c5c9f7586 52
douglasc 0:0c8c5c9f7586 53 // map the current code to its character
douglasc 0:0c8c5c9f7586 54 char getCharacter() {
douglasc 0:0c8c5c9f7586 55 if (keyA) {
douglasc 0:0c8c5c9f7586 56 return 'a';
douglasc 0:0c8c5c9f7586 57 }
douglasc 0:0c8c5c9f7586 58 if (keyB) {
douglasc 0:0c8c5c9f7586 59 return 'b';
douglasc 0:0c8c5c9f7586 60 }
douglasc 0:0c8c5c9f7586 61 if (keyC) {
douglasc 0:0c8c5c9f7586 62 return 'c';
douglasc 0:0c8c5c9f7586 63 }
douglasc 0:0c8c5c9f7586 64 if (keyZ) {
douglasc 0:0c8c5c9f7586 65 return 'z';
douglasc 0:0c8c5c9f7586 66 }
douglasc 0:0c8c5c9f7586 67 return '?';
douglasc 0:0c8c5c9f7586 68 }
douglasc 0:0c8c5c9f7586 69
douglasc 0:0c8c5c9f7586 70 // check whether any of the character keys or the space
douglasc 0:0c8c5c9f7586 71 // key are pressed
douglasc 0:0c8c5c9f7586 72 bool keysPressed() {
douglasc 0:0c8c5c9f7586 73 if (keyA || keyB || keyC || keyZ) {
douglasc 0:0c8c5c9f7586 74 return true;
douglasc 0:0c8c5c9f7586 75 }
douglasc 0:0c8c5c9f7586 76 return false;
douglasc 0:0c8c5c9f7586 77 }
douglasc 0:0c8c5c9f7586 78
douglasc 0:0c8c5c9f7586 79 // Interrupt callback functions
douglasc 0:0c8c5c9f7586 80 void keyAOn() { keyA = true; }
douglasc 0:0c8c5c9f7586 81 void keyAOff() { keyA = false; }
douglasc 0:0c8c5c9f7586 82 void keyBOn() { keyB = true; }
douglasc 0:0c8c5c9f7586 83 void keyBOff() { keyB = false; }
douglasc 0:0c8c5c9f7586 84 void keyCOn() { keyC = true; }
douglasc 0:0c8c5c9f7586 85 void keyCOff() { keyC = false; }
douglasc 0:0c8c5c9f7586 86 void keyZOn() { keyZ = true; }
douglasc 0:0c8c5c9f7586 87 void keyZOff() { keyZ = false; }
douglasc 0:0c8c5c9f7586 88
douglasc 0:0c8c5c9f7586 89 };
douglasc 0:0c8c5c9f7586 90
douglasc 0:0c8c5c9f7586 91 #endif