Digital Joystick
Revision 6:d354f6e3bd9b, committed 2015-02-26
- Comitter:
- LeoHsueh
- Date:
- Thu Feb 26 11:50:10 2015 +0000
- Parent:
- 5:31e3324d4c4b
- Commit message:
- Add function call.
Changed in this revision
Joystick.cpp | Show annotated file Show diff for this revision Revisions of this file |
Joystick.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 31e3324d4c4b -r d354f6e3bd9b Joystick.cpp --- a/Joystick.cpp Sat Feb 21 05:20:01 2015 +0000 +++ b/Joystick.cpp Thu Feb 26 11:50:10 2015 +0000 @@ -13,28 +13,61 @@ } -/** Function: getStatus +void Joystick::functions(FunctionPointer *functionNone, FunctionPointer *functionUp, FunctionPointer *functionDown, + FunctionPointer *functionLeft, FunctionPointer *functionRight, FunctionPointer *functionPress) { + _functionNone = functionNone; + _functionUp = functionUp; + _functionDown = functionDown; + _functionLeft = functionLeft; + _functionRight = functionRight; + _functionPress = functionPress; +} + +/** Get status * Read the joystick status * - * Variables: - * returns - A uint8_t values representing the bits + * @returns Status of joystick */ -uint8_t Joystick::getStatus() { - uint8_t ret = 0; +Joystick::Status Joystick::getStatus() { if (!_up) { - ret |= JOY_UP; + return up; } if (!_down) { - ret |= JOY_DOWN; + return down; } if (!_left) { - ret |= JOY_LEFT; + return left; } if (!_right) { - ret |= JOY_RIGHT; + return right; } if (!_press) { - ret |= JOY_PRESS; + return press; } - return ret; + return none; } + +void Joystick::poll() { + switch (getStatus()) { + case none: + _functionNone->call(); + break; + case up: + _functionUp->call(); + break; + case down: + _functionDown->call(); + break; + case left: + _functionLeft->call(); + break; + case right: + _functionRight->call(); + break; + case press: + _functionPress->call(); + break; + default: + break; + } +}
diff -r 31e3324d4c4b -r d354f6e3bd9b Joystick.h --- a/Joystick.h Sat Feb 21 05:20:01 2015 +0000 +++ b/Joystick.h Thu Feb 26 11:50:10 2015 +0000 @@ -4,26 +4,44 @@ //required to use mbed functions #include "mbed.h" +#include "FunctionPointer.h" -#define JOY_UP 0x01 -#define JOY_DOWN 0x02 -#define JOY_LEFT 0x04 -#define JOY_RIGHT 0x08 -#define JOY_PRESS 0x10 +#define JOYSTICK_NONE 0x00 +#define JOYSTICK_UP 0x01 +#define JOYSTICK_DOWN 0x02 +#define JOYSTICK_LEFT 0x04 +#define JOYSTICK_RIGHT 0x08 +#define JOYSTICK_PRESS 0x10 -/** Class: Joystick +/** Digital Joystick class * - * Used for reading from an digital joystick + * Used for an digital joystick. * * Example: + * @code + * #include "mbed.h" + * #include "Joystick.h" * - * > #include "mbed.h" + * Joystick joystick(P2_3, P0_15, P2_4, P0_16, P0_17); * - * > Joystick joystick(P2_3, P0_15, P2_4, P0_16, P0_17); + * int main() { + * joystick.getStatus(); + * } + * + * @endcode */ class Joystick { public: + typedef enum { + none = JOYSTICK_NONE, + up = JOYSTICK_UP, + down = JOYSTICK_DOWN, + left = JOYSTICK_LEFT, + right = JOYSTICK_RIGHT, + press = JOYSTICK_PRESS + } Status; + /** Create a Joystick HID for using regular mbed pins * * @param up Joystick Up @@ -34,19 +52,44 @@ */ Joystick(PinName up, PinName down, PinName left, PinName right, PinName press); - /** Function: getStatus + void functions(FunctionPointer *functionNone, FunctionPointer *functionUp, FunctionPointer *functionDown, + FunctionPointer *functionLeft, FunctionPointer *functionRight, FunctionPointer *functionPress); + + /** Get status * Read the joystick status * - * Variables: - * returns - A uint8_t values representing the bits + * @code + * switch (joystick.getStatus()) { + * case Joystick::none: + * break; + * case Joystick::up: + * break; + * case Joystick::down: + * break; + * case Joystick::left: + * break; + * case Joystick::right: + * break; + * case Joystick::press: + * break; + * default: + * break; + * } + * @endcode + * + * @returns A uint8_t values representing the bits */ - uint8_t getStatus(); + Status getStatus(); + + void poll(); private: /** Regular mbed pins bus */ DigitalIn _up, _down, _left, _right, _press; + + FunctionPointer *_functionNone, *_functionUp, *_functionDown, *_functionLeft, *_functionRight, *_functionPress; }; #endif