diff --git a/src/js/fc.js b/src/js/fc.js index 30a3b963..210a3e9e 100644 --- a/src/js/fc.js +++ b/src/js/fc.js @@ -497,6 +497,54 @@ const FC = { rcSmoothingDerivativeType: 0, rcSmoothingAutoSmoothness: 0, usbCdcHidType: 0, + serialRxTypes: [ + 'SPEKTRUM1024', + 'SPEKTRUM2048', + 'SBUS', + 'SUMD', + 'SUMH', + 'XBUS_MODE_B', + 'XBUS_MODE_B_RJ01', + ], + + getSerialRxTypes: () => { + const apiVersion = this.CONFIG.apiVersion; + const flightControllerIdentifier = this.CONFIG.flightControllerIdentifier; + const flightControllerVersion = this.CONFIG.flightControllerVersion; + // js way of cloning an array + const result = [...this.RX_CONFIG.serialRxTypes]; + + if (semver.gte(apiVersion, "1.15.0")) { + result.push('IBUS'); + } + + if ((flightControllerIdentifier === 'BTFL' && semver.gte(flightControllerVersion, "2.6.0")) || + (flightControllerIdentifier === 'CLFL' && semver.gte(apiVersion, "1.31.0"))) { + result.push('JETIEXBUS'); + } + + if (semver.gte(apiVersion, "1.31.0")) { + result.push('CRSF'); + } + + if (semver.gte(apiVersion, "1.24.0")) { + result.push('SPEKTRUM2048/SRXL'); + } + + if (semver.gte(apiVersion, "1.35.0")) { + result.push('TARGET_CUSTOM'); + } + + if (semver.gte(apiVersion, "1.37.0")) { + result.push('FrSky FPort'); + } + + if (semver.gte(apiVersion, "1.42.0")) { + result.push('SPEKTRUM SRXL2'); + } + + return result; + }, }; this.FAILSAFE_CONFIG = { diff --git a/src/js/tabs/configuration.js b/src/js/tabs/configuration.js index 0c62b908..de12d734 100644 --- a/src/js/tabs/configuration.js +++ b/src/js/tabs/configuration.js @@ -843,52 +843,12 @@ TABS.configuration.initialize = function (callback, scrollPosition) { gpsBaudrateElement.parent().hide(); } - // generate serial RX - var serialRXtypes = [ - 'SPEKTRUM1024', - 'SPEKTRUM2048', - 'SBUS', - 'SUMD', - 'SUMH', - 'XBUS_MODE_B', - 'XBUS_MODE_B_RJ01' - ]; + const serialRXSelectEl = $('select.serialRX'); + FC.RX_CONFIG.getSerialRxTypes().forEach((serialRxType, index) => { + serialRXSelectEl.append(``); + }); - if (semver.gte(FC.CONFIG.apiVersion, "1.15.0")) { - serialRXtypes.push('IBUS'); - } - - if ((FC.CONFIG.flightControllerIdentifier === 'BTFL' && semver.gte(FC.CONFIG.flightControllerVersion, "2.6.0")) || - (FC.CONFIG.flightControllerIdentifier === 'CLFL' && semver.gte(FC.CONFIG.apiVersion, "1.31.0"))) { - serialRXtypes.push('JETIEXBUS'); - } - - if (semver.gte(FC.CONFIG.apiVersion, "1.31.0")) { - serialRXtypes.push('CRSF'); - } - - if (semver.gte(FC.CONFIG.apiVersion, "1.24.0")) { - serialRXtypes.push('SPEKTRUM2048/SRXL'); - } - - if (semver.gte(FC.CONFIG.apiVersion, "1.35.0")) { - serialRXtypes.push('TARGET_CUSTOM'); - } - - if (semver.gte(FC.CONFIG.apiVersion, "1.37.0")) { - serialRXtypes.push('FrSky FPort'); - } - - if (semver.gte(FC.CONFIG.apiVersion, "1.42.0")) { - serialRXtypes.push('SPEKTRUM SRXL2'); - } - - var serialRX_e = $('select.serialRX'); - for (var i = 0; i < serialRXtypes.length; i++) { - serialRX_e.append(''); - } - - serialRX_e.change(function () { + serialRXSelectEl.change(function () { var serialRxValue = parseInt($(this).val()); var newValue; @@ -901,7 +861,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) { }); // select current serial RX type - serialRX_e.val(FC.RX_CONFIG.serialrx_provider); + serialRXSelectEl.val(FC.RX_CONFIG.serialrx_provider); if (semver.gte(FC.CONFIG.apiVersion, "1.31.0")) { var spiRxTypes = [ diff --git a/src/js/tabs/osd.js b/src/js/tabs/osd.js index 18dc5974..fa5e63ca 100644 --- a/src/js/tabs/osd.js +++ b/src/js/tabs/osd.js @@ -346,8 +346,8 @@ OSD.generateTemperaturePreview = function (osd_data, temperature) { } OSD.generateLQPreview = function() { - const CRSF_PROVIDER = 9; - let isXF = FC.RX_CONFIG.serialrx_provider == CRSF_PROVIDER; + const crsfIndex = FC.RX_CONFIG.getSerialRxTypes().findIndex(name => name === 'CRSF'); + const isXF = crsfIndex === FC.RX_CONFIG.serialrx_provider; return FONT.symbol(SYM.LINK_QUALITY) + (isXF ? '2:100' : '8'); }