1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-14 20:10:11 +03:00

Fix bug in MSP_ACTIVEBOXES decoding

In JS `(1<<32) == 1` so it was causing an issue when the FC was advertising
more than 32 mode boxes
This commit is contained in:
Michel Pastor 2018-06-04 22:55:02 +02:00
parent 83bd7ac67f
commit 1b453762a1
6 changed files with 37 additions and 37 deletions

View file

@ -95,7 +95,7 @@ var FC = {
cycleTime: 0, cycleTime: 0,
i2cError: 0, i2cError: 0,
activeSensors: 0, activeSensors: 0,
mode: 0, mode: [],
profile: 0, profile: 0,
uid: [0, 0, 0], uid: [0, 0, 0],
accelerometerTrims: [0, 0], accelerometerTrims: [0, 0],
@ -1081,5 +1081,18 @@ var FC = {
}, },
getServoMixInputName: function (input) { getServoMixInputName: function (input) {
return getServoMixInputNames()[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));
} }
}; };

View file

@ -124,16 +124,9 @@ var mspHelper = (function (gui) {
case MSPCodes.MSP_ACTIVEBOXES: case MSPCodes.MSP_ACTIVEBOXES:
var words = dataHandler.message_length_expected / 4; var words = dataHandler.message_length_expected / 4;
CONFIG.mode = 0; CONFIG.mode = [];
if (words == 1) { for (i = 0; i < words; ++i)
CONFIG.mode = data.getUint32(0, true); CONFIG.mode.push(data.getUint32(i * 4, 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');
}
break; break;
case MSPCodes.MSP_SENSOR_STATUS: case MSPCodes.MSP_SENSOR_STATUS:

View file

@ -37,9 +37,7 @@ helper.periodicStatusUpdater = (function () {
var active = ((Date.now() - MSP.analog_last_received_timestamp) < publicScope.getUpdateInterval(serial.bitrate) * 3); var active = ((Date.now() - MSP.analog_last_received_timestamp) < publicScope.getUpdateInterval(serial.bitrate) * 3);
for (var i = 0; i < AUX_CONFIG.length; i++) { if (FC.isModeEnabled('ARM'))
if (AUX_CONFIG[i] == 'ARM') {
if (bit_check(CONFIG.mode, i))
$(".armedicon").css({ $(".armedicon").css({
'background-image': 'url("../images/icons/cf_icon_armed_active.svg")' 'background-image': 'url("../images/icons/cf_icon_armed_active.svg")'
}); });
@ -47,9 +45,7 @@ helper.periodicStatusUpdater = (function () {
$(".armedicon").css({ $(".armedicon").css({
'background-image': 'url("../images/icons/cf_icon_armed_grey.svg")' 'background-image': 'url("../images/icons/cf_icon_armed_grey.svg")'
}); });
} if (FC.isModeEnabled('FAILSAFE'))
if (AUX_CONFIG[i] == 'FAILSAFE') {
if (bit_check(CONFIG.mode, i))
$(".failsafeicon").css({ $(".failsafeicon").css({
'background-image': 'url("../images/icons/cf_icon_failsafe_active.svg")' 'background-image': 'url("../images/icons/cf_icon_failsafe_active.svg")'
}); });
@ -57,8 +53,6 @@ helper.periodicStatusUpdater = (function () {
$(".failsafeicon").css({ $(".failsafeicon").css({
'background-image': 'url("../images/icons/cf_icon_failsafe_grey.svg")' 'background-image': 'url("../images/icons/cf_icon_failsafe_grey.svg")'
}); });
}
}
if (ANALOG != undefined) { if (ANALOG != undefined) {
var nbCells; var nbCells;

View file

@ -285,7 +285,7 @@ TABS.auxiliary.initialize = function (callback) {
continue; continue;
} }
if (bit_check(CONFIG.mode, i)) { if (FC.isModeBitSet(i)) {
$('.mode .name').eq(i).data('modeElement').addClass('on').removeClass('off'); $('.mode .name').eq(i).data('modeElement').addClass('on').removeClass('off');
} else { } else {
$('.mode .name').eq(i).data('modeElement').removeClass('on').addClass('off'); $('.mode .name').eq(i).data('modeElement').removeClass('on').addClass('off');

View file

@ -121,7 +121,7 @@ TABS.modes.initialize = function (callback) {
function update_ui() { function update_ui() {
for (var i = 0; i < AUX_CONFIG.length; i++) { 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'); $('td.name').eq(i).addClass('on').removeClass('off');
} else { } else {
$('td.name').eq(i).removeClass('on').removeClass('off'); $('td.name').eq(i).removeClass('on').removeClass('off');

View file

@ -50,7 +50,7 @@ TABS.motors.initialize = function (callback) {
} }
function update_arm_status() { function update_arm_status() {
self.armed = bit_check(CONFIG.mode, 0); self.armed = FC.isModeEnabled('ARM');
} }
function initSensorData() { function initSensorData() {