mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-24 00:35:26 +03:00
Merge pull request #2317 from haslinghuis/auxiliary
This commit is contained in:
commit
5db04ddd26
1 changed files with 77 additions and 77 deletions
|
@ -5,7 +5,7 @@ TABS.auxiliary = {};
|
|||
TABS.auxiliary.initialize = function (callback) {
|
||||
GUI.active_tab_ref = this;
|
||||
GUI.active_tab = 'auxiliary';
|
||||
var prevChannelsValues = null;
|
||||
let prevChannelsValues = null;
|
||||
|
||||
function get_mode_ranges() {
|
||||
MSP.send_message(MSPCodes.MSP_MODE_RANGES, false, false,
|
||||
|
@ -21,10 +21,10 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function get_rssi_config() {
|
||||
MSP.send_message(MSPCodes.MSP_RSSI_CONFIG, false, false, get_rc_data);
|
||||
MSP.send_message(MSPCodes.MSP_RSSI_CONFIG, false, false, getRcData);
|
||||
}
|
||||
|
||||
function get_rc_data() {
|
||||
function getRcData() {
|
||||
MSP.send_message(MSPCodes.MSP_RC, false, false, get_serial_config);
|
||||
}
|
||||
|
||||
|
@ -39,10 +39,10 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
MSP.send_message(MSPCodes.MSP_BOXNAMES, false, false, get_mode_ranges);
|
||||
|
||||
function createMode(modeIndex, modeId) {
|
||||
var modeTemplate = $('#tab-auxiliary-templates .mode');
|
||||
var newMode = modeTemplate.clone();
|
||||
const modeTemplate = $('#tab-auxiliary-templates .mode');
|
||||
const newMode = modeTemplate.clone();
|
||||
|
||||
var modeName = FC.AUX_CONFIG[modeIndex];
|
||||
let modeName = FC.AUX_CONFIG[modeIndex];
|
||||
// Adjust the name of the box if a peripheral is selected
|
||||
modeName = adjustBoxNameIfPeripheralWithModeID(modeId, modeName);
|
||||
|
||||
|
@ -65,18 +65,18 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function configureLogicList(template) {
|
||||
var logicList = $(template).find('.logic');
|
||||
var logicOptionTemplate = $(logicList).find('option');
|
||||
const logicList = $(template).find('.logic');
|
||||
const logicOptionTemplate = $(logicList).find('option');
|
||||
logicOptionTemplate.remove();
|
||||
|
||||
//add logic option(s)
|
||||
var logicOption = logicOptionTemplate.clone();
|
||||
let logicOption = logicOptionTemplate.clone();
|
||||
logicOption.text(i18n.getMessage('auxiliaryModeLogicOR'));
|
||||
logicOption.val(0);
|
||||
logicList.append(logicOption);
|
||||
|
||||
if(semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_41)){
|
||||
var logicOption = logicOptionTemplate.clone();
|
||||
logicOption = logicOptionTemplate.clone();
|
||||
logicOption.text(i18n.getMessage('auxiliaryModeLogicAND'));
|
||||
logicOption.val(1);
|
||||
logicList.append(logicOption);
|
||||
|
@ -85,20 +85,20 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function configureRangeTemplate(auxChannelCount) {
|
||||
var rangeTemplate = $('#tab-auxiliary-templates .range');
|
||||
const rangeTemplate = $('#tab-auxiliary-templates .range');
|
||||
|
||||
var channelList = $(rangeTemplate).find('.channel');
|
||||
var channelOptionTemplate = $(channelList).find('option');
|
||||
const channelList = $(rangeTemplate).find('.channel');
|
||||
const channelOptionTemplate = $(channelList).find('option');
|
||||
channelOptionTemplate.remove();
|
||||
|
||||
//add value to autodetect channel
|
||||
var channelOption = channelOptionTemplate.clone();
|
||||
let channelOption = channelOptionTemplate.clone();
|
||||
channelOption.text(i18n.getMessage('auxiliaryAutoChannelSelect'));
|
||||
channelOption.val(-1);
|
||||
channelList.append(channelOption);
|
||||
|
||||
for (var channelIndex = 0; channelIndex < auxChannelCount; channelIndex++) {
|
||||
var channelOption = channelOptionTemplate.clone();
|
||||
for (let channelIndex = 0; channelIndex < auxChannelCount; channelIndex++) {
|
||||
channelOption = channelOptionTemplate.clone();
|
||||
channelOption.text('AUX ' + (channelIndex + 1));
|
||||
channelOption.val(channelIndex);
|
||||
channelList.append(channelOption);
|
||||
|
@ -110,20 +110,20 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function configureLinkTemplate() {
|
||||
var linkTemplate = $('#tab-auxiliary-templates .link');
|
||||
const linkTemplate = $('#tab-auxiliary-templates .link');
|
||||
|
||||
var linkList = $(linkTemplate).find('.linkedTo');
|
||||
var linkOptionTemplate = $(linkList).find('option');
|
||||
const linkList = $(linkTemplate).find('.linkedTo');
|
||||
const linkOptionTemplate = $(linkList).find('option');
|
||||
linkOptionTemplate.remove();
|
||||
|
||||
// set up a blank option in place of ARM
|
||||
var linkOption = linkOptionTemplate.clone();
|
||||
let linkOption = linkOptionTemplate.clone();
|
||||
linkOption.text("");
|
||||
linkOption.val(0);
|
||||
linkList.append(linkOption);
|
||||
|
||||
for (var index = 1; index < FC.AUX_CONFIG.length; index++) {
|
||||
var linkOption = linkOptionTemplate.clone();
|
||||
for (let index = 1; index < FC.AUX_CONFIG.length; index++) {
|
||||
linkOption = linkOptionTemplate.clone();
|
||||
linkOption.text(FC.AUX_CONFIG[index]);
|
||||
linkOption.val(FC.AUX_CONFIG_IDS[index]); // set value to mode id
|
||||
linkList.append(linkOption);
|
||||
|
@ -135,22 +135,22 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function addRangeToMode(modeElement, auxChannelIndex, modeLogic, range) {
|
||||
var modeIndex = $(modeElement).data('index');
|
||||
var modeRanges = $(modeElement).find('.ranges');
|
||||
const modeIndex = $(modeElement).data('index');
|
||||
const modeRanges = $(modeElement).find('.ranges');
|
||||
|
||||
var channel_range = {
|
||||
const channel_range = {
|
||||
'min': [ 900 ],
|
||||
'max': [ 2100 ]
|
||||
};
|
||||
|
||||
var rangeValues = [1300, 1700]; // matches MultiWii default values for the old checkbox MID range.
|
||||
if (range != undefined) {
|
||||
let rangeValues = [1300, 1700]; // matches MultiWii default values for the old checkbox MID range.
|
||||
if (range !== undefined) {
|
||||
rangeValues = [range.start, range.end];
|
||||
}
|
||||
|
||||
var rangeIndex = modeRanges.children().length;
|
||||
const rangeIndex = modeRanges.children().length;
|
||||
|
||||
var rangeElement = $('#tab-auxiliary-templates .range').clone();
|
||||
let rangeElement = $('#tab-auxiliary-templates .range').clone();
|
||||
rangeElement.attr('id', 'mode-' + modeIndex + '-range-' + rangeIndex);
|
||||
modeRanges.append(rangeElement);
|
||||
|
||||
|
@ -172,7 +172,7 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
})
|
||||
});
|
||||
|
||||
var elementName = '#mode-' + modeIndex + '-range-' + rangeIndex;
|
||||
const elementName = '#mode-' + modeIndex + '-range-' + rangeIndex;
|
||||
$(elementName + ' .channel-slider').Link('lower').to($(elementName + ' .lowerLimitValue'));
|
||||
$(elementName + ' .channel-slider').Link('upper').to($(elementName + ' .upperLimitValue'));
|
||||
|
||||
|
@ -191,12 +191,12 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
$(rangeElement).find('.deleteRange').data('modeElement', modeElement);
|
||||
|
||||
$(rangeElement).find('a.deleteRange').click(function () {
|
||||
var modeElement = $(this).data('modeElement');
|
||||
var rangeElement = $(this).data('rangeElement');
|
||||
modeElement = $(this).data('modeElement');
|
||||
rangeElement = $(this).data('rangeElement');
|
||||
|
||||
rangeElement.remove();
|
||||
|
||||
var siblings = $(modeElement).find('.ranges').children();
|
||||
const siblings = $(modeElement).find('.ranges').children();
|
||||
|
||||
if (siblings.length == 1) {
|
||||
siblings.eq(0).find('.logic').hide();
|
||||
|
@ -208,13 +208,13 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function addLinkedToMode(modeElement, modeLogic, linkedTo) {
|
||||
var modeId = $(modeElement).data('id');
|
||||
var modeIndex = $(modeElement).data('index');
|
||||
var modeRanges = $(modeElement).find('.ranges');
|
||||
const modeId = $(modeElement).data('id');
|
||||
const modeIndex = $(modeElement).data('index');
|
||||
const modeRanges = $(modeElement).find('.ranges');
|
||||
|
||||
var linkIndex = modeRanges.children().length;
|
||||
const linkIndex = modeRanges.children().length;
|
||||
|
||||
var linkElement = $('#tab-auxiliary-templates .link').clone();
|
||||
let linkElement = $('#tab-auxiliary-templates .link').clone();
|
||||
linkElement.attr('id', 'mode-' + modeIndex + '-link-' + linkIndex);
|
||||
modeRanges.append(linkElement);
|
||||
|
||||
|
@ -225,19 +225,19 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
// disable the option associated with this mode
|
||||
var linkSelect = $(linkElement).find('.linkedTo');
|
||||
const linkSelect = $(linkElement).find('.linkedTo');
|
||||
$(linkSelect).find('option[value="' + modeId + '"]').prop('disabled',true);
|
||||
|
||||
$(linkElement).find('.deleteLink').data('linkElement', linkElement);
|
||||
$(linkElement).find('.deleteLink').data('modeElement', modeElement);
|
||||
|
||||
$(linkElement).find('a.deleteLink').click(function () {
|
||||
var modeElement = $(this).data('modeElement');
|
||||
var linkElement = $(this).data('linkElement');
|
||||
modeElement = $(this).data('modeElement');
|
||||
linkElement = $(this).data('linkElement');
|
||||
|
||||
linkElement.remove();
|
||||
|
||||
var siblings = $(modeElement).find('.ranges').children();
|
||||
const siblings = $(modeElement).find('.ranges').children();
|
||||
|
||||
if (siblings.length == 1) {
|
||||
siblings.eq(0).find('.logic').hide();
|
||||
|
@ -249,24 +249,24 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function process_html() {
|
||||
var auxChannelCount = FC.RC.active_channels - 4;
|
||||
let auxChannelCount = FC.RC.active_channels - 4;
|
||||
|
||||
configureRangeTemplate(auxChannelCount);
|
||||
configureLinkTemplate();
|
||||
|
||||
const modeTableBodyElement = $('.tab-auxiliary .modes');
|
||||
for (var modeIndex = 0; modeIndex < FC.AUX_CONFIG.length; modeIndex++) {
|
||||
for (let modeIndex = 0; modeIndex < FC.AUX_CONFIG.length; modeIndex++) {
|
||||
|
||||
var modeId = FC.AUX_CONFIG_IDS[modeIndex];
|
||||
var newMode = createMode(modeIndex, modeId);
|
||||
const modeId = FC.AUX_CONFIG_IDS[modeIndex];
|
||||
const newMode = createMode(modeIndex, modeId);
|
||||
modeTableBodyElement.append(newMode);
|
||||
|
||||
// generate ranges from the supplied AUX names and MODE_RANGES[_EXTRA] data
|
||||
// skip linked modes for now
|
||||
for (var modeRangeIndex = 0; modeRangeIndex < FC.MODE_RANGES.length; modeRangeIndex++) {
|
||||
var modeRange = FC.MODE_RANGES[modeRangeIndex];
|
||||
for (let modeRangeIndex = 0; modeRangeIndex < FC.MODE_RANGES.length; modeRangeIndex++) {
|
||||
const modeRange = FC.MODE_RANGES[modeRangeIndex];
|
||||
|
||||
var modeRangeExtra = {
|
||||
let modeRangeExtra = {
|
||||
id: modeRange.id,
|
||||
modeLogic: 0,
|
||||
linkedTo: 0
|
||||
|
@ -280,8 +280,8 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
if (modeId == 0 || modeRangeExtra.linkedTo == 0) {
|
||||
var range = modeRange.range;
|
||||
if (!(range.start < range.end)) {
|
||||
const range = modeRange.range;
|
||||
if (range.start >= range.end) {
|
||||
continue; // invalid!
|
||||
}
|
||||
|
||||
|
@ -294,13 +294,13 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
$('a.addRange').click(function () {
|
||||
var modeElement = $(this).data('modeElement');
|
||||
const modeElement = $(this).data('modeElement');
|
||||
// auto select AUTO option; default to 'OR' logic
|
||||
addRangeToMode(modeElement, -1, 0);
|
||||
});
|
||||
|
||||
$('a.addLink').click(function () {
|
||||
var modeElement = $(this).data('modeElement');
|
||||
const modeElement = $(this).data('modeElement');
|
||||
// default to 'OR' logic and no link selected
|
||||
addLinkedToMode(modeElement, 0, 0);
|
||||
});
|
||||
|
@ -314,18 +314,18 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
// update internal data structures based on current UI elements
|
||||
|
||||
// we must send this many back to the FC - overwrite all of the old ones to be sure.
|
||||
var requiredModesRangeCount = FC.MODE_RANGES.length;
|
||||
const requiredModesRangeCount = FC.MODE_RANGES.length;
|
||||
|
||||
FC.MODE_RANGES = [];
|
||||
FC.MODE_RANGES_EXTRA = [];
|
||||
|
||||
$('.tab-auxiliary .modes .mode').each(function () {
|
||||
var modeElement = $(this);
|
||||
var modeId = modeElement.data('id');
|
||||
const modeElement = $(this);
|
||||
const modeId = modeElement.data('id');
|
||||
|
||||
$(modeElement).find('.range').each(function() {
|
||||
var rangeValues = $(this).find('.channel-slider').val();
|
||||
var modeRange = {
|
||||
const rangeValues = $(this).find('.channel-slider').val();
|
||||
const modeRange = {
|
||||
id: modeId,
|
||||
auxChannelIndex: parseInt($(this).find('.channel').val()),
|
||||
range: {
|
||||
|
@ -335,7 +335,7 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
};
|
||||
FC.MODE_RANGES.push(modeRange);
|
||||
|
||||
var modeRangeExtra = {
|
||||
const modeRangeExtra = {
|
||||
id: modeId,
|
||||
modeLogic: parseInt($(this).find('.logic').val()),
|
||||
linkedTo: 0
|
||||
|
@ -344,12 +344,12 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
});
|
||||
|
||||
$(modeElement).find('.link').each(function() {
|
||||
var linkedToSelection = parseInt($(this).find('.linkedTo').val());
|
||||
const linkedToSelection = parseInt($(this).find('.linkedTo').val());
|
||||
|
||||
if (linkedToSelection == 0) {
|
||||
$(this).remove();
|
||||
} else {
|
||||
var modeRange = {
|
||||
const modeRange = {
|
||||
id: modeId,
|
||||
auxChannelIndex: 0,
|
||||
range: {
|
||||
|
@ -359,7 +359,7 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
};
|
||||
FC.MODE_RANGES.push(modeRange);
|
||||
|
||||
var modeRangeExtra = {
|
||||
const modeRangeExtra = {
|
||||
id: modeId,
|
||||
modeLogic: parseInt($(this).find('.logic').val()),
|
||||
linkedTo: linkedToSelection
|
||||
|
@ -369,8 +369,8 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
});
|
||||
});
|
||||
|
||||
for (var modeRangeIndex = FC.MODE_RANGES.length; modeRangeIndex < requiredModesRangeCount; modeRangeIndex++) {
|
||||
var defaultModeRange = {
|
||||
for (let modeRangeIndex = FC.MODE_RANGES.length; modeRangeIndex < requiredModesRangeCount; modeRangeIndex++) {
|
||||
const defaultModeRange = {
|
||||
id: 0,
|
||||
auxChannelIndex: 0,
|
||||
range: {
|
||||
|
@ -380,7 +380,7 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
};
|
||||
FC.MODE_RANGES.push(defaultModeRange);
|
||||
|
||||
var defaultModeRangeExtra = {
|
||||
const defaultModeRangeExtra = {
|
||||
id: 0,
|
||||
modeLogic: 0,
|
||||
linkedTo: 0
|
||||
|
@ -411,11 +411,11 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function update_marker(auxChannelIndex, channelPosition) {
|
||||
var percentage = (channelPosition - 900) / (2100-900) * 100;
|
||||
const percentage = (channelPosition - 900) / (2100-900) * 100;
|
||||
|
||||
$('.modes .ranges .range').each( function () {
|
||||
var auxChannelCandidateIndex = $(this).find('.channel').val();
|
||||
if (auxChannelCandidateIndex != auxChannelIndex) {
|
||||
const auxChannelCandidateIndex = $(this).find('.channel').val();
|
||||
if (auxChannelCandidateIndex !== auxChannelIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -449,12 +449,12 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
|
||||
//ARM mode is a special case
|
||||
if (i == 0) {
|
||||
var armSwitchActive = false;
|
||||
let armSwitchActive = false;
|
||||
|
||||
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_36)) {
|
||||
if (FC.CONFIG.armingDisableCount > 0) {
|
||||
// check the highest bit of the armingDisableFlags. This will be the ARMING_DISABLED_ARMSWITCH flag.
|
||||
var armSwitchMask = 1 << (FC.CONFIG.armingDisableCount - 1);
|
||||
const armSwitchMask = 1 << (FC.CONFIG.armingDisableCount - 1);
|
||||
if ((FC.CONFIG.armingDisableFlags & armSwitchMask) > 0) {
|
||||
armSwitchActive = true;
|
||||
}
|
||||
|
@ -488,9 +488,9 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
|
||||
auto_select_channel(FC.RC.channels, FC.RSSI_CONFIG.channel);
|
||||
|
||||
var auxChannelCount = FC.RC.active_channels - 4;
|
||||
auxChannelCount = FC.RC.active_channels - 4;
|
||||
|
||||
for (var i = 0; i < (auxChannelCount); i++) {
|
||||
for (let i = 0; i < (auxChannelCount); i++) {
|
||||
update_marker(i, limit_channel(FC.RC.channels[i + 4]));
|
||||
}
|
||||
|
||||
|
@ -503,30 +503,30 @@ TABS.auxiliary.initialize = function (callback) {
|
|||
* @param RC_channels
|
||||
*/
|
||||
function auto_select_channel(RC_channels, RSSI_channel) {
|
||||
var auto_option = $('.tab-auxiliary select.channel option[value="-1"]:selected');
|
||||
const auto_option = $('.tab-auxiliary select.channel option[value="-1"]:selected');
|
||||
if (auto_option.length === 0) {
|
||||
prevChannelsValues = null;
|
||||
return;
|
||||
}
|
||||
|
||||
var fillPrevChannelsValues = function () {
|
||||
const fillPrevChannelsValues = function () {
|
||||
prevChannelsValues = RC_channels.slice(0); //clone array
|
||||
}
|
||||
|
||||
if (!prevChannelsValues || RC_channels.length === 0) return fillPrevChannelsValues();
|
||||
|
||||
var diff_array = RC_channels.map(function(currentValue, index) {
|
||||
const diff_array = RC_channels.map(function(currentValue, index) {
|
||||
return Math.abs(prevChannelsValues[index] - currentValue);
|
||||
});
|
||||
|
||||
var largest = diff_array.reduce(function(x,y){
|
||||
const largest = diff_array.reduce(function(x,y){
|
||||
return (x > y) ? x : y;
|
||||
}, 0);
|
||||
|
||||
//minimum change to autoselect is 100
|
||||
if (largest < 100) return fillPrevChannelsValues();
|
||||
|
||||
var indexOfMaxValue = diff_array.indexOf(largest);
|
||||
const indexOfMaxValue = diff_array.indexOf(largest);
|
||||
if (indexOfMaxValue >= 4 && indexOfMaxValue != RSSI_channel - 1){ //set channel
|
||||
auto_option.parent().val(indexOfMaxValue - 4);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue