diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 5e43f245..a6a0602f 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1495,10 +1495,10 @@ "message": "Master" }, "motorsNotice": { - "message": "Motor Test Mode Notice:
Moving the sliders will cause the motors to spin up.
In order to prevent injury remove ALL propellers before using this feature.
" + "message": "Motor Test Mode / Arming Notice:
Moving the sliders or arming your craft with the transmitter will cause the motors to spin up.
In order to prevent injury remove ALL propellers before using this feature.
" }, "motorsEnableControl": { - "message": "I understand the risks, propellers are removed - Enable motor control." + "message": "I understand the risks, propellers are removed - Enable motor control and arming." }, "sensorsInfo": { diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 54983b68..03686914 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -2022,6 +2022,28 @@ MspHelper.prototype.sendRxFailConfig = function(onCompleteCallback) { } } +MspHelper.prototype.setArmingEnabled = function(doEnable, onCompleteCallback) { + if (semver.gte(CONFIG.apiVersion, "1.37.0") && (doEnable === CONFIG.arming_disabled)) { + CONFIG.arming_disabled = !doEnable; + + MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, mspHelper.crunch(MSPCodes.MSP_ARMING_DISABLE), false, function () { + if (doEnable) { + GUI.log(chrome.i18n.getMessage('armingEnabled')); + } else { + GUI.log(chrome.i18n.getMessage('armingDisabled')); + } + + if (onCompleteCallback) { + onCompleteCallback(); + } + }); + } else { + if (onCompleteCallback) { + onCompleteCallback(); + } + } +} + MSP.SDCARD_STATE_NOT_PRESENT = 0; //TODO, move these to better place MSP.SDCARD_STATE_FATAL = 1; MSP.SDCARD_STATE_CARD_INIT = 2; diff --git a/js/serial_backend.js b/js/serial_backend.js index c0cefdb3..c5c29533 100755 --- a/js/serial_backend.js +++ b/js/serial_backend.js @@ -59,7 +59,6 @@ $(document).ready(function () { $('div#port-picker #port, div#port-picker #baud, div#port-picker #delay').prop('disabled', true); $('div.connect_controls a.connect_state').text(chrome.i18n.getMessage('connecting')); - serial.connect(selected_port, {bitrate: selected_baud}, onOpen); toggleStatus(); @@ -69,17 +68,11 @@ $(document).ready(function () { GUI.tab_switch_cleanup(); GUI.tab_switch_in_progress = false; - if (semver.gte(CONFIG.apiVersion, "1.37.0") && CONFIG.arming_disabled) { - CONFIG.arming_disabled = false; - - MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, mspHelper.crunch(MSPCodes.MSP_ARMING_DISABLE), false, function () { - GUI.log(chrome.i18n.getMessage('armingEnabled')); - - finishClose(toggleStatus); - }); - } else { + function onFinishCallback() { finishClose(toggleStatus); } + + mspHelper.setArmingEnabled(true, onFinishCallback); } } } @@ -234,17 +227,8 @@ function onOpen(openInfo) { MSP.send_message(MSPCodes.MSP_NAME, false, false, function () { GUI.log(chrome.i18n.getMessage('craftNameReceived', [CONFIG.name])); - if (semver.gte(CONFIG.apiVersion, "1.37.0")) { - CONFIG.arming_disabled = true; - - MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, mspHelper.crunch(MSPCodes.MSP_ARMING_DISABLE), false, function () { - GUI.log(chrome.i18n.getMessage('armingDisabled')); - - finishOpen(); - }); - } else { - finishOpen(); - } + CONFIG.arming_disabled = false; + mspHelper.setArmingEnabled(false, finishOpen); }); } else { finishOpen(); diff --git a/tabs/motors.js b/tabs/motors.js index 5b4630f9..7dd60f4a 100644 --- a/tabs/motors.js +++ b/tabs/motors.js @@ -210,8 +210,7 @@ TABS.motors.initialize = function (callback) { self.escProtocolIsDshot = false; } - $('#motorsEnableTestMode').prop('checked', false) - .prop('disabled', true); + $('#motorsEnableTestMode').prop('checked', false); update_model(MIXER_CONFIG.mixer); @@ -461,10 +460,8 @@ TABS.motors.initialize = function (callback) { } } - setSlidersDefault(); - - $('#motorsEnableTestMode').change(function () { - if ($(this).is(':checked')) { + function setSlidersEnabled(isEnabled) { + if (isEnabled && !self.armed) { $('div.sliders input').slice(0, number_of_valid_outputs).prop('disabled', false); // unlock master slider @@ -477,6 +474,18 @@ TABS.motors.initialize = function (callback) { } $('div.sliders input').trigger('input'); + } + + setSlidersDefault(); + + $('#motorsEnableTestMode').change(function () { + var enabled = $(this).is(':checked'); + + setSlidersEnabled(enabled); + + $('div.sliders input').trigger('input'); + + mspHelper.setArmingEnabled(enabled); }).change(); var buffering_set_motor = [], @@ -530,9 +539,8 @@ TABS.motors.initialize = function (callback) { } if (motors_running) { - if (!self.armed) { - $('#motorsEnableTestMode').prop('checked', true).change(); - } + $('#motorsEnableTestMode').prop('checked', true).change(); + // motors are running adjust sliders to current values var sliders = $('div.sliders input:not(.master)'); @@ -607,15 +615,9 @@ TABS.motors.initialize = function (callback) { //keep the following here so at least we get a visual cue of our motor setup update_arm_status(); - if (self.armed) { - $('#motorsEnableTestMode').prop('disabled', true) - .prop('checked', false); - } else { - $('#motorsEnableTestMode').prop('disabled', false); - } - if (previousArmState != self.armed) { console.log('arm state change detected'); + $('#motorsEnableTestMode').change(); } }