Files
edgetx-gx12/companion/src/simulation/joystickdialog.h
T
661657feca feat: New advanced joystick mode on radio, improvements to Companion and Simulator joystick support (#3111)
* Allow switches on the connected radio to control switches in the simulator via the joystick interface.

* Merge configurable radio joystick interface from banyaszg.

* Add two more 'axis' channels to companion.

* Fix 6POS from USB joystick to simulator.

* Reduce data size.

* Fix build error on B&W radios.

* Add 'Companion' button mode to work with the button logic in the Companion app.

* Build Companion joystick setup layout at runtime.
Change #define names for simulator joystick.
Allow 15 axes and 32 buttons.
Initial support for trim sliders.

* Remove custom joystick button type for companion - use 3 buttons per switch in companion to control simulator switch state.

* Fix joystick constructor calls parameters. Connect some radio joystick trims to simulator widgets.

* Restore 'companion' button type to reduce number of buttons needed. Make trims work via buttons in USB joystick.

* Connect joystick trim buttons to simulator widgets.

* Use companion source names for trims.

* Add encode / decode of usb joystick custom settings to Companion.

* Convert to lvgl layouts.
Update language files.

* Fix generated YAML storage files.

* Fix initialisation error when editing button channel. Cleanup code.

* Fix rebase.

* Fix refresh of joystick channel list view after editing an entry.
Companion joystick config window uses two columns.

* Fix vertical joystick inversion bug.
Change stick axis labels.

---------

Co-authored-by: Phil Mitchell <phil.a.mitchell@gmail.com>
2023-03-22 10:31:29 +10:00

80 lines
2.0 KiB
C++

/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program 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.
*/
#ifndef _JOYSTICKDIALOG_H_
#define _JOYSTICKDIALOG_H_
#include <QtWidgets>
#include "appdata.h"
#include "joystick.h"
class QCheckBox;
class QComboBox;
class QSlider;
enum JSButtonFlag {
JS_BUTTON_TOGGLE = 0x1000,
JS_BUTTON_3POS_UP = 0x2000,
JS_BUTTON_3POS_DN = 0x4000,
JS_BUTTON_TYPE_MASK = 0xF000,
JS_BUTTON_SWITCH_MASK = 0x1F
};
namespace Ui {
class joystickDialog;
}
class joystickDialog : public QDialog
{
Q_OBJECT
public:
explicit joystickDialog(QWidget *parent = 0, int stick=-1);
~joystickDialog();
Joystick *joystick;
private:
Ui::joystickDialog *ui;
int jscal[MAX_JS_AXES][3];
QCheckBox * invert[MAX_JS_AXES];
QComboBox * sticks[MAX_JS_AXES + MAX_JS_BUTTONS];
QSlider * sliders[MAX_JS_AXES + MAX_JS_BUTTONS];
int step;
int numAxes;
bool started;
private slots:
void populateSourceCombo(QComboBox * cb);
void populateButtonCombo(QComboBox * cb);
bool loadJoysticks(int stick = -1);
void joystickOpen(int stick);
void joystickSetEnabled(bool enable);
void onjoystickAxisValueChanged(int axis, int value);
void onjoystickButtonValueChanged(int button, bool state);
void loadStep();
void on_backButton_clicked();
void on_nextButton_clicked();
void on_cancelButton_clicked();
void on_okButton_clicked();
};
#endif // _JOYSTICKDIALOG_H_