JoystickWidget.h 2.76 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*=====================================================================

PIXHAWK Micro Air Vehicle Flying Robotics Toolkit

(c) 2009, 2010 PIXHAWK PROJECT  <http://pixhawk.ethz.ch>

This file is part of the PIXHAWK project

    PIXHAWK is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PIXHAWK is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PIXHAWK. If not, see <http://www.gnu.org/licenses/>.

======================================================================*/

/**
 * @file
pixhawk's avatar
pixhawk committed
26
 *   @brief Definition of joystick widget
pixhawk's avatar
pixhawk committed
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
 *
 */

#ifndef JOYSTICKWIDGET_H
#define JOYSTICKWIDGET_H

#include <QtGui/QDialog>
#include "JoystickInput.h"

namespace Ui {
    class JoystickWidget;
}

class JoystickWidget : public QDialog {
    Q_OBJECT
    Q_DISABLE_COPY(JoystickWidget)
public:
    explicit JoystickWidget(JoystickInput* joystick, QWidget *parent = 0);
    virtual ~JoystickWidget();

    public slots:
    /**
     * @brief Receive raw joystick values
     *
     * @param roll forward / pitch / x axis, front: 32'767, center: 0, back: -32'768
     * @param pitch left / roll / y axis, left: -32'768, middle: 0, right: 32'767
     * @param yaw turn axis, left-turn: -32'768, centered: 0, right-turn: 32'767
     * @param thrust Thrust, 0%: 0, 100%: 65535
     * @param xHat hat vector in forward-backward direction, +1 forward, 0 center, -1 backward
     * @param yHat hat vector in left-right direction, -1 left, 0 center, +1 right
     */
    void updateJoystick(double roll, double pitch, double yaw, double thrust, int xHat, int yHat);
pixhawk's avatar
pixhawk committed
60
    /** @brief Throttle lever */
pixhawk's avatar
pixhawk committed
61
    void setThrottle(float thrust);
pixhawk's avatar
pixhawk committed
62
    /** @brief Back/forth movement */
pixhawk's avatar
pixhawk committed
63
    void setX(float x);
pixhawk's avatar
pixhawk committed
64
    /** @brief Left/right movement */
pixhawk's avatar
pixhawk committed
65
    void setY(float y);
pixhawk's avatar
pixhawk committed
66 67 68 69
    /** @brief Wrist rotation */
    void setZ(float z);
    /** @brief Hat switch position */
    void setHat(float x, float y);
70 71
    /** @brief Clear keys */
    void clearKeys();
pixhawk's avatar
pixhawk committed
72
    /** @brief Joystick keys, as labeled on the joystick */
pixhawk's avatar
pixhawk committed
73
    void pressKey(int key);
74 75
    /** @brief Update status string */
    void updateStatus(const QString& status);
pixhawk's avatar
pixhawk committed
76 77

protected:
pixhawk's avatar
pixhawk committed
78
    /** @brief UI change event */
pixhawk's avatar
pixhawk committed
79
    virtual void changeEvent(QEvent *e);
pixhawk's avatar
pixhawk committed
80
    JoystickInput* joystick;  ///< Reference to the joystick
pixhawk's avatar
pixhawk committed
81 82 83 84 85 86

private:
    Ui::JoystickWidget *m_ui;
};

#endif // JOYSTICKWIDGET_H