mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-16 12:55:13 +03:00
add runcam split suport
add peripherals column on ports page fixed ports page will show the rcsplit with apiversion less 1.27.0 move the modeName adjust function to peripherals.js, and add failsafe modename not update when rcsplit available cleanup clean up
This commit is contained in:
parent
e394d4fd86
commit
73f324e4c1
9 changed files with 152 additions and 13 deletions
|
@ -783,6 +783,9 @@
|
||||||
"portsFunction_BLACKBOX": {
|
"portsFunction_BLACKBOX": {
|
||||||
"message": "Blackbox"
|
"message": "Blackbox"
|
||||||
},
|
},
|
||||||
|
"portsFunction_RUNCAM_SPLIT_CONTROL": {
|
||||||
|
"message": "RunCam Split"
|
||||||
|
},
|
||||||
"pidTuningName": {
|
"pidTuningName": {
|
||||||
"message": "Name"
|
"message": "Name"
|
||||||
},
|
},
|
||||||
|
|
78
build/script.js
Executable file → Normal file
78
build/script.js
Executable file → Normal file
|
@ -7594,7 +7594,8 @@ var mspHelper = (function (gui) {
|
||||||
'RX_SERIAL': 6,
|
'RX_SERIAL': 6,
|
||||||
'BLACKBOX': 7,
|
'BLACKBOX': 7,
|
||||||
'TELEMETRY_MAVLINK': 8,
|
'TELEMETRY_MAVLINK': 8,
|
||||||
'TELEMETRY_IBUS': 9
|
'TELEMETRY_IBUS': 9,
|
||||||
|
'RUNCAM_SPLIT_CONTROL' : 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14594,7 +14595,15 @@ TABS.auxiliary.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_rc_data() {
|
function get_rc_data() {
|
||||||
MSP.send_message(MSPCodes.MSP_RC, false, false, load_html);
|
if (SERIAL_CONFIG.ports.length == 0) {
|
||||||
|
MSP.send_message(MSPCodes.MSP_RC, false, false, get_serial_config);
|
||||||
|
} else {
|
||||||
|
MSP.send_message(MSPCodes.MSP_RC, false, false, load_html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_serial_config() {
|
||||||
|
MSP.send_message(MSPCodes.MSP_CF_SERIAL_CONFIG, false, false, load_html);
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_html() {
|
function load_html() {
|
||||||
|
@ -14606,8 +14615,10 @@ TABS.auxiliary.initialize = function (callback) {
|
||||||
function createMode(modeIndex, modeId) {
|
function createMode(modeIndex, modeId) {
|
||||||
var modeTemplate = $('#tab-auxiliary-templates .mode');
|
var modeTemplate = $('#tab-auxiliary-templates .mode');
|
||||||
var newMode = modeTemplate.clone();
|
var newMode = modeTemplate.clone();
|
||||||
|
|
||||||
var modeName = AUX_CONFIG[modeIndex];
|
var modeName = AUX_CONFIG[modeIndex];
|
||||||
|
// if user choose the runcam split at peripheral column, then adjust the boxname(BOXCAMERA1, BOXCAMERA2, BOXCAMERA3)
|
||||||
|
modeName = adjustBoxNameIfPeripheralWithModeID(modeId, modeName);
|
||||||
|
|
||||||
$(newMode).attr('id', 'mode-' + modeIndex);
|
$(newMode).attr('id', 'mode-' + modeIndex);
|
||||||
$(newMode).find('.name').text(modeName);
|
$(newMode).find('.name').text(modeName);
|
||||||
|
|
||||||
|
@ -15858,7 +15869,9 @@ TABS.failsafe.initialize = function (callback, scrollPosition) {
|
||||||
continue; // invalid!
|
continue; // invalid!
|
||||||
}
|
}
|
||||||
|
|
||||||
auxAssignment[modeRange.auxChannelIndex] += "<span class=\"modename\">" + AUX_CONFIG[modeIndex] + "</span>";
|
var modeName = AUX_CONFIG[modeIndex];
|
||||||
|
modeName = adjustBoxNameIfPeripheralWithModeID(modeId, modeName);
|
||||||
|
auxAssignment[modeRange.auxChannelIndex] += "<span class=\"modename\">" + modeName + "</span>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20722,6 +20735,7 @@ TABS.ports = {};
|
||||||
|
|
||||||
TABS.ports.initialize = function (callback, scrollPosition) {
|
TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
var board_definition = {};
|
var board_definition = {};
|
||||||
|
var isSupportPeripherals = semver.gte(CONFIG.apiVersion, "1.27.0");
|
||||||
|
|
||||||
var functionRules = [
|
var functionRules = [
|
||||||
{name: 'MSP', groups: ['data', 'msp'], maxPorts: 2},
|
{name: 'MSP', groups: ['data', 'msp'], maxPorts: 2},
|
||||||
|
@ -20752,6 +20766,12 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// support configure RunCam Split
|
||||||
|
GUI.log('API version is ' + CONFIG.apiVersion);
|
||||||
|
if (isSupportPeripherals) {
|
||||||
|
functionRules.push({ name: 'RUNCAM_SPLIT_CONTROL', groups: ['peripherals'], maxPorts: 1 });
|
||||||
|
}
|
||||||
|
|
||||||
for (var i = 0; i < functionRules.length; i++) {
|
for (var i = 0; i < functionRules.length; i++) {
|
||||||
functionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + functionRules[i].name);
|
functionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + functionRules[i].name);
|
||||||
}
|
}
|
||||||
|
@ -20802,7 +20822,7 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
'250000'
|
'250000'
|
||||||
];
|
];
|
||||||
|
|
||||||
var columns = ['data', 'logging', 'gps', 'telemetry', 'rx'];
|
var columns = ['data', 'logging', 'gps', 'telemetry', 'rx', 'peripherals'];
|
||||||
|
|
||||||
if (GUI.active_tab != 'ports') {
|
if (GUI.active_tab != 'ports') {
|
||||||
GUI.active_tab = 'ports';
|
GUI.active_tab = 'ports';
|
||||||
|
@ -20839,6 +20859,12 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
31: 'SOFTSERIAL2'
|
31: 'SOFTSERIAL2'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// if apiVersion < 1.27.0, than remove the peripherals column
|
||||||
|
if (!isSupportPeripherals) {
|
||||||
|
$('.peripherls-column').remove();
|
||||||
|
$('.functionsCell-peripherals').remove();
|
||||||
|
}
|
||||||
|
|
||||||
var gps_baudrate_e = $('select.gps_baudrate');
|
var gps_baudrate_e = $('select.gps_baudrate');
|
||||||
for (var i = 0; i < gpsBaudRates.length; i++) {
|
for (var i = 0; i < gpsBaudRates.length; i++) {
|
||||||
gps_baudrate_e.append('<option value="' + gpsBaudRates[i] + '">' + gpsBaudRates[i] + '</option>');
|
gps_baudrate_e.append('<option value="' + gpsBaudRates[i] + '">' + gpsBaudRates[i] + '</option>');
|
||||||
|
@ -20901,7 +20927,7 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var select_e;
|
var select_e;
|
||||||
if (column != 'telemetry') {
|
if (column !== 'telemetry' && column !== 'peripherals') {
|
||||||
var checkboxId = 'functionCheckbox-' + portIndex + '-' + columnIndex + '-' + i;
|
var checkboxId = 'functionCheckbox-' + portIndex + '-' + columnIndex + '-' + i;
|
||||||
functions_e.prepend('<span class="function"><input type="checkbox" class="togglemedium" id="' + checkboxId + '" value="' + functionName + '" /><label for="' + checkboxId + '"> ' + functionRule.displayName + '</label></span>');
|
functions_e.prepend('<span class="function"><input type="checkbox" class="togglemedium" id="' + checkboxId + '" value="' + functionName + '" /><label for="' + checkboxId + '"> ' + functionRule.displayName + '</label></span>');
|
||||||
|
|
||||||
|
@ -20966,6 +20992,13 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
functions.push(telemetryFunction);
|
functions.push(telemetryFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isSupportPeripherals) {
|
||||||
|
var peripheralFunction = $(portConfiguration_e).find('select[name=function-peripherals]').val();
|
||||||
|
if (peripheralFunction) {
|
||||||
|
functions.push(peripheralFunction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (telemetryFunction.length > 0) {
|
if (telemetryFunction.length > 0) {
|
||||||
googleAnalytics.sendEvent('Setting', 'Telemetry Protocol', telemetryFunction);
|
googleAnalytics.sendEvent('Setting', 'Telemetry Protocol', telemetryFunction);
|
||||||
}
|
}
|
||||||
|
@ -23932,3 +23965,36 @@ helper.mspBalancedInterval = (function (mspQueue, intervalHandler) {
|
||||||
|
|
||||||
return publicScope;
|
return publicScope;
|
||||||
})(helper.mspQueue, helper.interval);
|
})(helper.mspQueue, helper.interval);
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// return true if user has choose a special peripheral
|
||||||
|
function isPeripheralSelected(peripheralName) {
|
||||||
|
for (var portIndex = 0; portIndex < SERIAL_CONFIG.ports.length; portIndex++) {
|
||||||
|
var serialPort = SERIAL_CONFIG.ports[portIndex];
|
||||||
|
if (serialPort.functions.indexOf(peripheralName) >= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the real name for a modeId. Useful if it belongs to a peripheral
|
||||||
|
function adjustBoxNameIfPeripheralWithModeID(modeId, defaultName) {
|
||||||
|
if (isPeripheralSelected("RUNCAM_SPLIT_CONTROL")) {
|
||||||
|
switch (modeId) {
|
||||||
|
case 39: // BOXCAMERA1
|
||||||
|
return "CAMERA WI-FI";
|
||||||
|
case 40: // BOXCAMERA2
|
||||||
|
return "CAMERA POWER";
|
||||||
|
case 41: // BOXCAMERA3
|
||||||
|
return "CAMERA CHANGE MODE";
|
||||||
|
default:
|
||||||
|
return defaultName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultName;
|
||||||
|
|
||||||
|
}
|
|
@ -77,7 +77,8 @@ sources.js = [
|
||||||
'./js/periodicStatusUpdater.js',
|
'./js/periodicStatusUpdater.js',
|
||||||
'./js/serial_queue.js',
|
'./js/serial_queue.js',
|
||||||
'./js/msp_balanced_interval.js',
|
'./js/msp_balanced_interval.js',
|
||||||
'./tabs/advanced_tuning.js'
|
'./tabs/advanced_tuning.js',
|
||||||
|
'./js/peripherals.js'
|
||||||
];
|
];
|
||||||
|
|
||||||
sources.mapJs = [
|
sources.mapJs = [
|
||||||
|
|
|
@ -41,7 +41,8 @@ var mspHelper = (function (gui) {
|
||||||
'RX_SERIAL': 6,
|
'RX_SERIAL': 6,
|
||||||
'BLACKBOX': 7,
|
'BLACKBOX': 7,
|
||||||
'TELEMETRY_MAVLINK': 8,
|
'TELEMETRY_MAVLINK': 8,
|
||||||
'TELEMETRY_IBUS': 9
|
'TELEMETRY_IBUS': 9,
|
||||||
|
'RUNCAM_SPLIT_CONTROL' : 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
32
js/peripherals.js
Normal file
32
js/peripherals.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// return true if user has choose a special peripheral
|
||||||
|
function isPeripheralSelected(peripheralName) {
|
||||||
|
for (var portIndex = 0; portIndex < SERIAL_CONFIG.ports.length; portIndex++) {
|
||||||
|
var serialPort = SERIAL_CONFIG.ports[portIndex];
|
||||||
|
if (serialPort.functions.indexOf(peripheralName) >= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the real name for a modeId. Useful if it belongs to a peripheral
|
||||||
|
function adjustBoxNameIfPeripheralWithModeID(modeId, defaultName) {
|
||||||
|
if (isPeripheralSelected("RUNCAM_SPLIT_CONTROL")) {
|
||||||
|
switch (modeId) {
|
||||||
|
case 39: // BOXCAMERA1
|
||||||
|
return "CAMERA WI-FI";
|
||||||
|
case 40: // BOXCAMERA2
|
||||||
|
return "CAMERA POWER";
|
||||||
|
case 41: // BOXCAMERA3
|
||||||
|
return "CAMERA CHANGE MODE";
|
||||||
|
default:
|
||||||
|
return defaultName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultName;
|
||||||
|
|
||||||
|
}
|
|
@ -16,7 +16,15 @@ TABS.auxiliary.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_rc_data() {
|
function get_rc_data() {
|
||||||
MSP.send_message(MSPCodes.MSP_RC, false, false, load_html);
|
if (SERIAL_CONFIG.ports.length == 0) {
|
||||||
|
MSP.send_message(MSPCodes.MSP_RC, false, false, get_serial_config);
|
||||||
|
} else {
|
||||||
|
MSP.send_message(MSPCodes.MSP_RC, false, false, load_html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_serial_config() {
|
||||||
|
MSP.send_message(MSPCodes.MSP_CF_SERIAL_CONFIG, false, false, load_html);
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_html() {
|
function load_html() {
|
||||||
|
@ -28,8 +36,10 @@ TABS.auxiliary.initialize = function (callback) {
|
||||||
function createMode(modeIndex, modeId) {
|
function createMode(modeIndex, modeId) {
|
||||||
var modeTemplate = $('#tab-auxiliary-templates .mode');
|
var modeTemplate = $('#tab-auxiliary-templates .mode');
|
||||||
var newMode = modeTemplate.clone();
|
var newMode = modeTemplate.clone();
|
||||||
|
|
||||||
var modeName = AUX_CONFIG[modeIndex];
|
var modeName = AUX_CONFIG[modeIndex];
|
||||||
|
// if user choose the runcam split at peripheral column, then adjust the boxname(BOXCAMERA1, BOXCAMERA2, BOXCAMERA3)
|
||||||
|
modeName = adjustBoxNameIfPeripheralWithModeID(modeId, modeName);
|
||||||
|
|
||||||
$(newMode).attr('id', 'mode-' + modeIndex);
|
$(newMode).attr('id', 'mode-' + modeIndex);
|
||||||
$(newMode).find('.name').text(modeName);
|
$(newMode).find('.name').text(modeName);
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,9 @@ TABS.failsafe.initialize = function (callback, scrollPosition) {
|
||||||
continue; // invalid!
|
continue; // invalid!
|
||||||
}
|
}
|
||||||
|
|
||||||
auxAssignment[modeRange.auxChannelIndex] += "<span class=\"modename\">" + AUX_CONFIG[modeIndex] + "</span>";
|
var modeName = AUX_CONFIG[modeIndex];
|
||||||
|
modeName = adjustBoxNameIfPeripheralWithModeID(modeId, modeName);
|
||||||
|
auxAssignment[modeRange.auxChannelIndex] += "<span class=\"modename\">" + modeName + "</span>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
<td>Telemetry</td>
|
<td>Telemetry</td>
|
||||||
<td>RX</td>
|
<td>RX</td>
|
||||||
<td>GPS</td>
|
<td>GPS</td>
|
||||||
|
<td class='peripherls-column'>Peripherals</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -62,6 +63,9 @@
|
||||||
<td class="functionsCell-gps"><select class="gps_baudrate">
|
<td class="functionsCell-gps"><select class="gps_baudrate">
|
||||||
<!-- list generated here -->
|
<!-- list generated here -->
|
||||||
</select></td>
|
</select></td>
|
||||||
|
<td class="functionsCell-peripherals"><select class="blackbox_baudrate">
|
||||||
|
<!-- list generated here -->
|
||||||
|
</select></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -4,6 +4,7 @@ TABS.ports = {};
|
||||||
|
|
||||||
TABS.ports.initialize = function (callback, scrollPosition) {
|
TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
var board_definition = {};
|
var board_definition = {};
|
||||||
|
var isSupportPeripherals = semver.gte(CONFIG.apiVersion, "1.27.0");
|
||||||
|
|
||||||
var functionRules = [
|
var functionRules = [
|
||||||
{name: 'MSP', groups: ['data', 'msp'], maxPorts: 2},
|
{name: 'MSP', groups: ['data', 'msp'], maxPorts: 2},
|
||||||
|
@ -34,6 +35,12 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// support configure RunCam Split
|
||||||
|
GUI.log('API version is ' + CONFIG.apiVersion);
|
||||||
|
if (isSupportPeripherals) {
|
||||||
|
functionRules.push({ name: 'RUNCAM_SPLIT_CONTROL', groups: ['peripherals'], maxPorts: 1 });
|
||||||
|
}
|
||||||
|
|
||||||
for (var i = 0; i < functionRules.length; i++) {
|
for (var i = 0; i < functionRules.length; i++) {
|
||||||
functionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + functionRules[i].name);
|
functionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + functionRules[i].name);
|
||||||
}
|
}
|
||||||
|
@ -84,7 +91,7 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
'250000'
|
'250000'
|
||||||
];
|
];
|
||||||
|
|
||||||
var columns = ['data', 'logging', 'gps', 'telemetry', 'rx'];
|
var columns = ['data', 'logging', 'gps', 'telemetry', 'rx', 'peripherals'];
|
||||||
|
|
||||||
if (GUI.active_tab != 'ports') {
|
if (GUI.active_tab != 'ports') {
|
||||||
GUI.active_tab = 'ports';
|
GUI.active_tab = 'ports';
|
||||||
|
@ -121,6 +128,12 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
31: 'SOFTSERIAL2'
|
31: 'SOFTSERIAL2'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// if apiVersion < 1.27.0, than remove the peripherals column
|
||||||
|
if (!isSupportPeripherals) {
|
||||||
|
$('.peripherls-column').remove();
|
||||||
|
$('.functionsCell-peripherals').remove();
|
||||||
|
}
|
||||||
|
|
||||||
var gps_baudrate_e = $('select.gps_baudrate');
|
var gps_baudrate_e = $('select.gps_baudrate');
|
||||||
for (var i = 0; i < gpsBaudRates.length; i++) {
|
for (var i = 0; i < gpsBaudRates.length; i++) {
|
||||||
gps_baudrate_e.append('<option value="' + gpsBaudRates[i] + '">' + gpsBaudRates[i] + '</option>');
|
gps_baudrate_e.append('<option value="' + gpsBaudRates[i] + '">' + gpsBaudRates[i] + '</option>');
|
||||||
|
@ -183,7 +196,7 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var select_e;
|
var select_e;
|
||||||
if (column != 'telemetry') {
|
if (column !== 'telemetry' && column !== 'peripherals') {
|
||||||
var checkboxId = 'functionCheckbox-' + portIndex + '-' + columnIndex + '-' + i;
|
var checkboxId = 'functionCheckbox-' + portIndex + '-' + columnIndex + '-' + i;
|
||||||
functions_e.prepend('<span class="function"><input type="checkbox" class="togglemedium" id="' + checkboxId + '" value="' + functionName + '" /><label for="' + checkboxId + '"> ' + functionRule.displayName + '</label></span>');
|
functions_e.prepend('<span class="function"><input type="checkbox" class="togglemedium" id="' + checkboxId + '" value="' + functionName + '" /><label for="' + checkboxId + '"> ' + functionRule.displayName + '</label></span>');
|
||||||
|
|
||||||
|
@ -248,6 +261,13 @@ TABS.ports.initialize = function (callback, scrollPosition) {
|
||||||
functions.push(telemetryFunction);
|
functions.push(telemetryFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isSupportPeripherals) {
|
||||||
|
var peripheralFunction = $(portConfiguration_e).find('select[name=function-peripherals]').val();
|
||||||
|
if (peripheralFunction) {
|
||||||
|
functions.push(peripheralFunction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (telemetryFunction.length > 0) {
|
if (telemetryFunction.length > 0) {
|
||||||
googleAnalytics.sendEvent('Setting', 'Telemetry Protocol', telemetryFunction);
|
googleAnalytics.sendEvent('Setting', 'Telemetry Protocol', telemetryFunction);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue