commit
05426a3f7f
|
@ -2480,6 +2480,42 @@
|
|||
"configurationMagHardware": {
|
||||
"message": "Magnetometer (if supported)"
|
||||
},
|
||||
"configurationBatteryVoltage": {
|
||||
"message": "Battery Voltage"
|
||||
},
|
||||
"configurationBatteryCurrent": {
|
||||
"message": "Battery Current"
|
||||
},
|
||||
"configurationBatteryMeterType": {
|
||||
"message": "Battery Meter Type"
|
||||
},
|
||||
"configurationBatteryMinimum": {
|
||||
"message": "Minimum Cell Voltage"
|
||||
},
|
||||
"configurationBatteryMaximum": {
|
||||
"message": "Maximum Cell Voltage"
|
||||
},
|
||||
"configurationBatteryWarning": {
|
||||
"message": "Warning Cell Voltage"
|
||||
},
|
||||
"configurationBatteryScale": {
|
||||
"message": "Voltage Scale"
|
||||
},
|
||||
"configurationCurrentMeterType": {
|
||||
"message": "Current Meter Type"
|
||||
},
|
||||
"configurationCurrent": {
|
||||
"message": "Current Sensor"
|
||||
},
|
||||
"configurationCurrentScale": {
|
||||
"message": "Scale the output voltage to milliamps [1/10th mV/A]"
|
||||
},
|
||||
"configurationCurrentOffset": {
|
||||
"message": "Offset in millivolt steps"
|
||||
},
|
||||
"configurationBatteryMultiwiiCurrent": {
|
||||
"message": "Enable support for legacy Multiwii MSP current output"
|
||||
},
|
||||
"pidTuningProfile": {
|
||||
"message": "Profile"
|
||||
},
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<span>2016.07.29 - 3.1.2 - BetaFlight</span>
|
||||
<span>2017.07.29 - 3.1.3 - BetaFlight</span>
|
||||
<ul>
|
||||
<li>First version suitable for 3.2 features</li>
|
||||
<li>Fixed incompatibility issues with BF 3.1.x</li>
|
||||
</ul>
|
||||
<span>2016.03.09 - 3.1.1 - BetaFlight</span>
|
||||
<span>2017.07.28 - 3.1.1 - BetaFlight</span>
|
||||
<ul>
|
||||
<li>Changed donation page to english</li>
|
||||
</ul>
|
||||
|
|
9
js/fc.js
9
js/fc.js
|
@ -2,6 +2,7 @@
|
|||
|
||||
// define all the global variables that are uses to hold FC state
|
||||
var CONFIG;
|
||||
var BF_CONFIG; // Remove when we officialy retire BF 3.1
|
||||
var FEATURE_CONFIG;
|
||||
var BEEPER_CONFIG;
|
||||
var MIXER_CONFIG;
|
||||
|
@ -79,6 +80,13 @@ var FC = {
|
|||
boardType: 0,
|
||||
};
|
||||
|
||||
BF_CONFIG = {
|
||||
currentscale: 0,
|
||||
currentoffset: 0,
|
||||
currentmetertype: 0,
|
||||
batterycapacity: 0,
|
||||
};
|
||||
|
||||
FEATURE_CONFIG = {
|
||||
features: 0,
|
||||
};
|
||||
|
@ -228,6 +236,7 @@ var FC = {
|
|||
vbatmincellvoltage: 0,
|
||||
vbatmaxcellvoltage: 0,
|
||||
vbatwarningcellvoltage: 0,
|
||||
batterymetertype: 1, // 1=ADC, 2=ESC
|
||||
};
|
||||
MOTOR_CONFIG = {
|
||||
minthrottle: 0,
|
||||
|
|
|
@ -171,6 +171,7 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
|||
}
|
||||
break;
|
||||
case MSPCodes.MSP_CURRENT_METERS:
|
||||
|
||||
CURRENT_METERS = [];
|
||||
var currentMeterLength = 5;
|
||||
for (var i = 0; i < (data.byteLength / currentMeterLength); i++) {
|
||||
|
@ -192,46 +193,63 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
|||
break;
|
||||
|
||||
case MSPCodes.MSP_VOLTAGE_METER_CONFIG:
|
||||
VOLTAGE_METER_CONFIGS = [];
|
||||
var voltage_meter_count = data.readU8();
|
||||
if (semver.lt(CONFIG.apiVersion, "1.36.0")) {
|
||||
MISC.vbatscale = data.readU8(); // 10-200
|
||||
MISC.vbatmincellvoltage = data.readU8() / 10; // 10-50
|
||||
MISC.vbatmaxcellvoltage = data.readU8() / 10; // 10-50
|
||||
MISC.vbatwarningcellvoltage = data.readU8() / 10; // 10-50
|
||||
if (semver.gte(CONFIG.apiVersion, "1.23.0")) {
|
||||
MISC.batterymetertype = data.readU8();
|
||||
}
|
||||
} else {
|
||||
VOLTAGE_METER_CONFIGS = [];
|
||||
var voltage_meter_count = data.readU8();
|
||||
|
||||
for (var i = 0; i < voltage_meter_count; i++) {
|
||||
var subframe_length = data.readU8();
|
||||
if (subframe_length != 5) {
|
||||
for (var j = 0; j < subframe_length; j++) {
|
||||
data.readU8();
|
||||
for (var i = 0; i < voltage_meter_count; i++) {
|
||||
var subframe_length = data.readU8();
|
||||
if (subframe_length != 5) {
|
||||
for (var j = 0; j < subframe_length; j++) {
|
||||
data.readU8();
|
||||
}
|
||||
} else {
|
||||
var voltageMeterConfig = {};
|
||||
voltageMeterConfig.id = data.readU8();
|
||||
voltageMeterConfig.sensorType = data.readU8();
|
||||
voltageMeterConfig.vbatscale = data.readU8();
|
||||
voltageMeterConfig.vbatresdivval = data.readU8();
|
||||
voltageMeterConfig.vbatresdivmultiplier = data.readU8();
|
||||
|
||||
VOLTAGE_METER_CONFIGS.push(voltageMeterConfig);
|
||||
}
|
||||
} else {
|
||||
var voltageMeterConfig = {};
|
||||
voltageMeterConfig.id = data.readU8();
|
||||
voltageMeterConfig.sensorType = data.readU8();
|
||||
voltageMeterConfig.vbatscale = data.readU8();
|
||||
voltageMeterConfig.vbatresdivval = data.readU8();
|
||||
voltageMeterConfig.vbatresdivmultiplier = data.readU8();
|
||||
|
||||
VOLTAGE_METER_CONFIGS.push(voltageMeterConfig);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_CURRENT_METER_CONFIG:
|
||||
var offset = 0;
|
||||
CURRENT_METER_CONFIGS = [];
|
||||
var current_meter_count = data.readU8();
|
||||
for (var i = 0; i < current_meter_count; i++) {
|
||||
var currentMeterConfig = {};
|
||||
var subframe_length = data.readU8();
|
||||
if (semver.lt(CONFIG.apiVersion, "1.36.0")) {
|
||||
BF_CONFIG.currentscale = data.read16();
|
||||
BF_CONFIG.currentoffset = data.read16();
|
||||
BF_CONFIG.currentmetertype = data.readU8();
|
||||
BF_CONFIG.batterycapacity = data.readU16();
|
||||
} else {
|
||||
var offset = 0;
|
||||
CURRENT_METER_CONFIGS = [];
|
||||
var current_meter_count = data.readU8();
|
||||
for (var i = 0; i < current_meter_count; i++) {
|
||||
var currentMeterConfig = {};
|
||||
var subframe_length = data.readU8();
|
||||
|
||||
if (subframe_length != 6) {
|
||||
for (var j = 0; j < subframe_length; j++) {
|
||||
data.readU8();
|
||||
if (subframe_length != 6) {
|
||||
for (var j = 0; j < subframe_length; j++) {
|
||||
data.readU8();
|
||||
}
|
||||
} else {
|
||||
currentMeterConfig.id = data.readU8();
|
||||
currentMeterConfig.sensorType = data.readU8();
|
||||
currentMeterConfig.scale = data.readU16();
|
||||
currentMeterConfig.offset = data.readU16();
|
||||
|
||||
CURRENT_METER_CONFIGS.push(currentMeterConfig);
|
||||
}
|
||||
} else {
|
||||
currentMeterConfig.id = data.readU8();
|
||||
currentMeterConfig.sensorType = data.readU8();
|
||||
currentMeterConfig.scale = data.readU16();
|
||||
currentMeterConfig.offset = data.readU16();
|
||||
|
||||
CURRENT_METER_CONFIGS.push(currentMeterConfig);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -557,7 +575,9 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
|||
|
||||
case MSPCodes.MSP_MIXER_CONFIG:
|
||||
MIXER_CONFIG.mixer = data.readU8();
|
||||
MIXER_CONFIG.reverseMotorDir = data.readU8();
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
MIXER_CONFIG.reverseMotorDir = data.readU8();
|
||||
}
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_FEATURE_CONFIG:
|
||||
|
@ -1161,7 +1181,9 @@ MspHelper.prototype.crunch = function(code) {
|
|||
break;
|
||||
case MSPCodes.MSP_SET_MIXER_CONFIG:
|
||||
buffer.push8(MIXER_CONFIG.mixer)
|
||||
.push8(MIXER_CONFIG.reverseMotorDir);
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
buffer.push8(MIXER_CONFIG.reverseMotorDir);
|
||||
}
|
||||
break;
|
||||
case MSPCodes.MSP_SET_BOARD_ALIGNMENT_CONFIG:
|
||||
buffer.push16(BOARD_ALIGNMENT_CONFIG.roll)
|
||||
|
@ -1269,11 +1291,11 @@ MspHelper.prototype.crunch = function(code) {
|
|||
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));
|
||||
.push8(Math.round(MISC.vbatmincellvoltage * 10))
|
||||
.push8(Math.round(MISC.vbatmaxcellvoltage * 10))
|
||||
.push8(Math.round(MISC.vbatwarningcellvoltage * 10));
|
||||
if (semver.gte(CONFIG.apiVersion, "1.23.0")) {
|
||||
buffer.push8(BATTERY_CONFIG.voltageMeterSource);
|
||||
buffer.push8(MISC.batterymetertype);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1281,7 +1303,7 @@ MspHelper.prototype.crunch = function(code) {
|
|||
if (semver.lt(CONFIG.apiVersion, "1.36.0")) {
|
||||
buffer.push16(BF_CONFIG.currentscale)
|
||||
.push16(BF_CONFIG.currentoffset)
|
||||
.push8(BATTERY_CONFIG.currentMeterSource)
|
||||
.push8(BF_CONFIG.currentmetertype)
|
||||
.push16(BF_CONFIG.batterycapacity)
|
||||
}
|
||||
break;
|
||||
|
|
7
main.js
7
main.js
|
@ -470,11 +470,18 @@ function updateTabList(features) {
|
|||
} else {
|
||||
$('#tabs ul.mode-connected li.tab_transponder').hide();
|
||||
}
|
||||
|
||||
if (features.isEnabled('OSD')) {
|
||||
$('#tabs ul.mode-connected li.tab_osd').show();
|
||||
} else {
|
||||
$('#tabs ul.mode-connected li.tab_osd').hide();
|
||||
}
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
$('#tabs ul.mode-connected li.tab_power').show();
|
||||
} else {
|
||||
$('#tabs ul.mode-connected li.tab_power').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function zeroPad(value, width) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"minimum_chrome_version": "38",
|
||||
"version": "3.1.2",
|
||||
"version": "3.1.3",
|
||||
"author": "Betaflight Squad",
|
||||
"name": "Betaflight - Configurator",
|
||||
"short_name": "Betaflight",
|
||||
|
|
|
@ -291,13 +291,21 @@
|
|||
width: 150px;
|
||||
}
|
||||
|
||||
.tab-configuration .currentMeterSource {
|
||||
.tab-configuration .currentmetertype {
|
||||
border: 1px solid silver;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.tab-configuration .vbatmonitoring {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.tab-configuration .currentMonitoring {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.tab-configuration .rssi td:nth-child(2) {
|
||||
width: 30px;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<div class="spacer_box reverseMotor">
|
||||
<div class="checkbox" style="border-top: 1px solid #ddd; padding-top: 5px;">
|
||||
<div style="float: left; height: 20px; margin-right: 15px; margin-left: 3px;">
|
||||
<input type="checkbox" id="reverseMotorSwitch" class="toggle" />
|
||||
|
@ -324,7 +324,7 @@
|
|||
<!-- RECEIVER -->
|
||||
<!-- FIXME move receiver and RSSI to receiver tab -->
|
||||
<div class="receiver">
|
||||
<div class="gui_box grey" style="margin-bottom:10px;">
|
||||
<div class="gui_box grey" style="margin-bottom:10px;">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationReceiver"></div>
|
||||
</div>
|
||||
|
@ -411,7 +411,7 @@
|
|||
</div>
|
||||
|
||||
</td>
|
||||
<td style="width:calc(50%);vertical-align:top;">
|
||||
<td style="width:calc(50%);vertical-align:top;">
|
||||
<!-- ROW 3 - RIGHT PANE -->
|
||||
|
||||
<!-- 3D -->
|
||||
|
@ -528,12 +528,129 @@
|
|||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="oldBatteryConfig">
|
||||
<td style="width:calc(50%);vertical-align:top;">
|
||||
<!-- ROW 4 - LEFT PANE -->
|
||||
|
||||
<!-- BATTERY CONFIG FOR PRE BF 3.2 -->
|
||||
<div class="voltage">
|
||||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationBatteryVoltage"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<table cellpadding="0" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th i18n="configurationFeatureEnabled"></th>
|
||||
<th i18n="configurationFeatureDescription"></th>
|
||||
<th i18n="configurationFeatureName"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="features batteryVoltage">
|
||||
<!-- table generated here -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="select batterymetertype vbatmonitoring">
|
||||
<label>
|
||||
<select class="batterymetertype"><!-- list generated here --></select>
|
||||
<span i18n="configurationBatteryMeterType"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number vbatmonitoring">
|
||||
<label> <input type="number" name="mincellvoltage" step="0.1" min="1" max="5" /> <span
|
||||
i18n="configurationBatteryMinimum"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number vbatmonitoring">
|
||||
<label> <input type="number" name="maxcellvoltage" step="0.1" min="1" max="5" /> <span
|
||||
i18n="configurationBatteryMaximum"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number vbatmonitoring">
|
||||
<label> <input type="number" name="warningcellvoltage" step="0.1" min="1" max="5" /> <span
|
||||
i18n="configurationBatteryWarning"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number vbatmonitoring vbatCalibration">
|
||||
<label> <input type="number" name="voltagescale" step="1" min="10" max="255" /> <span
|
||||
i18n="configurationBatteryScale"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number vbatmonitoring">
|
||||
<label> <input type="text" name="batteryvoltage" readonly class="disabled" /> <span
|
||||
i18n="configurationBatteryVoltage"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
<td style="width:calc(50%);vertical-align:top;">
|
||||
<!-- ROW 4 - RIGHT PANE -->
|
||||
|
||||
<!-- CURRENT CONFIG FOR PRE BF 3.2 -->
|
||||
<div class="current">
|
||||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationCurrent"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<table cellpadding="0" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th i18n="configurationFeatureEnabled"></th>
|
||||
<th i18n="configurationFeatureDescription"></th>
|
||||
<th i18n="configurationFeatureName"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="features batteryCurrent">
|
||||
<!-- table generated here -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="select currentMonitoring">
|
||||
<label>
|
||||
<select class="currentmetertype"><!-- list generated here --></select>
|
||||
<span i18n="configurationCurrentMeterType"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number currentMonitoring currentCalibration">
|
||||
<label> <input type="number" name="currentscale" step="1" min="-16000" max="16000" /> <span
|
||||
i18n="configurationCurrentScale"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number currentMonitoring currentCalibration">
|
||||
<label> <input type="number" name="currentoffset" step="1" min="-1600" max="16000" /> <span
|
||||
i18n="configurationCurrentOffset"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number currentMonitoring currentOutput">
|
||||
<label>
|
||||
<input type="text" name="batterycurrent" readonly class="disabled" /> <span
|
||||
i18n="configurationBatteryCurrent"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox currentMonitoring currentOutput">
|
||||
<div class="numberspacer">
|
||||
<input type="checkbox" name="multiwiicurrentoutput" class="toggle" />
|
||||
</div>
|
||||
<label> <span i18n="configurationBatteryMultiwiiCurrent"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="beepers">
|
||||
<td style="width:calc(100%)" colspan="2">
|
||||
<!-- ROW 4 - FULL WIDTH PANE -->
|
||||
|
||||
<!-- BEEPER -->
|
||||
<div class="leftWrapper beepers" style="width: calc(100% - 20px);">
|
||||
<div class="beepers" style="width: calc(100%);">
|
||||
<div class="gui_box grey" style="margin-top:10px;">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationBeeper"></div>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
TABS.configuration = {
|
||||
DSHOT_PROTOCOL_MIN_VALUE: 5
|
||||
DSHOT_PROTOCOL_MIN_VALUE: 5,
|
||||
SHOW_OLD_BATTERY_CONFIG: false
|
||||
};
|
||||
|
||||
TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||
|
@ -11,6 +12,13 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
GUI.active_tab = 'configuration';
|
||||
}
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.36.0")) {
|
||||
//Show old battery configuration for pre-BF-3.2
|
||||
self.SHOW_OLD_BATTERY_CONFIG = true;
|
||||
} else {
|
||||
self.SHOW_OLD_BATTERY_CONFIG = false;
|
||||
}
|
||||
|
||||
function load_config() {
|
||||
MSP.send_message(MSPCodes.MSP_FEATURE_CONFIG, false, false, load_beeper_config);
|
||||
}
|
||||
|
@ -140,6 +148,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
|
||||
function load_name() {
|
||||
var next_callback = load_rx_config;
|
||||
|
||||
if (self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
next_callback = load_battery;
|
||||
}
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
||||
MSP.send_message(MSPCodes.MSP_NAME, false, false, next_callback);
|
||||
} else {
|
||||
|
@ -147,6 +160,24 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
}
|
||||
|
||||
function load_battery() {
|
||||
var next_callback = load_current;
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP_VOLTAGE_METER_CONFIG, false, false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function load_current() {
|
||||
var next_callback = load_rx_config;
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP_CURRENT_METER_CONFIG, false, false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function load_rx_config() {
|
||||
var next_callback = load_html;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.31.0")) {
|
||||
|
@ -174,12 +205,17 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
|
||||
function refreshMixerPreview() {
|
||||
var mixer = MIXER_CONFIG.mixer
|
||||
var reverse = MIXER_CONFIG.reverseMotorDir ? "_reversed" : "";
|
||||
|
||||
var reverse = "";
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
reverse = MIXER_CONFIG.reverseMotorDir ? "_reversed" : "";
|
||||
}
|
||||
|
||||
$('.mixerPreview img').attr('src', './resources/motor_order/' + mixerList[mixer - 1].image + reverse + '.svg');
|
||||
};
|
||||
|
||||
var reverseMotorSwitch_e = $('#reverseMotorSwitch');
|
||||
var reverseMotor_e = $('.reverseMotor');
|
||||
|
||||
reverseMotorSwitch_e.change(function() {
|
||||
MIXER_CONFIG.reverseMotorDir = $(this).prop('checked') ? 1 : 0;
|
||||
|
@ -208,6 +244,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
BEEPER_CONFIG.beepers.generateElements(template, destination);
|
||||
} else {
|
||||
beeper_e.hide();
|
||||
reverseMotor_e.hide();
|
||||
}
|
||||
|
||||
// translate to user-selected language
|
||||
|
@ -552,6 +589,102 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
$('input[name="maxthrottle"]').val(MOTOR_CONFIG.maxthrottle);
|
||||
$('input[name="mincommand"]').val(MOTOR_CONFIG.mincommand);
|
||||
|
||||
// fill battery
|
||||
if (self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
var batteryMeterTypes = [
|
||||
'Onboard ADC',
|
||||
'ESC Sensor'
|
||||
];
|
||||
|
||||
var batteryMeterType_e = $('select.batterymetertype');
|
||||
for (i = 0; i < batteryMeterTypes.length; i++) {
|
||||
batteryMeterType_e.append('<option value="' + i + '">' + batteryMeterTypes[i] + '</option>');
|
||||
}
|
||||
|
||||
batteryMeterType_e.change(function () {
|
||||
MISC.batterymetertype = parseInt($(this).val());
|
||||
checkUpdateVbatControls();
|
||||
});
|
||||
batteryMeterType_e.val(MISC.batterymetertype).change();
|
||||
} else {
|
||||
$('div.batterymetertype').hide();
|
||||
}
|
||||
|
||||
$('input[name="mincellvoltage"]').val(MISC.vbatmincellvoltage);
|
||||
$('input[name="maxcellvoltage"]').val(MISC.vbatmaxcellvoltage);
|
||||
$('input[name="warningcellvoltage"]').val(MISC.vbatwarningcellvoltage);
|
||||
$('input[name="voltagescale"]').val(MISC.vbatscale);
|
||||
|
||||
// fill current
|
||||
var currentMeterTypes = [
|
||||
'None',
|
||||
'Onboard ADC',
|
||||
'Virtual'
|
||||
];
|
||||
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
currentMeterTypes.push('ESC Sensor');
|
||||
}
|
||||
|
||||
var currentMeterType_e = $('select.currentmetertype');
|
||||
for (i = 0; i < currentMeterTypes.length; i++) {
|
||||
currentMeterType_e.append('<option value="' + i + '">' + currentMeterTypes[i] + '</option>');
|
||||
}
|
||||
|
||||
currentMeterType_e.change(function () {
|
||||
BF_CONFIG.currentmetertype = parseInt($(this).val());
|
||||
checkUpdateCurrentControls();
|
||||
});
|
||||
currentMeterType_e.val(BF_CONFIG.currentmetertype).change();
|
||||
|
||||
$('input[name="currentscale"]').val(BF_CONFIG.currentscale);
|
||||
$('input[name="currentoffset"]').val(BF_CONFIG.currentoffset);
|
||||
$('input[name="multiwiicurrentoutput"]').prop('checked', MISC.multiwiicurrentoutput !== 0);
|
||||
} else {
|
||||
$('.oldBatteryConfig').hide();
|
||||
}
|
||||
|
||||
function checkUpdateVbatControls() {
|
||||
if (FEATURE_CONFIG.features.isEnabled('VBAT')) {
|
||||
$('.vbatmonitoring').show();
|
||||
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
$('select.batterymetertype').show();
|
||||
|
||||
if (MISC.batterymetertype !== 0) {
|
||||
$('.vbatCalibration').hide();
|
||||
}
|
||||
} else {
|
||||
$('select.batterymetertype').hide();
|
||||
}
|
||||
} else {
|
||||
$('.vbatmonitoring').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function checkUpdateCurrentControls() {
|
||||
if (FEATURE_CONFIG.features.isEnabled('CURRENT_METER')) {
|
||||
$('.currentMonitoring').show();
|
||||
|
||||
switch(BF_CONFIG.currentmetertype) {
|
||||
case 0:
|
||||
$('.currentCalibration').hide();
|
||||
$('.currentOutput').hide();
|
||||
|
||||
break;
|
||||
case 3:
|
||||
$('.currentCalibration').hide();
|
||||
}
|
||||
|
||||
if (BF_CONFIG.currentmetertype !== 1 && BF_CONFIG.currentmetertype !== 2) {
|
||||
$('.currentCalibration').hide();
|
||||
}
|
||||
} else {
|
||||
$('.currentMonitoring').hide();
|
||||
}
|
||||
}
|
||||
|
||||
//fill 3D
|
||||
if (semver.lt(CONFIG.apiVersion, "1.14.0")) {
|
||||
$('.tab-configuration ._3d').hide();
|
||||
|
@ -605,6 +738,17 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
checkShowDisarmDelay();
|
||||
break;
|
||||
|
||||
case 'VBAT':
|
||||
if (self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
checkUpdateVbatControls();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'CURRENT_METER':
|
||||
if (self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
checkUpdateCurrentControls();
|
||||
}
|
||||
|
||||
case 'GPS':
|
||||
checkUpdateGpsControls();
|
||||
break;
|
||||
|
@ -644,6 +788,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
checkUpdateGpsControls();
|
||||
checkUpdate3dControls();
|
||||
|
||||
if (self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
checkUpdateVbatControls();
|
||||
checkUpdateCurrentControls();
|
||||
}
|
||||
|
||||
$("input[id='unsyncedPWMSwitch']").change(function() {
|
||||
if ($(this).is(':checked')) {
|
||||
$('div.unsyncedpwmfreq').show();
|
||||
|
@ -672,6 +821,17 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
MOTOR_CONFIG.maxthrottle = parseInt($('input[name="maxthrottle"]').val());
|
||||
MOTOR_CONFIG.mincommand = parseInt($('input[name="mincommand"]').val());
|
||||
|
||||
if(self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
MISC.vbatmincellvoltage = parseFloat($('input[name="mincellvoltage"]').val());
|
||||
MISC.vbatmaxcellvoltage = parseFloat($('input[name="maxcellvoltage"]').val());
|
||||
MISC.vbatwarningcellvoltage = parseFloat($('input[name="warningcellvoltage"]').val());
|
||||
MISC.vbatscale = parseInt($('input[name="voltagescale"]').val());
|
||||
|
||||
BF_CONFIG.currentscale = parseInt($('input[name="currentscale"]').val());
|
||||
BF_CONFIG.currentoffset = parseInt($('input[name="currentoffset"]').val());
|
||||
MISC.multiwiicurrentoutput = $('input[name="multiwiicurrentoutput"]').is(':checked') ? 1 : 0;
|
||||
}
|
||||
|
||||
if(semver.gte(CONFIG.apiVersion, "1.14.0")) {
|
||||
MOTOR_3D_CONFIG.deadband3d_low = parseInt($('input[name="3ddeadbandlow"]').val());
|
||||
MOTOR_3D_CONFIG.deadband3d_high = parseInt($('input[name="3ddeadbandhigh"]').val());
|
||||
|
@ -806,10 +966,32 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
function save_name() {
|
||||
var next_callback = save_rx_config;
|
||||
|
||||
if(self.SHOW_OLD_BATTERY_CONFIG) {
|
||||
next_callback = save_battery;
|
||||
}
|
||||
|
||||
CONFIG.name = $.trim($('input[name="craftName"]').val());
|
||||
MSP.send_message(MSPCodes.MSP_SET_NAME, mspHelper.crunch(MSPCodes.MSP_SET_NAME), false, next_callback);
|
||||
}
|
||||
|
||||
function save_battery() {
|
||||
var next_callback = save_current;
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_VOLTAGE_METER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_VOLTAGE_METER_CONFIG), false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function save_current() {
|
||||
var next_callback = save_rx_config;
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "3.1.0")) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_CURRENT_METER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_CURRENT_METER_CONFIG), false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function save_rx_config() {
|
||||
var next_callback = save_to_eeprom;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
|
||||
|
|
|
@ -42,7 +42,14 @@ TABS.motors.initialize = function (callback) {
|
|||
$('#content').load("./tabs/motors.html", process_html);
|
||||
}
|
||||
|
||||
MSP.send_message(MSPCodes.MSP_MOTOR_CONFIG, false, false, get_arm_status);
|
||||
// Get information from Betaflight
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
// BF 3.2.0+
|
||||
MSP.send_message(MSPCodes.MSP_MOTOR_CONFIG, false, false, get_arm_status);
|
||||
} else {
|
||||
// BF 3.1.x or older
|
||||
MSP.send_message(MSPCodes.MSP_MISC, false, false, get_arm_status);
|
||||
}
|
||||
|
||||
function update_arm_status() {
|
||||
self.armed = bit_check(CONFIG.mode, 0);
|
||||
|
@ -167,8 +174,14 @@ TABS.motors.initialize = function (callback) {
|
|||
lines.attr('d', graphHelpers.line);
|
||||
}
|
||||
|
||||
function update_model(val) {
|
||||
$('.mixerPreview img').attr('src', './resources/motor_order/' + mixerList[val - 1].image + '.svg');
|
||||
function update_model(mixer) {
|
||||
var reverse = "";
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
|
||||
reverse = MIXER_CONFIG.reverseMotorDir ? "_reversed" : "";
|
||||
}
|
||||
|
||||
$('.mixerPreview img').attr('src', './resources/motor_order/' + mixerList[mixer - 1].image + reverse + '.svg');
|
||||
}
|
||||
|
||||
function process_html() {
|
||||
|
|
Loading…
Reference in New Issue