diff --git a/js/msp/MSPHelper.js b/js/msp/MSPHelper.js index b0a19260..88274b46 100644 --- a/js/msp/MSPHelper.js +++ b/js/msp/MSPHelper.js @@ -1486,7 +1486,6 @@ var mspHelper = (function (gui) { 'timerId': i, 'usageFlags': data.getUint8(i)}); break; - case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT: OUTPUT_MAPPING.flush(); for (i = 0; i < data.byteLength; i += 2) { @@ -1500,7 +1499,7 @@ var mspHelper = (function (gui) { } break; - case MSPCodes.MSPV2_INAV_TIMER_OUTPUT_MODE: + case MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE: if(data.byteLength > 2) { OUTPUT_MAPPING.flushTimerOverrides(); } @@ -2851,17 +2850,16 @@ var mspHelper = (function (gui) { }; self.loadTimerOutputModes = function(callback) { - MSP.send_message(MSPCodes.MSPV2_INAV_TIMER_OUTPUT_MODE, false, false, callback); + MSP.send_message(MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE, false, false, callback); } self.sendTimerOutputModes = function(callback) { var nextFunction = send_next_output_mode; - var idIndex = 0; - var overrideIds = OUTPUT_MAPPING.getTimerOverrideIds(); + var overrideIds = OUTPUT_MAPPING.getUsedTimerIds(); - if (MODE_RANGES.length == 0) { + if (overrideIds.length == 0) { onCompleteCallback(); } else { send_next_output_mode(); @@ -2871,7 +2869,7 @@ var mspHelper = (function (gui) { var timerId = overrideIds[idIndex]; - var ouputMode = OUTPUT_MAPPING.getTimerOverride(timerId); + var outputMode = OUTPUT_MAPPING.getTimerOverride(timerId); var buffer = []; buffer.push(timerId); @@ -2880,7 +2878,7 @@ var mspHelper = (function (gui) { // prepare for next iteration idIndex++; if (idIndex == overrideIds.length) { - nextFunction = onCompleteCallback; + nextFunction = callback; } MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction); diff --git a/js/outputMapping.js b/js/outputMapping.js index d0a60fd5..e318be72 100644 --- a/js/outputMapping.js +++ b/js/outputMapping.js @@ -20,9 +20,9 @@ let OutputMappingCollection = function () { const OUTPUT_TYPE_MOTOR = 0; const OUTPUT_TYPE_SERVO = 1; - const TIMER_OUTPUT_MODE_AUTO = 0; - const TIMER_OUTPUT_MODE_MOTORS = 1; - const TIMER_OUTPUT_MODE_SERVOS = 2; + self.TIMER_OUTPUT_MODE_AUTO = 0; + self.TIMER_OUTPUT_MODE_MOTORS = 1; + self.TIMER_OUTPUT_MODE_SERVOS = 2; self.flushTimerOverrides = function() { timerOverrides = {}; @@ -33,11 +33,19 @@ let OutputMappingCollection = function () { } self.getTimerOverride = function (timer) { - timerOverrides[timer] = outputMode; + return timerOverrides[timer]; } - self.getTimerOverrideIds = function (timer) { - return Object.keys(timerOverrides).sort((a, b) => a - b); + self.getUsedTimerIds = function (timer) { + let used = {}; + let outputCount = self.getOutputCount(); + + for (let i = 0; i < outputCount; ++i) { + let timerId = self.getTimerId(i); + used[timerId] = 1; + } + + return Object.keys(used).sort((a, b) => a - b); } function getTimerMap(isMR, motors, servos) { diff --git a/tabs/mixer.js b/tabs/mixer.js index 74907fdc..2edc0c96 100644 --- a/tabs/mixer.js +++ b/tabs/mixer.js @@ -84,30 +84,40 @@ TABS.mixer.initialize = function (callback, scrollPosition) { } + function updateTimerOverride() { + let timers = OUTPUT_MAPPING.getUsedTimerIds(); + + for(let i =0; i < timers.length;++i) { + let timerId = timers[i]; + $select = $('#timer-output-' + timerId); + if(!$select) { + continue; + } + OUTPUT_MAPPING.setTimerOverride(timerId, $select.val()); + } + } + function renderTimerOverride() { let outputCount = OUTPUT_MAPPING.getOutputCount(), $container = $('#timerOutputsList'), timers = {}; - let usedTimers = OUTPUT_MAPPING.getTimerOverrideIds(); + let usedTimers = OUTPUT_MAPPING.getUsedTimerIds(); for (t of usedTimers) { var usageMode = OUTPUT_MAPPING.getTimerOverride(t); - console.log("timer settings: " + t); - /* $container.append( '
' + '' + '' + '
' ); - */ } } @@ -468,9 +478,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) { MOTOR_RULES.cleanup(); MOTOR_RULES.inflate(); - for (timerId OUTPUT_MAPPING.getTimerOverrideIds()) { - - } + updateTimerOverride(); saveChainer.execute(); }