From 9c6ad8500ca2b06d5031e57d6d368675aaa77df4 Mon Sep 17 00:00:00 2001 From: Miguel Angel Mulero Martinez Date: Thu, 1 Oct 2020 11:51:00 +0200 Subject: [PATCH] Refactor and Sonar clean of Beeper.js --- src/js/Beepers.js | 215 +++++++++++++++++++-------------------- src/js/backup_restore.js | 4 +- src/js/msp/MSPHelper.js | 10 +- 3 files changed, 113 insertions(+), 116 deletions(-) diff --git a/src/js/Beepers.js b/src/js/Beepers.js index 05831c51..a69e3e61 100644 --- a/src/js/Beepers.js +++ b/src/js/Beepers.js @@ -1,120 +1,117 @@ 'use strict'; -var Beepers = function (config, supportedConditions) { - var self = this; +class Beepers { + constructor(config, supportedConditions) { + const self = this; - var beepers = [ - {bit: 0, name: 'GYRO_CALIBRATED', visible: true}, - {bit: 1, name: 'RX_LOST', visible: true}, - {bit: 2, name: 'RX_LOST_LANDING', visible: true}, - {bit: 3, name: 'DISARMING', visible: true}, - {bit: 4, name: 'ARMING', visible: true}, - {bit: 5, name: 'ARMING_GPS_FIX', visible: true}, - {bit: 6, name: 'BAT_CRIT_LOW', visible: true}, - {bit: 7, name: 'BAT_LOW', visible: true}, - {bit: 8, name: 'GPS_STATUS', visible: true}, - {bit: 9, name: 'RX_SET', visible: true}, - {bit: 10, name: 'ACC_CALIBRATION', visible: true}, - {bit: 11, name: 'ACC_CALIBRATION_FAIL', visible: true}, - {bit: 12, name: 'READY_BEEP', visible: true}, - {bit: 13, name: 'MULTI_BEEPS', visible: false}, // do not show - {bit: 14, name: 'DISARM_REPEAT', visible: true}, - {bit: 15, name: 'ARMED', visible: true}, - {bit: 16, name: 'SYSTEM_INIT', visible: true}, - {bit: 17, name: 'USB', visible: true}, - {bit: 18, name: 'BLACKBOX_ERASE', visible: true}, - ]; + const beepers = [ + { bit: 0, name: 'GYRO_CALIBRATED', visible: true }, + { bit: 1, name: 'RX_LOST', visible: true }, + { bit: 2, name: 'RX_LOST_LANDING', visible: true }, + { bit: 3, name: 'DISARMING', visible: true }, + { bit: 4, name: 'ARMING', visible: true }, + { bit: 5, name: 'ARMING_GPS_FIX', visible: true }, + { bit: 6, name: 'BAT_CRIT_LOW', visible: true }, + { bit: 7, name: 'BAT_LOW', visible: true }, + { bit: 8, name: 'GPS_STATUS', visible: true }, + { bit: 9, name: 'RX_SET', visible: true }, + { bit: 10, name: 'ACC_CALIBRATION', visible: true }, + { bit: 11, name: 'ACC_CALIBRATION_FAIL', visible: true }, + { bit: 12, name: 'READY_BEEP', visible: true }, + { bit: 13, name: 'MULTI_BEEPS', visible: false }, + { bit: 14, name: 'DISARM_REPEAT', visible: true }, + { bit: 15, name: 'ARMED', visible: true }, + { bit: 16, name: 'SYSTEM_INIT', visible: true }, + { bit: 17, name: 'USB', visible: true }, + { bit: 18, name: 'BLACKBOX_ERASE', visible: true }, + ]; - if (semver.gte(config.apiVersion, "1.37.0")) { - beepers.push( - {bit: 19, name: 'CRASH_FLIP', visible: true}, - {bit: 20, name: 'CAM_CONNECTION_OPEN', visible: true}, - {bit: 21, name: 'CAM_CONNECTION_CLOSE', visible: true}, - ); - } + if (semver.gte(config.apiVersion, "1.37.0")) { + beepers.push( + { bit: 19, name: 'CRASH_FLIP', visible: true }, + { bit: 20, name: 'CAM_CONNECTION_OPEN', visible: true }, + { bit: 21, name: 'CAM_CONNECTION_CLOSE', visible: true } + ); + } - if (semver.gte(config.apiVersion, "1.39.0")) { - beepers.push( - {bit: 22, name: 'RC_SMOOTHING_INIT_FAIL', visible: true}, - ); - } + if (semver.gte(config.apiVersion, "1.39.0")) { + beepers.push( + { bit: 22, name: 'RC_SMOOTHING_INIT_FAIL', visible: true } + ); + } - if (supportedConditions) { - self._beepers = []; - beepers.forEach(function (beeper) { - if (supportedConditions.some(function (supportedCondition) { + if (supportedConditions) { + self._beepers = []; + beepers.forEach(function (beeper) { + if (supportedConditions.some(function (supportedCondition) { return supportedCondition === beeper.name; })) { - self._beepers.push(beeper); - } - }); - } else { - self._beepers = beepers.slice(); - } - - self._beeperMask = 0; -}; - -Beepers.prototype.getMask = function () { - var self = this; - - return self._beeperMask; -}; - -Beepers.prototype.setMask = function (beeperMask) { - var self = this; - - self._beeperMask = beeperMask; -}; - -Beepers.prototype.isEnabled = function (beeperName) { - var self = this; - - for (var i = 0; i < self._beepers.length; i++) { - if (self._beepers[i].name === beeperName && bit_check(self._beeperOfMask, self._beepers[i].bit)) { - return true; - } - } - return false; -}; - -Beepers.prototype.generateElements = function (template, destination) { - var self = this; - - for (var i = 0; i < self._beepers.length; i++) { - if (self._beepers[i].visible) { - var element = template.clone(); - destination.append(element); - - var input_e = $(element).find('input'); - var label_e = $(element).find('div'); - var span_e = $(element).find('span'); - - input_e.attr('id', 'beeper-' + i); - input_e.attr('name', self._beepers[i].name); - input_e.attr('title', self._beepers[i].name); - input_e.prop('checked', bit_check(self._beeperMask, self._beepers[i].bit) == 0); - input_e.data('bit', self._beepers[i].bit); - - label_e.text(self._beepers[i].name); - - span_e.attr('i18n', 'beeper' + self._beepers[i].name); - - element.show(); - } - } -}; - -Beepers.prototype.updateData = function (beeperElement) { - var self = this; - - if (beeperElement.attr('type') === 'checkbox') { - var bit = beeperElement.data('bit'); - - if (beeperElement.is(':checked')) { - self._beeperMask = bit_clear(self._beeperMask, bit); + self._beepers.push(beeper); + } + }); } else { - self._beeperMask = bit_set(self._beeperMask, bit); + self._beepers = beepers.slice(); + } + + self._beeperDisabledMask = 0; + } + getDisabledMask() { + const self = this; + + return self._beeperDisabledMask; + } + setDisabledMask(beeperDisabledMask) { + const self = this; + + self._beeperDisabledMask = beeperDisabledMask; + } + isEnabled(beeperName) { + const self = this; + + for (let i = 0; i < self._beepers.length; i++) { + if (self._beepers[i].name === beeperName && bit_check(self._beeperOfMask, self._beepers[i].bit)) { + return true; + } + } + return false; + } + generateElements(template, destination) { + const self = this; + + for (let i = 0; i < self._beepers.length; i++) { + if (self._beepers[i].visible) { + const element = template.clone(); + destination.append(element); + + const inputElement = $(element).find('input'); + const labelElement = $(element).find('div'); + const spanElement = $(element).find('span'); + + inputElement.attr('id', `beeper-${i}`); + inputElement.attr('name', self._beepers[i].name); + inputElement.attr('title', self._beepers[i].name); + inputElement.prop('checked', !bit_check(self._beeperDisabledMask, self._beepers[i].bit)); + inputElement.data('bit', self._beepers[i].bit); + + labelElement.text(self._beepers[i].name); + + spanElement.attr('i18n', `beeper${self._beepers[i].name}`); + + element.show(); + } } } -}; + updateData(beeperElement) { + const self = this; + + if (beeperElement.attr('type') === 'checkbox') { + const bit = beeperElement.data('bit'); + + if (beeperElement.is(':checked')) { + self._beeperDisabledMask = bit_clear(self._beeperDisabledMask, bit); + } else { + self._beeperDisabledMask = bit_set(self._beeperDisabledMask, bit); + } + } + } +} diff --git a/src/js/backup_restore.js b/src/js/backup_restore.js index 0f01bef4..345170a7 100644 --- a/src/js/backup_restore.js +++ b/src/js/backup_restore.js @@ -858,10 +858,10 @@ function configuration_restore(callback) { FC.PID_ADVANCED_CONFIG = configuration.PID_ADVANCED_CONFIG; FC.BEEPER_CONFIG.beepers = new Beepers(FC.CONFIG); - FC.BEEPER_CONFIG.beepers.setMask(configuration.BEEPER_CONFIG.beepers._beeperMask); + FC.BEEPER_CONFIG.beepers.setDisabledMask(configuration.BEEPER_CONFIG.beepers._beeperDisabledMask); FC.BEEPER_CONFIG.dshotBeaconTone = configuration.BEEPER_CONFIG.dshotBeaconTone; FC.BEEPER_CONFIG.dshotBeaconConditions = new Beepers(FC.CONFIG, [ "RX_LOST", "RX_SET" ]); - FC.BEEPER_CONFIG.dshotBeaconConditions.setMask(configuration.BEEPER_CONFIG.dshotBeaconConditions._beeperMask); + FC.BEEPER_CONFIG.dshotBeaconConditions.setDisabledMask(configuration.BEEPER_CONFIG.dshotBeaconConditions._beeperDisabledMask); } function send_unique_data_item() { diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js index 1f10bc19..c280a85f 100644 --- a/src/js/msp/MSPHelper.js +++ b/src/js/msp/MSPHelper.js @@ -693,12 +693,12 @@ MspHelper.prototype.process_data = function(dataHandler) { break; case MSPCodes.MSP_BEEPER_CONFIG: - FC.BEEPER_CONFIG.beepers.setMask(data.readU32()); + FC.BEEPER_CONFIG.beepers.setDisabledMask(data.readU32()); if (semver.gte(FC.CONFIG.apiVersion, "1.37.0")) { FC.BEEPER_CONFIG.dshotBeaconTone = data.readU8(); } if (semver.gte(FC.CONFIG.apiVersion, "1.39.0")) { - FC.BEEPER_CONFIG.dshotBeaconConditions.setMask(data.readU32()); + FC.BEEPER_CONFIG.dshotBeaconConditions.setDisabledMask(data.readU32()); } break; @@ -1650,13 +1650,13 @@ MspHelper.prototype.crunch = function(code) { buffer.push32(featureMask); break; case MSPCodes.MSP_SET_BEEPER_CONFIG: - var beeperMask = FC.BEEPER_CONFIG.beepers.getMask(); - buffer.push32(beeperMask); + var beeperDisabledMask = FC.BEEPER_CONFIG.beepers.getDisabledMask(); + buffer.push32(beeperDisabledMask); if (semver.gte(FC.CONFIG.apiVersion, "1.37.0")) { buffer.push8(FC.BEEPER_CONFIG.dshotBeaconTone); } if (semver.gte(FC.CONFIG.apiVersion, "1.39.0")) { - buffer.push32(FC.BEEPER_CONFIG.dshotBeaconConditions.getMask()); + buffer.push32(FC.BEEPER_CONFIG.dshotBeaconConditions.getDisabledMask()); } break; case MSPCodes.MSP_SET_MIXER_CONFIG: