diff --git a/ground/openpilotgcs/src/plugins/config/configairframewidget.cpp b/ground/openpilotgcs/src/plugins/config/configairframewidget.cpp index f7b40e72f..e5684b3fd 100644 --- a/ground/openpilotgcs/src/plugins/config/configairframewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configairframewidget.cpp @@ -358,7 +358,7 @@ void ConfigAirframeWidget::resetFwMixer() { UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("MixerSettings"))); UAVObjectField* field = obj->getField(QString("ThrottleCurve1")); - resetMixer(m_aircraft->fixedWingThrottle, field->getNumElements()); + resetMixer(m_aircraft->fixedWingThrottle, field->getNumElements(),1); } /** @@ -368,7 +368,7 @@ void ConfigAirframeWidget::resetMrMixer() { UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("MixerSettings"))); UAVObjectField* field = obj->getField(QString("ThrottleCurve1")); - resetMixer(m_aircraft->multiThrottleCurve, field->getNumElements()); + resetMixer(m_aircraft->multiThrottleCurve, field->getNumElements(),0.95); } /** @@ -378,7 +378,7 @@ void ConfigAirframeWidget::resetCt1Mixer() { UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("MixerSettings"))); UAVObjectField* field = obj->getField(QString("ThrottleCurve1")); - resetMixer(m_aircraft->customThrottle1Curve, field->getNumElements()); + resetMixer(m_aircraft->customThrottle1Curve, field->getNumElements(),1); } /** @@ -388,18 +388,18 @@ void ConfigAirframeWidget::resetCt2Mixer() { UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("MixerSettings"))); UAVObjectField* field = obj->getField(QString("ThrottleCurve2")); - resetMixer(m_aircraft->customThrottle2Curve, field->getNumElements()); + resetMixer(m_aircraft->customThrottle2Curve, field->getNumElements(),1); } /** Resets a mixer curve */ -void ConfigAirframeWidget::resetMixer(MixerCurveWidget *mixer, int numElements) +void ConfigAirframeWidget::resetMixer(MixerCurveWidget *mixer, int numElements, double maxvalue) { QList curveValues; for (double i=0; iinitCurve(curveValues); @@ -469,19 +469,37 @@ void ConfigAirframeWidget::requestAircraftUpdate() QList curveValues; // If the 1st element of the curve is <= -10, then the curve // is a straight line (that's how the mixer works on the mainboard): + double temp=0; //used to check if default value(all 0s) is being returned if (field->getValue(0).toInt() <= -10) { for (double i=0; igetNumElements(); i++) { curveValues.append(i/(field->getNumElements()-1)); } } else { + double value; for (unsigned int i=0; i < field->getNumElements(); i++) { - curveValues.append(field->getValue(i).toDouble()); + value=field->getValue(i).toDouble(); + temp+=value; + curveValues.append(value); } } // Setup all Throttle1 curves for all types of airframes - m_aircraft->fixedWingThrottle->initCurve(curveValues); - m_aircraft->multiThrottleCurve->initCurve(curveValues); - + if(temp==0) + { curveValues.clear(); + for (double i=0; igetNumElements(); i++) { + curveValues.append(0.95*(i/(field->getNumElements()-1))); + } + m_aircraft->multiThrottleCurve->initCurve(curveValues); + curveValues.clear(); + for (double i=0; igetNumElements(); i++) { + curveValues.append(i/(field->getNumElements()-1)); + } + m_aircraft->fixedWingThrottle->initCurve(curveValues); + } + else + { + m_aircraft->multiThrottleCurve->initCurve(curveValues); + m_aircraft->fixedWingThrottle->initCurve(curveValues); + } // Load the Settings for fixed wing frames: if (frameType.startsWith("FixedWing")) { // Then retrieve how channels are setup diff --git a/ground/openpilotgcs/src/plugins/config/configairframewidget.h b/ground/openpilotgcs/src/plugins/config/configairframewidget.h index 37f6ef877..183b59494 100644 --- a/ground/openpilotgcs/src/plugins/config/configairframewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configairframewidget.h @@ -59,7 +59,7 @@ private: void setupMotors(QList motorList); void resetField(UAVObjectField * field); - void resetMixer (MixerCurveWidget *mixer, int numElements); + void resetMixer (MixerCurveWidget *mixer, int numElements, double maxvalue); void resetActuators(); //void setMixerChannel(int channelNumber, bool channelIsMotor, QList vector); void setupQuadMotor(int channel, double roll, double pitch, double yaw); diff --git a/shared/uavobjectdefinition/mixersettings.xml b/shared/uavobjectdefinition/mixersettings.xml index efe48d090..c8cf455c0 100644 --- a/shared/uavobjectdefinition/mixersettings.xml +++ b/shared/uavobjectdefinition/mixersettings.xml @@ -5,7 +5,7 @@ - +