1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-21 07:15:13 +03:00

Merge branch 'master' into MrD_Changes-for-PR-8401

This commit is contained in:
Darren Lines 2022-10-01 14:24:41 +01:00 committed by GitHub
commit 91da0f642b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
139 changed files with 449 additions and 107 deletions

View file

@ -1166,8 +1166,8 @@
"portsFunction_DJI_FPV": { "portsFunction_DJI_FPV": {
"message": "DJI FPV VTX" "message": "DJI FPV VTX"
}, },
"portsFunction_HDZERO_VTX": { "portsFunction_MSP_DISPLAYPORT": {
"message": "HDZero VTX" "message": "MSP Displayport"
}, },
"portsFunction_IMU2": { "portsFunction_IMU2": {
"message": "Secondary IMU" "message": "Secondary IMU"
@ -1745,6 +1745,9 @@
"adjustmentsFunction58": { "adjustmentsFunction58": {
"message": "Fixed Wing Level Trim" "message": "Fixed Wing Level Trim"
}, },
"adjustmentsFunction59": {
"message": "Multi Mission Index Adjustment"
},
"adjustmentsSave": { "adjustmentsSave": {
"message": "Save" "message": "Save"
}, },
@ -2176,6 +2179,9 @@
"firmwareFlasherOptionLabelSelectFirmwareVersionFor": { "firmwareFlasherOptionLabelSelectFirmwareVersionFor": {
"message": "Choose a Firmware version for" "message": "Choose a Firmware version for"
}, },
"firmwareFlasherButtonAutoSelect": {
"message": "Auto-select Target"
},
"firmwareFlasherButtonLoadLocal": { "firmwareFlasherButtonLoadLocal": {
"message": "Load Firmware [Local]" "message": "Load Firmware [Local]"
}, },
@ -2210,7 +2216,7 @@
"message": "Warning" "message": "Warning"
}, },
"firmwareFlasherWarningText": { "firmwareFlasherWarningText": {
"message": "Please do <span style=\"color: red\">not</span> try to flash <strong>non-iNAV</strong> hardware with this firmware flasher.<br />Do <span style=\"color: red\">not</span> <strong>disconnect</strong> the board or <strong>turn off</strong> your computer while flashing.<br /><br /><strong>Note: </strong>STM32 bootloader is stored in ROM, it cannot be bricked.<br /><strong>Note: </strong><span style=\"color: red\">Auto-Connect</span> is always disabled while you are inside firmware flasher.<br /><strong>Note: </strong>Make sure you have a backup; some upgrades/downgrades will wipe your configuration.<br /><strong>Note:</strong> If you have problems flashing try disconnecting all cables from your FC first, try rebooting, upgrade chrome, upgrade drivers.<br /><strong>Note:</strong> When flashing boards that have directly connected USB sockets (SPRacingF3Mini, Sparky, ColibriRace, etc) ensure you have read the USB Flashing section of the INAV manual and have the correct software and drivers installed" "message": "Please do <span style=\"color: red\">not</span> try to flash <strong>non-iNAV</strong> hardware with this firmware flasher.<br />Do <span style=\"color: red\">not</span> <strong>disconnect</strong> the board or <strong>turn off</strong> your computer while flashing.<br /><br /><strong>Note: </strong>STM32 bootloader is stored in ROM, it cannot be bricked.<br /><!--strong>Note: </strong><span style=\"color: red\">Auto-Connect</span> is always disabled while you are inside firmware flasher.<br / --><strong>Note: </strong>Make sure you have a backup; some upgrades/downgrades will wipe your configuration.<br /><strong>Note:</strong> If you have problems flashing try disconnecting all cables from your FC first, try rebooting, upgrade chrome, upgrade drivers.<br /><strong>Note:</strong> When flashing boards that have directly connected USB sockets (Matek H743-SLIM, Holybro Kakute etc) ensure you have read the USB Flashing section of the INAV manual and have the correct software and drivers installed"
}, },
"firmwareFlasherRecoveryHead": { "firmwareFlasherRecoveryHead": {
"message": "<strong>Recovery / Lost communication<strong>" "message": "<strong>Recovery / Lost communication<strong>"
@ -4328,5 +4334,11 @@
}, },
"rcSmoothing": { "rcSmoothing": {
"message": "RC Smoothing" "message": "RC Smoothing"
},
"throttle_scale": {
"message": "Throttle scale"
},
"throttle_scale_help": {
"message": "Allow to limit effective power fed to the motors. Throttle Scale 1 mean there is no power limiting. Throttle Scale 0.5 means throttle position will be cut in half before passed to the motors."
} }
} }

View file

@ -287,19 +287,23 @@ helper.defaultsDialog = (function () {
}, },
{ {
key: "nav_fw_pos_z_p", key: "nav_fw_pos_z_p",
value: 15 value: 25
}, },
{ {
key: "nav_fw_pos_z_d", key: "nav_fw_pos_z_i",
value: 5 value: 5
}, },
{
key: "nav_fw_pos_z_d",
value: 8
},
{ {
key: "nav_fw_pos_xy_p", key: "nav_fw_pos_xy_p",
value: 60 value: 55
}, },
{ {
key: "fw_turn_assist_pitch_gain", key: "fw_turn_assist_pitch_gain",
value: 0.5 value: 0.4
}, },
{ {
key: "max_angle_inclination_rll", key: "max_angle_inclination_rll",
@ -359,11 +363,19 @@ helper.defaultsDialog = (function () {
}, },
{ {
key: "imu_acc_ignore_rate", key: "imu_acc_ignore_rate",
value: 9 value: 7
}, },
{ {
key: "imu_acc_ignore_slope", key: "imu_acc_ignore_slope",
value: 5 value: 4
},
{
key: "imu_dcm_kp",
value: 1000
},
{
key: "imu_dcm_ki",
value: 0
}, },
{ {
key: "airmode_type", key: "airmode_type",
@ -393,6 +405,22 @@ helper.defaultsDialog = (function () {
key: "nav_wp_radius", key: "nav_wp_radius",
value: 5000 value: 5000
}, },
{
key: "nav_fw_launch_max_angle",
value: 45
},
{
key: "nav_fw_launch_motor_delay",
value: 100
},
{
key: "nav_fw_launch_max_altitude",
value: 5000
},
{
key: "nav_fw_launch_climb_angle",
value: 25
},
], ],
"features": [ "features": [
{ {
@ -404,7 +432,7 @@ helper.defaultsDialog = (function () {
{ {
"title": 'Airplane without a Tail (Wing, Delta, etc)', "title": 'Airplane without a Tail (Wing, Delta, etc)',
"notRecommended": false, "notRecommended": false,
"id": 3, "id": 4,
"reboot": true, "reboot": true,
"mixerToApply": 8, "mixerToApply": 8,
"settings": [ "settings": [
@ -418,7 +446,7 @@ helper.defaultsDialog = (function () {
}, },
{ {
key: "applied_defaults", key: "applied_defaults",
value: 3 value: 4
}, },
{ {
key: "gyro_hardware_lpf", key: "gyro_hardware_lpf",
@ -486,19 +514,23 @@ helper.defaultsDialog = (function () {
}, },
{ {
key: "nav_fw_pos_z_p", key: "nav_fw_pos_z_p",
value: 15 value: 35
}, },
{ {
key: "nav_fw_pos_z_d", key: "nav_fw_pos_z_i",
value: 5 value: 5
}, },
{
key: "nav_fw_pos_z_d",
value: 10
},
{ {
key: "nav_fw_pos_xy_p", key: "nav_fw_pos_xy_p",
value: 60 value: 70
}, },
{ {
key: "fw_turn_assist_pitch_gain", key: "fw_turn_assist_pitch_gain",
value: 0.2 value: 0.3
}, },
{ {
key: "max_angle_inclination_rll", key: "max_angle_inclination_rll",
@ -564,6 +596,14 @@ helper.defaultsDialog = (function () {
key: "imu_acc_ignore_slope", key: "imu_acc_ignore_slope",
value: 5 value: 5
}, },
{
key: "imu_dcm_kp",
value: 1000
},
{
key: "imu_dcm_ki",
value: 0
},
{ {
key: "airmode_type", key: "airmode_type",
value: "STICK_CENTER_ONCE" value: "STICK_CENTER_ONCE"
@ -592,6 +632,22 @@ helper.defaultsDialog = (function () {
key: "nav_wp_radius", key: "nav_wp_radius",
value: 5000 value: 5000
}, },
{
key: "nav_fw_launch_max_angle",
value: 75
},
{
key: "nav_fw_launch_motor_delay",
value: 100
},
{
key: "nav_fw_launch_max_altitude",
value: 5000
},
{
key: "nav_fw_launch_climb_angle",
value: 25
},
], ],
"features": [ "features": [
{ {
@ -718,7 +774,9 @@ helper.defaultsDialog = (function () {
GUI.tab_switch_cleanup(function () { GUI.tab_switch_cleanup(function () {
MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, function () { MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, function () {
//noinspection JSUnresolvedVariable //noinspection JSUnresolvedVariable
if (typeof savingDefaultsModal !== 'undefined') {
savingDefaultsModal.close(); savingDefaultsModal.close();
}
GUI.log(chrome.i18n.getMessage('deviceRebooting')); GUI.log(chrome.i18n.getMessage('deviceRebooting'));
GUI.handleReconnect(); GUI.handleReconnect();
}); });
@ -728,13 +786,21 @@ helper.defaultsDialog = (function () {
}; };
privateScope.setSettings = function (selectedDefaultPreset) { privateScope.setSettings = function (selectedDefaultPreset) {
var currentControlProfile = parseInt($("#profilechange").val());
var currentBatteryProfile = parseInt($("#batteryprofilechange").val());
//Save analytics //Save analytics
googleAnalytics.sendEvent('Setting', 'Defaults', selectedDefaultPreset.title); googleAnalytics.sendEvent('Setting', 'Defaults', selectedDefaultPreset.title);
Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) { Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) {
return mspHelper.getSetting(input.key); return mspHelper.getSetting(input.key);
}).then(function () { }).then(function () {
Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) { Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) {
if (FC.isControlProfileParameter(input.key)) {
return privateScope.setSettingForAllControlProfiles(input.key, input.value);
} else if (FC.isBatteryProfileParameter(input.key)) {
return privateScope.setSettingForAllBatteryProfiles(input.key, input.value);
} else {
return mspHelper.setSetting(input.key, input.value); return mspHelper.setSetting(input.key, input.value);
}
}).then(function () { }).then(function () {
// If default preset is associated to a mixer, apply the mixer as well // If default preset is associated to a mixer, apply the mixer as well
@ -751,19 +817,50 @@ helper.defaultsDialog = (function () {
mspHelper.sendServoMixer(function () { mspHelper.sendServoMixer(function () {
mspHelper.sendMotorMixer(function () { mspHelper.sendMotorMixer(function () {
privateScope.finalize(selectedDefaultPreset); MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [currentControlProfile], false, function() {
}) MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [currentBatteryProfile], false, privateScope.finalize(selectedDefaultPreset));
});
});
}); });
} else { } else {
privateScope.finalize(selectedDefaultPreset); MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [currentControlProfile], false, function() {
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [currentBatteryProfile], false, privateScope.finalize(selectedDefaultPreset));
});
} }
}) })
}); });
}; };
privateScope.setSettingForAllControlProfiles = function (key, value) {
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [0], false, function () {
mspHelper.setSetting(key, value, function() {
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [1], false, function () {
mspHelper.setSetting(key, value, function() {
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [2], false, function () {
mspHelper.setSetting(key, value);
});
});
});
});
});
return;
};
privateScope.setSettingForAllBatteryProfiles = function (key, value) {
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [0], false, function () {
mspHelper.setSetting(key, value, function() {
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [1], false, function () {
mspHelper.setSetting(key, value, function() {
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [2], false, function () {
mspHelper.setSetting(key, value);
});
});
});
});
});
return;
};
privateScope.onPresetClick = function (event) { privateScope.onPresetClick = function (event) {
savingDefaultsModal = new jBox('Modal', { savingDefaultsModal = new jBox('Modal', {
width: 400, width: 400,

View file

@ -1249,7 +1249,7 @@ var FC = {
4: { 4: {
name: "Logic Condition", name: "Logic Condition",
type: "range", type: "range",
range: [0, 31], range: [0, (LOGIC_CONDITIONS.getMaxLogicConditionCount()-1)],
default: 0 default: 0
}, },
5: { 5: {

View file

@ -316,16 +316,27 @@ GUI_control.prototype.renderOperandValue = function ($container, operandMetadata
* @param {function} onChange * @param {function} onChange
* @param {boolean} withAlways * @param {boolean} withAlways
*/ */
GUI_control.prototype.renderLogicConditionSelect = function ($container, logicConditions, current, onChange, withAlways) { GUI_control.prototype.renderLogicConditionSelect = function ($container, logicConditions, current, onChange, withAlways, onlyEnabled) {
let $select = $container.append('<select class="mix-rule-condition">').find("select"), let $select = $container.append('<select class="mix-rule-condition">').find("select"),
lcCount = logicConditions.getCount(); lcCount = logicConditions.getCount();
option = "";
if (withAlways) { if (withAlways) {
$select.append('<option value="-1">Always</option>') $select.append('<option value="-1">Always</option>')
} }
for (let i = 0; i < lcCount ; i++) { for (let i = 0; i < lcCount ; i++) {
$select.append('<option value="' + i + '">Logic Condition ' + i + ' </option>'); if (!onlyEnabled || i === current || (logicConditions.isEnabled(i))) {
option = '<option';
if (i === current && !logicConditions.isEnabled(i)) {
option+= ' class="lc_disabled"';
}
option+= ' value="' + i + '">Logic Condition ' + i + ' </option>';
$select.append(option);
}
} }
$select.val(current).change(onChange); $select.val(current).change(onChange);

View file

@ -42,8 +42,9 @@ function generateFilename(prefix, suffix) {
if (CONFIG) { if (CONFIG) {
if (CONFIG.flightControllerIdentifier) { if (CONFIG.flightControllerIdentifier) {
filename = CONFIG.flightControllerIdentifier + '_' + filename; filename = CONFIG.flightControllerIdentifier + '_' + CONFIG.flightControllerVersion + "_" + filename;
} }
if (CONFIG.name && CONFIG.name.trim() !== '') { if (CONFIG.name && CONFIG.name.trim() !== '') {
filename = filename + '_' + CONFIG.name.trim().replace(' ', '_'); filename = filename + '_' + CONFIG.name.trim().replace(' ', '_');
} }

View file

@ -221,6 +221,7 @@ let LogicCondition = function (enabled, activatorId, operation, operandAType, op
LOGIC_CONDITIONS, LOGIC_CONDITIONS,
self.getActivatorId, self.getActivatorId,
self.onActivatorChange, self.onActivatorChange,
true,
true true
); );
} else { } else {

View file

@ -28,6 +28,10 @@ let LogicConditionsCollection = function () {
return data.length return data.length
}; };
self.isEnabled = function (lcID) {
return data[lcID].getEnabled();
}
self.open = function () { self.open = function () {
self.render(); self.render();
$container.show(); $container.show();

View file

@ -44,7 +44,7 @@ var mspHelper = (function (gui) {
'DJI_FPV': 21, 'DJI_FPV': 21,
'SMARTPORT_MASTER': 23, 'SMARTPORT_MASTER': 23,
'IMU2': 24, 'IMU2': 24,
'HDZERO_VTX': 25, 'MSP_DISPLAYPORT': 25,
}; };
// Required for MSP_DEBUGMSG because console.log() doesn't allow omitting // Required for MSP_DEBUGMSG because console.log() doesn't allow omitting
@ -777,6 +777,18 @@ var mspHelper = (function (gui) {
CONFIG.boardIdentifier = identifier; CONFIG.boardIdentifier = identifier;
CONFIG.boardVersion = data.getUint16(offset, 1); CONFIG.boardVersion = data.getUint16(offset, 1);
offset += 2; offset += 2;
if (semver.gt(CONFIG.flightControllerVersion, "4.1.0")) {
CONFIG.osdUsed = data.getUint8(offset++);
CONFIG.commCompatability = data.getUint8(offset++);
let targetNameLen = data.getUint8(offset++);
let targetName = "";
targetNameLen += offset;
for (offset = offset; offset < targetNameLen; offset++) {
targetName += String.fromCharCode(data.getUint8(offset));
}
CONFIG.target = targetName;
}
break; break;
case MSPCodes.MSP_SET_CHANNEL_FORWARDING: case MSPCodes.MSP_SET_CHANNEL_FORWARDING:
@ -3190,6 +3202,15 @@ var mspHelper = (function (gui) {
MSP.send_message(MSPCodes.MSP_MOTOR, false, false, callback); MSP.send_message(MSPCodes.MSP_MOTOR, false, false, callback);
}; };
self.getTarget = function(callback) {
MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function(resp){
var target = resp.data.readString();
if (callback) {
callback(target);
}
});
}
self.getCraftName = function (callback) { self.getCraftName = function (callback) {
MSP.send_message(MSPCodes.MSP_NAME, false, false, function (resp) { MSP.send_message(MSPCodes.MSP_NAME, false, false, function (resp) {
var name = resp.data.readString(); var name = resp.data.readString();

View file

@ -173,19 +173,20 @@ var Settings = (function () {
let dataStep = input.data("step"); let dataStep = input.data("step");
if (dataStep !== undefined) { if (typeof dataStep === 'undefined') {
input.attr('step', dataStep); dataStep = self.countDecimals(s.value);
} else { dataStep = 1 / Math.pow(10, dataStep);
input.attr('step', "0.01"); input.data("step", dataStep);
} }
input.attr('step', dataStep);
input.attr('min', s.setting.min); input.attr('min', s.setting.min);
input.attr('max', s.setting.max); input.attr('max', s.setting.max);
input.val(s.value.toFixed(2)); input.val(s.value.toFixed(self.countDecimals(dataStep)));
} else { } else {
var multiplier = parseFloat(input.data('setting-multiplier') || 1); var multiplier = parseFloat(input.data('setting-multiplier') || 1);
input.data("step", 1);
input.val((s.value / multiplier).toFixed(Math.log10(multiplier))); input.val((s.value / multiplier).toFixed(Math.log10(multiplier)));
input.attr('type', 'number'); input.attr('type', 'number');
if (typeof s.setting.min !== 'undefined' && s.setting.min !== null) { if (typeof s.setting.min !== 'undefined' && s.setting.min !== null) {
@ -449,7 +450,7 @@ var Settings = (function () {
'm-lrg' : 'mi', 'm-lrg' : 'mi',
'cms' : 'mph', 'cms' : 'mph',
'v-cms' : 'fts', 'v-cms' : 'fts',
'decadegps' : 'degpd', 'decadegps' : 'degps',
'decideg' : 'deg', 'decideg' : 'deg',
'decideg-lrg' : 'deg', 'decideg-lrg' : 'deg',
'msec' : 'sec', 'msec' : 'sec',
@ -498,38 +499,33 @@ var Settings = (function () {
const multiplier = multiObj.multiplier; const multiplier = multiObj.multiplier;
const unitName = multiObj.unitName; const unitName = multiObj.unitName;
let decimalPlaces = 0;
// Update the step, min, and max; as we have the multiplier here. // Update the step, min, and max; as we have the multiplier here.
if (element.attr('type') == 'number') { if (element.attr('type') == 'number') {
let step = element.attr('step') || 1; let step = parseFloat(element.attr('step')) || 1;
let decimalPlaces = 0;
step = step / multiplier; if (multiplier !== 1) {
decimalPlaces = Math.min(Math.ceil(multiplier / 100), 3);
if (step < 1) {
decimalPlaces = step.toString().length - step.toString().indexOf(".") - 1;
if (parseInt(step.toString().slice(-1)) > 1 ) {
decimalPlaces--;
}
step = 1 / Math.pow(10, decimalPlaces); step = 1 / Math.pow(10, decimalPlaces);
} }
element.attr('step', step.toFixed(decimalPlaces)); element.attr('step', step.toFixed(decimalPlaces));
if (multiplier != 'FAHREN') { if (multiplier !== 'FAHREN' && multiplier !== 1) {
element.attr('min', (element.attr('min') / multiplier).toFixed(decimalPlaces)); element.attr('min', (parseFloat(element.attr('min')) / multiplier).toFixed(decimalPlaces));
element.attr('max', (element.attr('max') / multiplier).toFixed(decimalPlaces)); element.attr('max', (parseFloat(element.attr('max')) / multiplier).toFixed(decimalPlaces));
} }
} }
// Update the input with a new formatted unit // Update the input with a new formatted unit
let newValue = ""; let newValue = "";
if (multiplier == 'FAHREN') { if (multiplier === 'FAHREN') {
element.attr('min', toFahrenheit(element.attr('min')).toFixed(2)); element.attr('min', toFahrenheit(element.attr('min')).toFixed(decimalPlaces));
element.attr('max', toFahrenheit(element.attr('max')).toFixed(2)); element.attr('max', toFahrenheit(element.attr('max')).toFixed(decimalPlaces));
newValue = toFahrenheit(oldValue).toFixed(2); newValue = toFahrenheit(oldValue).toFixed(decimalPlaces);
} else { } else {
const convertedValue = Number((oldValue / multiplier).toFixed(2)); newValue = Number((oldValue / multiplier)).toFixed(decimalPlaces);
newValue = Number.isInteger(convertedValue) ? Math.round(convertedValue) : convertedValue;
} }
element.val(newValue); element.val(newValue);
element.data('setting-multiplier', multiplier); element.data('setting-multiplier', multiplier);
@ -564,12 +560,36 @@ var Settings = (function () {
value = Math.round(((parseFloat(input.val())-32) / 1.8) * 10); value = Math.round(((parseFloat(input.val())-32) / 1.8) * 10);
} else { } else {
multiplier = parseFloat(multiplier); multiplier = parseFloat(multiplier);
let presicion = input.data("step") || 1; // data-step is always based on the default firmware units.
presicion = self.countDecimals(presicion);
if (presicion === 0) {
value = Math.round(parseFloat(input.val()) * multiplier); value = Math.round(parseFloat(input.val()) * multiplier);
} else {
value = Math.round((parseFloat(input.val()) * multiplier) * Math.pow(10, presicion)) / Math.pow(10, presicion);
} }
} }
}
return mspHelper.setSetting(settingName, value); return mspHelper.setSetting(settingName, value);
}; };
self.countDecimals = function(value) {
let text = value.toString()
// verify if number 0.000005 is represented as "5e-6"
if (text.indexOf('e-') > -1) {
let [base, trail] = text.split('e-');
let deg = parseInt(trail, 10);
return deg;
}
// count decimals for number in representation like "0.123456"
if (Math.floor(value) !== value) {
return value.toString().split(".")[1].length || 0;
}
return 0;
};
self.saveInputs = function() { self.saveInputs = function() {
var inputs = []; var inputs = [];
$('[data-setting!=""][data-setting]').each(function() { $('[data-setting!=""][data-setting]').each(function() {

View file

@ -2010,6 +2010,10 @@ select {
padding: 1px; padding: 1px;
} }
.lc_disabled {
color: #aaa;
}
.ic_osd { .ic_osd {
background-image: url("../images/icons/icon_osd.svg"); background-image: url("../images/icons/icon_osd.svg");
background-position-y: 4px; background-position-y: 4px;

View file

@ -657,7 +657,7 @@ function updateActivatedTab() {
function updateFirmwareVersion() { function updateFirmwareVersion() {
if (CONFIGURATOR.connectionValid) { if (CONFIGURATOR.connectionValid) {
$('#logo .firmware_version').text(CONFIG.flightControllerVersion); $('#logo .firmware_version').text(CONFIG.flightControllerVersion + " [" + CONFIG.target + "]");
} else { } else {
$('#logo .firmware_version').text(chrome.i18n.getMessage('fcNotConnected')); $('#logo .firmware_version').text(chrome.i18n.getMessage('fcNotConnected'));
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more