diff --git a/src/components/MotorOutputReordering/MotorOutputReorderingComponent.js b/src/components/MotorOutputReordering/MotorOutputReorderingComponent.js index c5a3ccdd..4496e38c 100644 --- a/src/components/MotorOutputReordering/MotorOutputReorderingComponent.js +++ b/src/components/MotorOutputReordering/MotorOutputReorderingComponent.js @@ -1,5 +1,6 @@ import MotorOutputReorderConfig from "./MotorOutputReorderingConfig"; import MotorOutputReorderCanvas from "./MotorOutputReorderingCanvas"; +import { mspHelper } from "../../js/msp/MSPHelper"; export default class MotorOutputReorderComponent { diff --git a/src/components/init.js b/src/components/init.js index 43240e40..e07c49a2 100644 --- a/src/components/init.js +++ b/src/components/init.js @@ -11,6 +11,7 @@ import BatteryLegend from "./quad-status/BatteryLegend.vue"; import BetaflightLogo from "./betaflight-logo/BetaflightLogo.vue"; import StatusBar from "./status-bar/StatusBar.vue"; import BatteryIcon from "./quad-status/BatteryIcon.vue"; +import FC from '../js/fc.js'; // Most of the global objects can go here at first. // It's a bit of overkill for simple components, diff --git a/src/js/Beepers.js b/src/js/Beepers.js index cba055b0..466b8914 100644 --- a/src/js/Beepers.js +++ b/src/js/Beepers.js @@ -1,4 +1,4 @@ -'use strict'; +import { bit_check, bit_clear, bit_set } from './serial_backend'; class Beepers { constructor(config, supportedConditions) { @@ -105,3 +105,5 @@ class Beepers { } } } + +export default Beepers; diff --git a/src/js/Features.js b/src/js/Features.js index 94af6902..14e83c19 100644 --- a/src/js/Features.js +++ b/src/js/Features.js @@ -1,4 +1,4 @@ -'use strict'; +import { bit_check, bit_set, bit_clear } from "./serial_backend"; const Features = function (config) { const self = this; @@ -198,3 +198,5 @@ Features.prototype.updateData = function (featureElement) { } } }; + +export default Features; diff --git a/src/js/VirtualFC.js b/src/js/VirtualFC.js index 3208f156..01173504 100644 --- a/src/js/VirtualFC.js +++ b/src/js/VirtualFC.js @@ -1,4 +1,6 @@ -'use strict'; +import Features from "./Features"; +import Beepers from "./Beepers"; +import FC from "./fc"; const VirtualFC = { // these values are manufactured to unlock all the functionality of the configurator, they dont represent actual hardware @@ -215,3 +217,5 @@ const VirtualFC = { }; }, }; + +export default VirtualFC; diff --git a/src/js/backup_restore.js b/src/js/backup_restore.js index a1ca6683..1e67870b 100644 --- a/src/js/backup_restore.js +++ b/src/js/backup_restore.js @@ -1,8 +1,14 @@ -'use strict'; +import { sensor_status, update_dataflash_global, reinitializeConnection } from "./serial_backend"; +import GUI from "./gui"; +import Features from "./Features"; +import { i18n } from "./localization"; +import Beepers from "./Beepers"; +import FC from "./fc"; +import { mspHelper } from "./msp/MSPHelper"; // code below is highly experimental, although it runs fine on latest firmware // the data inside nested objects needs to be verified if deep copy works properly -function configuration_backup(callback) { +export function configuration_backup(callback) { let activeProfile = null; let version = CONFIGURATOR.version; @@ -245,7 +251,7 @@ function configuration_backup(callback) { } -function configuration_restore(callback) { +export function configuration_restore(callback) { let chosenFileEntry = null; const accepts = [{ diff --git a/src/js/fc.js b/src/js/fc.js index 28906b49..fd8210e9 100644 --- a/src/js/fc.js +++ b/src/js/fc.js @@ -1,4 +1,4 @@ -'use strict'; +import { bit_check } from "./serial_backend"; const INITIAL_CONFIG = { apiVersion: "0.0.0", @@ -901,3 +901,7 @@ const FC = { QUICKRATES: 4, }, }; + +// temp binding to global scope +window.FC = FC; +export default FC; diff --git a/src/js/main.js b/src/js/main.js index b90b76a8..9e248a98 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -4,6 +4,11 @@ import GUI from './gui.js'; import { get as getConfig, set as setConfig } from './ConfigStorage.js'; import ReleaseChecker from './release_checker.js'; import { tracking, createAnalytics } from './Analytics.js'; +import { initializeSerialBackend } from './serial_backend.js'; +// Currently fc is everywhere, so we need to import it here +// till all is in modules +import './fc.js'; +import './msp/MSPHelper.js'; $(document).ready(function () { diff --git a/src/js/msp/MSPConnector.js b/src/js/msp/MSPConnector.js index e3c8b295..a21f8b9a 100644 --- a/src/js/msp/MSPConnector.js +++ b/src/js/msp/MSPConnector.js @@ -1,4 +1,5 @@ -'use strict'; +import MspHelper from "./MSPHelper"; +import { read_serial } from "../serial_backend"; const MSPConnectorImpl = function () { this.baud = undefined; @@ -74,3 +75,5 @@ MSPConnectorImpl.prototype.disconnect = function(onDisconnectCallback) { MSP.disconnect_cleanup(); }; + +export default MSPConnectorImpl; diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js index ebb9fbfb..1f5e3f05 100644 --- a/src/js/msp/MSPHelper.js +++ b/src/js/msp/MSPHelper.js @@ -1,8 +1,12 @@ -'use strict'; +// NOTE: this is a circular dependency, needs investigating +import { bit_check, sensor_status, bit_set, update_dataflash_global } from "../serial_backend"; +import { i18n } from "../localization"; +import GUI from "../gui"; +import FC from "../fc"; +import semver from 'semver'; // Used for LED_STRIP const ledDirectionLetters = ['n', 'e', 's', 'w', 'u', 'd']; // in LSB bit order -const ledFunctionLetters = ['i', 'w', 'f', 'a', 't', 'r', 'c', 'g', 's', 'b', 'l']; // in LSB bit order const ledBaseFunctionLetters = ['c', 'f', 'a', 'l', 's', 'g', 'r']; // in LSB bit let ledOverlayLetters = ['t', 'o', 'b', 'v', 'i', 'w']; // in LSB bit @@ -2641,3 +2645,11 @@ MSP.SDCARD_STATE_FATAL = 1; MSP.SDCARD_STATE_CARD_INIT = 2; MSP.SDCARD_STATE_FS_INIT = 3; MSP.SDCARD_STATE_READY = 4; + +let mspHelper; +// This is temporary, till things are moved +// to modules and every usage of this can create own +// instance or re-use existing where needed. +window.mspHelper = mspHelper = new MspHelper(); +export { mspHelper }; +export default MspHelper; diff --git a/src/js/protocols/stm32.js b/src/js/protocols/stm32.js index f71d2afc..1600aa37 100644 --- a/src/js/protocols/stm32.js +++ b/src/js/protocols/stm32.js @@ -5,7 +5,8 @@ popular choices - 921600, 460800, 256000, 230400, 153600, 128000, 115200, 57600, 38400, 28800, 19200 */ -'use strict'; +import MSPConnectorImpl from "../msp/MSPConnector"; +import { bit_check } from "../serial_backend"; const STM32_protocol = function () { this.baud = null; @@ -881,3 +882,4 @@ STM32_protocol.prototype.cleanup = function () { // initialize object const STM32 = new STM32_protocol(); +export default STM32; diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js index 49c9779a..3702b182 100644 --- a/src/js/serial_backend.js +++ b/src/js/serial_backend.js @@ -1,10 +1,17 @@ -'use strict'; +import GUI from "./gui"; +import { i18n } from "./localization"; +// NOTE: this is a circular dependency, needs investigating +import MspHelper from "./msp/MSPHelper"; +import Features from "./Features"; +import VirtualFC from "./VirtualFC"; +import Beepers from "./Beepers"; +import FC from "./fc"; let mspHelper; let connectionTimestamp; let clicks = false; -function initializeSerialBackend() { +export function initializeSerialBackend() { GUI.updateManualPortVisibility = function() { const selected_port = $('div#port-picker #port option:selected'); if (selected_port.data().isManual) { @@ -587,7 +594,7 @@ function onClosed(result) { CONFIGURATOR.cliEngineActive = false; } -function read_serial(info) { +export function read_serial(info) { if (CONFIGURATOR.cliActive) { MSP.clearListeners(); MSP.disconnect_cleanup(); @@ -599,7 +606,7 @@ function read_serial(info) { } } -function sensor_status(sensors_detected) { +export function sensor_status(sensors_detected) { // initialize variable (if it wasn't) if (!sensor_status.previous_sensors_detected) { sensor_status.previous_sensors_detected = -1; // Otherwise first iteration will not be run if sensors_detected == 0 @@ -665,7 +672,7 @@ function sensor_status(sensors_detected) { } } -function have_sensor(sensors_detected, sensor_code) { +export function have_sensor(sensors_detected, sensor_code) { switch(sensor_code) { case 'acc': return bit_check(sensors_detected, 0); @@ -746,23 +753,19 @@ async function update_live_status() { } } -function specificByte(num, pos) { - return 0x000000FF & (num >> (8 * pos)); -} - -function bit_check(num, bit) { +export function bit_check(num, bit) { return ((num >> bit) % 2 != 0); } -function bit_set(num, bit) { +export function bit_set(num, bit) { return num | 1 << bit; } -function bit_clear(num, bit) { +export function bit_clear(num, bit) { return num & ~(1 << bit); } -function update_dataflash_global() { +export function update_dataflash_global() { function formatFilesize(bytes) { if (bytes < 1024) { return `${bytes}B`; @@ -805,7 +808,7 @@ function update_dataflash_global() { } } -function reinitializeConnection(callback) { +export function reinitializeConnection(callback) { // Close connection gracefully if it still exists. const previousTimeStamp = connectionTimestamp; diff --git a/src/js/tabs/adjustments.js b/src/js/tabs/adjustments.js index c9082816..8cb1319c 100644 --- a/src/js/tabs/adjustments.js +++ b/src/js/tabs/adjustments.js @@ -1,5 +1,6 @@ import { i18n } from '../localization'; import GUI from '../gui'; +import { mspHelper } from '../msp/MSPHelper'; const adjustments = {}; diff --git a/src/js/tabs/auxiliary.js b/src/js/tabs/auxiliary.js index 7107584c..9b684c6d 100644 --- a/src/js/tabs/auxiliary.js +++ b/src/js/tabs/auxiliary.js @@ -1,6 +1,8 @@ import { i18n } from '../localization'; import GUI from '../gui'; import { get as getConfig, set as setConfig } from '../ConfigStorage'; +import { bit_check } from '../serial_backend'; +import { mspHelper } from '../msp/MSPHelper'; const auxiliary = {}; diff --git a/src/js/tabs/cli.js b/src/js/tabs/cli.js index d50d7af0..fa832d1b 100644 --- a/src/js/tabs/cli.js +++ b/src/js/tabs/cli.js @@ -3,6 +3,7 @@ import Clipboard from "../Clipboard"; import GUI from '../gui'; import BuildApi from '../BuildApi'; import { tracking } from '../Analytics'; +import { reinitializeConnection } from "../serial_backend"; const cli = { lineDelayMs: 15, diff --git a/src/js/tabs/configuration.js b/src/js/tabs/configuration.js index 12b47b9f..0170c348 100644 --- a/src/js/tabs/configuration.js +++ b/src/js/tabs/configuration.js @@ -2,6 +2,8 @@ import semver from 'semver'; import { i18n } from '../localization'; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { reinitializeConnection } from '../serial_backend'; +import { mspHelper } from '../msp/MSPHelper'; const configuration = { analyticsChanges: {}, diff --git a/src/js/tabs/failsafe.js b/src/js/tabs/failsafe.js index da4d903e..c4822afa 100644 --- a/src/js/tabs/failsafe.js +++ b/src/js/tabs/failsafe.js @@ -1,5 +1,8 @@ import { i18n } from "../localization"; import GUI from '../gui'; +import { reinitializeConnection } from "../serial_backend"; +import { mspHelper } from "../msp/MSPHelper"; + const failsafe = {}; diff --git a/src/js/tabs/firmware_flasher.js b/src/js/tabs/firmware_flasher.js index ca79afc1..142afdba 100644 --- a/src/js/tabs/firmware_flasher.js +++ b/src/js/tabs/firmware_flasher.js @@ -5,6 +5,9 @@ import { get as getStorage, set as setStorage } from '../SessionStorage'; import BuildApi from '../BuildApi'; import ConfigInserter from "../ConfigInserter.js"; import { tracking } from "../Analytics"; +import MspHelper from '../msp/MSPHelper'; +import STM32 from '../protocols/stm32'; +import FC from '../fc'; const firmware_flasher = { targets: null, diff --git a/src/js/tabs/gps.js b/src/js/tabs/gps.js index 49152424..627849d0 100644 --- a/src/js/tabs/gps.js +++ b/src/js/tabs/gps.js @@ -1,5 +1,7 @@ import { i18n } from "../localization"; import GUI from '../gui'; +import { have_sensor } from "../serial_backend"; +import FC from '../fc'; const gps = {}; gps.initialize = function (callback) { diff --git a/src/js/tabs/led_strip.js b/src/js/tabs/led_strip.js index 99aa2f29..c6451e2b 100644 --- a/src/js/tabs/led_strip.js +++ b/src/js/tabs/led_strip.js @@ -1,5 +1,7 @@ import { i18n } from "../localization"; import GUI from '../gui'; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; const led_strip = { wireMode: false, diff --git a/src/js/tabs/logging.js b/src/js/tabs/logging.js index 6954d1fe..5f2d1652 100644 --- a/src/js/tabs/logging.js +++ b/src/js/tabs/logging.js @@ -2,6 +2,7 @@ import { millitime } from '../utils/common.js'; import GUI from '../gui'; import { i18n } from '../localization'; import { get as getConfig, set as setConfig } from '../ConfigStorage'; +import FC from '../fc.js'; const logging = {}; logging.initialize = function (callback) { diff --git a/src/js/tabs/motors.js b/src/js/tabs/motors.js index 913910b6..09edf7a9 100644 --- a/src/js/tabs/motors.js +++ b/src/js/tabs/motors.js @@ -5,6 +5,9 @@ import MotorOutputReorderConfig from "../../components/MotorOutputReordering/Mot import MotorOutputReorderComponent from "../../components/MotorOutputReordering/MotorOutputReorderingComponent"; import EscDshotDirectionComponent from "../../components/EscDshotDirection/EscDshotDirectionComponent"; import { tracking } from "../Analytics"; +import { bit_check, reinitializeConnection } from "../serial_backend"; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; const motors = { previousDshotBidir: null, diff --git a/src/js/tabs/onboard_logging.js b/src/js/tabs/onboard_logging.js index 4ca65d71..d5bcf97d 100644 --- a/src/js/tabs/onboard_logging.js +++ b/src/js/tabs/onboard_logging.js @@ -1,6 +1,9 @@ import { i18n } from "../localization"; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { reinitializeConnection } from "../serial_backend"; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; let sdcardTimer; diff --git a/src/js/tabs/osd.js b/src/js/tabs/osd.js index 98b2aa94..652da339 100644 --- a/src/js/tabs/osd.js +++ b/src/js/tabs/osd.js @@ -1,6 +1,9 @@ import { i18n } from "../localization"; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { bit_check } from "../serial_backend"; +import VirtualFC from "../VirtualFC"; +import FC from "../fc"; const FONT = {}; const SYM = {}; diff --git a/src/js/tabs/pid_tuning.js b/src/js/tabs/pid_tuning.js index b3d51725..372b00d8 100644 --- a/src/js/tabs/pid_tuning.js +++ b/src/js/tabs/pid_tuning.js @@ -2,6 +2,9 @@ import { i18n } from "../localization"; import { colorTables, getColorForPercentage } from '../utils/css.js'; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { have_sensor } from "../serial_backend"; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; const pid_tuning = { RATE_PROFILE_MASK: 128, diff --git a/src/js/tabs/ports.js b/src/js/tabs/ports.js index 61952827..67eae9f6 100644 --- a/src/js/tabs/ports.js +++ b/src/js/tabs/ports.js @@ -2,6 +2,9 @@ import semver from 'semver'; import { i18n } from "../localization"; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { reinitializeConnection } from '../serial_backend'; +import { mspHelper } from '../msp/MSPHelper'; +import FC from '../fc'; const ports = { analyticsChanges: {}, diff --git a/src/js/tabs/power.js b/src/js/tabs/power.js index ea58308e..0c6d68f6 100644 --- a/src/js/tabs/power.js +++ b/src/js/tabs/power.js @@ -1,6 +1,8 @@ import { i18n } from '../localization'; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { mspHelper } from '../msp/MSPHelper'; +import FC from '../fc'; const power = { supported: false, diff --git a/src/js/tabs/receiver.js b/src/js/tabs/receiver.js index 70f8f6c4..123975c3 100644 --- a/src/js/tabs/receiver.js +++ b/src/js/tabs/receiver.js @@ -2,6 +2,10 @@ import { i18n } from "../localization"; import GUI from '../gui'; import { get as getConfig, set as setConfig } from '../ConfigStorage'; import { tracking } from "../Analytics"; +import { bit_check, reinitializeConnection } from "../serial_backend"; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; + import CryptoES from 'crypto-es'; const receiver = { diff --git a/src/js/tabs/sensors.js b/src/js/tabs/sensors.js index 20508fba..f3b9b66c 100644 --- a/src/js/tabs/sensors.js +++ b/src/js/tabs/sensors.js @@ -1,6 +1,8 @@ import { i18n } from "../localization"; import GUI from '../gui'; import { get as getConfig, set as setConfig } from '../ConfigStorage'; +import { have_sensor } from "../serial_backend"; +import FC from "../fc"; const sensors = {}; sensors.initialize = function (callback) { diff --git a/src/js/tabs/servos.js b/src/js/tabs/servos.js index d2633652..497fa4a8 100644 --- a/src/js/tabs/servos.js +++ b/src/js/tabs/servos.js @@ -1,5 +1,7 @@ import { i18n } from "../localization"; import GUI from '../gui'; +import { mspHelper } from "../msp/MSPHelper"; +import FC from "../fc"; const servos = {}; servos.initialize = function (callback) { diff --git a/src/js/tabs/setup.js b/src/js/tabs/setup.js index 8230c2c0..ca602494 100644 --- a/src/js/tabs/setup.js +++ b/src/js/tabs/setup.js @@ -1,5 +1,9 @@ import { i18n } from '../localization'; import GUI from '../gui'; +import { configuration_backup, configuration_restore } from '../backup_restore'; +import { have_sensor } from '../serial_backend'; +import { mspHelper } from '../msp/MSPHelper'; +import FC from '../fc'; const setup = { yaw_fix: 0.0, diff --git a/src/js/tabs/transponder.js b/src/js/tabs/transponder.js index 9452953b..82174735 100644 --- a/src/js/tabs/transponder.js +++ b/src/js/tabs/transponder.js @@ -1,5 +1,8 @@ import { i18n } from "../localization"; import GUI from '../gui'; +import { reinitializeConnection } from "../serial_backend"; +import { mspHelper } from '../msp/MSPHelper'; +import FC from "../fc"; const transponder = { available: false, diff --git a/src/js/tabs/vtx.js b/src/js/tabs/vtx.js index 0ee7a9c3..6460591a 100644 --- a/src/js/tabs/vtx.js +++ b/src/js/tabs/vtx.js @@ -2,6 +2,8 @@ import { i18n } from "../localization"; import Clipboard from "../Clipboard"; import GUI from '../gui'; import { tracking } from "../Analytics"; +import { mspHelper } from "../msp/MSPHelper"; +import FC from '../fc'; const vtx = { supported: false, diff --git a/src/main.html b/src/main.html index 86e2b3e8..51662312 100644 --- a/src/main.html +++ b/src/main.html @@ -86,8 +86,6 @@ - - @@ -95,19 +93,12 @@ - - - - - - - diff --git a/test/karma.conf.js b/test/karma.conf.js index 2a2d8ddd..bd0083e5 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -14,6 +14,7 @@ module.exports = function(config) { './node_modules/jquery-textcomplete/dist/jquery.textcomplete.min.js', './node_modules/bluebird/js/browser/bluebird.min.js', './node_modules/jbox/dist/jBox.min.js', + './src/js/msp.js', './src/js/serial.js', './src/js/data_storage.js', { pattern: './src/js/localization.js', type: 'module', watched: false },