1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-24 16:55:24 +03:00

Merge pull request #166 from mikeller/cleanup_profile_loading

Added support for rateprofiles.
This commit is contained in:
Anton Stålheim 2016-08-02 08:48:33 +02:00 committed by GitHub
commit 770a6272d0
7 changed files with 210 additions and 82 deletions

View file

@ -1,6 +1,8 @@
'use strict;'
var Features = function (config) {
var self = this;
var features = [
{bit: 0, group: 'rxMode', mode: 'group', name: 'RX_PPM'},
{bit: 1, group: 'batteryVoltage', name: 'VBAT'},
@ -43,24 +45,27 @@ var Features = function (config) {
);
}
this._features = features;
this._featureMask = 0;
self._features = features;
self._featureMask = 0;
}
Features.prototype.getMask = function () {
return this._featureMask;
var self = this;
return self._featureMask;
}
Features.prototype.setMask = function (featureMask) {
this._featureMask = featureMask;
var self = this;
self._featureMask = featureMask;
}
Features.prototype.isEnabled = function (featureName) {
var features = this._features;
var featureMask = this._featureMask;
var self = this;
for (var i = 0; i < features.length; i++) {
if (features[i].name === featureName && bit_check(featureMask, features[i].bit)) {
for (var i = 0; i < self._features.length; i++) {
if (self._features[i].name === featureName && bit_check(self._featureMask, self._features[i].bit)) {
return true;
}
}
@ -68,56 +73,56 @@ Features.prototype.isEnabled = function (featureName) {
}
Features.prototype.generateElements = function (featuresElements) {
var features = this._features;
var featureMask = this._featureMask;
var self = this;
var radioGroups = [];
for (var i = 0; i < features.length; i++) {
for (var i = 0; i < self._features.length; i++) {
var row_e;
var feature_tip_html = '';
if (features[i].haveTip) {
feature_tip_html = '<div class="helpicon cf_tip" i18n_title="feature' + features[i].name + 'Tip"></div>';
if (self._features[i].haveTip) {
feature_tip_html = '<div class="helpicon cf_tip" i18n_title="feature' + self._features[i].name + 'Tip"></div>';
}
if (features[i].mode === 'group') {
if (self._features[i].mode === 'group') {
row_e = $('<tr><td style="width: 15px;"><input style="width: 13px;" class="feature" id="feature-'
+ i
+ '" value="'
+ features[i].bit
+ self._features[i].bit
+ '" title="'
+ features[i].name
+ self._features[i].name
+ '" type="radio" name="'
+ features[i].group
+ self._features[i].group
+ '" /></td><td><label for="feature-'
+ i
+ '">'
+ features[i].name
+ '</label></td><td><span i18n="feature' + features[i].name + '"></span>'
+ self._features[i].name
+ '</label></td><td><span i18n="feature' + self._features[i].name + '"></span>'
+ feature_tip_html + '</td></tr>');
radioGroups.push(features[i].group);
radioGroups.push(self._features[i].group);
} else {
row_e = $('<tr><td><input class="feature toggle" id="feature-'
+ i
+ '" name="'
+ features[i].name
+ self._features[i].name
+ '" title="'
+ features[i].name
+ self._features[i].name
+ '" type="checkbox"/></td><td><label for="feature-'
+ i
+ '">'
+ features[i].name
+ '</label></td><td><span i18n="feature' + features[i].name + '"></span>'
+ self._features[i].name
+ '</label></td><td><span i18n="feature' + self._features[i].name + '"></span>'
+ feature_tip_html + '</td></tr>');
var feature_e = row_e.find('input.feature');
feature_e.prop('checked', bit_check(featureMask, features[i].bit));
feature_e.data('bit', features[i].bit);
feature_e.prop('checked', bit_check(self._featureMask, self._features[i].bit));
feature_e.data('bit', self._features[i].bit);
}
featuresElements.each(function () {
if ($(this).hasClass(features[i].group)) {
if ($(this).hasClass(self._features[i].group)) {
$(this).append(row_e);
}
});
@ -129,7 +134,7 @@ Features.prototype.generateElements = function (featuresElements) {
controlElements.each(function() {
var bit = parseInt($(this).attr('value'));
var state = bit_check(featureMask, bit);
var state = bit_check(self._featureMask, bit);
$(this).prop('checked', state);
});
@ -137,14 +142,16 @@ Features.prototype.generateElements = function (featuresElements) {
}
Features.prototype.updateData = function (featureElement) {
var self = this;
switch (featureElement.attr('type')) {
case 'checkbox':
var bit = featureElement.data('bit');
if (featureElement.is(':checked')) {
this._featureMask = bit_set(this._featureMask, bit);
self._featureMask = bit_set(self._featureMask, bit);
} else {
this._featureMask = bit_clear(this._featureMask, bit);
self._featureMask = bit_clear(self._featureMask, bit);
}
break;
@ -152,17 +159,15 @@ Features.prototype.updateData = function (featureElement) {
var group = featureElement.attr('name');
var controlElements = $('input[name="' + group + '"]');
var selectedBit = controlElements.filter(':checked').val();
var featureMask = this._featureMask;
controlElements.each(function() {
var bit = $(this).val();
if (selectedBit === bit) {
featureMask = bit_set(featureMask, bit);
self._featureMask = bit_set(self._featureMask, bit);
} else {
featureMask = bit_clear(featureMask, bit);
self._featureMask = bit_clear(self._featureMask, bit);
}
});
this._featureMask = featureMask;
break;
}
}

View file

@ -283,7 +283,8 @@ var MSP = {
CONFIG.activeSensors = data.getUint16(4, 1);
CONFIG.mode = data.getUint32(6, 1);
CONFIG.profile = data.getUint8(10);
$('.tab-pid_tuning select[name="profilechange"]').val(CONFIG.profile);
TABS.pid_tuning.checkUpdateProfile(false);
sensor_status(CONFIG.activeSensors);
$('span.i2c-error').text(CONFIG.i2cError);
@ -299,7 +300,7 @@ var MSP = {
CONFIG.numProfiles = data.getUint8(13);
CONFIG.rateProfile = data.getUint8(14);
TABS.pid_tuning.checkUpdateProfile();
TABS.pid_tuning.checkUpdateProfile(true);
sensor_status(CONFIG.activeSensors);
$('span.i2c-error').text(CONFIG.i2cError);
@ -1271,9 +1272,12 @@ var MSP = {
case MSP_codes.MSP_SET_FILTER_CONFIG:
console.log('Filter config set');
break;
case MSP_codes.MSP_SET_PID_ADVANCED:
case MSP_codes.MSP_SET_ADVANCED_TUNING:
console.log('Advanced tuning parameters set');
break;
case MSP_codes.MSP_SET_SPECIAL_PARAMETERS:
console.log('Special parameters set');
break;
default:
console.log('Unknown code detected: ' + code);
} else {

View file

@ -274,9 +274,10 @@ function onConnect() {
if (semver.gte(CONFIG.flightControllerVersion, "2.4.0")) {
CONFIG.numProfiles = 2;
$('select[name="profilechange"] .profile3').hide();
$('.tab-pid_tuning select[name="profile"] .profile3').hide();
} else {
CONFIG.numProfiles = 3;
$('.tab-pid_tuning select[name="rate_profile"]').hide();
}
}