diff --git a/js/fc.js b/js/fc.js index 6180540e..35bb3c8f 100644 --- a/js/fc.js +++ b/js/fc.js @@ -95,7 +95,7 @@ var FC = { cycleTime: 0, i2cError: 0, activeSensors: 0, - mode: 0, + mode: [], profile: 0, uid: [0, 0, 0], accelerometerTrims: [0, 0], @@ -1081,5 +1081,18 @@ var FC = { }, getServoMixInputName: function (input) { return getServoMixInputNames()[input]; + }, + getModeId: function (name) { + for (var i = 0; i < AUX_CONFIG.length; i++) { + if (AUX_CONFIG[i] == name) + return i; + } + return -1; + }, + isModeBitSet: function (i) { + return bit_check(CONFIG.mode[Math.trunc(i / 32)], i % 32); + }, + isModeEnabled: function (name) { + return FC.isModeBitSet(FC.getModeId(name)); } }; diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 91b50422..5fc95b12 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -124,16 +124,9 @@ var mspHelper = (function (gui) { case MSPCodes.MSP_ACTIVEBOXES: var words = dataHandler.message_length_expected / 4; - CONFIG.mode = 0; - if (words == 1) { - CONFIG.mode = data.getUint32(0, true); - } - else if (words == 2) { - CONFIG.mode = data.getUint32(0, true) | (data.getUint32(4, true) << 32); - } - else { - console.log('MSP_ACTIVEBOXES doesn\'t support more than 53 bits at the moment'); - } + CONFIG.mode = []; + for (i = 0; i < words; ++i) + CONFIG.mode.push(data.getUint32(i * 4, true)); break; case MSPCodes.MSP_SENSOR_STATUS: diff --git a/js/periodicStatusUpdater.js b/js/periodicStatusUpdater.js index d75d1fe9..24e870fb 100644 --- a/js/periodicStatusUpdater.js +++ b/js/periodicStatusUpdater.js @@ -37,28 +37,22 @@ helper.periodicStatusUpdater = (function () { var active = ((Date.now() - MSP.analog_last_received_timestamp) < publicScope.getUpdateInterval(serial.bitrate) * 3); - for (var i = 0; i < AUX_CONFIG.length; i++) { - if (AUX_CONFIG[i] == 'ARM') { - if (bit_check(CONFIG.mode, i)) - $(".armedicon").css({ - 'background-image': 'url("../images/icons/cf_icon_armed_active.svg")' - }); - else - $(".armedicon").css({ - 'background-image': 'url("../images/icons/cf_icon_armed_grey.svg")' - }); - } - if (AUX_CONFIG[i] == 'FAILSAFE') { - if (bit_check(CONFIG.mode, i)) - $(".failsafeicon").css({ - 'background-image': 'url("../images/icons/cf_icon_failsafe_active.svg")' - }); - else - $(".failsafeicon").css({ - 'background-image': 'url("../images/icons/cf_icon_failsafe_grey.svg")' - }); - } - } + if (FC.isModeEnabled('ARM')) + $(".armedicon").css({ + 'background-image': 'url("../images/icons/cf_icon_armed_active.svg")' + }); + else + $(".armedicon").css({ + 'background-image': 'url("../images/icons/cf_icon_armed_grey.svg")' + }); + if (FC.isModeEnabled('FAILSAFE')) + $(".failsafeicon").css({ + 'background-image': 'url("../images/icons/cf_icon_failsafe_active.svg")' + }); + else + $(".failsafeicon").css({ + 'background-image': 'url("../images/icons/cf_icon_failsafe_grey.svg")' + }); if (ANALOG != undefined) { var nbCells; diff --git a/tabs/auxiliary.js b/tabs/auxiliary.js index aeef217b..145af64a 100644 --- a/tabs/auxiliary.js +++ b/tabs/auxiliary.js @@ -285,7 +285,7 @@ TABS.auxiliary.initialize = function (callback) { continue; } - if (bit_check(CONFIG.mode, i)) { + if (FC.isModeBitSet(i)) { $('.mode .name').eq(i).data('modeElement').addClass('on').removeClass('off'); } else { $('.mode .name').eq(i).data('modeElement').removeClass('on').addClass('off'); diff --git a/tabs/modes.js b/tabs/modes.js index 95e24d36..5ec7ac20 100644 --- a/tabs/modes.js +++ b/tabs/modes.js @@ -121,7 +121,7 @@ TABS.modes.initialize = function (callback) { function update_ui() { for (var i = 0; i < AUX_CONFIG.length; i++) { - if (bit_check(CONFIG.mode, i)) { + if (FC.isModeBitSet(i)) { $('td.name').eq(i).addClass('on').removeClass('off'); } else { $('td.name').eq(i).removeClass('on').removeClass('off'); @@ -150,4 +150,4 @@ TABS.modes.initialize = function (callback) { TABS.modes.cleanup = function (callback) { if (callback) callback(); -}; \ No newline at end of file +}; diff --git a/tabs/motors.js b/tabs/motors.js index 2607b2eb..86d2eb52 100644 --- a/tabs/motors.js +++ b/tabs/motors.js @@ -50,7 +50,7 @@ TABS.motors.initialize = function (callback) { } function update_arm_status() { - self.armed = bit_check(CONFIG.mode, 0); + self.armed = FC.isModeEnabled('ARM'); } function initSensorData() {