Browse Source

Fix channel monitor when reversed

QGC4.4
Don Gagne 9 years ago
parent
commit
3dbce41a43
  1. 2
      src/AutoPilotPlugins/Common/RadioComponent.qml
  2. 6
      src/AutoPilotPlugins/Common/RadioComponentController.cc
  3. 2
      src/QmlControls/RCChannelMonitor.qml

2
src/AutoPilotPlugins/Common/RadioComponent.qml

@ -203,10 +203,10 @@ QGCView { @@ -203,10 +203,10 @@ QGCView {
anchors.verticalCenter: parent.verticalCenter
width: parent.height * 0.75
height: width
x: ((Math.abs((rcValue - _pwmMin) - (reversed ? _pwmMin : 0)) / _pwmRange) * parent.width) - (width / 2)
radius: width / 2
color: qgcPal.text
visible: mapped
x: (((reversed ? _pwmMax - rcValue : rcValue - _pwmMin) / _pwmRange) * parent.width) - (width / 2)
}
QGCLabel {

6
src/AutoPilotPlugins/Common/RadioComponentController.cc

@ -403,8 +403,6 @@ void RadioComponentController::_inputStickDetect(enum rcCalFunctions function, i @@ -403,8 +403,6 @@ void RadioComponentController::_inputStickDetect(enum rcCalFunctions function, i
if (_stickSettleComplete(value)) {
ChannelInfo* info = &_rgChannelInfo[channel];
qCDebug(RadioComponentControllerLog) << "_inputStickDetect settle complete, function:channel:value" << function << channel << value;
// Stick detection is complete. Stick should be at max position.
// Map the channel to the function
_rgFunctionChannelMapping[function] = channel;
@ -413,6 +411,8 @@ void RadioComponentController::_inputStickDetect(enum rcCalFunctions function, i @@ -413,6 +411,8 @@ void RadioComponentController::_inputStickDetect(enum rcCalFunctions function, i
// Channel should be at max value, if it is below initial set point the the channel is reversed.
info->reversed = value < _rcValueSave[channel];
qCDebug(RadioComponentControllerLog) << "_inputStickDetect settle complete, function:channel:value:reversed" << function << channel << value << info->reversed;
if (info->reversed) {
_rgChannelInfo[channel].rcMin = value;
} else {
@ -885,9 +885,9 @@ void RadioComponentController::_stopCalibration(void) @@ -885,9 +885,9 @@ void RadioComponentController::_stopCalibration(void)
/// @brief Saves the current channel values, so that we can detect when the use moves an input.
void RadioComponentController::_rcCalSaveCurrentValues(void)
{
qCDebug(RadioComponentControllerLog) << "_rcCalSaveCurrentValues";
for (int i = 0; i < _chanMax(); i++) {
_rcValueSave[i] = _rcRawValue[i];
qCDebug(RadioComponentControllerLog) << "_rcCalSaveCurrentValues channel:value" << i << _rcValueSave[i];
}
}

2
src/QmlControls/RCChannelMonitor.qml

@ -67,7 +67,7 @@ FactPanel { @@ -67,7 +67,7 @@ FactPanel {
anchors.verticalCenter: parent.verticalCenter
width: parent.height * 0.75
height: width
x: ((Math.abs((rcValue - _pwmMin) - (reversed ? _pwmMin : 0)) / _pwmRange) * parent.width) - (width / 2)
x: (((reversed ? _pwmMax - rcValue : rcValue - _pwmMin) / _pwmRange) * parent.width) - (width / 2)
radius: width / 2
color: qgcPal.text
visible: mapped

Loading…
Cancel
Save