diff --git a/_locales/en/messages.json b/_locales/en/messages.json index a44187bb..877e74cf 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2007,7 +2007,7 @@ "message": "Warning Cell Voltage" }, "powerVoltageHead": { - "message": "Voltage" + "message": "Voltage Meter" }, "powerVoltageValue": { "message": "$1 V" @@ -2097,7 +2097,7 @@ }, "powerAmperageHead": { - "message": "Amperage" + "message": "Amperage Meter" }, "powerAmperageId10": { "message": "Battery" @@ -2149,15 +2149,18 @@ }, "powerAmperageScale": { - "message": "Scale the output voltage to milliamps [1/10th mV/A]" + "message": "Scale" }, "powerAmperageOffset": { - "message": "Offset in millivolt steps" + "message": "Offset in milliampere steps" }, "powerBatteryHead": { "message": "Battery" }, + "powerStateHead": { + "message": "Power State" + }, "powerBatteryConnected": { "message": "Connected" }, diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 03132301..ab176852 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1245,22 +1245,25 @@ MspHelper.prototype.crunch = function(code) { .push8(BATTERY_CONFIG.voltageMeterSource) .push8(BATTERY_CONFIG.currentMeterSource); break; -// FIXME - Needs updating before it can be used. -// case MSPCodes.MSP_SET_VOLTAGE_METER_CONFIG: -// buffer.push8(MISC.vbatscale) -// .push8(Math.round(BATTERY_CONFIG.vbatmincellvoltage * 10)) -// .push8(Math.round(BATTERY_CONFIG.vbatmaxcellvoltage * 10)) -// .push8(Math.round(BATTERY_CONFIG.vbatwarningcellvoltage * 10)); -// if (semver.gte(CONFIG.apiVersion, "1.23.0")) { -// buffer.push8(BATTERY_CONFIG.voltageMeterSource); -// } -// break; -// case MSPCodes.MSP_SET_CURRENT_METER_CONFIG: -// buffer.push16(BF_CONFIG.currentscale) -// .push16(BF_CONFIG.currentoffset) -// .push8(BATTERY_CONFIG.currentMeterSource) -// .push16(BF_CONFIG.batterycapacity) -// break; + case MSPCodes.MSP_SET_VOLTAGE_METER_CONFIG: + if (semver.lt(CONFIG.apiVersion, "1.36.0")) { + buffer.push8(MISC.vbatscale) + .push8(Math.round(BATTERY_CONFIG.vbatmincellvoltage * 10)) + .push8(Math.round(BATTERY_CONFIG.vbatmaxcellvoltage * 10)) + .push8(Math.round(BATTERY_CONFIG.vbatwarningcellvoltage * 10)); + if (semver.gte(CONFIG.apiVersion, "1.23.0")) { + buffer.push8(BATTERY_CONFIG.voltageMeterSource); + } + } + break; + case MSPCodes.MSP_SET_CURRENT_METER_CONFIG: + if (semver.lt(CONFIG.apiVersion, "1.36.0")) { + buffer.push16(BF_CONFIG.currentscale) + .push16(BF_CONFIG.currentoffset) + .push8(BATTERY_CONFIG.currentMeterSource) + .push16(BF_CONFIG.batterycapacity) + } + break; case MSPCodes.MSP_SET_RX_CONFIG: buffer.push8(RX_CONFIG.serialrx_provider) .push16(RX_CONFIG.stick_max) @@ -1644,6 +1647,68 @@ MspHelper.prototype.sendAdjustmentRanges = function(onCompleteCallback) { } }; +MspHelper.prototype.sendVoltageConfig = function(onCompleteCallback) { + + var nextFunction = send_next_voltage_config; + + var configIndex = 0; + + if (VOLTAGE_METER_CONFIGS.length == 0) { + onCompleteCallback(); + } else { + send_next_voltage_config(); + } + + function send_next_voltage_config() { + var buffer = []; + + buffer.push8(VOLTAGE_METER_CONFIGS[configIndex].id) + .push8(VOLTAGE_METER_CONFIGS[configIndex].vbatscale) + .push8(VOLTAGE_METER_CONFIGS[configIndex].vbatresdivval) + .push8(VOLTAGE_METER_CONFIGS[configIndex].vbatresdivmultiplier); + + // prepare for next iteration + configIndex++; + if (configIndex == VOLTAGE_METER_CONFIGS.length) { + nextFunction = onCompleteCallback; + } + + MSP.send_message(MSPCodes.MSP_SET_VOLTAGE_METER_CONFIG, buffer, false, nextFunction); + } + +} + +MspHelper.prototype.sendCurrentConfig = function(onCompleteCallback) { + + var nextFunction = send_next_current_config; + + var configIndex = 0; + + if (CURRENT_METER_CONFIGS.length == 0) { + onCompleteCallback(); + } else { + send_next_current_config(); + } + + function send_next_current_config() { + var buffer = []; + + buffer.push8(CURRENT_METER_CONFIGS[configIndex].id) + .push16(CURRENT_METER_CONFIGS[configIndex].scale) + .push16(CURRENT_METER_CONFIGS[configIndex].offset); + + // prepare for next iteration + configIndex++; + if (configIndex == CURRENT_METER_CONFIGS.length) { + nextFunction = onCompleteCallback; + } + + MSP.send_message(MSPCodes.MSP_SET_CURRENT_METER_CONFIG, buffer, false, nextFunction); + } + +} + + MspHelper.prototype.sendLedStripConfig = function(onCompleteCallback) { var nextFunction = send_next_led_strip_config; diff --git a/tabs/power.css b/tabs/power.css index 044dd428..fddd4973 100644 --- a/tabs/power.css +++ b/tabs/power.css @@ -2,11 +2,20 @@ display: none; } +.tab-power .leftWrapper { + float: left; + width:calc(50% - 20px) +} + +.tab-power .rightWrapper { + float: left; + width: calc(50% - 0px); + margin: 0 0 10px 20px; +} + .tab-power td.configuration { padding-top: 5px; text-align: left; - width: 50%; - padding-left: 20px; } .tab-power .battery-state .configuration { @@ -18,6 +27,10 @@ width: 20%; } +.tab-power .label { + width: 25%; +} + .tab-power .number input { width: 50px; padding-left: 3px; @@ -32,11 +45,7 @@ } -.tab-power .spacer_box { - padding-bottom: 10px; - float: left; - width: calc(100% - 20px); -} + .tab-power .number, .tab-power .select diff --git a/tabs/power.html b/tabs/power.html index a60254bb..7fdead5f 100644 --- a/tabs/power.html +++ b/tabs/power.html @@ -1,5 +1,5 @@