1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-29 07:24:13 +01:00

LP-461 Remove save warning and UpdateMixer() lock

This commit is contained in:
Laurent Lalanne 2016-12-28 03:40:18 +01:00
parent c2cf44f8d8
commit 1b2c20defb

View File

@ -2,7 +2,7 @@
******************************************************************************
*
* @file configccpmwidget.cpp
* @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
* E. Lafargue & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @addtogroup GCSPlugins GCS Plugins
* @{
@ -31,6 +31,7 @@
#include <extensionsystem/pluginmanager.h>
#include <uavobjectutilmanager.h>
#include <uavobjecthelper.h>
#include "mixersettings.h"
#include "systemsettings.h"
@ -246,8 +247,6 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
// refreshWidgetsValues(QString("HeliCP"));
UpdateType();
connect(m_aircraft->ccpmAngleW, SIGNAL(valueChanged(double)), this, SLOT(ccpmSwashplateUpdate()));
connect(m_aircraft->ccpmAngleX, SIGNAL(valueChanged(double)), this, SLOT(ccpmSwashplateUpdate()));
connect(m_aircraft->ccpmAngleY, SIGNAL(valueChanged(double)), this, SLOT(ccpmSwashplateUpdate()));
@ -277,7 +276,7 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
connect(m_aircraft->ccpmLinkCyclic, SIGNAL(clicked()), this, SLOT(SetUIComponentVisibilities()));
connect(m_aircraft->ccpmLinkRoll, SIGNAL(clicked()), this, SLOT(SetUIComponentVisibilities()));
ccpmSwashplateRedraw();
UpdateType();
}
ConfigCcpmWidget::~ConfigCcpmWidget()
@ -398,8 +397,6 @@ void ConfigCcpmWidget::UpdateType()
int SingleServoIndex, NumServosDefined;
double AdjustmentAngle = 0;
SetUIComponentVisibilities();
typeText = m_aircraft->ccpmType->currentText();
SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex();
@ -977,27 +974,19 @@ void ConfigCcpmWidget::setMixer()
int typeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1;
// Exit if currently updatingToHardware or ConfigError
// Exit if currently updatingToHardware, ConfigError or LevelConfigInProgress
// Avoid mixer changes if something wrong in config
if (throwConfigError(typeInt) || updatingToHardware) {
return;
}
if (SwashLvlConfigurationInProgress) {
return;
}
if (updatingToHardware == true) {
if (throwConfigError(typeInt) || updatingToHardware || SwashLvlConfigurationInProgress) {
return;
}
UpdateMixer();
updatingToHardware = true;
MixerSettings *mixerSettings = MixerSettings::GetInstance(getObjectManager());
Q_ASSERT(mixerSettings);
MixerSettings::DataFields mixerSettingsData = mixerSettings->getData();
UpdateMixer();
// Set up some helper pointers
qint8 *mixers[12] = { mixerSettingsData.Mixer1Vector,
mixerSettingsData.Mixer2Vector,
@ -1069,8 +1058,11 @@ void ConfigCcpmWidget::setMixer()
mixerSettingsData.Curve2Source = MixerSettings::CURVE2SOURCE_THROTTLE;
}
mixerSettings->setData(mixerSettingsData);
mixerSettings->updated();
UAVObjectUpdaterHelper updateHelper;
mixerSettings->setData(mixerSettingsData, false);
updateHelper.doObjectAndWait(mixerSettings);
updatingToHardware = false;
}
@ -1541,8 +1533,10 @@ void ConfigCcpmWidget::setSwashplateLevel(int percent)
SwashLvlSpinBoxes[i]->setValue(value);
}
actuatorCommand->setData(actuatorCommandData);
actuatorCommand->updated();
UAVObjectUpdaterHelper updateHelper;
actuatorCommand->setData(actuatorCommandData, false);
updateHelper.doObjectAndWait(actuatorCommand);
SwashLvlServoInterlock = 0;
}
@ -1588,8 +1582,10 @@ void ConfigCcpmWidget::SwashLvlSpinBoxChanged(int value)
actuatorCommandData.Channel[newSwashLvlConfiguration.ServoChannels[i]] = value;
}
actuatorCommand->setData(actuatorCommandData);
actuatorCommand->updated();
UAVObjectUpdaterHelper updateHelper;
actuatorCommand->setData(actuatorCommandData, false);
updateHelper.doObjectAndWait(actuatorCommand);
}
/**