Mamecontroller/joystick device wrapper library

Dependencies:   USBDevice mbed

Committer:
uswickra
Date:
Wed Dec 10 05:51:13 2014 +0000
Revision:
4:4f6e38b6c07e
Parent:
2:018f204f6037
my controller;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
uswickra 0:4babde63a16e 1 #pragma once
uswickra 0:4babde63a16e 2 #include "mbed.h"
uswickra 0:4babde63a16e 3 #include "USBSerial.h"
uswickra 0:4babde63a16e 4 #include "signals.h"
bhavk11 2:018f204f6037 5 #include "DebounceIn.h"
bhavk11 2:018f204f6037 6
uswickra 0:4babde63a16e 7
uswickra 0:4babde63a16e 8 extern USBKeyboard keyboard;
uswickra 0:4babde63a16e 9 extern Serial uart;
uswickra 0:4babde63a16e 10
bhavk11 2:018f204f6037 11
uswickra 4:4f6e38b6c07e 12 #define ON 1
bhavk11 2:018f204f6037 13 extern DebounceIn Up;
bhavk11 2:018f204f6037 14 extern DebounceIn Down;
bhavk11 2:018f204f6037 15 extern DebounceIn Left;
bhavk11 2:018f204f6037 16 extern DebounceIn Right;
bhavk11 2:018f204f6037 17 extern DebounceIn Jump;
bhavk11 2:018f204f6037 18 extern DebounceIn Fire1;
bhavk11 2:018f204f6037 19 extern DebounceIn Fire2;
bhavk11 2:018f204f6037 20
uswickra 0:4babde63a16e 21 /*
uswickra 0:4babde63a16e 22 *Base Joystic controller class
uswickra 0:4babde63a16e 23 */
uswickra 0:4babde63a16e 24 class Joystick
uswickra 0:4babde63a16e 25 {
uswickra 0:4babde63a16e 26 protected:
uswickra 0:4babde63a16e 27 SignalRouter router;
uswickra 0:4babde63a16e 28 public:
uswickra 0:4babde63a16e 29 Joystick();
uswickra 0:4babde63a16e 30 /*
uswickra 0:4babde63a16e 31 * init and start Joystick
uswickra 0:4babde63a16e 32 *
uswickra 0:4babde63a16e 33 */
uswickra 0:4babde63a16e 34 virtual void init()=0;
uswickra 0:4babde63a16e 35
uswickra 0:4babde63a16e 36 /*
uswickra 0:4babde63a16e 37 * Following 3 functions will be responsible for joytick menu select operations
uswickra 0:4babde63a16e 38 * These are in-game menu actions
uswickra 0:4babde63a16e 39 */
uswickra 0:4babde63a16e 40 virtual void pressMenuSelect1()=0;
uswickra 0:4babde63a16e 41 virtual void pressMenuSelect2()=0;
uswickra 0:4babde63a16e 42 virtual void pressMenuSelect3()=0;
uswickra 0:4babde63a16e 43
uswickra 0:4babde63a16e 44 /*
uswickra 0:4babde63a16e 45 * Following functions will be responsible for game actions
uswickra 0:4babde63a16e 46 * These are used for in-game play
uswickra 0:4babde63a16e 47 */
uswickra 0:4babde63a16e 48
uswickra 0:4babde63a16e 49 /*
uswickra 0:4babde63a16e 50 * This function is invoked when joytick presses Button UP
uswickra 0:4babde63a16e 51 */
uswickra 0:4babde63a16e 52 virtual void pressUp()=0;
uswickra 0:4babde63a16e 53
uswickra 0:4babde63a16e 54 /*
uswickra 0:4babde63a16e 55 * This function is invoked when joytick presses Button Down
uswickra 0:4babde63a16e 56 */
uswickra 0:4babde63a16e 57 virtual void pressDown()=0;
uswickra 0:4babde63a16e 58
uswickra 0:4babde63a16e 59 /*
uswickra 0:4babde63a16e 60 * This function is invoked when joytick presses Button LEFT
uswickra 0:4babde63a16e 61 */
uswickra 0:4babde63a16e 62 virtual void pressLeft()=0;
uswickra 0:4babde63a16e 63
uswickra 0:4babde63a16e 64 /*
uswickra 0:4babde63a16e 65 * This function is invoked when joytick presses Button RIGHT
uswickra 0:4babde63a16e 66 */
uswickra 0:4babde63a16e 67 virtual void pressRight()=0;
uswickra 0:4babde63a16e 68
uswickra 0:4babde63a16e 69 /*
uswickra 0:4babde63a16e 70 * This function is invoked when joytick presses Button JMP
uswickra 0:4babde63a16e 71 */
uswickra 0:4babde63a16e 72 virtual void pressJump()=0;
uswickra 0:4babde63a16e 73
uswickra 0:4babde63a16e 74 /*
uswickra 0:4babde63a16e 75 * This function is invoked when joytick presses Button1 for FIRE
uswickra 0:4babde63a16e 76 */
uswickra 0:4babde63a16e 77 virtual void pressFire1()=0;
uswickra 0:4babde63a16e 78
uswickra 0:4babde63a16e 79 /*
uswickra 0:4babde63a16e 80 * This function is invoked when joytick presses Button2 for FIRE
uswickra 0:4babde63a16e 81 */
uswickra 0:4babde63a16e 82 virtual void pressFire2()=0;
uswickra 0:4babde63a16e 83 };
uswickra 0:4babde63a16e 84
uswickra 0:4babde63a16e 85 /*
uswickra 0:4babde63a16e 86 * Serial joystic controller class
uswickra 0:4babde63a16e 87 * This is a terminal/uart input (not actual HW input) controlled Joystick
uswickra 0:4babde63a16e 88 * used as a testbed currently
uswickra 0:4babde63a16e 89 */
uswickra 0:4babde63a16e 90 class SerialJoystick:public Joystick{
uswickra 0:4babde63a16e 91 public:
uswickra 0:4babde63a16e 92 SerialJoystick();
uswickra 0:4babde63a16e 93 void init();
uswickra 0:4babde63a16e 94 void pressMenuSelect1();
uswickra 0:4babde63a16e 95 void pressMenuSelect2();
uswickra 0:4babde63a16e 96 void pressMenuSelect3();
uswickra 0:4babde63a16e 97 void pressUp();
uswickra 0:4babde63a16e 98 void pressDown();
uswickra 0:4babde63a16e 99 void pressLeft();
uswickra 0:4babde63a16e 100 void pressRight();
uswickra 0:4babde63a16e 101 void pressJump();
uswickra 0:4babde63a16e 102 void pressFire1();
uswickra 0:4babde63a16e 103 void pressFire2();
uswickra 1:89c1c7f9245a 104 };
uswickra 1:89c1c7f9245a 105
uswickra 1:89c1c7f9245a 106 class GPIOJoystick:public Joystick{
uswickra 1:89c1c7f9245a 107 public:
uswickra 1:89c1c7f9245a 108 GPIOJoystick();
uswickra 1:89c1c7f9245a 109 void init();
uswickra 1:89c1c7f9245a 110 void pressMenuSelect1();
uswickra 1:89c1c7f9245a 111 void pressMenuSelect2();
uswickra 1:89c1c7f9245a 112 void pressMenuSelect3();
uswickra 1:89c1c7f9245a 113 void pressUp();
uswickra 1:89c1c7f9245a 114 void pressDown();
uswickra 1:89c1c7f9245a 115 void pressLeft();
uswickra 1:89c1c7f9245a 116 void pressRight();
uswickra 1:89c1c7f9245a 117 void pressJump();
uswickra 1:89c1c7f9245a 118 void pressFire1();
uswickra 1:89c1c7f9245a 119 void pressFire2();
uswickra 1:89c1c7f9245a 120 };