1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-17 05:15:21 +03:00

Move FC global vars inside FC object

This commit is contained in:
Miguel Angel Mulero Martinez 2020-07-06 08:05:27 +02:00
parent b9137a68e6
commit 24010a2e2a
32 changed files with 2799 additions and 2797 deletions

View file

@ -1,75 +1,77 @@
'use strict';
// define all the global variables that are uses to hold FC state
var CONFIG;
var BF_CONFIG; // Remove when we officialy retire BF 3.1
var FEATURE_CONFIG;
var BEEPER_CONFIG;
var MIXER_CONFIG;
var BOARD_ALIGNMENT_CONFIG;
var LED_STRIP;
var LED_COLORS;
var LED_MODE_COLORS;
var PID;
var PID_names;
var PIDS_ACTIVE;
var PIDs;
var RC_MAP;
var RC;
var RC_tuning;
var AUX_CONFIG;
var AUX_CONFIG_IDS;
var MODE_RANGES;
var MODE_RANGES_EXTRA;
var ADJUSTMENT_RANGES;
var SERVO_CONFIG;
var SERVO_RULES;
var SERIAL_CONFIG;
var SENSOR_DATA;
var MOTOR_DATA;
var MOTOR_TELEMETRY_DATA;
var SERVO_DATA;
var GPS_DATA;
var ANALOG;
var VOLTAGE_METERS;
var VOLTAGE_METER_CONFIGS;
var CURRENT_METERS;
var CURRENT_METER_CONFIGS;
var BATTERY_STATE;
var BATTERY_CONFIG;
var ARMING_CONFIG;
var FC_CONFIG;
var MISC; // DEPRECATED
var MOTOR_CONFIG;
var GPS_CONFIG;
var RSSI_CONFIG;
var MOTOR_3D_CONFIG;
var DATAFLASH;
var SDCARD;
var BLACKBOX;
var TRANSPONDER;
var RC_DEADBAND_CONFIG;
var SENSOR_ALIGNMENT;
var RX_CONFIG;
var FAILSAFE_CONFIG;
var GPS_RESCUE;
var RXFAIL_CONFIG;
var PID_ADVANCED_CONFIG;
var FILTER_CONFIG;
var ADVANCED_TUNING_ACTIVE;
var ADVANCED_TUNING;
var SENSOR_CONFIG;
var COPY_PROFILE;
var VTX_CONFIG;
var VTXTABLE_BAND;
var VTXTABLE_POWERLEVEL;
var MULTIPLE_MSP;
var DEFAULT;
var DEFAULT_PIDS;
const FC = {
var FC = {
resetState: function () {
CONFIG = {
// define all the global variables that are uses to hold FC state
// the default state must be defined inside the resetState() method
ADJUSTMENT_RANGES: null,
ADVANCED_TUNING: null,
ADVANCED_TUNING_ACTIVE: null,
ANALOG: null,
ARMING_CONFIG: null,
AUX_CONFIG: null,
AUX_CONFIG_IDS: null,
BATTERY_CONFIG: null,
BATTERY_STATE: null,
BEEPER_CONFIG: null,
BF_CONFIG: null, // Remove when we officialy retire BF 3.1
BLACKBOX: null,
BOARD_ALIGNMENT_CONFIG: null,
CONFIG: null,
COPY_PROFILE: null,
CURRENT_METERS: null,
CURRENT_METER_CONFIGS: null,
DATAFLASH: null,
DEFAULT: null,
DEFAULT_PIDS: null,
FAILSAFE_CONFIG: null,
FC_CONFIG: null,
FEATURE_CONFIG: null,
FILTER_CONFIG: null,
GPS_CONFIG: null,
GPS_DATA: null,
GPS_RESCUE: null,
LED_COLORS: null,
LED_MODE_COLORS: null,
LED_STRIP: null,
MISC: null, // DEPRECATED
MIXER_CONFIG: null,
MODE_RANGES: null,
MODE_RANGES_EXTRA: null,
MOTOR_3D_CONFIG: null,
MOTOR_CONFIG: null,
MOTOR_DATA: null,
MOTOR_TELEMETRY_DATA: null,
MULTIPLE_MSP: null,
PID: null,
PIDS_ACTIVE: null,
PID_ADVANCED_CONFIG: null,
PID_NAMES: null,
PIDS: null,
RC: null,
RC_DEADBAND_CONFIG: null,
RC_MAP: null,
RC_TUNING: null,
RSSI_CONFIG: null,
RXFAIL_CONFIG: null,
RX_CONFIG: null,
SDCARD: null,
SENSOR_ALIGNMENT: null,
SENSOR_CONFIG: null,
SENSOR_DATA: null,
SERIAL_CONFIG: null,
SERVO_CONFIG: null,
SERVO_DATA: null,
SERVO_RULES: null,
TRANSPONDER: null,
VOLTAGE_METERS: null,
VOLTAGE_METER_CONFIGS: null,
VTXTABLE_BAND: null,
VTXTABLE_POWERLEVEL: null,
VTX_CONFIG: null,
resetState () {
this.CONFIG = {
apiVersion: "0.0.0",
flightControllerIdentifier: '',
flightControllerVersion: '',
@ -107,66 +109,66 @@ var FC = {
configurationProblems: 0,
};
BF_CONFIG = {
this.BF_CONFIG = {
currentscale: 0,
currentoffset: 0,
currentmetertype: 0,
batterycapacity: 0,
};
COPY_PROFILE = {
this.COPY_PROFILE = {
type: 0,
dstProfile: 0,
srcProfile: 0,
};
FEATURE_CONFIG = {
this.FEATURE_CONFIG = {
features: 0,
};
BEEPER_CONFIG = {
this.BEEPER_CONFIG = {
beepers: 0,
dshotBeaconTone: 0,
dshotBeaconConditions: 0,
};
MIXER_CONFIG = {
this.MIXER_CONFIG = {
mixer: 0,
reverseMotorDir: 0,
};
};
BOARD_ALIGNMENT_CONFIG = {
this.BOARD_ALIGNMENT_CONFIG = {
roll: 0,
pitch: 0,
yaw: 0,
};
LED_STRIP = [];
LED_COLORS = [];
LED_MODE_COLORS = [];
this.LED_STRIP = [];
this.LED_COLORS = [];
this.LED_MODE_COLORS = [];
PID = {
controller: 0
this.PID = {
controller: 0,
};
PID_names = [];
PIDS_ACTIVE = new Array(10);
PIDs = new Array(10);
for (var i = 0; i < 10; i++) {
PIDS_ACTIVE[i] = new Array(3);
PIDs[i] = new Array(3);
this.PID_NAMES = [];
this.PIDS_ACTIVE = Array.from({length: 10});
this.PIDS = Array.from({length: 10});
for (let i = 0; i < 10; i++) {
this.PIDS_ACTIVE[i] = Array.from({length: 3});
this.PIDS[i] = Array.from({length: 3});
}
RC_MAP = [];
this.RC_MAP = [];
// defaults
// roll, pitch, yaw, throttle, aux 1, ... aux n
RC = {
this.RC = {
active_channels: 0,
channels: new Array(32),
channels: Array.from({length: 32}),
};
RC_tuning = {
this.RC_TUNING = {
RC_RATE: 0,
RC_EXPO: 0,
roll_pitch_rate: 0, // pre 1.7 api only
@ -186,17 +188,17 @@ var FC = {
yaw_rate_limit: 1998,
};
AUX_CONFIG = [];
AUX_CONFIG_IDS = [];
this.AUX_CONFIG = [];
this.AUX_CONFIG_IDS = [];
MODE_RANGES = [];
MODE_RANGES_EXTRA = [];
ADJUSTMENT_RANGES = [];
this.MODE_RANGES = [];
this.MODE_RANGES_EXTRA = [];
this.ADJUSTMENT_RANGES = [];
SERVO_CONFIG = [];
SERVO_RULES = [];
this.SERVO_CONFIG = [];
this.SERVO_RULES = [];
SERIAL_CONFIG = {
this.SERIAL_CONFIG = {
ports: [],
// pre 1.6 settings
@ -206,7 +208,7 @@ var FC = {
cliBaudRate: 0,
};
SENSOR_DATA = {
this.SENSOR_DATA = {
gyroscope: [0, 0, 0],
accelerometer: [0, 0, 0],
magnetometer: [0, 0, 0],
@ -216,10 +218,10 @@ var FC = {
debug: [0, 0, 0, 0],
};
MOTOR_DATA = new Array(8);
SERVO_DATA = new Array(8);
this.MOTOR_DATA = Array.from({length: 8});
this.SERVO_DATA = Array.from({length: 8});
MOTOR_TELEMETRY_DATA = {
this.MOTOR_TELEMETRY_DATA = {
rpm: [0, 0, 0, 0, 0, 0, 0, 0],
invalidPercent: [0, 0, 0, 0, 0, 0, 0, 0],
temperature: [0, 0, 0, 0, 0, 0, 0, 0],
@ -228,7 +230,7 @@ var FC = {
consumption: [0, 0, 0, 0, 0, 0, 0, 0],
};
GPS_DATA = {
this.GPS_DATA = {
fix: 0,
numSat: 0,
lat: 0,
@ -243,24 +245,24 @@ var FC = {
chn: [],
svid: [],
quality: [],
cno: []
cno: [],
};
ANALOG = {
this.ANALOG = {
voltage: 0,
mAhdrawn: 0,
rssi: 0,
amperage: 0,
last_received_timestamp: Date.now() // FIXME this code lies, it's never been received at this point
last_received_timestamp: Date.now(), // FIXME this code lies, it's never been received at this point
};
VOLTAGE_METERS = [];
VOLTAGE_METER_CONFIGS = [];
CURRENT_METERS = [];
CURRENT_METER_CONFIGS = [];
this.VOLTAGE_METERS = [];
this.VOLTAGE_METER_CONFIGS = [];
this.CURRENT_METERS = [];
this.CURRENT_METER_CONFIGS = [];
BATTERY_STATE = {};
BATTERY_CONFIG = {
this.BATTERY_STATE = {};
this.BATTERY_CONFIG = {
vbatmincellvoltage: 0,
vbatmaxcellvoltage: 0,
vbatwarningcellvoltage: 0,
@ -269,17 +271,17 @@ var FC = {
currentMeterSource: 0,
};
ARMING_CONFIG = {
this.ARMING_CONFIG = {
auto_disarm_delay: 0,
disarm_kill_switch: 0,
small_angle: 0,
};
FC_CONFIG = {
loopTime: 0
this.FC_CONFIG = {
loopTime: 0,
};
MISC = {
this.MISC = {
// DEPRECATED = only used to store values that are written back to the fc as-is, do NOT use for any other purpose
failsafe_throttle: 0,
gps_baudrate: 0,
@ -291,7 +293,7 @@ var FC = {
vbatwarningcellvoltage: 0,
batterymetertype: 1, // 1=ADC, 2=ESC
};
MOTOR_CONFIG = {
this.MOTOR_CONFIG = {
minthrottle: 0,
maxthrottle: 0,
mincommand: 0,
@ -301,7 +303,7 @@ var FC = {
use_esc_sensor: false,
};
GPS_CONFIG = {
this.GPS_CONFIG = {
provider: 0,
ublox_sbas: 0,
auto_config: 0,
@ -310,25 +312,25 @@ var FC = {
ublox_use_galileo: 0,
};
RSSI_CONFIG = {
this.RSSI_CONFIG = {
channel: 0,
};
MOTOR_3D_CONFIG = {
this.MOTOR_3D_CONFIG = {
deadband3d_low: 0,
deadband3d_high: 0,
neutral: 0,
};
DATAFLASH = {
this.DATAFLASH = {
ready: false,
supported: false,
sectors: 0,
totalSize: 0,
usedSize: 0
usedSize: 0,
};
SDCARD = {
this.SDCARD = {
supported: false,
state: 0,
filesystemLastError: 0,
@ -336,7 +338,7 @@ var FC = {
totalSizeKB: 0,
};
BLACKBOX = {
this.BLACKBOX = {
supported: false,
blackboxDevice: 0,
blackboxRateNum: 1,
@ -345,21 +347,21 @@ var FC = {
blackboxSampleRate: 0,
};
TRANSPONDER = {
this.TRANSPONDER = {
supported: false,
data: [],
provider: 0,
providers: [],
};
RC_DEADBAND_CONFIG = {
this.RC_DEADBAND_CONFIG = {
deadband: 0,
yaw_deadband: 0,
alt_hold_deadband: 0,
deadband3d_throttle: 0,
};
SENSOR_ALIGNMENT = {
this.SENSOR_ALIGNMENT = {
align_gyro: 0,
align_acc: 0,
align_mag: 0,
@ -369,7 +371,7 @@ var FC = {
gyro_2_align: 0,
};
PID_ADVANCED_CONFIG = {
this.PID_ADVANCED_CONFIG = {
gyro_sync_denom: 0,
pid_process_denom: 0,
use_unsyncedPwm: 0,
@ -387,7 +389,7 @@ var FC = {
debugModeCount: 0,
};
FILTER_CONFIG = {
this.FILTER_CONFIG = {
gyro_hardware_lpf: 0,
gyro_32khz_hardware_lpf: 0,
gyro_lowpass_hz: 0,
@ -419,7 +421,7 @@ var FC = {
gyro_rpm_notch_min_hz: 0,
};
ADVANCED_TUNING = {
this.ADVANCED_TUNING = {
rollPitchItermIgnoreRate: 0,
yawItermIgnoreRate: 0,
yaw_p_limit: 0,
@ -464,15 +466,15 @@ var FC = {
ff_boost: 0,
vbat_sag_compensation: 0,
};
ADVANCED_TUNING_ACTIVE = { ...ADVANCED_TUNING };
this.ADVANCED_TUNING_ACTIVE = { ...this.ADVANCED_TUNING };
SENSOR_CONFIG = {
this.SENSOR_CONFIG = {
acc_hardware: 0,
baro_hardware: 0,
mag_hardware: 0,
};
RX_CONFIG = {
this.RX_CONFIG = {
serialrx_provider: 0,
stick_max: 0,
stick_center: 0,
@ -490,14 +492,14 @@ var FC = {
fpvCamAngleDegrees: 0,
rcSmoothingType: 0,
rcSmoothingInputCutoff: 0,
rcSmoothingDerivativeCutoff: 0,
rcSmoothingDerivativeCutoff: 0,
rcSmoothingInputType: 0,
rcSmoothingDerivativeType: 0,
rcSmoothingAutoSmoothness: 0,
usbCdcHidType: 0,
};
FAILSAFE_CONFIG = {
this.FAILSAFE_CONFIG = {
failsafe_delay: 0,
failsafe_off_delay: 0,
failsafe_throttle: 0,
@ -506,7 +508,7 @@ var FC = {
failsafe_procedure: 0,
};
GPS_RESCUE = {
this.GPS_RESCUE = {
angle: 0,
initialAltitudeM: 0,
descentDistanceM: 0,
@ -522,9 +524,9 @@ var FC = {
altitudeMode: 0,
};
RXFAIL_CONFIG = [];
this.RXFAIL_CONFIG = [];
VTX_CONFIG = {
this.VTX_CONFIG = {
vtx_type: 0,
vtx_band: 0,
vtx_channel: 0,
@ -541,7 +543,7 @@ var FC = {
vtx_table_clear: false,
};
VTXTABLE_BAND = {
this.VTXTABLE_BAND = {
vtxtable_band_number: 0,
vtxtable_band_name: '',
vtxtable_band_letter: '',
@ -549,23 +551,23 @@ var FC = {
vtxtable_band_frequencies: [],
};
VTXTABLE_POWERLEVEL = {
this.VTXTABLE_POWERLEVEL = {
vtxtable_powerlevel_number: 0,
vtxtable_powerlevel_value: 0,
vtxtable_powerlevel_label: 0,
};
MULTIPLE_MSP = {
this.MULTIPLE_MSP = {
msp_commands: [],
};
DEFAULT = {
this.DEFAULT = {
gyro_lowpass_hz: 100,
gyro_lowpass_dyn_min_hz: 150,
gyro_lowpass_dyn_max_hz: 450,
gyro_lowpass_type: FC.FILTER_TYPE_FLAGS.PT1,
gyro_lowpass_type: this.FILTER_TYPE_FLAGS.PT1,
gyro_lowpass2_hz: 300,
gyro_lowpass2_type: FC.FILTER_TYPE_FLAGS.PT1,
gyro_lowpass2_type: this.FILTER_TYPE_FLAGS.PT1,
gyro_notch_cutoff: 300,
gyro_notch_hz: 400,
gyro_notch2_cutoff: 100,
@ -575,9 +577,9 @@ var FC = {
dterm_lowpass_dyn_min_hz: 150,
dterm_lowpass_dyn_max_hz: 250,
dyn_lpf_curve_expo: 5,
dterm_lowpass_type: FC.FILTER_TYPE_FLAGS.PT1,
dterm_lowpass_type: this.FILTER_TYPE_FLAGS.PT1,
dterm_lowpass2_hz: 150,
dterm_lowpass2_type: FC.FILTER_TYPE_FLAGS.BIQUAD,
dterm_lowpass2_type: this.FILTER_TYPE_FLAGS.BIQUAD,
dterm_notch_cutoff: 160,
dterm_notch_hz: 260,
yaw_lowpass_hz: 100,
@ -587,27 +589,27 @@ var FC = {
dyn_notch_width_percent_rpm: 0,
};
DEFAULT_PIDS = [
this.DEFAULT_PIDS = [
42, 85, 35, 20, 90,
46, 90, 38, 22, 95,
30, 90, 0, 0, 90,
];
},
getHardwareName: function () {
getHardwareName() {
let name;
if (CONFIG.targetName) {
name = CONFIG.targetName;
if (this.CONFIG.targetName) {
name = this.CONFIG.targetName;
} else {
name = CONFIG.boardIdentifier;
name = this.CONFIG.boardIdentifier;
}
if (CONFIG.boardName && CONFIG.boardName !== name) {
name = CONFIG.boardName + "(" + name + ")";
if (this.CONFIG.boardName && this.CONFIG.boardName !== name) {
name = `${this.CONFIG.boardName}(${name})`;
}
if (CONFIG.manufacturerId) {
name = CONFIG.manufacturerId + "/" + name;
if (this.CONFIG.manufacturerId) {
name = `${this.CONFIG.manufacturerId}/${name}`;
}
return name;
@ -627,8 +629,8 @@ var FC = {
255: "Unknown MCU",
},
getMcuType: function () {
return FC.MCU_TYPES[CONFIG.mcuTypeId];
getMcuType() {
return this.MCU_TYPES[this.CONFIG.mcuTypeId];
},
CONFIGURATION_STATES: {
@ -652,12 +654,12 @@ var FC = {
MOTOR_PROTOCOL_DISABLED: 1,
},
boardHasVcp: function () {
var hasVcp = false;
if (semver.gte(CONFIG.apiVersion, "1.37.0")) {
hasVcp = bit_check(CONFIG.targetCapabilities, FC.TARGET_CAPABILITIES_FLAGS.HAS_VCP);
boardHasVcp() {
let hasVcp = false;
if (semver.gte(this.CONFIG.apiVersion, "1.37.0")) {
hasVcp = bit_check(this.CONFIG.targetCapabilities, this.TARGET_CAPABILITIES_FLAGS.HAS_VCP);
} else {
hasVcp = BOARD.find_board_definition(CONFIG.boardIdentifier).vcp;
hasVcp = BOARD.find_board_definition(this.CONFIG.boardIdentifier).vcp;
}
return hasVcp;
@ -668,42 +670,42 @@ var FC = {
BIQUAD: 1,
},
getFilterDefaults: function() {
var versionFilterDefaults = DEFAULT;
getFilterDefaults() {
const versionFilterDefaults = this.DEFAULT;
if (semver.eq(CONFIG.apiVersion, "1.40.0")) {
if (semver.eq(this.CONFIG.apiVersion, "1.40.0")) {
versionFilterDefaults.dterm_lowpass2_hz = 200;
} else if (semver.gte(CONFIG.apiVersion, "1.41.0")) {
} else if (semver.gte(this.CONFIG.apiVersion, "1.41.0")) {
versionFilterDefaults.gyro_lowpass_hz = 150;
versionFilterDefaults.gyro_lowpass_type = FC.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.gyro_lowpass_type = this.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.gyro_lowpass2_hz = 0;
versionFilterDefaults.gyro_lowpass2_type = FC.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.gyro_lowpass2_type = this.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.dterm_lowpass_hz = 150;
versionFilterDefaults.dterm_lowpass_type = FC.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.dterm_lowpass_type = this.FILTER_TYPE_FLAGS.BIQUAD;
versionFilterDefaults.dterm_lowpass2_hz = 150;
versionFilterDefaults.dterm_lowpass2_type = FC.FILTER_TYPE_FLAGS.BIQUAD;
if (semver.gte(CONFIG.apiVersion, "1.42.0")) {
versionFilterDefaults.dterm_lowpass2_type = this.FILTER_TYPE_FLAGS.BIQUAD;
if (semver.gte(this.CONFIG.apiVersion, "1.42.0")) {
versionFilterDefaults.gyro_lowpass_hz = 200;
versionFilterDefaults.gyro_lowpass_dyn_min_hz = 200;
versionFilterDefaults.gyro_lowpass_dyn_max_hz = 500;
versionFilterDefaults.gyro_lowpass_type = FC.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.gyro_lowpass_type = this.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.gyro_lowpass2_hz = 250;
versionFilterDefaults.gyro_lowpass2_type = FC.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.gyro_lowpass2_type = this.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.dterm_lowpass_hz = 150;
versionFilterDefaults.dterm_lowpass_dyn_min_hz = 70;
versionFilterDefaults.dterm_lowpass_dyn_max_hz = 170;
versionFilterDefaults.dterm_lowpass_type = FC.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.dterm_lowpass_type = this.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.dterm_lowpass2_hz = 150;
versionFilterDefaults.dterm_lowpass2_type = FC.FILTER_TYPE_FLAGS.PT1;
versionFilterDefaults.dterm_lowpass2_type = this.FILTER_TYPE_FLAGS.PT1;
}
}
}
return versionFilterDefaults;
},
getPidDefaults: function() {
var versionPidDefaults = DEFAULT_PIDS;
getPidDefaults() {
let versionPidDefaults = this.DEFAULT_PIDS;
// if defaults change they should go here
if (semver.gte(CONFIG.apiVersion, API_VERSION_1_43)) {
if (semver.gte(this.CONFIG.apiVersion, API_VERSION_1_43)) {
versionPidDefaults = [
42, 85, 35, 23, 90,
46, 90, 38, 25, 95,