mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-26 01:35:28 +03:00
Merge pull request #2921 from haslinghuis/stop-motortest-with-space
This commit is contained in:
commit
8f633889fb
2 changed files with 75 additions and 33 deletions
|
@ -44,7 +44,7 @@ TABS.motors = {
|
||||||
DSHOT_3D_NEUTRAL: 1500,
|
DSHOT_3D_NEUTRAL: 1500,
|
||||||
};
|
};
|
||||||
|
|
||||||
TABS.motors.initialize = function (callback) {
|
TABS.motors.initialize = async function (callback) {
|
||||||
const self = this;
|
const self = this;
|
||||||
|
|
||||||
self.armed = false;
|
self.armed = false;
|
||||||
|
@ -59,18 +59,25 @@ TABS.motors.initialize = function (callback) {
|
||||||
GUI.active_tab = 'motors';
|
GUI.active_tab = 'motors';
|
||||||
}
|
}
|
||||||
|
|
||||||
MSP.promise(MSPCodes.MSP_STATUS)
|
await MSP.promise(MSPCodes.MSP_STATUS);
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_PID_ADVANCED))
|
await MSP.promise(MSPCodes.MSP_PID_ADVANCED);
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_FEATURE_CONFIG))
|
await MSP.promise(MSPCodes.MSP_FEATURE_CONFIG);
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_MIXER_CONFIG))
|
await MSP.promise(MSPCodes.MSP_MIXER_CONFIG);
|
||||||
.then(() => FC.MOTOR_CONFIG.use_dshot_telemetry || FC.MOTOR_CONFIG.use_esc_sensor ? MSP.promise(MSPCodes.MSP_MOTOR_TELEMETRY) : true)
|
if (FC.MOTOR_CONFIG.use_dshot_telemetry || FC.MOTOR_CONFIG.use_esc_sensor) {
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_MOTOR_CONFIG))
|
await MSP.promise(MSPCodes.MSP_MOTOR_TELEMETRY);
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_MOTOR_3D_CONFIG))
|
}
|
||||||
.then(() => MSP.promise(MSPCodes.MSP2_MOTOR_OUTPUT_REORDERING))
|
await MSP.promise(MSPCodes.MSP_MOTOR_CONFIG);
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_ADVANCED_CONFIG))
|
await MSP.promise(MSPCodes.MSP_MOTOR_3D_CONFIG);
|
||||||
.then(() => semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42) ? MSP.promise(MSPCodes.MSP_FILTER_CONFIG) : true)
|
await MSP.promise(MSPCodes.MSP2_MOTOR_OUTPUT_REORDERING);
|
||||||
.then(() => semver.gte(FC.CONFIG.apiVersion, "1.8.0") ? MSP.promise(MSPCodes.MSP_ARMING_CONFIG) : true)
|
await MSP.promise(MSPCodes.MSP_ADVANCED_CONFIG);
|
||||||
.then(() => load_html());
|
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42)) {
|
||||||
|
await MSP.promise(MSPCodes.MSP_FILTER_CONFIG);
|
||||||
|
}
|
||||||
|
if (semver.gte(FC.CONFIG.apiVersion, "1.8.0")) {
|
||||||
|
await MSP.promise(MSPCodes.MSP_ARMING_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
load_html();
|
||||||
|
|
||||||
function load_html() {
|
function load_html() {
|
||||||
$('#content').load("./tabs/motors.html", process_html);
|
$('#content').load("./tabs/motors.html", process_html);
|
||||||
|
@ -226,7 +233,7 @@ TABS.motors.initialize = function (callback) {
|
||||||
const motorsEnableTestModeElement = $('#motorsEnableTestMode');
|
const motorsEnableTestModeElement = $('#motorsEnableTestMode');
|
||||||
self.analyticsChanges = {};
|
self.analyticsChanges = {};
|
||||||
|
|
||||||
motorsEnableTestModeElement.prop('checked', false);
|
motorsEnableTestModeElement.prop('checked', false).trigger('change');
|
||||||
|
|
||||||
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_42) || !(FC.MOTOR_CONFIG.use_dshot_telemetry || FC.MOTOR_CONFIG.use_esc_sensor)) {
|
if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_42) || !(FC.MOTOR_CONFIG.use_dshot_telemetry || FC.MOTOR_CONFIG.use_esc_sensor)) {
|
||||||
$(".motor_testing .telemetry").hide();
|
$(".motor_testing .telemetry").hide();
|
||||||
|
@ -240,6 +247,7 @@ TABS.motors.initialize = function (callback) {
|
||||||
function setContentButtons(motorsTesting=false) {
|
function setContentButtons(motorsTesting=false) {
|
||||||
$('.btn .tool').toggleClass("disabled", self.configHasChanged || motorsTesting);
|
$('.btn .tool').toggleClass("disabled", self.configHasChanged || motorsTesting);
|
||||||
$('.btn .save').toggleClass("disabled", !self.configHasChanged);
|
$('.btn .save').toggleClass("disabled", !self.configHasChanged);
|
||||||
|
$('.btn .stop').toggleClass("disabled", !motorsTesting);
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultConfiguration = {
|
const defaultConfiguration = {
|
||||||
|
@ -864,7 +872,16 @@ TABS.motors.initialize = function (callback) {
|
||||||
|
|
||||||
setSlidersDefault();
|
setSlidersDefault();
|
||||||
|
|
||||||
motorsEnableTestModeElement.change(function () {
|
const ignoreKeys = [
|
||||||
|
'PageUp',
|
||||||
|
'PageDown',
|
||||||
|
'End',
|
||||||
|
'Home',
|
||||||
|
'ArrowUp',
|
||||||
|
'ArrowDown',
|
||||||
|
];
|
||||||
|
|
||||||
|
motorsEnableTestModeElement.on('change', function () {
|
||||||
let enabled = $(this).is(':checked');
|
let enabled = $(this).is(':checked');
|
||||||
// prevent or disable testing if configHasChanged flag is set.
|
// prevent or disable testing if configHasChanged flag is set.
|
||||||
if (self.configHasChanged) {
|
if (self.configHasChanged) {
|
||||||
|
@ -876,16 +893,35 @@ TABS.motors.initialize = function (callback) {
|
||||||
// disable input
|
// disable input
|
||||||
motorsEnableTestModeElement.prop('checked', false);
|
motorsEnableTestModeElement.prop('checked', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function disableMotorTest(e) {
|
||||||
|
if (motorsEnableTestModeElement.is(':checked')) {
|
||||||
|
if (!ignoreKeys.includes(e.code)) {
|
||||||
|
motorsEnableTestModeElement.prop('checked', false).trigger('change');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enabled) {
|
||||||
|
document.addEventListener('keydown', e => disableMotorTest(e));
|
||||||
|
// enable Status and Motor data pulling
|
||||||
|
GUI.interval_add('motor_and_status_pull', get_status, 50, true);
|
||||||
|
} else {
|
||||||
|
document.removeEventListener('keydown', e => disableMotorTest(e));
|
||||||
|
GUI.interval_remove("motor_and_status_pull");
|
||||||
|
}
|
||||||
|
|
||||||
setContentButtons(enabled);
|
setContentButtons(enabled);
|
||||||
setSlidersEnabled(enabled);
|
setSlidersEnabled(enabled);
|
||||||
|
|
||||||
$('div.sliders input').trigger('input');
|
$('div.sliders input').trigger('input');
|
||||||
|
|
||||||
mspHelper.setArmingEnabled(enabled, enabled);
|
mspHelper.setArmingEnabled(enabled, enabled);
|
||||||
}).change();
|
});
|
||||||
|
|
||||||
let bufferingSetMotor = [],
|
let bufferingSetMotor = [],
|
||||||
buffer_delay = false;
|
buffer_delay = false;
|
||||||
|
|
||||||
$('div.sliders input:not(.master)').on('input', function () {
|
$('div.sliders input:not(.master)').on('input', function () {
|
||||||
const index = $(this).index();
|
const index = $(this).index();
|
||||||
let buffer = [];
|
let buffer = [];
|
||||||
|
@ -935,7 +971,7 @@ TABS.motors.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (motorsRunning) {
|
if (motorsRunning) {
|
||||||
motorsEnableTestModeElement.prop('checked', true).change();
|
motorsEnableTestModeElement.prop('checked', true).trigger('change');
|
||||||
|
|
||||||
// motors are running adjust sliders to current values
|
// motors are running adjust sliders to current values
|
||||||
|
|
||||||
|
@ -1062,7 +1098,7 @@ TABS.motors.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$('a.save').on('click', function() {
|
$('a.save').on('click', async function() {
|
||||||
// gather data that doesn't have automatic change event bound
|
// gather data that doesn't have automatic change event bound
|
||||||
FC.MOTOR_CONFIG.minthrottle = parseInt($('input[name="minthrottle"]').val());
|
FC.MOTOR_CONFIG.minthrottle = parseInt($('input[name="minthrottle"]').val());
|
||||||
FC.MOTOR_CONFIG.maxthrottle = parseInt($('input[name="maxthrottle"]').val());
|
FC.MOTOR_CONFIG.maxthrottle = parseInt($('input[name="maxthrottle"]').val());
|
||||||
|
@ -1085,24 +1121,28 @@ TABS.motors.initialize = function (callback) {
|
||||||
FC.PID_ADVANCED_CONFIG.gyroUse32kHz = $('input[id="gyroUse32kHz"]').is(':checked') ? 1 : 0;
|
FC.PID_ADVANCED_CONFIG.gyroUse32kHz = $('input[id="gyroUse32kHz"]').is(':checked') ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MSP.promise(MSPCodes.MSP_SET_FEATURE_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FEATURE_CONFIG))
|
await MSP.promise(MSPCodes.MSP_SET_FEATURE_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FEATURE_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_SET_MIXER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MIXER_CONFIG)))
|
await MSP.promise(MSPCodes.MSP_SET_MIXER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MIXER_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_SET_MOTOR_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_CONFIG)))
|
await MSP.promise(MSPCodes.MSP_SET_MOTOR_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_SET_MOTOR_3D_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_3D_CONFIG)))
|
await MSP.promise(MSPCodes.MSP_SET_MOTOR_3D_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_3D_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_SET_ADVANCED_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ADVANCED_CONFIG)))
|
await MSP.promise(MSPCodes.MSP_SET_ADVANCED_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ADVANCED_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_SET_ARMING_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ARMING_CONFIG)))
|
await MSP.promise(MSPCodes.MSP_SET_ARMING_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ARMING_CONFIG));
|
||||||
.then(() => semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42) ?
|
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42)) {
|
||||||
MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG)) : true)
|
await MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG));
|
||||||
.then(() => MSP.promise(MSPCodes.MSP_EEPROM_WRITE))
|
}
|
||||||
.then(() => reboot());
|
await MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
|
||||||
|
|
||||||
analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'motors');
|
analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'motors');
|
||||||
self.analyticsChanges = {};
|
self.analyticsChanges = {};
|
||||||
self.configHasChanged = false;
|
self.configHasChanged = false;
|
||||||
|
|
||||||
|
reboot();
|
||||||
});
|
});
|
||||||
|
|
||||||
// enable Status and Motor data pulling
|
$('a.stop').on('click', () => motorsEnableTestModeElement.prop('checked', false).trigger('change'));
|
||||||
GUI.interval_add('motor_and_status_pull', get_status, 50, true);
|
|
||||||
|
// get initial motor status values
|
||||||
|
get_status();
|
||||||
|
|
||||||
setup_motor_output_reordering_dialog(SetupEscDshotDirectionDialogCallback, zeroThrottleValue);
|
setup_motor_output_reordering_dialog(SetupEscDshotDirectionDialogCallback, zeroThrottleValue);
|
||||||
|
|
||||||
|
@ -1114,12 +1154,13 @@ TABS.motors.initialize = function (callback) {
|
||||||
GUI.content_ready(callback);
|
GUI.content_ready(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
GUI.content_ready(callback);
|
content_ready();
|
||||||
}
|
}
|
||||||
|
|
||||||
function reboot() {
|
async function reboot() {
|
||||||
GUI.log(i18n.getMessage('configurationEepromSaved'));
|
GUI.log(i18n.getMessage('configurationEepromSaved'));
|
||||||
MSP.promise(MSPCodes.MSP_SET_REBOOT, false, false).then(() => reinitializeConnection(self));
|
await MSP.promise(MSPCodes.MSP_SET_REBOOT);
|
||||||
|
reinitializeConnection(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showDialogMixerReset(message) {
|
function showDialogMixerReset(message) {
|
||||||
|
|
|
@ -365,6 +365,7 @@
|
||||||
<div class="content_toolbar">
|
<div class="content_toolbar">
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<a class="save disabled" href="#" i18n="motorsButtonSave"></a>
|
<a class="save disabled" href="#" i18n="motorsButtonSave"></a>
|
||||||
|
<a class="stop disabled" href="#" i18n="escDshotDirectionDialog-StopWizard"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue