Merge branch 'master' of https://github.com/iNavFlight/inav-configurator into submit-gps-fix-estimation
|
@ -1302,6 +1302,9 @@
|
||||||
"portsFunction_MSP_DISPLAYPORT": {
|
"portsFunction_MSP_DISPLAYPORT": {
|
||||||
"message": "MSP DisplayPort"
|
"message": "MSP DisplayPort"
|
||||||
},
|
},
|
||||||
|
"portsFunction_SBUS_OUTPUT": {
|
||||||
|
"message": "SBus Output"
|
||||||
|
},
|
||||||
"pidTuning_ShowAllPIDs": {
|
"pidTuning_ShowAllPIDs": {
|
||||||
"message": "Show all PIDs"
|
"message": "Show all PIDs"
|
||||||
},
|
},
|
||||||
|
@ -2220,7 +2223,7 @@
|
||||||
"message": "Blackbox configuration"
|
"message": "Blackbox configuration"
|
||||||
},
|
},
|
||||||
"blackboxButtonSave": {
|
"blackboxButtonSave": {
|
||||||
"message": "Save and reboot"
|
"message": "Save and Reboot"
|
||||||
},
|
},
|
||||||
"serialLogging": {
|
"serialLogging": {
|
||||||
"message": "Outboard serial logging device"
|
"message": "Outboard serial logging device"
|
||||||
|
@ -4295,8 +4298,8 @@
|
||||||
"missionMultiAddNewMission": {
|
"missionMultiAddNewMission": {
|
||||||
"message": "Add New Mission"
|
"message": "Add New Mission"
|
||||||
},
|
},
|
||||||
"missionLevelEarthDEMModel": {
|
"missionEllipsoidEarthDEMModel": {
|
||||||
"message": "Use Sea Level Earth DEM Model: "
|
"message": "Use Ellipsoid instead of SL DEM: "
|
||||||
},
|
},
|
||||||
"SafehomeLegend": {
|
"SafehomeLegend": {
|
||||||
"message": "Legend : "
|
"message": "Legend : "
|
||||||
|
@ -4452,7 +4455,7 @@
|
||||||
"message": "Confirm"
|
"message": "Confirm"
|
||||||
},
|
},
|
||||||
"mixerButtonSaveAndReboot": {
|
"mixerButtonSaveAndReboot": {
|
||||||
"message": "Save and reboot"
|
"message": "Save and Reboot"
|
||||||
},
|
},
|
||||||
"mixerApplyDescription": {
|
"mixerApplyDescription": {
|
||||||
"message": "This action overrides all current mixer settings and replaces them with default values. There is no 'Undo' option!"
|
"message": "This action overrides all current mixer settings and replaces them with default values. There is no 'Undo' option!"
|
||||||
|
|
|
@ -39,56 +39,44 @@ helper.defaultsDialog = (function () {
|
||||||
value: "DSHOT300"
|
value: "DSHOT300"
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
Filtering
|
Ez Tune setup
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
key: "gyro_main_lpf_hz",
|
key: "ez_enabled",
|
||||||
|
value: "ON"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "ez_filter_hz",
|
||||||
value: 90
|
value: 90
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "gyro_main_lpf_type",
|
key: "ez_axis_ratio",
|
||||||
value: "PT1"
|
value: 116
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dterm_lpf_hz",
|
key: "ez_response",
|
||||||
value: 85
|
value: 71
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dterm_lpf_type",
|
key: "ez_damping",
|
||||||
value: "PT3"
|
value: 103
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dterm_lpf2_hz",
|
key: "ez_stability",
|
||||||
value: 0
|
value: 105
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dterm_lpf2_type",
|
key: "ez_aggressiveness",
|
||||||
value: "PT1"
|
value: 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dynamic_gyro_notch_enabled",
|
key: "ez_rate",
|
||||||
value: "ON"
|
value: 134
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "dynamic_gyro_notch_q",
|
key: "ez_expo",
|
||||||
value: 250
|
value: 118
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: "dynamic_gyro_notch_min_hz",
|
|
||||||
value: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "setpoint_kalman_enabled",
|
|
||||||
value: "ON"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "setpoint_kalman_q",
|
|
||||||
value: 200
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "smith_predictor_delay", // Enable Smith Predictor
|
|
||||||
value: 1.5
|
|
||||||
},
|
|
||||||
/*
|
/*
|
||||||
Mechanics
|
Mechanics
|
||||||
*/
|
*/
|
||||||
|
@ -120,64 +108,6 @@ helper.defaultsDialog = (function () {
|
||||||
key: "antigravity_accelerator",
|
key: "antigravity_accelerator",
|
||||||
value: 5
|
value: 5
|
||||||
},
|
},
|
||||||
/*
|
|
||||||
Rates
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
key: "rc_yaw_expo",
|
|
||||||
value: 75
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "rc_expo",
|
|
||||||
value: 75
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "roll_rate",
|
|
||||||
value: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "pitch_rate",
|
|
||||||
value: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "yaw_rate",
|
|
||||||
value: 60
|
|
||||||
},
|
|
||||||
/*
|
|
||||||
PIDs
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
key: "mc_p_pitch",
|
|
||||||
value: 32
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_i_pitch",
|
|
||||||
value: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_d_pitch",
|
|
||||||
value: 25
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_p_roll",
|
|
||||||
value: 28
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_i_roll",
|
|
||||||
value: 80
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_d_roll",
|
|
||||||
value: 23
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_p_yaw",
|
|
||||||
value: 30
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "mc_i_yaw",
|
|
||||||
value: 80
|
|
||||||
},
|
|
||||||
/*
|
/*
|
||||||
* TPA
|
* TPA
|
||||||
*/
|
*/
|
||||||
|
@ -270,14 +200,6 @@ helper.defaultsDialog = (function () {
|
||||||
key: "dterm_lpf_type",
|
key: "dterm_lpf_type",
|
||||||
value: "PT3"
|
value: "PT3"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: "dterm_lpf2_hz",
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "dterm_lpf2_type",
|
|
||||||
value: "PT1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: "dynamic_gyro_notch_enabled",
|
key: "dynamic_gyro_notch_enabled",
|
||||||
value: "ON"
|
value: "ON"
|
||||||
|
@ -413,6 +335,11 @@ helper.defaultsDialog = (function () {
|
||||||
{
|
{
|
||||||
key: "failsafe_procedure",
|
key: "failsafe_procedure",
|
||||||
value: "DROP"
|
value: "DROP"
|
||||||
|
},
|
||||||
|
// Ez Tune
|
||||||
|
{
|
||||||
|
key: "ez_filter_hz",
|
||||||
|
value: 110
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -461,14 +388,6 @@ helper.defaultsDialog = (function () {
|
||||||
key: "dterm_lpf_type",
|
key: "dterm_lpf_type",
|
||||||
value: "PT3"
|
value: "PT3"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: "dterm_lpf2_hz",
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "dterm_lpf2_type",
|
|
||||||
value: "PT1"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: "dynamic_gyro_notch_enabled",
|
key: "dynamic_gyro_notch_enabled",
|
||||||
value: "ON"
|
value: "ON"
|
||||||
|
@ -608,6 +527,11 @@ helper.defaultsDialog = (function () {
|
||||||
{
|
{
|
||||||
key: "failsafe_procedure",
|
key: "failsafe_procedure",
|
||||||
value: "DROP"
|
value: "DROP"
|
||||||
|
},
|
||||||
|
// Ez Tune
|
||||||
|
{
|
||||||
|
key: "ez_filter_hz",
|
||||||
|
value: 90
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -794,10 +718,6 @@ helper.defaultsDialog = (function () {
|
||||||
key: "nav_rth_altitude",
|
key: "nav_rth_altitude",
|
||||||
value: 5000
|
value: 5000
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: "failsafe_mission",
|
|
||||||
value: "ON"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: "nav_wp_radius",
|
key: "nav_wp_radius",
|
||||||
value: 5000
|
value: 5000
|
||||||
|
@ -1007,10 +927,6 @@ helper.defaultsDialog = (function () {
|
||||||
key: "nav_rth_altitude",
|
key: "nav_rth_altitude",
|
||||||
value: 5000
|
value: 5000
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: "failsafe_mission",
|
|
||||||
value: "ON"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: "nav_wp_radius",
|
key: "nav_wp_radius",
|
||||||
value: 5000
|
value: 5000
|
||||||
|
@ -1169,86 +1085,94 @@ helper.defaultsDialog = (function () {
|
||||||
privateScope.setSettings = function (selectedDefaultPreset) {
|
privateScope.setSettings = function (selectedDefaultPreset) {
|
||||||
var currentControlProfile = parseInt($("#profilechange").val());
|
var currentControlProfile = parseInt($("#profilechange").val());
|
||||||
var currentBatteryProfile = parseInt($("#batteryprofilechange").val());
|
var currentBatteryProfile = parseInt($("#batteryprofilechange").val());
|
||||||
|
|
||||||
|
var controlProfileSettings = [];
|
||||||
|
var batterySettings = [];
|
||||||
|
var miscSettings = [];
|
||||||
|
|
||||||
|
selectedDefaultPreset.settings.forEach(input => {
|
||||||
|
if (FC.isControlProfileParameter(input.key)) {
|
||||||
|
controlProfileSettings.push(input);
|
||||||
|
} else if (FC.isBatteryProfileParameter(input.key)) {
|
||||||
|
batterySettings.push(input);
|
||||||
|
} else {
|
||||||
|
miscSettings.push(input);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//Save analytics
|
//Save analytics
|
||||||
googleAnalytics.sendEvent('Setting', 'Defaults', selectedDefaultPreset.title);
|
googleAnalytics.sendEvent('Setting', 'Defaults', selectedDefaultPreset.title);
|
||||||
Promise.mapSeries(selectedDefaultPreset.settings, function (input, ii) {
|
|
||||||
return mspHelper.getSetting(input.key);
|
var settingsChainer = MSPChainerClass();
|
||||||
}).then(function () {
|
var chain = [];
|
||||||
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);
|
|
||||||
}
|
|
||||||
}).then(function () {
|
|
||||||
|
|
||||||
// If default preset is associated to a mixer, apply the mixer as well
|
miscSettings.forEach(input => {
|
||||||
if (selectedDefaultPreset.mixerToApply) {
|
chain.push(function (callback) {
|
||||||
let currentMixerPreset = helper.mixer.getById(selectedDefaultPreset.mixerToApply);
|
mspHelper.setSetting(input.key, input.value, callback);
|
||||||
|
|
||||||
helper.mixer.loadServoRules(currentMixerPreset);
|
|
||||||
helper.mixer.loadMotorRules(currentMixerPreset);
|
|
||||||
|
|
||||||
MIXER_CONFIG.platformType = currentMixerPreset.platform;
|
|
||||||
MIXER_CONFIG.appliedMixerPreset = selectedDefaultPreset.mixerToApply;
|
|
||||||
MIXER_CONFIG.motorStopOnLow = (currentMixerPreset.motorStopOnLow === true) ? true : false;
|
|
||||||
MIXER_CONFIG.hasFlaps = (currentMixerPreset.hasFlaps === true) ? true : false;
|
|
||||||
|
|
||||||
SERVO_RULES.cleanup();
|
|
||||||
SERVO_RULES.inflate();
|
|
||||||
MOTOR_RULES.cleanup();
|
|
||||||
MOTOR_RULES.inflate();
|
|
||||||
|
|
||||||
mspHelper.saveMixerConfig(function() {
|
|
||||||
mspHelper.sendServoMixer(function () {
|
|
||||||
mspHelper.sendMotorMixer(function () {
|
|
||||||
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 {
|
|
||||||
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) {
|
for (var i = 0; i < 3; i++ ) {
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [0], false, function () {
|
chain.push(function (callback) {
|
||||||
mspHelper.setSetting(key, value, function() {
|
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [i], false, callback);
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [1], false, function () {
|
});
|
||||||
mspHelper.setSetting(key, value, function() {
|
controlProfileSettings.forEach(input => {
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [2], false, function () {
|
chain.push(function (callback) {
|
||||||
mspHelper.setSetting(key, value);
|
mspHelper.setSetting(input.key, input.value, callback);
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < 3; i++ ) {
|
||||||
|
chain.push(function (callback) {
|
||||||
|
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [i], false, callback);
|
||||||
|
});
|
||||||
|
batterySettings.forEach(input => {
|
||||||
|
chain.push(function (callback) {
|
||||||
|
mspHelper.setSetting(input.key, input.value, callback);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set Mixers
|
||||||
|
if (selectedDefaultPreset.mixerToApply) {
|
||||||
|
let currentMixerPreset = helper.mixer.getById(selectedDefaultPreset.mixerToApply);
|
||||||
|
|
||||||
|
helper.mixer.loadServoRules(currentMixerPreset);
|
||||||
|
helper.mixer.loadMotorRules(currentMixerPreset);
|
||||||
|
|
||||||
|
MIXER_CONFIG.platformType = currentMixerPreset.platform;
|
||||||
|
MIXER_CONFIG.appliedMixerPreset = selectedDefaultPreset.mixerToApply;
|
||||||
|
MIXER_CONFIG.motorStopOnLow = (currentMixerPreset.motorStopOnLow === true) ? true : false;
|
||||||
|
MIXER_CONFIG.hasFlaps = (currentMixerPreset.hasFlaps === true) ? true : false;
|
||||||
|
|
||||||
|
SERVO_RULES.cleanup();
|
||||||
|
SERVO_RULES.inflate();
|
||||||
|
MOTOR_RULES.cleanup();
|
||||||
|
MOTOR_RULES.inflate();
|
||||||
|
|
||||||
|
chain = chain.concat([
|
||||||
|
mspHelper.saveMixerConfig,
|
||||||
|
mspHelper.sendServoMixer,
|
||||||
|
mspHelper.sendMotorMixer
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
chain.push(function (callback) {
|
||||||
|
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [currentControlProfile], false, callback);
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
};
|
chain.push(function (callback) {
|
||||||
|
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [currentBatteryProfile], false, callback);
|
||||||
|
});
|
||||||
|
|
||||||
|
settingsChainer.setChain(chain);
|
||||||
|
settingsChainer.setExitPoint(function () {
|
||||||
|
privateScope.finalize(selectedDefaultPreset);
|
||||||
|
});
|
||||||
|
|
||||||
|
settingsChainer.execute();
|
||||||
|
}
|
||||||
|
|
||||||
privateScope.onPresetClick = function (event) {
|
privateScope.onPresetClick = function (event) {
|
||||||
savingDefaultsModal = new jBox('Modal', {
|
savingDefaultsModal = new jBox('Modal', {
|
||||||
|
|
14
js/fc.js
|
@ -118,9 +118,9 @@ var FC = {
|
||||||
i2cError: 0,
|
i2cError: 0,
|
||||||
activeSensors: 0,
|
activeSensors: 0,
|
||||||
mode: [],
|
mode: [],
|
||||||
mixer_profile: 0,
|
mixer_profile: -1,
|
||||||
profile: 0,
|
profile: -1,
|
||||||
battery_profile: 0,
|
battery_profile: -1,
|
||||||
uid: [0, 0, 0],
|
uid: [0, 0, 0],
|
||||||
accelerometerTrims: [0, 0],
|
accelerometerTrims: [0, 0],
|
||||||
armingFlags: 0,
|
armingFlags: 0,
|
||||||
|
@ -1243,6 +1243,12 @@ var FC = {
|
||||||
hasOperand: [true, false],
|
hasOperand: [true, false],
|
||||||
output: "boolean"
|
output: "boolean"
|
||||||
},
|
},
|
||||||
|
54: {
|
||||||
|
name: "Mag calibration",
|
||||||
|
operandType: "Set Flight Parameter",
|
||||||
|
hasOperand: [false, false],
|
||||||
|
output: "boolean"
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getOperandTypes: function () {
|
getOperandTypes: function () {
|
||||||
|
@ -1445,8 +1451,6 @@ var FC = {
|
||||||
'max_angle_inclination_pit',
|
'max_angle_inclination_pit',
|
||||||
'dterm_lpf_hz',
|
'dterm_lpf_hz',
|
||||||
'dterm_lpf_type',
|
'dterm_lpf_type',
|
||||||
'dterm_lpf2_hz',
|
|
||||||
'dterm_lpf2_type',
|
|
||||||
'yaw_lpf_hz',
|
'yaw_lpf_hz',
|
||||||
'fw_iterm_throw_limit',
|
'fw_iterm_throw_limit',
|
||||||
'fw_reference_airspeed',
|
'fw_reference_airspeed',
|
||||||
|
|
|
@ -260,10 +260,16 @@ GUI_control.prototype.updateStatusBar = function() {
|
||||||
$('span.arming-flags').text(activeArmFlags.length ? activeArmFlags.join(', ') : '-');
|
$('span.arming-flags').text(activeArmFlags.length ? activeArmFlags.join(', ') : '-');
|
||||||
};
|
};
|
||||||
|
|
||||||
GUI_control.prototype.updateProfileChange = function() {
|
GUI_control.prototype.updateProfileChange = function(refresh) {
|
||||||
$('#mixerprofilechange').val(CONFIG.mixer_profile);
|
$('#mixerprofilechange').val(CONFIG.mixer_profile);
|
||||||
$('#profilechange').val(CONFIG.profile);
|
$('#profilechange').val(CONFIG.profile);
|
||||||
$('#batteryprofilechange').val(CONFIG.battery_profile);
|
$('#batteryprofilechange').val(CONFIG.battery_profile);
|
||||||
|
if (refresh) {
|
||||||
|
GUI.log(chrome.i18n.getMessage('loadedMixerProfile', [CONFIG.mixer_profile + 1]));
|
||||||
|
GUI.log(chrome.i18n.getMessage('pidTuning_LoadedProfile', [CONFIG.profile + 1]));
|
||||||
|
GUI.log(chrome.i18n.getMessage('loadedBatteryProfile', [CONFIG.battery_profile + 1]));
|
||||||
|
updateActivatedTab();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GUI_control.prototype.fillSelect = function ($element, values, currentValue, unit) {
|
GUI_control.prototype.fillSelect = function ($element, values, currentValue, unit) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ var mspHelper = (function (gui) {
|
||||||
'GSM_SMS': 19,
|
'GSM_SMS': 19,
|
||||||
'FRSKY_OSD': 20,
|
'FRSKY_OSD': 20,
|
||||||
'DJI_FPV': 21,
|
'DJI_FPV': 21,
|
||||||
|
'SBUS_OUTPUT': 22,
|
||||||
'SMARTPORT_MASTER': 23,
|
'SMARTPORT_MASTER': 23,
|
||||||
'MSP_DISPLAYPORT': 25,
|
'MSP_DISPLAYPORT': 25,
|
||||||
};
|
};
|
||||||
|
@ -68,6 +69,7 @@ var mspHelper = (function (gui) {
|
||||||
color;
|
color;
|
||||||
if (!dataHandler.unsupported || dataHandler.unsupported) switch (dataHandler.code) {
|
if (!dataHandler.unsupported || dataHandler.unsupported) switch (dataHandler.code) {
|
||||||
case MSPCodes.MSPV2_INAV_STATUS:
|
case MSPCodes.MSPV2_INAV_STATUS:
|
||||||
|
let profile_changed = false;
|
||||||
CONFIG.cycleTime = data.getUint16(offset, true);
|
CONFIG.cycleTime = data.getUint16(offset, true);
|
||||||
offset += 2;
|
offset += 2;
|
||||||
CONFIG.i2cError = data.getUint16(offset, true);
|
CONFIG.i2cError = data.getUint16(offset, true);
|
||||||
|
@ -76,15 +78,28 @@ var mspHelper = (function (gui) {
|
||||||
offset += 2;
|
offset += 2;
|
||||||
CONFIG.cpuload = data.getUint16(offset, true);
|
CONFIG.cpuload = data.getUint16(offset, true);
|
||||||
offset += 2;
|
offset += 2;
|
||||||
|
|
||||||
profile_byte = data.getUint8(offset++)
|
profile_byte = data.getUint8(offset++)
|
||||||
CONFIG.profile = profile_byte & 0x0F;
|
let profile = profile_byte & 0x0F;
|
||||||
CONFIG.battery_profile = (profile_byte & 0xF0) >> 4;
|
profile_changed |= (profile !== CONFIG.profile) && (CONFIG.profile !==-1);
|
||||||
profile_byte = data.getUint8(offset++)
|
CONFIG.profile = profile;
|
||||||
CONFIG.mixer_profile = profile_byte & 0x0F;
|
|
||||||
|
let battery_profile = (profile_byte & 0xF0) >> 4;
|
||||||
|
profile_changed |= (battery_profile !== CONFIG.battery_profile) && (CONFIG.battery_profile !==-1);
|
||||||
|
CONFIG.battery_profile = battery_profile;
|
||||||
|
|
||||||
CONFIG.armingFlags = data.getUint32(offset, true);
|
CONFIG.armingFlags = data.getUint32(offset, true);
|
||||||
offset += 4;
|
offset += 4;
|
||||||
|
|
||||||
|
//As there are 8 bytes for mspBoxModeFlags (number of bytes is actually variable)
|
||||||
|
//read mixer profile as the last byte in the the message
|
||||||
|
profile_byte = data.getUint8(dataHandler.message_length_expected - 1);
|
||||||
|
let mixer_profile = profile_byte & 0x0F;
|
||||||
|
profile_changed |= (mixer_profile !== CONFIG.mixer_profile) && (CONFIG.mixer_profile !==-1);
|
||||||
|
CONFIG.mixer_profile = mixer_profile;
|
||||||
|
|
||||||
gui.updateStatusBar();
|
gui.updateStatusBar();
|
||||||
gui.updateProfileChange();
|
gui.updateProfileChange(profile_changed);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSPCodes.MSP_ACTIVEBOXES:
|
case MSPCodes.MSP_ACTIVEBOXES:
|
||||||
|
@ -1482,6 +1497,9 @@ var mspHelper = (function (gui) {
|
||||||
case MSPCodes.MSP2_INAV_OSD_SET_PREFERENCES:
|
case MSPCodes.MSP2_INAV_OSD_SET_PREFERENCES:
|
||||||
console.log('OSD preferences saved');
|
console.log('OSD preferences saved');
|
||||||
break;
|
break;
|
||||||
|
case MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE:
|
||||||
|
console.log('Battery profile selected');
|
||||||
|
break;
|
||||||
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING:
|
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING:
|
||||||
OUTPUT_MAPPING.flush();
|
OUTPUT_MAPPING.flush();
|
||||||
for (i = 0; i < data.byteLength; ++i)
|
for (i = 0; i < data.byteLength; ++i)
|
||||||
|
@ -2910,7 +2928,7 @@ var mspHelper = (function (gui) {
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE, false, false, callback);
|
MSP.send_message(MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE, false, false, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.sendTimerOutputModes = function(callback) {
|
self.sendTimerOutputModes = function(onCompleteCallback) {
|
||||||
var nextFunction = send_next_output_mode;
|
var nextFunction = send_next_output_mode;
|
||||||
var idIndex = 0;
|
var idIndex = 0;
|
||||||
|
|
||||||
|
@ -2935,7 +2953,7 @@ var mspHelper = (function (gui) {
|
||||||
// prepare for next iteration
|
// prepare for next iteration
|
||||||
idIndex++;
|
idIndex++;
|
||||||
if (idIndex == overrideIds.length) {
|
if (idIndex == overrideIds.length) {
|
||||||
nextFunction = callback;
|
nextFunction = onCompleteCallback;
|
||||||
|
|
||||||
}
|
}
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction);
|
MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction);
|
||||||
|
@ -3297,6 +3315,12 @@ var mspHelper = (function (gui) {
|
||||||
|
|
||||||
self.encodeSetting = function (name, value) {
|
self.encodeSetting = function (name, value) {
|
||||||
return this._getSetting(name).then(function (setting) {
|
return this._getSetting(name).then(function (setting) {
|
||||||
|
|
||||||
|
if (!setting) {
|
||||||
|
console.log("Setting invalid: " + name);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (setting.table && !Number.isInteger(value)) {
|
if (setting.table && !Number.isInteger(value)) {
|
||||||
var found = false;
|
var found = false;
|
||||||
for (var ii = 0; ii < setting.table.values.length; ii++) {
|
for (var ii = 0; ii < setting.table.values.length; ii++) {
|
||||||
|
@ -3344,7 +3368,11 @@ var mspHelper = (function (gui) {
|
||||||
|
|
||||||
self.setSetting = function (name, value, callback) {
|
self.setSetting = function (name, value, callback) {
|
||||||
this.encodeSetting(name, value).then(function (data) {
|
this.encodeSetting(name, value).then(function (data) {
|
||||||
return MSP.promise(MSPCodes.MSPV2_SET_SETTING, data).then(callback);
|
if (data) {
|
||||||
|
return MSP.promise(MSPCodes.MSPV2_SET_SETTING, data).then(callback);
|
||||||
|
} else {
|
||||||
|
return Promise.resolve().then(callback);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,16 @@ PortHandler.initialize = function () {
|
||||||
PortHandler.check = function () {
|
PortHandler.check = function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
ConnectionSerial.getDevices(function(current_ports) {
|
ConnectionSerial.getDevices(function(all_ports) {
|
||||||
|
|
||||||
|
// filter out ports that are not serial
|
||||||
|
let current_ports = [];
|
||||||
|
for (var i = 0; i < all_ports.length; i++) {
|
||||||
|
if (all_ports[i].indexOf(':') === -1) {
|
||||||
|
current_ports.push(all_ports[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// port got removed or initial_ports wasn't initialized yet
|
// port got removed or initial_ports wasn't initialized yet
|
||||||
if (self.array_difference(self.initial_ports, current_ports).length > 0 || !self.initial_ports) {
|
if (self.array_difference(self.initial_ports, current_ports).length > 0 || !self.initial_ports) {
|
||||||
var removed_ports = self.array_difference(self.initial_ports, current_ports);
|
var removed_ports = self.array_difference(self.initial_ports, current_ports);
|
||||||
|
|
|
@ -257,6 +257,7 @@ function onValidFirmware()
|
||||||
|
|
||||||
$('#tabs ul.mode-connected .tab_setup a').click();
|
$('#tabs ul.mode-connected .tab_setup a').click();
|
||||||
|
|
||||||
|
updateEzTuneTabVisibility(true);
|
||||||
updateFirmwareVersion();
|
updateFirmwareVersion();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -139,7 +139,7 @@ let Waypoint = function (number, action, lat, lon, alt=0, p1=0, p2=0, p3=0, endM
|
||||||
self.getElevation = async function (globalSettings) {
|
self.getElevation = async function (globalSettings) {
|
||||||
let elevation = "N/A";
|
let elevation = "N/A";
|
||||||
if (globalSettings.mapProviderType == 'bing') {
|
if (globalSettings.mapProviderType == 'bing') {
|
||||||
let elevationEarthModel = $('#elevationEarthModel').prop("checked") ? "sealevel" : "ellipsoid";
|
let elevationEarthModel = $('#elevationEarthModel').prop("checked") ? "ellipsoid" : "sealevel";
|
||||||
|
|
||||||
const response = await fetch('http://dev.virtualearth.net/REST/v1/Elevation/List?points='+self.getLatMap()+','+self.getLonMap()+'&heights='+elevationEarthModel+'&key='+globalSettings.mapApiKey);
|
const response = await fetch('http://dev.virtualearth.net/REST/v1/Elevation/List?points='+self.getLatMap()+','+self.getLonMap()+'&heights='+elevationEarthModel+'&key='+globalSettings.mapApiKey);
|
||||||
const myJson = await response.json();
|
const myJson = await response.json();
|
||||||
|
|
27
main.js
|
@ -567,7 +567,6 @@ $(document).ready(function () {
|
||||||
var profile = parseInt($(this).val());
|
var profile = parseInt($(this).val());
|
||||||
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [profile], false, function () {
|
MSP.send_message(MSPCodes.MSP_SELECT_SETTING, [profile], false, function () {
|
||||||
GUI.log(chrome.i18n.getMessage('pidTuning_LoadedProfile', [profile + 1]));
|
GUI.log(chrome.i18n.getMessage('pidTuning_LoadedProfile', [profile + 1]));
|
||||||
updateActivatedTab();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -577,7 +576,6 @@ $(document).ready(function () {
|
||||||
var batteryprofile = parseInt($(this).val());
|
var batteryprofile = parseInt($(this).val());
|
||||||
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [batteryprofile], false, function () {
|
MSP.send_message(MSPCodes.MSP2_INAV_SELECT_BATTERY_PROFILE, [batteryprofile], false, function () {
|
||||||
GUI.log(chrome.i18n.getMessage('loadedBatteryProfile', [batteryprofile + 1]));
|
GUI.log(chrome.i18n.getMessage('loadedBatteryProfile', [batteryprofile + 1]));
|
||||||
updateActivatedTab();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -717,3 +715,28 @@ function updateFirmwareVersion() {
|
||||||
globalSettings.docsTreeLocation = 'https://github.com/iNavFlight/inav/blob/master/docs/';
|
globalSettings.docsTreeLocation = 'https://github.com/iNavFlight/inav/blob/master/docs/';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateEzTuneTabVisibility(loadMixerConfig) {
|
||||||
|
let useEzTune = true;
|
||||||
|
if (CONFIGURATOR.connectionValid) {
|
||||||
|
if (loadMixerConfig) {
|
||||||
|
mspHelper.loadMixerConfig(function() {
|
||||||
|
if (MIXER_CONFIG.platformType == PLATFORM_MULTIROTOR || MIXER_CONFIG.platformType == PLATFORM_TRICOPTER) {
|
||||||
|
$('.tab_ez_tune').removeClass("is-hidden");
|
||||||
|
} else {
|
||||||
|
$('.tab_ez_tune').addClass("is-hidden");
|
||||||
|
useEzTune = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (MIXER_CONFIG.platformType == PLATFORM_MULTIROTOR || MIXER_CONFIG.platformType == PLATFORM_TRICOPTER) {
|
||||||
|
$('.tab_ez_tune').removeClass("is-hidden");
|
||||||
|
} else {
|
||||||
|
$('.tab_ez_tune').addClass("is-hidden");
|
||||||
|
useEzTune = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return useEzTune;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"minimum_chrome_version": "38",
|
"minimum_chrome_version": "38",
|
||||||
"version": "7.0.0",
|
"version": "8.0.0",
|
||||||
"author": "Several",
|
"author": "Several",
|
||||||
"name": "INAV - Configurator",
|
"name": "INAV - Configurator",
|
||||||
"short_name": "INAV",
|
"short_name": "INAV",
|
||||||
|
|
8642
package-lock.json
generated
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "inav-configurator",
|
"name": "inav-configurator",
|
||||||
"description": "INAV Configurator",
|
"description": "INAV Configurator",
|
||||||
"version": "7.0.0",
|
"version": "7.0.1",
|
||||||
"main": "main.html",
|
"main": "main.html",
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
"jquery-ui-npm": "1.12.0",
|
"jquery-ui-npm": "1.12.0",
|
||||||
"marked": "^0.3.17",
|
"marked": "^0.3.17",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"nw": "^0.61.0-sdk",
|
"nw": "^0.81.0",
|
||||||
"nw-dialog": "^1.0.7",
|
"nw-dialog": "^1.0.7",
|
||||||
"openlayers": "^4.6.5",
|
"openlayers": "^4.6.5",
|
||||||
"plotly": "^1.0.6",
|
"plotly": "^1.0.6",
|
||||||
|
|
|
@ -1,44 +1,121 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!-- Public domain (CC-BY-SA if you or your laws insist), generated by Jonathan Hudson's svg_model_motors.rb -->
|
<!-- Public domain (CC-BY-SA if you or your laws insist), generated by Jonathan Hudson's svg_model_motors.rb -->
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200pt" height="200pt" viewBox="0 0 200 200" version="1.1">
|
|
||||||
<defs>
|
<svg
|
||||||
<g>
|
width="200pt"
|
||||||
<symbol overflow="visible" id="glyph0-0">
|
height="200pt"
|
||||||
<path style="stroke:none;" d=""/>
|
viewBox="0 0 200 200"
|
||||||
</symbol>
|
version="1.1"
|
||||||
<symbol overflow="visible" id="glyph0-1">
|
id="svg52"
|
||||||
<path style="stroke:none;" d="M 2.679688 -13.863281 L 2.679688 -15.75 C 4.457031 -15.921875 5.695312 -16.210938 6.398438 -16.617188 C 7.101562 -17.023438 7.625 -17.984375 7.96875 -19.496094 L 9.914062 -19.496094 L 9.914062 0 L 7.289062 0 L 7.289062 -13.863281 Z M 2.679688 -13.863281 "/>
|
sodipodi:docname="quad_x.svg"
|
||||||
</symbol>
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
<symbol overflow="visible" id="glyph0-2">
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
<path style="stroke:none;" d="M 1.921875 -4.402344 C 2.527344 -5.652344 3.710938 -6.785156 5.46875 -7.804688 L 8.09375 -9.324219 C 9.269531 -10.007812 10.09375 -10.589844 10.570312 -11.074219 C 11.316406 -11.832031 11.6875 -12.695312 11.6875 -13.671875 C 11.6875 -14.8125 11.347656 -15.714844 10.664062 -16.386719 C 9.980469 -17.054688 9.070312 -17.390625 7.929688 -17.390625 C 6.242188 -17.390625 5.078125 -16.753906 4.429688 -15.476562 C 4.082031 -14.792969 3.890625 -13.84375 3.855469 -12.632812 L 1.351562 -12.632812 C 1.378906 -14.335938 1.695312 -15.726562 2.296875 -16.804688 C 3.363281 -18.699219 5.246094 -19.648438 7.945312 -19.648438 C 10.1875 -19.648438 11.824219 -19.039062 12.859375 -17.828125 C 13.894531 -16.617188 14.410156 -15.265625 14.410156 -13.78125 C 14.410156 -12.214844 13.859375 -10.875 12.757812 -9.761719 C 12.117188 -9.113281 10.972656 -8.332031 9.324219 -7.410156 L 7.453125 -6.371094 C 6.558594 -5.878906 5.855469 -5.410156 5.34375 -4.960938 C 4.433594 -4.167969 3.859375 -3.289062 3.625 -2.324219 L 14.3125 -2.324219 L 14.3125 0 L 0.875 0 C 0.964844 -1.6875 1.316406 -3.152344 1.921875 -4.402344 Z M 1.921875 -4.402344 "/>
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
</symbol>
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
<symbol overflow="visible" id="glyph0-3">
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<path style="stroke:none;" d="M 2.234375 -1.375 C 1.191406 -2.644531 0.671875 -4.191406 0.671875 -6.015625 L 3.242188 -6.015625 C 3.351562 -4.75 3.585938 -3.828125 3.953125 -3.253906 C 4.589844 -2.222656 5.742188 -1.710938 7.410156 -1.710938 C 8.703125 -1.710938 9.742188 -2.054688 10.527344 -2.75 C 11.3125 -3.441406 11.703125 -4.335938 11.703125 -5.429688 C 11.703125 -6.777344 11.289062 -7.71875 10.464844 -8.257812 C 9.640625 -8.796875 8.496094 -9.0625 7.027344 -9.0625 C 6.863281 -9.0625 6.695312 -9.0625 6.527344 -9.058594 C 6.359375 -9.054688 6.1875 -9.046875 6.015625 -9.039062 L 6.015625 -11.210938 C 6.269531 -11.183594 6.484375 -11.164062 6.65625 -11.15625 C 6.832031 -11.148438 7.019531 -11.140625 7.21875 -11.140625 C 8.140625 -11.140625 8.894531 -11.289062 9.488281 -11.578125 C 10.527344 -12.089844 11.046875 -13 11.046875 -14.3125 C 11.046875 -15.289062 10.699219 -16.042969 10.007812 -16.570312 C 9.316406 -17.097656 8.507812 -17.363281 7.585938 -17.363281 C 5.945312 -17.363281 4.8125 -16.816406 4.183594 -15.722656 C 3.835938 -15.121094 3.640625 -14.265625 3.59375 -13.152344 L 1.164062 -13.152344 C 1.164062 -14.609375 1.453125 -15.851562 2.039062 -16.871094 C 3.039062 -18.695312 4.804688 -19.605469 7.328125 -19.605469 C 9.324219 -19.605469 10.867188 -19.160156 11.960938 -18.273438 C 13.054688 -17.382812 13.601562 -16.097656 13.601562 -14.410156 C 13.601562 -13.207031 13.28125 -12.230469 12.632812 -11.484375 C 12.230469 -11.019531 11.710938 -10.65625 11.074219 -10.390625 C 12.105469 -10.109375 12.910156 -9.5625 13.488281 -8.757812 C 14.066406 -7.949219 14.355469 -6.964844 14.355469 -5.796875 C 14.355469 -3.929688 13.742188 -2.40625 12.507812 -1.230469 C 11.277344 -0.0546875 9.535156 0.53125 7.273438 0.53125 C 4.957031 0.53125 3.277344 -0.101562 2.234375 -1.375 Z M 2.234375 -1.375 "/>
|
<sodipodi:namedview
|
||||||
</symbol>
|
id="namedview54"
|
||||||
<symbol overflow="visible" id="glyph0-4">
|
pagecolor="#ffffff"
|
||||||
<path style="stroke:none;" d="M 9.257812 -6.929688 L 9.257812 -15.804688 L 2.980469 -6.929688 Z M 9.296875 0 L 9.296875 -4.785156 L 0.710938 -4.785156 L 0.710938 -7.191406 L 9.679688 -19.632812 L 11.757812 -19.632812 L 11.757812 -6.929688 L 14.640625 -6.929688 L 14.640625 -4.785156 L 11.757812 -4.785156 L 11.757812 0 Z M 9.296875 0 "/>
|
bordercolor="#666666"
|
||||||
</symbol>
|
borderopacity="1.0"
|
||||||
</g>
|
inkscape:pageshadow="2"
|
||||||
</defs>
|
inkscape:pageopacity="0.0"
|
||||||
<g id="surface11">
|
inkscape:pagecheckerboard="0"
|
||||||
<path style="fill:none;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(72.941176%,72.941176%,72.941176%);stroke-opacity:1;stroke-miterlimit:10;" d="M 40 40 L 160 160 M 40 160 L 160 40 "/>
|
inkscape:document-units="pt"
|
||||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;" d="M 188 160 C 188 175.464844 175.464844 188 160 188 C 144.535156 188 132 175.464844 132 160 C 132 144.535156 144.535156 132 160 132 C 175.464844 132 188 144.535156 188 160 M 179.800781 179.800781 L 177.785156 163 M 179.800781 179.800781 L 196.601562 179.800781 "/>
|
showgrid="false"
|
||||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
inkscape:zoom="3.165"
|
||||||
<use xlink:href="#glyph0-1" x="153" y="167"/>
|
inkscape:cx="133.17536"
|
||||||
</g>
|
inkscape:cy="133.49131"
|
||||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;" d="M 188 40 C 188 55.464844 175.464844 68 160 68 C 144.535156 68 132 55.464844 132 40 C 132 24.535156 144.535156 12 160 12 C 175.464844 12 188 24.535156 188 40 M 179.800781 20.199219 L 177.785156 37 M 179.800781 20.199219 L 196.601562 20.199219 "/>
|
inkscape:window-width="1850"
|
||||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
inkscape:window-height="1016"
|
||||||
<use xlink:href="#glyph0-2" x="153" y="47"/>
|
inkscape:window-x="1990"
|
||||||
</g>
|
inkscape:window-y="27"
|
||||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;" d="M 68 160 C 68 175.464844 55.464844 188 40 188 C 24.535156 188 12 175.464844 12 160 C 12 144.535156 24.535156 132 40 132 C 55.464844 132 68 144.535156 68 160 M 20.199219 179.800781 L 22.214844 163 M 20.199219 179.800781 L 3.398438 179.800781 "/>
|
inkscape:window-maximized="1"
|
||||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
inkscape:current-layer="g45" />
|
||||||
<use xlink:href="#glyph0-3" x="33" y="167"/>
|
<defs
|
||||||
</g>
|
id="defs19">
|
||||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;" d="M 68 40 C 68 55.464844 55.464844 68 40 68 C 24.535156 68 12 55.464844 12 40 C 12 24.535156 24.535156 12 40 12 C 55.464844 12 68 24.535156 68 40 M 20.199219 20.199219 L 22.214844 37 M 20.199219 20.199219 L 3.398438 20.199219 "/>
|
<g
|
||||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
id="g17">
|
||||||
<use xlink:href="#glyph0-4" x="33" y="47"/>
|
<symbol
|
||||||
</g>
|
overflow="visible"
|
||||||
<path style="fill:none;stroke-width:12;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(98.039216%,2.745098%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 100 80 L 100 120 "/>
|
id="glyph0-0">
|
||||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.039216%,2.745098%,0%);fill-opacity:1;" d="M 100 75 L 85 90 L 115 90 L 100 75 "/>
|
<path
|
||||||
</g>
|
style="stroke:none;"
|
||||||
|
d=""
|
||||||
|
id="path2" />
|
||||||
|
</symbol>
|
||||||
|
<symbol
|
||||||
|
overflow="visible"
|
||||||
|
id="glyph0-1">
|
||||||
|
<path
|
||||||
|
style="stroke:none;"
|
||||||
|
d="M 2.679688 -13.863281 L 2.679688 -15.75 C 4.457031 -15.921875 5.695312 -16.210938 6.398438 -16.617188 C 7.101562 -17.023438 7.625 -17.984375 7.96875 -19.496094 L 9.914062 -19.496094 L 9.914062 0 L 7.289062 0 L 7.289062 -13.863281 Z M 2.679688 -13.863281 "
|
||||||
|
id="path5" />
|
||||||
|
</symbol>
|
||||||
|
<symbol
|
||||||
|
overflow="visible"
|
||||||
|
id="glyph0-2">
|
||||||
|
<path
|
||||||
|
style="stroke:none;"
|
||||||
|
d="M 1.921875 -4.402344 C 2.527344 -5.652344 3.710938 -6.785156 5.46875 -7.804688 L 8.09375 -9.324219 C 9.269531 -10.007812 10.09375 -10.589844 10.570312 -11.074219 C 11.316406 -11.832031 11.6875 -12.695312 11.6875 -13.671875 C 11.6875 -14.8125 11.347656 -15.714844 10.664062 -16.386719 C 9.980469 -17.054688 9.070312 -17.390625 7.929688 -17.390625 C 6.242188 -17.390625 5.078125 -16.753906 4.429688 -15.476562 C 4.082031 -14.792969 3.890625 -13.84375 3.855469 -12.632812 L 1.351562 -12.632812 C 1.378906 -14.335938 1.695312 -15.726562 2.296875 -16.804688 C 3.363281 -18.699219 5.246094 -19.648438 7.945312 -19.648438 C 10.1875 -19.648438 11.824219 -19.039062 12.859375 -17.828125 C 13.894531 -16.617188 14.410156 -15.265625 14.410156 -13.78125 C 14.410156 -12.214844 13.859375 -10.875 12.757812 -9.761719 C 12.117188 -9.113281 10.972656 -8.332031 9.324219 -7.410156 L 7.453125 -6.371094 C 6.558594 -5.878906 5.855469 -5.410156 5.34375 -4.960938 C 4.433594 -4.167969 3.859375 -3.289062 3.625 -2.324219 L 14.3125 -2.324219 L 14.3125 0 L 0.875 0 C 0.964844 -1.6875 1.316406 -3.152344 1.921875 -4.402344 Z M 1.921875 -4.402344 "
|
||||||
|
id="path8" />
|
||||||
|
</symbol>
|
||||||
|
<symbol
|
||||||
|
overflow="visible"
|
||||||
|
id="glyph0-3">
|
||||||
|
<path
|
||||||
|
style="stroke:none;"
|
||||||
|
d="M 2.234375 -1.375 C 1.191406 -2.644531 0.671875 -4.191406 0.671875 -6.015625 L 3.242188 -6.015625 C 3.351562 -4.75 3.585938 -3.828125 3.953125 -3.253906 C 4.589844 -2.222656 5.742188 -1.710938 7.410156 -1.710938 C 8.703125 -1.710938 9.742188 -2.054688 10.527344 -2.75 C 11.3125 -3.441406 11.703125 -4.335938 11.703125 -5.429688 C 11.703125 -6.777344 11.289062 -7.71875 10.464844 -8.257812 C 9.640625 -8.796875 8.496094 -9.0625 7.027344 -9.0625 C 6.863281 -9.0625 6.695312 -9.0625 6.527344 -9.058594 C 6.359375 -9.054688 6.1875 -9.046875 6.015625 -9.039062 L 6.015625 -11.210938 C 6.269531 -11.183594 6.484375 -11.164062 6.65625 -11.15625 C 6.832031 -11.148438 7.019531 -11.140625 7.21875 -11.140625 C 8.140625 -11.140625 8.894531 -11.289062 9.488281 -11.578125 C 10.527344 -12.089844 11.046875 -13 11.046875 -14.3125 C 11.046875 -15.289062 10.699219 -16.042969 10.007812 -16.570312 C 9.316406 -17.097656 8.507812 -17.363281 7.585938 -17.363281 C 5.945312 -17.363281 4.8125 -16.816406 4.183594 -15.722656 C 3.835938 -15.121094 3.640625 -14.265625 3.59375 -13.152344 L 1.164062 -13.152344 C 1.164062 -14.609375 1.453125 -15.851562 2.039062 -16.871094 C 3.039062 -18.695312 4.804688 -19.605469 7.328125 -19.605469 C 9.324219 -19.605469 10.867188 -19.160156 11.960938 -18.273438 C 13.054688 -17.382812 13.601562 -16.097656 13.601562 -14.410156 C 13.601562 -13.207031 13.28125 -12.230469 12.632812 -11.484375 C 12.230469 -11.019531 11.710938 -10.65625 11.074219 -10.390625 C 12.105469 -10.109375 12.910156 -9.5625 13.488281 -8.757812 C 14.066406 -7.949219 14.355469 -6.964844 14.355469 -5.796875 C 14.355469 -3.929688 13.742188 -2.40625 12.507812 -1.230469 C 11.277344 -0.0546875 9.535156 0.53125 7.273438 0.53125 C 4.957031 0.53125 3.277344 -0.101562 2.234375 -1.375 Z M 2.234375 -1.375 "
|
||||||
|
id="path11" />
|
||||||
|
</symbol>
|
||||||
|
<symbol
|
||||||
|
overflow="visible"
|
||||||
|
id="glyph0-4">
|
||||||
|
<path
|
||||||
|
style="stroke:none;"
|
||||||
|
d="M 9.257812 -6.929688 L 9.257812 -15.804688 L 2.980469 -6.929688 Z M 9.296875 0 L 9.296875 -4.785156 L 0.710938 -4.785156 L 0.710938 -7.191406 L 9.679688 -19.632812 L 11.757812 -19.632812 L 11.757812 -6.929688 L 14.640625 -6.929688 L 14.640625 -4.785156 L 11.757812 -4.785156 L 11.757812 0 Z M 9.296875 0 "
|
||||||
|
id="path14" />
|
||||||
|
</symbol>
|
||||||
|
</g>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
id="surface11">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:28;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(72.941176%,72.941176%,72.941176%);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 40 40 L 160 160 M 40 160 L 160 40 "
|
||||||
|
id="path21" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 188 160 C 188 175.464844 175.464844 188 160 188 C 144.535156 188 132 175.464844 132 160 C 132 144.535156 144.535156 132 160 132 C 175.464844 132 188 144.535156 188 160 M 179.800781 179.800781 L 177.785156 163 M 179.800781 179.800781 L 196.601562 179.800781 "
|
||||||
|
id="path23" />
|
||||||
|
<g
|
||||||
|
style="fill:rgb(0%,0%,0%);fill-opacity:1;"
|
||||||
|
id="g27" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 188 40 C 188 55.464844 175.464844 68 160 68 C 144.535156 68 132 55.464844 132 40 C 132 24.535156 144.535156 12 160 12 C 175.464844 12 188 24.535156 188 40 M 179.800781 20.199219 L 177.785156 37 M 179.800781 20.199219 L 196.601562 20.199219 "
|
||||||
|
id="path29" />
|
||||||
|
<g
|
||||||
|
style="fill:rgb(0%,0%,0%);fill-opacity:1;"
|
||||||
|
id="g33" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 68 160 C 68 175.464844 55.464844 188 40 188 C 24.535156 188 12 175.464844 12 160 C 12 144.535156 24.535156 132 40 132 C 55.464844 132 68 144.535156 68 160 M 20.199219 179.800781 L 22.214844 163 M 20.199219 179.800781 L 3.398438 179.800781 "
|
||||||
|
id="path35" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(55,168,219);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 68 40 C 68 55.464844 55.464844 68 40 68 C 24.535156 68 12 55.464844 12 40 C 12 24.535156 24.535156 12 40 12 C 55.464844 12 68 24.535156 68 40 M 20.199219 20.199219 L 22.214844 37 M 20.199219 20.199219 L 3.398438 20.199219 "
|
||||||
|
id="path41" />
|
||||||
|
<g
|
||||||
|
style="fill:rgb(0%,0%,0%);fill-opacity:1;"
|
||||||
|
id="g45" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke-width:12;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(98.039216%,2.745098%,0%);stroke-opacity:1;stroke-miterlimit:10;"
|
||||||
|
d="M 100 80 L 100 120 "
|
||||||
|
id="path47" />
|
||||||
|
<path
|
||||||
|
style=" stroke:none;fill-rule:nonzero;fill:rgb(98.039216%,2.745098%,0%);fill-opacity:1;"
|
||||||
|
d="M 100 75 L 85 90 L 115 90 L 100 75 "
|
||||||
|
id="path49" />
|
||||||
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 7.9 KiB |
|
@ -8,10 +8,9 @@
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg52"
|
id="svg52"
|
||||||
sodipodi:docname="quad_x_reverse.svg"
|
sodipodi:docname="quad_x_reverse.svg"
|
||||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
|
@ -25,14 +24,14 @@
|
||||||
inkscape:document-units="pt"
|
inkscape:document-units="pt"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:zoom="1.1269514"
|
inkscape:zoom="1.1269514"
|
||||||
inkscape:cx="-5.3240981"
|
inkscape:cx="-4.8804234"
|
||||||
inkscape:cy="231.15459"
|
inkscape:cy="231.1546"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1850"
|
||||||
inkscape:window-height="1009"
|
inkscape:window-height="1016"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="1990"
|
||||||
inkscape:window-y="-8"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="svg52" />
|
inkscape:current-layer="g862" />
|
||||||
<defs
|
<defs
|
||||||
id="defs19">
|
id="defs19">
|
||||||
<g
|
<g
|
||||||
|
@ -89,62 +88,18 @@
|
||||||
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
||||||
d="m 188,160 c 0,-15.46484 -12.53516,-28 -28,-28 -15.46484,0 -28,12.53516 -28,28 0,15.46484 12.53516,28 28,28 15.46484,0 28,-12.53516 28,-28 M 179.80078,140.19922 177.78516,157 m 2.01562,-16.80078 h 16.80078"
|
d="m 188,160 c 0,-15.46484 -12.53516,-28 -28,-28 -15.46484,0 -28,12.53516 -28,28 0,15.46484 12.53516,28 28,28 15.46484,0 28,-12.53516 28,-28 M 179.80078,140.19922 177.78516,157 m 2.01562,-16.80078 h 16.80078"
|
||||||
id="path23" />
|
id="path23" />
|
||||||
<g
|
|
||||||
style="fill:#000000;fill-opacity:1"
|
|
||||||
id="g27">
|
|
||||||
<use
|
|
||||||
xlink:href="#glyph0-1"
|
|
||||||
x="153"
|
|
||||||
y="167"
|
|
||||||
id="use25"
|
|
||||||
width="100%"
|
|
||||||
height="100%" />
|
|
||||||
</g>
|
|
||||||
<path
|
<path
|
||||||
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
||||||
d="m 188,40 c 0,-15.464844 -12.53516,-28 -28,-28 -15.46484,0 -28,12.535156 -28,28 0,15.464844 12.53516,28 28,28 15.46484,0 28,-12.535156 28,-28 M 179.80078,59.800781 177.78516,43 m 2.01562,16.800781 h 16.80078"
|
d="m 188,40 c 0,-15.464844 -12.53516,-28 -28,-28 -15.46484,0 -28,12.535156 -28,28 0,15.464844 12.53516,28 28,28 15.46484,0 28,-12.535156 28,-28 M 179.80078,59.800781 177.78516,43 m 2.01562,16.800781 h 16.80078"
|
||||||
id="path29" />
|
id="path29" />
|
||||||
<g
|
|
||||||
style="fill:#000000;fill-opacity:1"
|
|
||||||
id="g33">
|
|
||||||
<use
|
|
||||||
xlink:href="#glyph0-2"
|
|
||||||
x="153"
|
|
||||||
y="47"
|
|
||||||
id="use31"
|
|
||||||
width="100%"
|
|
||||||
height="100%" />
|
|
||||||
</g>
|
|
||||||
<path
|
<path
|
||||||
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
||||||
d="m 68,160 c 0,-15.46484 -12.535156,-28 -28,-28 -15.464844,0 -28,12.53516 -28,28 0,15.46484 12.535156,28 28,28 15.464844,0 28,-12.53516 28,-28 M 20.199219,140.19922 22.214844,157 M 20.199219,140.19922 H 3.398438"
|
d="m 68,160 c 0,-15.46484 -12.535156,-28 -28,-28 -15.464844,0 -28,12.53516 -28,28 0,15.46484 12.535156,28 28,28 15.464844,0 28,-12.53516 28,-28 M 20.199219,140.19922 22.214844,157 M 20.199219,140.19922 H 3.398438"
|
||||||
id="path35" />
|
id="path35" />
|
||||||
<g
|
|
||||||
style="fill:#000000;fill-opacity:1"
|
|
||||||
id="g39">
|
|
||||||
<use
|
|
||||||
xlink:href="#glyph0-3"
|
|
||||||
x="33"
|
|
||||||
y="167"
|
|
||||||
id="use37"
|
|
||||||
width="100%"
|
|
||||||
height="100%" />
|
|
||||||
</g>
|
|
||||||
<path
|
<path
|
||||||
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
style="fill:none;stroke:#37a8db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
|
||||||
d="M 68,40 C 68,24.535156 55.464844,12 40,12 24.535156,12 12,24.535156 12,40 12,55.464844 24.535156,68 40,68 55.464844,68 68,55.464844 68,40 M 20.199219,59.800781 22.214844,43 M 20.199219,59.800781 H 3.398438"
|
d="M 68,40 C 68,24.535156 55.464844,12 40,12 24.535156,12 12,24.535156 12,40 12,55.464844 24.535156,68 40,68 55.464844,68 68,55.464844 68,40 M 20.199219,59.800781 22.214844,43 M 20.199219,59.800781 H 3.398438"
|
||||||
id="path41" />
|
id="path41" />
|
||||||
<g
|
|
||||||
style="fill:#000000;fill-opacity:1"
|
|
||||||
id="g45">
|
|
||||||
<use
|
|
||||||
xlink:href="#glyph0-4"
|
|
||||||
x="33"
|
|
||||||
y="47"
|
|
||||||
id="use43"
|
|
||||||
width="100%"
|
|
||||||
height="100%" />
|
|
||||||
</g>
|
|
||||||
<path
|
<path
|
||||||
style="fill:none;stroke:#fa0500;stroke-width:12;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-opacity:1"
|
style="fill:none;stroke:#fa0500;stroke-width:12;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-opacity:1"
|
||||||
d="m 100,80 v 40"
|
d="m 100,80 v 40"
|
||||||
|
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 7.5 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 252 B |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -16068,34 +16068,37 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010010
|
|
||||||
00010101
|
00010101
|
||||||
01010101
|
01010101
|
||||||
01001010
|
01010100
|
||||||
10000101
|
10000101
|
||||||
01010101
|
01010101
|
||||||
00101010
|
01010010
|
||||||
10100001
|
10100001
|
||||||
01010101
|
01010101
|
||||||
01000010
|
01001010
|
||||||
00000101
|
10101000
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01010100
|
||||||
|
10000101
|
||||||
|
01010101
|
||||||
|
01010000
|
||||||
|
10000001
|
||||||
|
01010101
|
||||||
|
01001010
|
||||||
|
10101000
|
||||||
01010100
|
01010100
|
||||||
01010010
|
01010010
|
||||||
00010101
|
10100001
|
||||||
01010010
|
01010010
|
||||||
00010010
|
00010100
|
||||||
00010101
|
10000101
|
||||||
01010010
|
01010010
|
||||||
10000100
|
10000101
|
||||||
01010101
|
00010101
|
||||||
01001010
|
01001010
|
||||||
10000101
|
10000101
|
||||||
01000101
|
01000101
|
||||||
|
@ -16130,9 +16133,6 @@ MAX7456
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
01010101
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010101
|
|
||||||
01010100
|
01010100
|
||||||
00010000
|
00010000
|
||||||
00010101
|
00010101
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -118,4 +118,14 @@
|
||||||
height: 29px;
|
height: 29px;
|
||||||
line-height: 27px;
|
line-height: 27px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.motorNumber {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mixer-preview-image-numbers {
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
|
|
@ -155,7 +155,11 @@
|
||||||
<label for="maxBankAngle"><span data-i18n="maxBankAngle"></span></label>
|
<label for="maxBankAngle"><span data-i18n="maxBankAngle"></span></label>
|
||||||
<div for="maxBankAngle" class="helpicon cf_tip" data-i18n_title="maxBankAngleHelp"></div>
|
<div for="maxBankAngle" class="helpicon cf_tip" data-i18n_title="maxBankAngleHelp"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<input type="number" id="navManualClimbRate" data-unit="v-cms" data-setting="nav_fw_manual_climb_rate" data-setting-multiplier="1" step="1" min="10" max="2000" />
|
||||||
|
<label for="navManualClimbRate"><span data-i18n="navManualClimbRate"></span></label>
|
||||||
|
<div for="navManualClimbRate" class="helpicon cf_tip" data-i18n_title="navManualClimbRateHelp"></div>
|
||||||
|
</div>
|
||||||
<div class="number">
|
<div class="number">
|
||||||
<input id="maxClimbAngle" type="number" data-unit="deg" data-setting="nav_fw_climb_angle" data-setting-multiplier="1" step="1" min="5" max="80" />
|
<input id="maxClimbAngle" type="number" data-unit="deg" data-setting="nav_fw_climb_angle" data-setting-multiplier="1" step="1" min="5" max="80" />
|
||||||
<label for="maxClimbAngle"><span data-i18n="maxClimbAngle"></span></label>
|
<label for="maxClimbAngle"><span data-i18n="maxClimbAngle"></span></label>
|
||||||
|
@ -238,6 +242,16 @@
|
||||||
<label for="max-manual-speed"><span data-i18n="posholdMaxManualSpeed"></span></label>
|
<label for="max-manual-speed"><span data-i18n="posholdMaxManualSpeed"></span></label>
|
||||||
<div for="max-manual-speed" class="helpicon cf_tip" data-i18n_title="posholdMaxManualSpeedHelp"></div>
|
<div for="max-manual-speed" class="helpicon cf_tip" data-i18n_title="posholdMaxManualSpeedHelp"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<input type="number" id="navAutoClimbRate" data-unit="v-cms" data-setting="nav_mc_auto_climb_rate" data-setting-multiplier="1" step="1" min="10" max="2000" />
|
||||||
|
<label for="navAutoClimbRate"><span data-i18n="navAutoClimbRate"></span></label>
|
||||||
|
<div for="navAutoClimbRate" class="helpicon cf_tip" data-i18n_title="navAutoClimbRateHelp"></div>
|
||||||
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<input type="number" id="navManualClimbRate" data-unit="v-cms" data-setting="nav_mc_manual_climb_rate" data-setting-multiplier="1" step="1" min="10" max="2000" />
|
||||||
|
<label for="navManualClimbRate"><span data-i18n="navManualClimbRate"></span></label>
|
||||||
|
<div for="navManualClimbRate" class="helpicon cf_tip" data-i18n_title="navManualClimbRateHelp"></div>
|
||||||
|
</div>
|
||||||
<div class="number">
|
<div class="number">
|
||||||
<input id="max-bank-angle" type="number" data-unit="deg" data-setting="nav_mc_bank_angle" data-setting-multiplier="1" step="1" min="15" max="45" />
|
<input id="max-bank-angle" type="number" data-unit="deg" data-setting="nav_mc_bank_angle" data-setting-multiplier="1" step="1" min="15" max="45" />
|
||||||
<label for="max-bank-angle"><span data-i18n="posholdMaxBankAngle"></span></label>
|
<label for="max-bank-angle"><span data-i18n="posholdMaxBankAngle"></span></label>
|
||||||
|
@ -465,17 +479,6 @@
|
||||||
<div class="spacer_box_title" data-i18n="generalNavigationSettings"></div>
|
<div class="spacer_box_title" data-i18n="generalNavigationSettings"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer_box">
|
<div class="spacer_box">
|
||||||
<div class="number">
|
|
||||||
<input type="number" id="navManualClimbRate" data-unit="v-cms" data-setting="nav_manual_climb_rate" data-setting-multiplier="1" step="1" min="10" max="2000" />
|
|
||||||
<label for="navManualClimbRate"><span data-i18n="navManualClimbRate"></span></label>
|
|
||||||
<div for="navManualClimbRate" class="helpicon cf_tip" data-i18n_title="navManualClimbRateHelp"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="number">
|
|
||||||
<input type="number" id="navAutoClimbRate" data-unit="v-cms" data-setting="nav_auto_climb_rate" data-setting-multiplier="1" step="1" min="10" max="2000" />
|
|
||||||
<label for="navAutoClimbRate"><span data-i18n="navAutoClimbRate"></span></label>
|
|
||||||
<div for="navAutoClimbRate" class="helpicon cf_tip" data-i18n_title="navAutoClimbRateHelp"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="number">
|
<div class="number">
|
||||||
<input type="number" id="navMaxAltitude" data-unit="cm" data-setting="nav_max_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
|
<input type="number" id="navMaxAltitude" data-unit="cm" data-setting="nav_max_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
|
||||||
|
|
|
@ -166,7 +166,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="point" id="elevationEarthModelclass" style="display: none">
|
<div class="point" id="elevationEarthModelclass" style="display: none">
|
||||||
<label class="spacer_box_title" for="elevationEarthModel" data-i18n="missionLevelEarthDEMModel"></label>
|
<label class="spacer_box_title" for="elevationEarthModel" data-i18n="missionEllipsoidEarthDEMModel"></label>
|
||||||
<input id="elevationEarthModel" type="checkbox" value="0" class="togglemedium" required>
|
<input id="elevationEarthModel" type="checkbox" value="0" class="togglemedium" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -364,24 +364,15 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// define & init parameters for default Settings
|
// define & init parameters for default Settings
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
var vMaxDistSH = 0;
|
var settings = {speed: 0, alt: 5000, safeRadiusSH : 50, maxDistSH : 0, bingDemModel : false};
|
||||||
var settings = {};
|
|
||||||
if (CONFIGURATOR.connectionValid) {
|
if (CONFIGURATOR.connectionValid) {
|
||||||
mspHelper.getSetting("safehome_max_distance").then(function (s) {
|
mspHelper.getSetting("safehome_max_distance").then(function (s) {
|
||||||
if (s) {
|
if (s) {
|
||||||
vMaxDistSH = Number(s.value)/100;
|
settings.maxDistSH = Number(s.value)/100;
|
||||||
settings = { speed: 0, alt: 5000, safeRadiusSH : 50, maxDistSH : vMaxDistSH};
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
vMaxDistSH = 0;
|
|
||||||
settings = { speed: 0, alt: 5000, safeRadiusSH : 50, maxDistSH : vMaxDistSH};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
vMaxDistSH = 0;
|
|
||||||
settings = { speed: 0, alt: 5000, safeRadiusSH : 50, maxDistSH : vMaxDistSH};
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// define & init Waypoints parameters
|
// define & init Waypoints parameters
|
||||||
|
@ -679,6 +670,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
|
|
||||||
if (globalSettings.mapProviderType == 'bing') {
|
if (globalSettings.mapProviderType == 'bing') {
|
||||||
$('#elevationEarthModelclass').fadeIn(300);
|
$('#elevationEarthModelclass').fadeIn(300);
|
||||||
|
changeSwitchery($('#elevationEarthModel'), settings.bingDemModel);
|
||||||
} else {
|
} else {
|
||||||
$('#elevationEarthModelclass').fadeOut(300);
|
$('#elevationEarthModelclass').fadeOut(300);
|
||||||
}
|
}
|
||||||
|
@ -1541,7 +1533,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
// * @param {Object=} opt_options Control options.
|
// * @param {Object=} opt_options Control options.
|
||||||
// */
|
// */
|
||||||
app.PlannerMultiMissionControl = function (opt_options) {
|
app.PlannerMultiMissionControl = function (opt_options) {
|
||||||
|
|
||||||
var options = opt_options || {};
|
var options = opt_options || {};
|
||||||
var button = document.createElement('button');
|
var button = document.createElement('button');
|
||||||
|
|
||||||
|
@ -1847,7 +1839,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
$('#pointP1').val(selectedMarker.getP1());
|
$('#pointP1').val(selectedMarker.getP1());
|
||||||
$('#pointP2').val(selectedMarker.getP2());
|
$('#pointP2').val(selectedMarker.getP2());
|
||||||
|
|
||||||
|
|
||||||
// Selection box update depending on choice of type of waypoint
|
// Selection box update depending on choice of type of waypoint
|
||||||
for (var j in dictOfLabelParameterPoint[selectedMarker.getAction()]) {
|
for (var j in dictOfLabelParameterPoint[selectedMarker.getAction()]) {
|
||||||
if (dictOfLabelParameterPoint[selectedMarker.getAction()][j] != '') {
|
if (dictOfLabelParameterPoint[selectedMarker.getAction()][j] != '') {
|
||||||
|
@ -2114,7 +2106,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
$('#pointP3Alt').on('change', function (event) {
|
$('#pointP3Alt').on('change', function (event) {
|
||||||
if (selectedMarker) {
|
if (selectedMarker) {
|
||||||
P3Value = selectedMarker.getP3();
|
P3Value = selectedMarker.getP3();
|
||||||
|
|
||||||
if (disableMarkerEdit) {
|
if (disableMarkerEdit) {
|
||||||
changeSwitchery($('#pointP3Alt'), TABS.mission_control.isBitSet(P3Value, MWNP.P3.ALT_TYPE));
|
changeSwitchery($('#pointP3Alt'), TABS.mission_control.isBitSet(P3Value, MWNP.P3.ALT_TYPE));
|
||||||
}
|
}
|
||||||
|
@ -2124,18 +2116,26 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
const elevationAtWP = await selectedMarker.getElevation(globalSettings);
|
const elevationAtWP = await selectedMarker.getElevation(globalSettings);
|
||||||
$('#elevationValueAtWP').text(elevationAtWP);
|
$('#elevationValueAtWP').text(elevationAtWP);
|
||||||
var altitude = Number($('#pointAlt').val());
|
var altitude = Number($('#pointAlt').val());
|
||||||
|
|
||||||
if (P3Value != selectedMarker.getP3()) {
|
if (P3Value != selectedMarker.getP3()) {
|
||||||
selectedMarker.setP3(P3Value);
|
selectedMarker.setP3(P3Value);
|
||||||
|
|
||||||
|
let groundClearance = 100 * Number($('#groundClearanceValueAtWP').text());
|
||||||
|
if (isNaN(groundClearance)) {
|
||||||
|
groundClearance = settings.alt; // use default altitude if no current ground clearance
|
||||||
|
}
|
||||||
|
|
||||||
if ($('#pointP3Alt').prop("checked")) {
|
if ($('#pointP3Alt').prop("checked")) {
|
||||||
if (altitude < 0) {
|
selectedMarker.setAlt(groundClearance + elevationAtWP * 100);
|
||||||
altitude = settings.alt;
|
|
||||||
}
|
|
||||||
selectedMarker.setAlt(altitude + elevationAtWP * 100);
|
|
||||||
} else {
|
} else {
|
||||||
selectedMarker.setAlt(altitude - Number(elevationAtWP) * 100);
|
let elevationAtHome = HOME.getAlt();
|
||||||
|
if (isNaN(elevationAtHome)) {
|
||||||
|
elevationAtHome = elevationAtWP;
|
||||||
|
}
|
||||||
|
selectedMarker.setAlt(groundClearance + 100 * (elevationAtWP - elevationAtHome));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const returnAltitude = checkAltElevSanity(false, selectedMarker.getAlt(), elevationAtWP, selectedMarker.getP3());
|
const returnAltitude = checkAltElevSanity(false, selectedMarker.getAlt(), elevationAtWP, selectedMarker.getP3());
|
||||||
selectedMarker.setAlt(returnAltitude);
|
selectedMarker.setAlt(returnAltitude);
|
||||||
$('#pointAlt').val(selectedMarker.getAlt());
|
$('#pointAlt').val(selectedMarker.getAlt());
|
||||||
|
@ -2158,7 +2158,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
|
|
||||||
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_1, $('#pointP3UserAction1').prop("checked"));
|
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_1, $('#pointP3UserAction1').prop("checked"));
|
||||||
selectedMarker.setP3(P3Value);
|
selectedMarker.setP3(P3Value);
|
||||||
|
|
||||||
mission.updateWaypoint(selectedMarker);
|
mission.updateWaypoint(selectedMarker);
|
||||||
mission.update(singleMissionActive());
|
mission.update(singleMissionActive());
|
||||||
redrawLayer();
|
redrawLayer();
|
||||||
|
@ -2185,7 +2185,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
if (disableMarkerEdit) {
|
if (disableMarkerEdit) {
|
||||||
changeSwitchery($('#pointP3UserAction3'), TABS.mission_control.isBitSet(selectedMarker.getP3(), MWNP.P3.USER_ACTION_3));
|
changeSwitchery($('#pointP3UserAction3'), TABS.mission_control.isBitSet(selectedMarker.getP3(), MWNP.P3.USER_ACTION_3));
|
||||||
}
|
}
|
||||||
|
|
||||||
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_3, $('#pointP3UserAction3').prop("checked"));
|
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_3, $('#pointP3UserAction3').prop("checked"));
|
||||||
selectedMarker.setP3(P3Value);
|
selectedMarker.setP3(P3Value);
|
||||||
|
|
||||||
|
@ -2200,7 +2200,7 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
if (disableMarkerEdit) {
|
if (disableMarkerEdit) {
|
||||||
changeSwitchery($('#pointP3UserAction4'), TABS.mission_control.isBitSet(selectedMarker.getP3(), MWNP.P3.USER_ACTION_4));
|
changeSwitchery($('#pointP3UserAction4'), TABS.mission_control.isBitSet(selectedMarker.getP3(), MWNP.P3.USER_ACTION_4));
|
||||||
}
|
}
|
||||||
|
|
||||||
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_4, $('#pointP3UserAction4').prop("checked"));
|
P3Value = TABS.mission_control.setBit(selectedMarker.getP3(), MWNP.P3.USER_ACTION_4, $('#pointP3UserAction4').prop("checked"));
|
||||||
selectedMarker.setP3(P3Value);
|
selectedMarker.setP3(P3Value);
|
||||||
|
|
||||||
|
@ -2318,6 +2318,9 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
redrawLayer();
|
redrawLayer();
|
||||||
plotElevation();
|
plotElevation();
|
||||||
})()
|
})()
|
||||||
|
|
||||||
|
settings.bingDemModel = $('#elevationEarthModel').prop("checked") ? true : false;
|
||||||
|
saveSettings();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2469,13 +2472,19 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
/////////////////////////////////////////////
|
/////////////////////////////////////////////
|
||||||
$('#saveSettings').on('click', function () {
|
$('#saveSettings').on('click', function () {
|
||||||
let oldSafeRadiusSH = settings.safeRadiusSH;
|
let oldSafeRadiusSH = settings.safeRadiusSH;
|
||||||
settings = { speed: Number($('#MPdefaultPointSpeed').val()), alt: Number($('#MPdefaultPointAlt').val()), safeRadiusSH: Number($('#MPdefaultSafeRangeSH').val()), maxDistSH : vMaxDistSH};
|
|
||||||
|
settings.speed = Number($('#MPdefaultPointSpeed').val());
|
||||||
|
settings.alt = Number($('#MPdefaultPointAlt').val());
|
||||||
|
settings.safeRadiusSH = Number($('#MPdefaultSafeRangeSH').val());
|
||||||
|
|
||||||
saveSettings();
|
saveSettings();
|
||||||
|
|
||||||
if (settings.safeRadiusSH != oldSafeRadiusSH && $('#showHideSafehomeButton').is(":visible")) {
|
if (settings.safeRadiusSH != oldSafeRadiusSH && $('#showHideSafehomeButton').is(":visible")) {
|
||||||
cleanSafehomeLayers();
|
cleanSafehomeLayers();
|
||||||
renderSafehomesOnMap();
|
renderSafehomesOnMap();
|
||||||
$('#SafeHomeSafeDistance').text(settings.safeRadiusSH);
|
$('#SafeHomeSafeDistance').text(settings.safeRadiusSH);
|
||||||
}
|
}
|
||||||
|
|
||||||
closeSettingsPanel();
|
closeSettingsPanel();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2833,7 +2842,11 @@ TABS.mission_control.initialize = function (callback) {
|
||||||
alert(chrome.i18n.getMessage('MissionPlannerAltitudeChangeReset'));
|
alert(chrome.i18n.getMessage('MissionPlannerAltitudeChangeReset'));
|
||||||
altitude = selectedMarker.getAlt();
|
altitude = selectedMarker.getAlt();
|
||||||
} else {
|
} else {
|
||||||
altitude = settings.alt + 100 * (elevation - elevationAtHome);
|
let currentGroundClearance = 100 * Number($('#groundClearanceValueAtWP').text());
|
||||||
|
if (isNaN(currentGroundClearance) || selectedMarker == null) {
|
||||||
|
currentGroundClearance = settings.alt; // use default altitude if no current ground clearance
|
||||||
|
}
|
||||||
|
altitude = currentGroundClearance + 100 * (elevation - elevationAtHome);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
groundClearance = altitude / 100 + (elevationAtHome - elevation);
|
groundClearance = altitude / 100 + (elevationAtHome - elevation);
|
||||||
|
|
|
@ -44,7 +44,11 @@
|
||||||
<div class="spacer_box">
|
<div class="spacer_box">
|
||||||
<div class="select position-relative">
|
<div class="select position-relative">
|
||||||
<div class="mixerPreview" style="max-width: 175px">
|
<div class="mixerPreview" style="max-width: 175px">
|
||||||
<img src="./resources/motor_order/custom.svg" />
|
<img src="./resources/motor_order/custom.svg" id="motor-mixer-preview-img"/>
|
||||||
|
<div class="motorNumber" id="motorNumber1">1</div>
|
||||||
|
<div class="motorNumber" id="motorNumber2">2</div>
|
||||||
|
<div class="motorNumber" id="motorNumber3">3</div>
|
||||||
|
<div class="motorNumber" id="motorNumber4">4</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="half" style="width: calc(50% - 10px); margin-left: 10px;">
|
<div class="half" style="width: calc(50% - 10px); margin-left: 10px;">
|
||||||
<select id="mixer-preset"></select>
|
<select id="mixer-preset"></select>
|
||||||
|
@ -254,4 +258,4 @@
|
||||||
<a id="save-button" class="save" href="#" data-i18n="configurationButtonSave"></a>
|
<a id="save-button" class="save" href="#" data-i18n="configurationButtonSave"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -29,7 +29,8 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
mspHelper.loadMotorMixRules,
|
mspHelper.loadMotorMixRules,
|
||||||
mspHelper.loadOutputMappingExt,
|
mspHelper.loadOutputMappingExt,
|
||||||
mspHelper.loadTimerOutputModes,
|
mspHelper.loadTimerOutputModes,
|
||||||
mspHelper.loadLogicConditions
|
mspHelper.loadLogicConditions,
|
||||||
|
mspHelper.loadEzTune,
|
||||||
]);
|
]);
|
||||||
loadChainer.setExitPoint(loadHtml);
|
loadChainer.setExitPoint(loadHtml);
|
||||||
loadChainer.execute();
|
loadChainer.execute();
|
||||||
|
@ -420,6 +421,45 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
return (parseInt(weight) + 100) * 1000 / 200 + 1000;
|
return (parseInt(weight) + 100) * 1000 / 200 + 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function labelMotorNumbers() {
|
||||||
|
|
||||||
|
let index = 0;
|
||||||
|
var rules
|
||||||
|
|
||||||
|
if (currentMixerPreset.id == loadedMixerPresetID) {
|
||||||
|
rules = MOTOR_RULES.get();
|
||||||
|
} else {
|
||||||
|
rules = currentMixerPreset.motorMixer;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const i in rules) {
|
||||||
|
if (rules.hasOwnProperty(i)) {
|
||||||
|
const rule = rules[i];
|
||||||
|
index++;
|
||||||
|
|
||||||
|
if (currentMixerPreset.image != 'quad_x') {
|
||||||
|
$("#motorNumber"+index).css("visibility", "hidden");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let top_px = 30;
|
||||||
|
let left_px = 28;
|
||||||
|
if (rule.getRoll() < -0.5) {
|
||||||
|
left_px = $("#motor-mixer-preview-img").width() - 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rule.getPitch() > 0.5) {
|
||||||
|
top_px = $("#motor-mixer-preview-img").height() - 42;
|
||||||
|
}
|
||||||
|
$("#motorNumber"+index).css("left", left_px + "px");
|
||||||
|
$("#motorNumber"+index).css("top", top_px + "px");
|
||||||
|
$("#motorNumber"+index).css("visibility", "visible");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function renderMotorMixRules() {
|
function renderMotorMixRules() {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -483,6 +523,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
labelMotorNumbers();
|
||||||
localize();
|
localize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,7 +631,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
r.getYaw()
|
r.getYaw()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
renderMotorMixRules();
|
renderMotorMixRules();
|
||||||
|
@ -668,8 +709,13 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
$('#platform-type').parent('.select').addClass('no-bottom-border');
|
$('#platform-type').parent('.select').addClass('no-bottom-border');
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRefreshButtonStatus();
|
if (!updateEzTuneTabVisibility(false)) {
|
||||||
|
EZ_TUNE.enabled = 0;
|
||||||
|
mspHelper.saveEzTune();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateRefreshButtonStatus();
|
||||||
|
labelMotorNumbers();
|
||||||
updateMotorDirection();
|
updateMotorDirection();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,12 @@ TABS.ports.initialize = function (callback) {
|
||||||
maxPorts: 1,
|
maxPorts: 1,
|
||||||
defaultBaud: 57600 }
|
defaultBaud: 57600 }
|
||||||
);
|
);
|
||||||
|
portFunctionRules.push({
|
||||||
|
name: 'SBUS_OUTPUT',
|
||||||
|
groups: ['peripherals'],
|
||||||
|
maxPorts: 1,
|
||||||
|
defaultBaud: 115200 }
|
||||||
|
);
|
||||||
|
|
||||||
for (var i = 0; i < portFunctionRules.length; i++) {
|
for (var i = 0; i < portFunctionRules.length; i++) {
|
||||||
portFunctionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + portFunctionRules[i].name);
|
portFunctionRules[i].displayName = chrome.i18n.getMessage('portsFunction_' + portFunctionRules[i].name);
|
||||||
|
|
|
@ -69,7 +69,10 @@ TABS.setup.initialize = function (callback) {
|
||||||
GUI.log(chrome.i18n.getMessage('initialSetupSettingsRestored'));
|
GUI.log(chrome.i18n.getMessage('initialSetupSettingsRestored'));
|
||||||
|
|
||||||
GUI.tab_switch_cleanup(function () {
|
GUI.tab_switch_cleanup(function () {
|
||||||
TABS.setup.initialize();
|
MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, function() {
|
||||||
|
GUI.log(chrome.i18n.getMessage('deviceRebooting'));
|
||||||
|
GUI.handleReconnect();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|