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) {
''+
''+
''+
+ ''+
'' +
'