1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-25 01:05:15 +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,
};
TABS.motors.initialize = function (callback) {
TABS.motors.initialize = async function (callback) {
const self = this;
self.armed = false;
@ -59,18 +59,25 @@ TABS.motors.initialize = function (callback) {
GUI.active_tab = 'motors';
}
MSP.promise(MSPCodes.MSP_STATUS)
.then(() => MSP.promise(MSPCodes.MSP_PID_ADVANCED))
.then(() => MSP.promise(MSPCodes.MSP_FEATURE_CONFIG))
.then(() => 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)
.then(() => MSP.promise(MSPCodes.MSP_MOTOR_CONFIG))
.then(() => MSP.promise(MSPCodes.MSP_MOTOR_3D_CONFIG))
.then(() => MSP.promise(MSPCodes.MSP2_MOTOR_OUTPUT_REORDERING))
.then(() => MSP.promise(MSPCodes.MSP_ADVANCED_CONFIG))
.then(() => semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42) ? MSP.promise(MSPCodes.MSP_FILTER_CONFIG) : true)
.then(() => semver.gte(FC.CONFIG.apiVersion, "1.8.0") ? MSP.promise(MSPCodes.MSP_ARMING_CONFIG) : true)
.then(() => load_html());
await MSP.promise(MSPCodes.MSP_STATUS);
await MSP.promise(MSPCodes.MSP_PID_ADVANCED);
await MSP.promise(MSPCodes.MSP_FEATURE_CONFIG);
await MSP.promise(MSPCodes.MSP_MIXER_CONFIG);
if (FC.MOTOR_CONFIG.use_dshot_telemetry || FC.MOTOR_CONFIG.use_esc_sensor) {
await MSP.promise(MSPCodes.MSP_MOTOR_TELEMETRY);
}
await MSP.promise(MSPCodes.MSP_MOTOR_CONFIG);
await MSP.promise(MSPCodes.MSP_MOTOR_3D_CONFIG);
await MSP.promise(MSPCodes.MSP2_MOTOR_OUTPUT_REORDERING);
await MSP.promise(MSPCodes.MSP_ADVANCED_CONFIG);
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() {
$('#content').load("./tabs/motors.html", process_html);
@ -226,7 +233,7 @@ TABS.motors.initialize = function (callback) {
const motorsEnableTestModeElement = $('#motorsEnableTestMode');
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)) {
$(".motor_testing .telemetry").hide();
@ -240,6 +247,7 @@ TABS.motors.initialize = function (callback) {
function setContentButtons(motorsTesting=false) {
$('.btn .tool').toggleClass("disabled", self.configHasChanged || motorsTesting);
$('.btn .save').toggleClass("disabled", !self.configHasChanged);
$('.btn .stop').toggleClass("disabled", !motorsTesting);
}
const defaultConfiguration = {
@ -864,7 +872,16 @@ TABS.motors.initialize = function (callback) {
setSlidersDefault();
motorsEnableTestModeElement.change(function () {
const ignoreKeys = [
'PageUp',
'PageDown',
'End',
'Home',
'ArrowUp',
'ArrowDown',
];
motorsEnableTestModeElement.on('change', function () {
let enabled = $(this).is(':checked');
// prevent or disable testing if configHasChanged flag is set.
if (self.configHasChanged) {
@ -876,16 +893,35 @@ TABS.motors.initialize = function (callback) {
// disable input
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);
setSlidersEnabled(enabled);
$('div.sliders input').trigger('input');
mspHelper.setArmingEnabled(enabled, enabled);
}).change();
});
let bufferingSetMotor = [],
buffer_delay = false;
$('div.sliders input:not(.master)').on('input', function () {
const index = $(this).index();
let buffer = [];
@ -935,7 +971,7 @@ TABS.motors.initialize = function (callback) {
}
if (motorsRunning) {
motorsEnableTestModeElement.prop('checked', true).change();
motorsEnableTestModeElement.prop('checked', true).trigger('change');
// 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
FC.MOTOR_CONFIG.minthrottle = parseInt($('input[name="minthrottle"]').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;
}
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)))
.then(() => 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)))
.then(() => 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)))
.then(() => semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42) ?
MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG)) : true)
.then(() => MSP.promise(MSPCodes.MSP_EEPROM_WRITE))
.then(() => reboot());
await MSP.promise(MSPCodes.MSP_SET_FEATURE_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FEATURE_CONFIG));
await MSP.promise(MSPCodes.MSP_SET_MIXER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MIXER_CONFIG));
await MSP.promise(MSPCodes.MSP_SET_MOTOR_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_CONFIG));
await MSP.promise(MSPCodes.MSP_SET_MOTOR_3D_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_MOTOR_3D_CONFIG));
await MSP.promise(MSPCodes.MSP_SET_ADVANCED_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ADVANCED_CONFIG));
await MSP.promise(MSPCodes.MSP_SET_ARMING_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_ARMING_CONFIG));
if (semver.gte(FC.CONFIG.apiVersion, API_VERSION_1_42)) {
await MSP.promise(MSPCodes.MSP_SET_FILTER_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FILTER_CONFIG));
}
await MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'motors');
self.analyticsChanges = {};
self.configHasChanged = false;
reboot();
});
// enable Status and Motor data pulling
GUI.interval_add('motor_and_status_pull', get_status, 50, true);
$('a.stop').on('click', () => motorsEnableTestModeElement.prop('checked', false).trigger('change'));
// get initial motor status values
get_status();
setup_motor_output_reordering_dialog(SetupEscDshotDirectionDialogCallback, zeroThrottleValue);
@ -1114,12 +1154,13 @@ TABS.motors.initialize = function (callback) {
GUI.content_ready(callback);
}
GUI.content_ready(callback);
content_ready();
}
function reboot() {
async function reboot() {
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) {