1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-19 14:25:14 +03:00

Merge pull request #1903 from mikeller/show_acc_calibration_warning

Show warning on connect when ACC is not calibrated.
This commit is contained in:
Michael Keller 2020-03-05 09:28:29 +13:00 committed by GitHub
commit 8607d8293d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 159 additions and 65 deletions

View file

@ -497,6 +497,15 @@
"resetToCustomDefaultsAccept": {
"message": "Apply Custom Defaults"
},
"reportProblemsDialogHeader": {
"message": "The following <strong>problems with your configuration</strong> were detected:"
},
"reportProblemsDialogFooter": {
"message": "Please <strong>fix these problems before attempting to fly your craft</strong>."
},
"reportProblemsDialogAccCalibrationNeeded": {
"message": "<strong>the accelerometer is enabled but it is not calibrated</strong>. If you plan to use the accelerometer, please follow the instructions for '$t(initialSetupButtonCalibrateAccel.message)' on the '$t(tabSetup.message)' tab. If any function that requires the accelerometer (auto level modes, GPS rescue, ...) is enabled, arming of the craft will be disabled until the accelerometer has been calibrated. If you are not planning on using the accelerometer it is recommended that you disable it in '$t(configurationSystem.message)' on the '$t(tabConfiguration.message)' tab."
},
"infoVersions": {
"message" : "Running - OS: <strong>{{operatingSystem}}</strong>, Chrome: <strong>{{chromeVersion}}</strong>, Configurator: <strong>{{configuratorVersion}}</strong>",

View file

@ -2157,6 +2157,22 @@ input {
margin-bottom: 10px;
}
#dialogReportProblems-header {
margin-top: 10px;
margin-bottom: 5px;
}
.dialogReportProblems-listItem {
list-style: initial;
list-style-type: circle;
margin-left: 20px;
margin-bottom: 5px;
}
#dialogReportProblems-footer {
margin-bottom: 10px;
}
/*
noUi slider stylings
*/

View file

@ -637,6 +637,7 @@ var FC = {
SUPPORTS_CUSTOM_DEFAULTS: 4,
HAS_CUSTOM_DEFAULTS: 5,
SUPPORTS_RX_BIND: 6,
ACC_NEEDS_CALIBRATION: 7,
},
boardHasVcp: function () {

View file

@ -254,60 +254,7 @@ function onOpen(openInfo) {
GUI.log(i18n.getMessage('buildInfoReceived', [CONFIG.buildInfo]));
MSP.send_message(MSPCodes.MSP_BOARD_INFO, false, false, function () {
analytics.setFlightControllerData(analytics.DATA.BOARD_TYPE, CONFIG.boardIdentifier);
analytics.setFlightControllerData(analytics.DATA.TARGET_NAME, CONFIG.targetName);
analytics.setFlightControllerData(analytics.DATA.BOARD_NAME, CONFIG.boardName);
analytics.setFlightControllerData(analytics.DATA.MANUFACTURER_ID, CONFIG.manufacturerId);
analytics.setFlightControllerData(analytics.DATA.MCU_TYPE, FC.getMcuType());
GUI.log(i18n.getMessage('boardInfoReceived', [FC.getHardwareName(), CONFIG.boardVersion]));
updateStatusBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, FC.getHardwareName());
updateTopBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, FC.getHardwareName());
if (bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.SUPPORTS_CUSTOM_DEFAULTS) && bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.HAS_CUSTOM_DEFAULTS) && CONFIG.configurationState === FC.CONFIGURATION_STATES.DEFAULTS_BARE) {
var dialog = $('#dialogResetToCustomDefaults')[0];
$('#dialogResetToCustomDefaults-content').html(i18n.getMessage('resetToCustomDefaultsDialog'));
$('#dialogResetToCustomDefaults-acceptbtn').click(function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'AcceptResetToCustomDefaults');
var buffer = [];
buffer.push(mspHelper.RESET_TYPES.CUSTOM_DEFAULTS);
MSP.send_message(MSPCodes.MSP_RESET_CONF, buffer, false);
dialog.close();
});
$('#dialogResetToCustomDefaults-cancelbtn').click(function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CancelResetToCustomDefaults');
dialog.close();
});
dialog.showModal();
}
MSP.send_message(MSPCodes.MSP_UID, false, false, function () {
var uniqueDeviceIdentifier = CONFIG.uid[0].toString(16) + CONFIG.uid[1].toString(16) + CONFIG.uid[2].toString(16);
analytics.setFlightControllerData(analytics.DATA.MCU_ID, objectHash.sha1(uniqueDeviceIdentifier));
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected');
connectionTimestamp = Date.now();
GUI.log(i18n.getMessage('uniqueDeviceIdReceived', [uniqueDeviceIdentifier]));
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
MSP.send_message(MSPCodes.MSP_NAME, false, false, function () {
GUI.log(i18n.getMessage('craftNameReceived', [CONFIG.name]));
CONFIG.armingDisabled = false;
mspHelper.setArmingEnabled(false, false, setRtc);
});
} else {
setRtc();
}
});
});
MSP.send_message(MSPCodes.MSP_BOARD_INFO, false, false, processBoardInfo);
});
});
} else {
@ -348,6 +295,11 @@ function onOpen(openInfo) {
console.log('Failed to open serial port');
GUI.log(i18n.getMessage('serialPortOpenFail'));
abortConnect();
}
}
function abortConnect() {
$('div#connectbutton a.connect_state').text(i18n.getMessage('connect'));
$('div#connectbutton a.connect').removeClass('active');
@ -356,9 +308,104 @@ function onOpen(openInfo) {
// reset data
$('div#connectbutton a.connect').data("clicks", false);
}
function processBoardInfo() {
analytics.setFlightControllerData(analytics.DATA.BOARD_TYPE, CONFIG.boardIdentifier);
analytics.setFlightControllerData(analytics.DATA.TARGET_NAME, CONFIG.targetName);
analytics.setFlightControllerData(analytics.DATA.BOARD_NAME, CONFIG.boardName);
analytics.setFlightControllerData(analytics.DATA.MANUFACTURER_ID, CONFIG.manufacturerId);
analytics.setFlightControllerData(analytics.DATA.MCU_TYPE, FC.getMcuType());
GUI.log(i18n.getMessage('boardInfoReceived', [FC.getHardwareName(), CONFIG.boardVersion]));
updateStatusBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, FC.getHardwareName());
updateTopBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, FC.getHardwareName());
if (bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.SUPPORTS_CUSTOM_DEFAULTS) && bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.HAS_CUSTOM_DEFAULTS) && CONFIG.configurationState === FC.CONFIGURATION_STATES.DEFAULTS_BARE) {
var dialog = $('#dialogResetToCustomDefaults')[0];
$('#dialogResetToCustomDefaults-acceptbtn').click(function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'AcceptResetToCustomDefaults');
var buffer = [];
buffer.push(mspHelper.RESET_TYPES.CUSTOM_DEFAULTS);
MSP.send_message(MSPCodes.MSP_RESET_CONF, buffer, false);
dialog.close();
GUI.timeout_add('connecting', function () {
$('div.connect_controls a.connect').click(); // disconnect
}, 0);
});
$('#dialogResetToCustomDefaults-cancelbtn').click(function() {
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CancelResetToCustomDefaults');
dialog.close();
checkReportProblems();
});
dialog.showModal();
} else {
checkReportProblems();
}
}
function checkReportProblems() {
MSP.send_message(MSPCodes.MSP_STATUS, false, false, function () {
let needsProblemReportingDialog = false;
const problemDialogList = $('#dialogReportProblems-list');
problemDialogList.empty();
const problemItemTemplate = $('.dialogReportProblems-listItem');
const PROBLEM_ANALYTICS_EVENT = 'ProblemFound';
if (have_sensor(CONFIG.activeSensors, 'acc') && bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.ACC_NEEDS_CALIBRATION)) {
needsProblemReportingDialog = true;
problemDialogList.append(problemItemTemplate.clone().html(i18n.getMessage('reportProblemsDialogAccCalibrationNeeded')));
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, 'AccNotCalibrated');
}
if (needsProblemReportingDialog) {
const problemDialog = $('#dialogReportProblems')[0];
$('#dialogReportProblems-closebtn').click(function() {
problemDialog.close();
});
problemDialog.showModal();
}
processUid();
});
}
function processUid() {
MSP.send_message(MSPCodes.MSP_UID, false, false, function () {
var uniqueDeviceIdentifier = CONFIG.uid[0].toString(16) + CONFIG.uid[1].toString(16) + CONFIG.uid[2].toString(16);
analytics.setFlightControllerData(analytics.DATA.MCU_ID, objectHash.sha1(uniqueDeviceIdentifier));
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected');
connectionTimestamp = Date.now();
GUI.log(i18n.getMessage('uniqueDeviceIdReceived', [uniqueDeviceIdentifier]));
if (semver.gte(CONFIG.apiVersion, "1.20.0")) {
processName();
} else {
setRtc();
}
});
}
function processName() {
MSP.send_message(MSPCodes.MSP_NAME, false, false, function () {
GUI.log(i18n.getMessage('craftNameReceived', [CONFIG.name]));
CONFIG.armingDisabled = false;
mspHelper.setArmingEnabled(false, false, setRtc);
});
}
function setRtc() {
if (semver.gte(CONFIG.apiVersion, "1.37.0")) {
MSP.send_message(MSPCodes.MSP_SET_RTC, mspHelper.crunch(MSPCodes.MSP_SET_RTC), false, finishOpen);
@ -593,10 +640,11 @@ function update_live_status() {
if (GUI.active_tab != 'cli') {
MSP.send_message(MSPCodes.MSP_BOXNAMES, false, false);
if (semver.gte(CONFIG.apiVersion, "1.32.0"))
if (semver.gte(CONFIG.apiVersion, "1.32.0")) {
MSP.send_message(MSPCodes.MSP_STATUS_EX, false, false);
else
} else {
MSP.send_message(MSPCodes.MSP_STATUS, false, false);
}
MSP.send_message(MSPCodes.MSP_ANALOG, false, false);
}

View file

@ -359,7 +359,7 @@
<dialog id="dialogResetToCustomDefaults">
<h3 i18n="noticeTitle"></h3>
<div class="content">
<div id="dialogResetToCustomDefaults-content"></div>
<div id="dialogResetToCustomDefaults-content" i18n="resetToCustomDefaultsDialog"></div>
</div>
<div>
<span class="buttons">
@ -371,6 +371,26 @@
</div>
</dialog>
<dialog id="dialogReportProblems">
<h3 i18n="warningTitle"></h3>
<div class="content">
<div id="dialogReportProblems-header" i18n="reportProblemsDialogHeader"></div>
<ul id="dialogReportProblems-list">
<!-- List elements added dynamically -->
</ul>
<div id="dialogReportProblems-footer" i18n="reportProblemsDialogFooter"></div>
</div>
<div>
<span class="buttons">
<a href="#" id="dialogReportProblems-closebtn" class="regular-button" i18n="close"></a>
</span>
</div>
</dialog>
<ul> <!-- Sonar says so -->
<li class="dialogReportProblems-listItem"></li>
</ul>
<dialog class="dialogError">
<h3 i18n="errorTitle"></h3>
<div class="content">