diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 9e33b856..99628add 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -198,6 +198,12 @@ "craftNameReceived": { "message": "Craft name: $1" }, + "armingDisabled": { + "message": "Arming Disabled" + }, + "armingEnabled": { + "message": "Arming Enabled" + }, "boardInfoReceived": { "message": "Board: $1, version: $2" }, diff --git a/js/msp/MSPCodes.js b/js/msp/MSPCodes.js index a7a636f2..794cf0d9 100644 --- a/js/msp/MSPCodes.js +++ b/js/msp/MSPCodes.js @@ -77,6 +77,7 @@ var MSPCodes = { MSP_SENSOR_CONFIG: 96, MSP_SET_SENSOR_CONFIG: 97, //MSP_SPECIAL_PARAMETERS: 98, // DEPRECATED + MSP_ARMING_DISABLE: 99, //MSP_SET_SPECIAL_PARAMETERS: 99, // DEPRECATED //MSP_IDENT: 100, // DEPRECTED MSP_STATUS: 101, diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 3b4effe8..f9d0c9e8 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1153,6 +1153,9 @@ MspHelper.prototype.process_data = function(dataHandler) { case MSPCodes.MSP_COPY_PROFILE: console.log('Copy profile'); break; + case MSPCodes.MSP_ARMING_DISABLE: + console.log('Arming disable'); + break; default: console.log('Unknown code detected: ' + code); } else { @@ -1512,9 +1515,17 @@ MspHelper.prototype.crunch = function(code) { case MSPCodes.MSP_COPY_PROFILE: buffer.push8(COPY_PROFILE.type) .push8(COPY_PROFILE.dstProfile) - .push8(COPY_PROFILE.srcProfile) + .push8(COPY_PROFILE.srcProfile); + break; + case MSPCodes.MSP_ARMING_DISABLE: + var value; + if (CONFIG.arming_disabled) { + value = 1; + } else { + value = 0; + } + buffer.push8(value); break; - default: return false; } diff --git a/js/serial_backend.js b/js/serial_backend.js index f9fabc5f..54a7d030 100755 --- a/js/serial_backend.js +++ b/js/serial_backend.js @@ -60,42 +60,21 @@ $(document).ready(function () { GUI.interval_kill_all(); GUI.tab_switch_cleanup(); GUI.tab_switch_in_progress = false; - - var wasConnected = CONFIGURATOR.connectionValid; - serial.disconnect(onClosed); + if (semver.gte(CONFIG.apiVersion, "1.37.0")) { + CONFIG.arming_disabled = false; + + MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, false, false, function () { + GUI.log(chrome.i18n.getMessage('armingEnabled')); - GUI.connected_to = false; - GUI.allowedTabs = GUI.defaultAllowedTabsWhenDisconnected.slice(); - MSP.disconnect_cleanup(); - PortUsage.reset(); - - // Reset various UI elements - $('span.i2c-error').text(0); - $('span.cycle-time').text(0); - if (semver.gte(CONFIG.apiVersion, "1.20.0")) - $('span.cpu-load').text(''); - - // unlock port select & baud - $('div#port-picker #port').prop('disabled', false); - if (!GUI.auto_connect) $('div#port-picker #baud').prop('disabled', false); - - // reset connect / disconnect button - $('div.connect_controls a.connect').removeClass('active'); - $('div.connect_controls a.connect_state').text(chrome.i18n.getMessage('connect')); - - // reset active sensor indicators - sensor_status(0); - - if (wasConnected) { - // detach listeners and remove element data - $('#content').empty(); - } - - $('#tabs .tab_landing a').click(); + finishClose(clicks); + }); + } else { + finishClose(clicks); + } } - - $(this).data("clicks", !clicks); + + $(this).data("clicks", !clicks); } } }); @@ -143,7 +122,40 @@ $(document).ready(function () { PortUsage.initialize(); }); +function finishClose(clicks) { + var wasConnected = CONFIGURATOR.connectionValid; + + serial.disconnect(onClosed); + MSP.disconnect_cleanup(); + PortUsage.reset(); + + GUI.connected_to = false; + GUI.allowedTabs = GUI.defaultAllowedTabsWhenDisconnected.slice(); + // Reset various UI elements + $('span.i2c-error').text(0); + $('span.cycle-time').text(0); + if (semver.gte(CONFIG.apiVersion, "1.20.0")) + $('span.cpu-load').text(''); + + // unlock port select & baud + $('div#port-picker #port').prop('disabled', false); + if (!GUI.auto_connect) $('div#port-picker #baud').prop('disabled', false); + + // reset connect / disconnect button + $('div.connect_controls a.connect').removeClass('active'); + $('div.connect_controls a.connect_state').text(chrome.i18n.getMessage('connect')); + + // reset active sensor indicators + sensor_status(0); + + if (wasConnected) { + // detach listeners and remove element data + $('#content').empty(); + } + + $('#tabs .tab_landing a').click(); +} function onOpen(openInfo) { @@ -214,7 +226,17 @@ function onOpen(openInfo) { MSP.send_message(MSPCodes.MSP_NAME, false, false, function () { GUI.log(chrome.i18n.getMessage('craftNameReceived', [CONFIG.name])); - finishOpen(); + if (semver.gte(CONFIG.apiVersion, "1.37.0")) { + CONFIG.arming_disabled = true; + + MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, false, false, function () { + GUI.log(chrome.i18n.getMessage('armingDisabled')); + + finishOpen(); + }); + } else { + finishOpen(); + } }); } else { finishOpen();