diff --git a/files/images/px4/calibration/radioCenter.png b/files/images/px4/calibration/mode1/radioCenter.png similarity index 100% rename from files/images/px4/calibration/radioCenter.png rename to files/images/px4/calibration/mode1/radioCenter.png diff --git a/files/images/px4/calibration/mode1/radioHome.png b/files/images/px4/calibration/mode1/radioHome.png new file mode 100644 index 0000000000000000000000000000000000000000..d76983650f46d404f8f5a1050182162a513eba76 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioHome.png differ diff --git a/files/images/px4/calibration/mode1/radioPitchDown.png b/files/images/px4/calibration/mode1/radioPitchDown.png new file mode 100644 index 0000000000000000000000000000000000000000..56f8d6af9c515c8f495e3bce9b378a9588f43607 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioPitchDown.png differ diff --git a/files/images/px4/calibration/mode1/radioPitchUp.png b/files/images/px4/calibration/mode1/radioPitchUp.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f954ae39a34d430b44112d2f50b1af37652264 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioPitchUp.png differ diff --git a/files/images/px4/calibration/mode1/radioRollLeft.png b/files/images/px4/calibration/mode1/radioRollLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..7fed7e5061d350cbe1555876faa672d45fa7ec13 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioRollLeft.png differ diff --git a/files/images/px4/calibration/mode1/radioRollRight.png b/files/images/px4/calibration/mode1/radioRollRight.png new file mode 100644 index 0000000000000000000000000000000000000000..b532961f3b4baaef14b9352a66f75d5d8823415e Binary files /dev/null and b/files/images/px4/calibration/mode1/radioRollRight.png differ diff --git a/files/images/px4/calibration/radioSwitchMinMax.png b/files/images/px4/calibration/mode1/radioSwitchMinMax.png similarity index 100% rename from files/images/px4/calibration/radioSwitchMinMax.png rename to files/images/px4/calibration/mode1/radioSwitchMinMax.png diff --git a/files/images/px4/calibration/mode1/radioThrottleDown.png b/files/images/px4/calibration/mode1/radioThrottleDown.png new file mode 100644 index 0000000000000000000000000000000000000000..d76983650f46d404f8f5a1050182162a513eba76 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioThrottleDown.png differ diff --git a/files/images/px4/calibration/mode1/radioThrottleUp.png b/files/images/px4/calibration/mode1/radioThrottleUp.png new file mode 100644 index 0000000000000000000000000000000000000000..768aa44f52ac2937ecaf433fb47f55c93687333b Binary files /dev/null and b/files/images/px4/calibration/mode1/radioThrottleUp.png differ diff --git a/files/images/px4/calibration/mode1/radioYawLeft.png b/files/images/px4/calibration/mode1/radioYawLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..489478e444c5a2b3b92e743c677a3a8c0a54fa0c Binary files /dev/null and b/files/images/px4/calibration/mode1/radioYawLeft.png differ diff --git a/files/images/px4/calibration/mode1/radioYawRight.png b/files/images/px4/calibration/mode1/radioYawRight.png new file mode 100644 index 0000000000000000000000000000000000000000..2e86faa96f840a90eb7bb551a7eba07950afc492 Binary files /dev/null and b/files/images/px4/calibration/mode1/radioYawRight.png differ diff --git a/files/images/px4/calibration/mode2/radioCenter.png b/files/images/px4/calibration/mode2/radioCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..556321ec4b1c3142dc40acaf8068b4fb57e923a5 Binary files /dev/null and b/files/images/px4/calibration/mode2/radioCenter.png differ diff --git a/files/images/px4/calibration/radioHome.png b/files/images/px4/calibration/mode2/radioHome.png similarity index 100% rename from files/images/px4/calibration/radioHome.png rename to files/images/px4/calibration/mode2/radioHome.png diff --git a/files/images/px4/calibration/radioPitchDown.png b/files/images/px4/calibration/mode2/radioPitchDown.png similarity index 100% rename from files/images/px4/calibration/radioPitchDown.png rename to files/images/px4/calibration/mode2/radioPitchDown.png diff --git a/files/images/px4/calibration/radioPitchUp.png b/files/images/px4/calibration/mode2/radioPitchUp.png similarity index 100% rename from files/images/px4/calibration/radioPitchUp.png rename to files/images/px4/calibration/mode2/radioPitchUp.png diff --git a/files/images/px4/calibration/radioRollLeft.png b/files/images/px4/calibration/mode2/radioRollLeft.png similarity index 100% rename from files/images/px4/calibration/radioRollLeft.png rename to files/images/px4/calibration/mode2/radioRollLeft.png diff --git a/files/images/px4/calibration/radioRollRight.png b/files/images/px4/calibration/mode2/radioRollRight.png similarity index 100% rename from files/images/px4/calibration/radioRollRight.png rename to files/images/px4/calibration/mode2/radioRollRight.png diff --git a/files/images/px4/calibration/mode2/radioSwitchMinMax.png b/files/images/px4/calibration/mode2/radioSwitchMinMax.png new file mode 100644 index 0000000000000000000000000000000000000000..fb284219df1c7158b4c5b9f5b9d7a5ef6004cb50 Binary files /dev/null and b/files/images/px4/calibration/mode2/radioSwitchMinMax.png differ diff --git a/files/images/px4/calibration/radioThrottleDown.png b/files/images/px4/calibration/mode2/radioThrottleDown.png similarity index 100% rename from files/images/px4/calibration/radioThrottleDown.png rename to files/images/px4/calibration/mode2/radioThrottleDown.png diff --git a/files/images/px4/calibration/radioThrottleUp.png b/files/images/px4/calibration/mode2/radioThrottleUp.png similarity index 100% rename from files/images/px4/calibration/radioThrottleUp.png rename to files/images/px4/calibration/mode2/radioThrottleUp.png diff --git a/files/images/px4/calibration/radioYawLeft.png b/files/images/px4/calibration/mode2/radioYawLeft.png similarity index 100% rename from files/images/px4/calibration/radioYawLeft.png rename to files/images/px4/calibration/mode2/radioYawLeft.png diff --git a/files/images/px4/calibration/radioYawRight.png b/files/images/px4/calibration/mode2/radioYawRight.png similarity index 100% rename from files/images/px4/calibration/radioYawRight.png rename to files/images/px4/calibration/mode2/radioYawRight.png diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index ee2f4254acea26e25284b4f7b809c646fe108b65..c0b6c33e804ec26bff25ebb4cb6ee349a9d11629 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -175,17 +175,28 @@ files/images/px4/calibration/accel_z-.png files/images/px4/calibration/accel_y+.png files/images/px4/calibration/mag_calibration_figure8.png - files/images/px4/calibration/radioCenter.png - files/images/px4/calibration/radioHome.png - files/images/px4/calibration/radioRollLeft.png - files/images/px4/calibration/radioRollRight.png - files/images/px4/calibration/radioPitchUp.png - files/images/px4/calibration/radioPitchDown.png - files/images/px4/calibration/radioYawLeft.png - files/images/px4/calibration/radioYawRight.png - files/images/px4/calibration/radioThrottleUp.png - files/images/px4/calibration/radioThrottleDown.png - files/images/px4/calibration/radioSwitchMinMax.png + files/images/px4/calibration/mode1/radioCenter.png + files/images/px4/calibration/mode1/radioHome.png + files/images/px4/calibration/mode1/radioRollLeft.png + files/images/px4/calibration/mode1/radioRollRight.png + files/images/px4/calibration/mode1/radioPitchUp.png + files/images/px4/calibration/mode1/radioPitchDown.png + files/images/px4/calibration/mode1/radioYawLeft.png + files/images/px4/calibration/mode1/radioYawRight.png + files/images/px4/calibration/mode1/radioThrottleUp.png + files/images/px4/calibration/mode1/radioThrottleDown.png + files/images/px4/calibration/mode1/radioSwitchMinMax.png + files/images/px4/calibration/mode2/radioCenter.png + files/images/px4/calibration/mode2/radioHome.png + files/images/px4/calibration/mode2/radioRollLeft.png + files/images/px4/calibration/mode2/radioRollRight.png + files/images/px4/calibration/mode2/radioPitchUp.png + files/images/px4/calibration/mode2/radioPitchDown.png + files/images/px4/calibration/mode2/radioYawLeft.png + files/images/px4/calibration/mode2/radioYawRight.png + files/images/px4/calibration/mode2/radioThrottleUp.png + files/images/px4/calibration/mode2/radioThrottleDown.png + files/images/px4/calibration/mode2/radioSwitchMinMax.png files/images/px4/menu/sensors.png files/images/px4/menu/firmware_upgrade.png files/images/px4/menu/plane.png diff --git a/src/ui/px4_configuration/PX4RCCalibration.cc b/src/ui/px4_configuration/PX4RCCalibration.cc index 15788203d2295cb7325a8d52bf417d5a1fa528d4..ee18f459b68088989bbc16501801b3dbba1e18a0 100644 --- a/src/ui/px4_configuration/PX4RCCalibration.cc +++ b/src/ui/px4_configuration/PX4RCCalibration.cc @@ -26,6 +26,7 @@ /// @author Don Gagne +#include #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)); +} diff --git a/src/ui/px4_configuration/PX4RCCalibration.h b/src/ui/px4_configuration/PX4RCCalibration.h index e5cdbc419f432852e1e229ddb3167b2419f06735..49ba54c6f785a507c304dbf2e956693af00cf6c9 100644 --- a/src/ui/px4_configuration/PX4RCCalibration.h +++ b/src/ui/px4_configuration/PX4RCCalibration.h @@ -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. diff --git a/src/ui/px4_configuration/PX4RCCalibration.ui b/src/ui/px4_configuration/PX4RCCalibration.ui index 6a43cf186996c6db6942b1e341f8b3b9d7b5c8e4..a2231c6d9acba54bcbe2ebe9de354e0d9f5ad755 100644 --- a/src/ui/px4_configuration/PX4RCCalibration.ui +++ b/src/ui/px4_configuration/PX4RCCalibration.ui @@ -546,11 +546,53 @@ background-color: rgb(80, 80, 80);s - - - Calibration Help + + + -1 - + + QLayout::SetDefaultConstraint + + + 0 + + + 0 + + + + + Calibration Help + + + + + + + + 0 + 0 + + + + Mode 1 + + + + + + + + 0 + 0 + + + + Mode 2 + + + + @@ -570,7 +612,7 @@ background-color: rgb(80, 80, 80);s - :/files/images/px4/calibration/radioCenter.png + :/files/images/px4/calibration/radioCenter.png Qt::AlignCenter @@ -594,7 +636,7 @@ background-color: rgb(80, 80, 80);s - + 0 @@ -1172,8 +1214,6 @@ background-color: rgb(179, 179, 179); 1 - - - +