Commit e55ff330 authored by Don Gagne's avatar Don Gagne

Support transmitter modes for help

parent 84de973d
......@@ -175,17 +175,28 @@
<file>files/images/px4/calibration/accel_z-.png</file>
<file>files/images/px4/calibration/accel_y+.png</file>
<file>files/images/px4/calibration/mag_calibration_figure8.png</file>
<file>files/images/px4/calibration/radioCenter.png</file>
<file>files/images/px4/calibration/radioHome.png</file>
<file>files/images/px4/calibration/radioRollLeft.png</file>
<file>files/images/px4/calibration/radioRollRight.png</file>
<file>files/images/px4/calibration/radioPitchUp.png</file>
<file>files/images/px4/calibration/radioPitchDown.png</file>
<file>files/images/px4/calibration/radioYawLeft.png</file>
<file>files/images/px4/calibration/radioYawRight.png</file>
<file>files/images/px4/calibration/radioThrottleUp.png</file>
<file>files/images/px4/calibration/radioThrottleDown.png</file>
<file>files/images/px4/calibration/radioSwitchMinMax.png</file>
<file>files/images/px4/calibration/mode1/radioCenter.png</file>
<file>files/images/px4/calibration/mode1/radioHome.png</file>
<file>files/images/px4/calibration/mode1/radioRollLeft.png</file>
<file>files/images/px4/calibration/mode1/radioRollRight.png</file>
<file>files/images/px4/calibration/mode1/radioPitchUp.png</file>
<file>files/images/px4/calibration/mode1/radioPitchDown.png</file>
<file>files/images/px4/calibration/mode1/radioYawLeft.png</file>
<file>files/images/px4/calibration/mode1/radioYawRight.png</file>
<file>files/images/px4/calibration/mode1/radioThrottleUp.png</file>
<file>files/images/px4/calibration/mode1/radioThrottleDown.png</file>
<file>files/images/px4/calibration/mode1/radioSwitchMinMax.png</file>
<file>files/images/px4/calibration/mode2/radioCenter.png</file>
<file>files/images/px4/calibration/mode2/radioHome.png</file>
<file>files/images/px4/calibration/mode2/radioRollLeft.png</file>
<file>files/images/px4/calibration/mode2/radioRollRight.png</file>
<file>files/images/px4/calibration/mode2/radioPitchUp.png</file>
<file>files/images/px4/calibration/mode2/radioPitchDown.png</file>
<file>files/images/px4/calibration/mode2/radioYawLeft.png</file>
<file>files/images/px4/calibration/mode2/radioYawRight.png</file>
<file>files/images/px4/calibration/mode2/radioThrottleUp.png</file>
<file>files/images/px4/calibration/mode2/radioThrottleDown.png</file>
<file>files/images/px4/calibration/mode2/radioSwitchMinMax.png</file>
<file>files/images/px4/menu/sensors.png</file>
<file>files/images/px4/menu/firmware_upgrade.png</file>
<file>files/images/px4/menu/plane.png</file>
......
......@@ -26,6 +26,7 @@
/// @author Don Gagne <don@thegagnes.com
#include <QMessageBox>
#include <QSettings>
#include "PX4RCCalibration.h"
#include "UASManager.h"
......@@ -45,6 +46,9 @@ const int PX4RCCalibration::_rcCalMinDelta = 100; ///< Amount of del
const int PX4RCCalibration::_stickDetectSettleMSecs = 500;
const char* PX4RCCalibration::_imageFilePrefix = ":files/images/px4/calibration/";
const char* PX4RCCalibration::_imageFileMode1Dir = "mode1/";
const char* PX4RCCalibration::_imageFileMode2Dir = "mode2/";
const char* PX4RCCalibration::_imageCenter = "radioCenter.png";
const char* PX4RCCalibration::_imageHome = "radioHome.png";
const char* PX4RCCalibration::_imageThrottleUp = "radioThrottleUp.png";
const char* PX4RCCalibration::_imageThrottleDown = "radioThrottleDown.png";
......@@ -56,6 +60,9 @@ const char* PX4RCCalibration::_imagePitchUp = "radioPitchUp";
const char* PX4RCCalibration::_imagePitchDown = "radioPitchDown";
const char* PX4RCCalibration::_imageSwitchMinMax = "radioSwitchMinMax";
const char* PX4RCCalibration::_settingsGroup = "RadioCalibration";
const char* PX4RCCalibration::_settingsKeyTransmitterMode = "TransmitterMode";
const struct PX4RCCalibration::FunctionInfo PX4RCCalibration::_rgFunctionInfo[PX4RCCalibration::rcCalFunctionMax] = {
//Parameter required
{ "RC_MAP_ROLL" },
......@@ -74,6 +81,7 @@ const struct PX4RCCalibration::FunctionInfo PX4RCCalibration::_rgFunctionInfo[PX
PX4RCCalibration::PX4RCCalibration(QWidget *parent) :
QWidget(parent),
_currentStep(-1),
_transmitterMode(2),
_chanCount(0),
_rcCalState(rcCalStateChannelWait),
_mav(NULL),
......@@ -136,11 +144,27 @@ PX4RCCalibration::PX4RCCalibration(QWidget *parent) :
connect(_ui->pitchTrim, &QPushButton::clicked, this, &PX4RCCalibration::_trimNYI);
connect(_ui->throttleTrim, &QPushButton::clicked, this, &PX4RCCalibration::_trimNYI);
_loadSettings();
if (_transmitterMode == 1) {
_ui->mode1->setChecked(true);
_mode1Toggled(true);
} else if (_transmitterMode == 2) {
_ui->mode2->setChecked(true);
_mode2Toggled(true);
} else {
Q_ASSERT(false);
}
connect(_ui->mode1, &QAbstractButton::toggled, this, &PX4RCCalibration::_mode1Toggled);
connect(_ui->mode2, &QAbstractButton::toggled, this, &PX4RCCalibration::_mode2Toggled);
_stopCalibration();
}
PX4RCCalibration::~PX4RCCalibration()
{
_storeSettings();
}
/// @brief Returns the state machine entry for the specified state.
......@@ -219,7 +243,8 @@ void PX4RCCalibration::_setupCurrentState(void)
const stateMachineEntry* state = _getStateMachineEntry(_currentStep);
_ui->rcCalStatus->setText(state->instructions);
_ui->radioIcon->setPixmap(QPixmap(QString(_imageFilePrefix) + state->image));
_setHelpImage(state->image);
_stickDetectChannel = _chanMax;
_stickDetectSettleStarted = false;
......@@ -976,6 +1001,8 @@ void PX4RCCalibration::_stopCalibration(void)
_ui->rcCalNext->setEnabled(true);
_ui->rcCalCancel->setEnabled(false);
_ui->rcCalSkip->setEnabled(false);
_setHelpImage(_imageCenter);
}
/// @brief Saves the current channel values, so that we can detect when the use moves an input.
......@@ -1051,3 +1078,65 @@ void PX4RCCalibration::_parameterListUpToDate(void)
_setInternalCalibrationValuesFromParameters();
}
}
void PX4RCCalibration::_loadSettings(void)
{
QSettings settings;
settings.beginGroup(_settingsGroup);
_transmitterMode = settings.value(_settingsKeyTransmitterMode, 2).toInt();
settings.endGroup();
if (_transmitterMode != 1 || _transmitterMode != 2) {
_transmitterMode = 2;
}
}
void PX4RCCalibration::_storeSettings(void)
{
QSettings settings;
settings.beginGroup(_settingsGroup);
settings.setValue(_settingsKeyTransmitterMode, _transmitterMode);
settings.endGroup();
}
void PX4RCCalibration::_mode1Toggled(bool checked)
{
if (checked) {
_transmitterMode = 1;
if (_currentStep != -1) {
const stateMachineEntry* state = _getStateMachineEntry(_currentStep);
_setHelpImage(state->image);
}
}
}
void PX4RCCalibration::_mode2Toggled(bool checked)
{
if (checked) {
_transmitterMode = 2;
if (_currentStep != -1) {
const stateMachineEntry* state = _getStateMachineEntry(_currentStep);
_setHelpImage(state->image);
}
}
}
void PX4RCCalibration::_setHelpImage(const char* imageFile)
{
QString file = _imageFilePrefix;
if (_transmitterMode == 1) {
file += _imageFileMode1Dir;
} else if (_transmitterMode == 2) {
file += _imageFileMode2Dir;
} else {
Q_ASSERT(false);
}
file += imageFile;
qDebug() << "_setHelpImage" << file;
_ui->radioIcon->setPixmap(QPixmap(file));
}
......@@ -63,6 +63,9 @@ private slots:
void _skipButton(void);
void _spektrumBind(void);
void _mode1Toggled(bool checked);
void _mode2Toggled(bool checked);
void _trimNYI(void);
void _updateView(void);
......@@ -184,12 +187,20 @@ private:
void _showMinMaxOnRadioWidgets(bool show);
void _showTrimOnRadioWidgets(bool show);
void _setHelpImage(const char* imageFile);
void _loadSettings(void);
void _storeSettings(void);
// @brief Called by unit test code to set the mode to unit testing
void _setUnitTestMode(void){ _unitTestMode = true; }
// Member variables
static const char* _imageFileMode1Dir;
static const char* _imageFileMode2Dir;
static const char* _imageFilePrefix;
static const char* _imageCenter;
static const char* _imageHome;
static const char* _imageThrottleUp;
static const char* _imageThrottleDown;
......@@ -201,6 +212,11 @@ private:
static const char* _imagePitchDown;
static const char* _imageSwitchMinMax;
static const char* _settingsGroup;
static const char* _settingsKeyTransmitterMode;
int _transmitterMode; ///< 1: transmitter is mode 1, 2: transmitted is mode 2
static const int _updateInterval; ///< Interval for ui update timer
static const struct FunctionInfo _rgFunctionInfo[rcCalFunctionMax]; ///< Information associated with each function.
......
......@@ -546,11 +546,53 @@ background-color: rgb(80, 80, 80);s</string>
</widget>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Calibration Help</string>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>-1</number>
</property>
</widget>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Calibration Help</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="mode1">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Mode 1</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="mode2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Mode 2</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="radioIcon">
......@@ -570,7 +612,7 @@ background-color: rgb(80, 80, 80);s</string>
<string/>
</property>
<property name="pixmap">
<pixmap resource="../../../qgroundcontrol.qrc">:/files/images/px4/calibration/radioCenter.png</pixmap>
<pixmap>:/files/images/px4/calibration/radioCenter.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
......@@ -594,7 +636,7 @@ background-color: rgb(80, 80, 80);s</string>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<widget class="QLabel" name="monitorLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
......@@ -1172,8 +1214,6 @@ background-color: rgb(179, 179, 179);</string>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../../qgroundcontrol.qrc"/>
</resources>
<resources/>
<connections/>
</ui>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment