diff --git a/js/bitHelper.js b/js/bitHelper.js index 13df5b92c..bee166d4a 100644 --- a/js/bitHelper.js +++ b/js/bitHelper.js @@ -17,7 +17,7 @@ var BitHelper = function() { } self.bit_check = function (num, bit) { - return ((num >> bit) % 2 != 0); + return ((1 << bit) & num) != 0; } self.bit_set = function (num, bit) { diff --git a/js/msp/MSPCodes.js b/js/msp/MSPCodes.js index 66d3fd6e8..de0de07df 100644 --- a/js/msp/MSPCodes.js +++ b/js/msp/MSPCodes.js @@ -166,6 +166,7 @@ var MSPCodes = { MSP2_INAV_MC_BRAKING: 0x200B, MSP2_INAV_SET_MC_BRAKING: 0x200C, MSPV2_INAV_OUTPUT_MAPPING_EXT: 0x200D, + MSPV2_INAV_OUTPUT_MAPPING_EXT2: 0x210D, MSP2_INAV_TIMER_OUTPUT_MODE: 0x200E, MSP2_INAV_SET_TIMER_OUTPUT_MODE: 0x200F, diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index 4e45369b2..74328a293 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1423,6 +1423,7 @@ var mspHelper = (function () { case MSPCodes.MSP2_INAV_SET_CUSTOM_OSD_ELEMENTS: console.log('OSD custom elements preferences saved'); break; +/* case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING: FC.OUTPUT_MAPPING.flush(); for (let i = 0; i < data.byteLength; ++i) @@ -1430,11 +1431,12 @@ var mspHelper = (function () { 'timerId': i, 'usageFlags': data.getUint8(i)}); break; - case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT: + */ + case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT2: FC.OUTPUT_MAPPING.flush(); - for (let i = 0; i < data.byteLength; i += 2) { + for (let i = 0; i < data.byteLength; i += 5) { let timerId = data.getUint8(i); - let usageFlags = data.getUint8(i + 1); + let usageFlags = data.getUint32(i + 1, true); FC.OUTPUT_MAPPING.put( { 'timerId': timerId, @@ -2784,11 +2786,12 @@ var mspHelper = (function () { }; self.loadOutputMapping = function (callback) { + alert('Obsolete MSPHelper.loadOutputMapping call'); MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING, false, false, callback); }; self.loadOutputMappingExt = function (callback) { - MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT, false, false, callback); + MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT2, false, false, callback); }; self.loadTimerOutputModes = function(callback) { diff --git a/js/outputMapping.js b/js/outputMapping.js index 28be64498..eecd63878 100644 --- a/js/outputMapping.js +++ b/js/outputMapping.js @@ -30,6 +30,7 @@ var OutputMappingCollection = function () { const OUTPUT_TYPE_MOTOR = 0; const OUTPUT_TYPE_SERVO = 1; + const OUTPUT_TYPE_LED = 2; self.TIMER_OUTPUT_MODE_AUTO = 0; self.TIMER_OUTPUT_MODE_MOTORS = 1; @@ -98,6 +99,7 @@ var OutputMappingCollection = function () { outputMap = [], offset = getFirstOutputOffset(); + for (let i = 0; i < self.getOutputCount(); i++) { let assignment = timerMap[i + offset]; @@ -110,6 +112,8 @@ var OutputMappingCollection = function () { } else if (assignment == OUTPUT_TYPE_SERVO) { outputMap[i] = "Servo " + servos[currentServoIndex]; currentServoIndex++; + } else if (assignment == OUTPUT_TYPE_LED) { + outputMap[i] = "Led"; } } @@ -126,12 +130,17 @@ var OutputMappingCollection = function () { self.getOutputCount = function () { let retVal = 0; + let testFlag = 1 << TIM_USE_LED; + testFlag = testFlag + 1; for (let i = 0; i < data.length; i++) { + let flags = data[i]['usageFlags']; if ( - BitHelper.bit_check(data[i]['usageFlags'], TIM_USE_MOTOR) || - BitHelper.bit_check(data[i]['usageFlags'], TIM_USE_SERVO) + BitHelper.bit_check(flags, TIM_USE_MOTOR) || + BitHelper.bit_check(flags, TIM_USE_SERVO) || + BitHelper.bit_check(flags, TIM_USE_LED) ) { + //alert("Found motor, servo or led"); retVal++; }; } diff --git a/tabs/mixer.js b/tabs/mixer.js index 7e5e9d550..e3470c69c 100644 --- a/tabs/mixer.js +++ b/tabs/mixer.js @@ -129,6 +129,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) { ''+ ''+ ''+ + ''+ '' + '