Digital Joystick

Joystick.cpp

Committer:
LeoHsueh
Date:
2015-02-26
Revision:
6:d354f6e3bd9b
Parent:
5:31e3324d4c4b

File content as of revision 6:d354f6e3bd9b:

#include "Joystick.h"

/** Create a Joystick HID for using regular mbed pins
 *
 * @param up    Joystick Up
 * @param down  Joystick Down
 * @param left  Joystick Left
 * @param right Joystick Right
 * @param press Joystick Press
 */
Joystick::Joystick(PinName up, PinName down, PinName left, PinName right, PinName press) :
        _up(up), _down(down), _left(left), _right(right), _press(press) {
    
}

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
 *
 * @returns Status of joystick
 */
Joystick::Status Joystick::getStatus() {
    if (!_up) {
        return up;
    }
    if (!_down) {
        return down;
    }
    if (!_left) {
        return left;
    }
    if (!_right) {
        return right;
    }
    if (!_press) {
        return press;
    }
    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;
    }
}