1
0
Fork 0
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:
J Blackman 2022-05-28 12:10:36 +10:00 committed by GitHub
commit 8f633889fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 33 deletions

View file

@ -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) {

View file

@ -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>