Unverified Commit a3e6e48b authored by Don Gagne's avatar Don Gagne Committed by GitHub

Add support for BAT#_SOURCE (#9156)

parent 02216607
......@@ -26,15 +26,17 @@ QtObject {
property var controller ///< FactPanelController
property int batteryIndex ///< 1-based battery index
property bool battVoltageDividerAvailable: controller.parameterExists(-1, "BAT#_V_DIV".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property bool battAmpsPerVoltAvailable: controller.parameterExists(-1, "BAT#_A_PER_V".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battNumCells: controller.getParameterFact(-1, "BAT#_N_CELLS".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battHighVolt: controller.getParameterFact(-1, "BAT#_V_CHARGED".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battLowVolt: controller.getParameterFact(-1, "BAT#_V_EMPTY".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battVoltLoadDrop: controller.getParameterFact(-1, "BAT#_V_LOAD_DROP".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battVoltageDivider: controller.getParameterFact(-1, "BAT#_V_DIV".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""), false)
property Fact battAmpsPerVolt: controller.getParameterFact(-1, "BAT#_A_PER_V".replace("#", _indexedBatteryParamsAvailable ? batteryIndex : ""), false)
property Fact battSource: controller.getParameterFact(-1, "BAT#_SOURCE".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battNumCells: controller.getParameterFact(-1, "BAT#_N_CELLS".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battHighVolt: controller.getParameterFact(-1, "BAT#_V_CHARGED".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battLowVolt: controller.getParameterFact(-1, "BAT#_V_EMPTY".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battVoltLoadDrop: controller.getParameterFact(-1, "BAT#_V_LOAD_DROP".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property Fact battVoltageDivider: controller.getParameterFact(-1, "BAT#_V_DIV".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""), false)
property Fact battAmpsPerVolt: controller.getParameterFact(-1, "BAT#_A_PER_V".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""), false)
property bool battVoltageDividerAvailable: controller.parameterExists(-1, "BAT#_V_DIV".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property bool battAmpsPerVoltAvailable: controller.parameterExists(-1, "BAT#_A_PER_V".replace ("#", _indexedBatteryParamsAvailable ? batteryIndex : ""))
property string _batNCellsIndexedParamName: "BAT#_N_CELLS"
property bool _indexedBatteryParamsAvailable: controller.parameterExists(-1, _batNCellsIndexedParamName.replace("#", 1))
......
......@@ -214,8 +214,8 @@ SetupPage {
id: batterySetupComponent
QGCGroupBox {
id: batteryGroup
title: qsTr("Battery ") + (showBatteryIndex ? batteryIndex : "")
Layout.fillWidth: true
title: qsTr("Battery ") + (showBatteryIndex ? batteryIndex : "")
property var _controller: controller
property int _batteryIndex: batteryIndex
......@@ -229,6 +229,7 @@ SetupPage {
property bool battVoltageDividerAvailable: batParams.battVoltageDividerAvailable
property bool battAmpsPerVoltAvailable: batParams.battAmpsPerVoltAvailable
property Fact battSource: batParams.battSource
property Fact battNumCells: batParams.battNumCells
property Fact battHighVolt: batParams.battHighVolt
property Fact battLowVolt: batParams.battLowVolt
......@@ -248,166 +249,165 @@ SetupPage {
}
}
GridLayout {
id: batteryGrid
columns: 5
columnSpacing: ScreenTools.defaultFontPixelWidth
QGCLabel {
text: qsTr("Number of Cells (in Series)")
}
FactTextField {
width: _textEditWidth
fact: battNumCells
showUnits: true
}
QGCColoredImage {
Layout.rowSpan: 3
width: height * 0.75
height: 100
sourceSize.height: height
fillMode: Image.PreserveAspectFit
smooth: true
color: qgcPal.text
cache: false
source: getBatteryImage(batteryIndex)
}
Item { width: 1; height: 1; Layout.columnSpan: 2 }
QGCLabel {
text: qsTr("Full Voltage (per cell)")
}
FactTextField {
width: _textEditWidth
fact: battHighVolt
showUnits: true
}
QGCLabel {
text: qsTr("Battery Max:")
}
QGCLabel {
text: (battNumCells.value * battHighVolt.value).toFixed(1) + ' V'
}
QGCLabel {
text: qsTr("Empty Voltage (per cell)")
}
FactTextField {
width: _textEditWidth
fact: battLowVolt
showUnits: true
}
QGCLabel {
text: qsTr("Battery Min:")
}
QGCLabel {
text: (battNumCells.value * battLowVolt.value).toFixed(1) + ' V'
}
QGCLabel {
text: qsTr("Voltage divider")
visible: battVoltageDividerAvailable
}
ColumnLayout {
FactTextField {
fact: battVoltageDivider
visible: battVoltageDividerAvailable
}
RowLayout {
spacing: ScreenTools.defaultFontPixelWidth
visible: battSource.rawValue == -1
QGCButton {
text: qsTr("Calculate")
visible: battVoltageDividerAvailable
onClicked: mainWindow.showPopupDialogFromComponent(calcVoltageDividerDlgComponent, { batteryIndex: _batteryIndex })
QGCLabel { text: qsTr("Source") }
FactComboBox {
width: _textEditWidth
fact: battSource
indexModel: false
sizeToContents: true
}
}
Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battVoltageDividerAvailable }
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
font.pointSize: ScreenTools.smallFontPointSize
wrapMode: Text.WordWrap
text: qsTr("If the battery voltage reported by the vehicle is largely different than the voltage read externally using a voltmeter you can adjust the voltage multiplier value to correct this. ") +
qsTr("Click the Calculate button for help with calculating a new value.")
visible: battVoltageDividerAvailable
}
GridLayout {
id: batteryGrid
columns: 5
columnSpacing: ScreenTools.defaultFontPixelWidth
visible: battSource.rawValue != -1
QGCLabel { text: qsTr("Source") }
FactComboBox {
width: _textEditWidth
fact: battSource
indexModel: false
sizeToContents: true
}
QGCLabel {
text: qsTr("Amps per volt")
visible: battAmpsPerVoltAvailable
}
QGCColoredImage {
Layout.rowSpan: 4
width: height * 0.75
height: 100
sourceSize.height: height
fillMode: Image.PreserveAspectFit
smooth: true
color: qgcPal.text
cache: false
source: getBatteryImage(batteryIndex)
}
FactTextField {
fact: battAmpsPerVolt
visible: battAmpsPerVoltAvailable
}
Item { width: 1; height: 1; Layout.columnSpan: 2 }
QGCButton {
text: qsTr("Calculate")
visible: battAmpsPerVoltAvailable
onClicked: mainWindow.showPopupDialogFromComponent(calcAmpsPerVoltDlgComponent, { batteryIndex: _batteryIndex })
}
QGCLabel { text: qsTr("Number of Cells (in Series)") }
FactTextField {
width: _textEditWidth
fact: battNumCells
showUnits: true
}
QGCLabel { text: qsTr("Battery Max:") }
QGCLabel { text: (battNumCells.value * battHighVolt.value).toFixed(1) + ' V' }
QGCLabel { text: qsTr("Empty Voltage (per cell)") }
FactTextField {
width: _textEditWidth
fact: battLowVolt
showUnits: true
}
QGCLabel { text: qsTr("Battery Min:") }
QGCLabel { text: (battNumCells.value * battLowVolt.value).toFixed(1) + ' V' }
Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battAmpsPerVoltAvailable }
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
font.pointSize: ScreenTools.smallFontPointSize
wrapMode: Text.WordWrap
text: qsTr("If the current draw reported by the vehicle is largely different than the current read externally using a current meter you can adjust the amps per volt value to correct this. ") +
qsTr("Click the Calculate button for help with calculating a new value.")
visible: battAmpsPerVoltAvailable
}
QGCLabel { text: qsTr("Full Voltage (per cell)") }
FactTextField {
width: _textEditWidth
fact: battHighVolt
showUnits: true
}
Item { width: 1; height: 1; Layout.columnSpan: 2 }
QGCCheckBox {
id: showAdvanced
Layout.columnSpan: batteryGrid.columns
text: qsTr("Show Advanced Settings")
}
QGCLabel {
text: qsTr("Voltage divider")
visible: battVoltageDividerAvailable
}
FactTextField {
fact: battVoltageDivider
visible: battVoltageDividerAvailable
}
QGCButton {
text: qsTr("Calculate")
visible: battVoltageDividerAvailable
onClicked: mainWindow.showPopupDialogFromComponent(calcVoltageDividerDlgComponent, { batteryIndex: _batteryIndex })
}
Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battVoltageDividerAvailable }
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
font.pointSize: ScreenTools.smallFontPointSize
wrapMode: Text.WordWrap
text: qsTr("If the battery voltage reported by the vehicle is largely different than the voltage read externally using a voltmeter you can adjust the voltage multiplier value to correct this. ") +
qsTr("Click the Calculate button for help with calculating a new value.")
visible: battVoltageDividerAvailable
}
QGCLabel {
text: qsTr("Amps per volt")
visible: battAmpsPerVoltAvailable
}
FactTextField {
fact: battAmpsPerVolt
visible: battAmpsPerVoltAvailable
}
QGCButton {
text: qsTr("Calculate")
visible: battAmpsPerVoltAvailable
onClicked: mainWindow.showPopupDialogFromComponent(calcAmpsPerVoltDlgComponent, { batteryIndex: _batteryIndex })
}
Item { width: 1; height: 1; Layout.columnSpan: 2; visible: battAmpsPerVoltAvailable }
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
font.pointSize: ScreenTools.smallFontPointSize
wrapMode: Text.WordWrap
text: qsTr("If the current draw reported by the vehicle is largely different than the current read externally using a current meter you can adjust the amps per volt value to correct this. ") +
qsTr("Click the Calculate button for help with calculating a new value.")
visible: battAmpsPerVoltAvailable
}
QGCLabel {
text: qsTr("Voltage Drop on Full Load (per cell)")
visible: showAdvanced.checked
}
FactTextField {
id: battDropField
fact: battVoltLoadDrop
showUnits: true
visible: showAdvanced.checked
}
Item { width: 1; height: 1; Layout.columnSpan: 3; visible: showAdvanced.checked }
QGCCheckBox {
id: showAdvanced
Layout.columnSpan: batteryGrid.columns
text: qsTr("Show Advanced Settings")
}
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
text: qsTr("Batteries show less voltage at high throttle. Enter the difference in Volts between idle throttle and full ") +
qsTr("throttle, divided by the number of battery cells. Leave at the default if unsure. ") +
_highlightPrefix + qsTr("If this value is set too high, the battery might be deep discharged and damaged.") + _highlightSuffix
visible: showAdvanced.checked
}
QGCLabel {
text: qsTr("Voltage Drop on Full Load (per cell)")
visible: showAdvanced.checked
}
FactTextField {
id: battDropField
fact: battVoltLoadDrop
showUnits: true
visible: showAdvanced.checked
}
Item { width: 1; height: 1; Layout.columnSpan: 3; visible: showAdvanced.checked }
QGCLabel {
Layout.columnSpan: batteryGrid.columns
Layout.fillWidth: true
wrapMode: Text.WordWrap
font.pointSize: ScreenTools.smallFontPointSize
text: qsTr("Batteries show less voltage at high throttle. Enter the difference in Volts between idle throttle and full ") +
qsTr("throttle, divided by the number of battery cells. Leave at the default if unsure. ") +
_highlightPrefix + qsTr("If this value is set too high, the battery might be deep discharged and damaged.") + _highlightSuffix
visible: showAdvanced.checked
}
QGCLabel {
text: qsTr("Compensated Minimum Voltage:")
visible: showAdvanced.checked
}
QGCLabel {
text: ((battNumCells.value * battLowVolt.value) - (battNumCells.value * battVoltLoadDrop.value)).toFixed(1) + qsTr(" V")
visible: showAdvanced.checked
}
Item { width: 1; height: 1; Layout.columnSpan: 3; visible: showAdvanced.checked }
} // Grid
QGCLabel {
text: qsTr("Compensated Minimum Voltage:")
visible: showAdvanced.checked
}
QGCLabel {
text: ((battNumCells.value * battLowVolt.value) - (battNumCells.value * battVoltLoadDrop.value)).toFixed(1) + qsTr(" V")
visible: showAdvanced.checked
}
Item { width: 1; height: 1; Layout.columnSpan: 3; visible: showAdvanced.checked }
} // Grid
}
} // QGCGroupBox - Battery settings
} // Component - batterySetupComponent
......
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