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

Override and save timers

This commit is contained in:
Marcelo Bezerra 2023-09-06 22:23:40 +02:00
parent 372dcae919
commit 8094e9d4ff
3 changed files with 38 additions and 24 deletions

View file

@ -1486,7 +1486,6 @@ var mspHelper = (function (gui) {
'timerId': i, 'timerId': i,
'usageFlags': data.getUint8(i)}); 'usageFlags': data.getUint8(i)});
break; break;
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT: case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT:
OUTPUT_MAPPING.flush(); OUTPUT_MAPPING.flush();
for (i = 0; i < data.byteLength; i += 2) { for (i = 0; i < data.byteLength; i += 2) {
@ -1500,7 +1499,7 @@ var mspHelper = (function (gui) {
} }
break; break;
case MSPCodes.MSPV2_INAV_TIMER_OUTPUT_MODE: case MSPCodes.MSP2_INAV_TIMER_OUTPUT_MODE:
if(data.byteLength > 2) { if(data.byteLength > 2) {
OUTPUT_MAPPING.flushTimerOverrides(); OUTPUT_MAPPING.flushTimerOverrides();
} }
@ -2851,17 +2850,16 @@ var mspHelper = (function (gui) {
}; };
self.loadTimerOutputModes = function(callback) { 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) { self.sendTimerOutputModes = function(callback) {
var nextFunction = send_next_output_mode; var nextFunction = send_next_output_mode;
var idIndex = 0; var idIndex = 0;
var overrideIds = OUTPUT_MAPPING.getTimerOverrideIds(); var overrideIds = OUTPUT_MAPPING.getUsedTimerIds();
if (MODE_RANGES.length == 0) { if (overrideIds.length == 0) {
onCompleteCallback(); onCompleteCallback();
} else { } else {
send_next_output_mode(); send_next_output_mode();
@ -2871,7 +2869,7 @@ var mspHelper = (function (gui) {
var timerId = overrideIds[idIndex]; var timerId = overrideIds[idIndex];
var ouputMode = OUTPUT_MAPPING.getTimerOverride(timerId); var outputMode = OUTPUT_MAPPING.getTimerOverride(timerId);
var buffer = []; var buffer = [];
buffer.push(timerId); buffer.push(timerId);
@ -2880,7 +2878,7 @@ var mspHelper = (function (gui) {
// prepare for next iteration // prepare for next iteration
idIndex++; idIndex++;
if (idIndex == overrideIds.length) { if (idIndex == overrideIds.length) {
nextFunction = onCompleteCallback; nextFunction = callback;
} }
MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction); MSP.send_message(MSPCodes.MSP2_INAV_SET_TIMER_OUTPUT_MODE, buffer, false, nextFunction);

View file

@ -20,9 +20,9 @@ let OutputMappingCollection = function () {
const OUTPUT_TYPE_MOTOR = 0; const OUTPUT_TYPE_MOTOR = 0;
const OUTPUT_TYPE_SERVO = 1; const OUTPUT_TYPE_SERVO = 1;
const TIMER_OUTPUT_MODE_AUTO = 0; self.TIMER_OUTPUT_MODE_AUTO = 0;
const TIMER_OUTPUT_MODE_MOTORS = 1; self.TIMER_OUTPUT_MODE_MOTORS = 1;
const TIMER_OUTPUT_MODE_SERVOS = 2; self.TIMER_OUTPUT_MODE_SERVOS = 2;
self.flushTimerOverrides = function() { self.flushTimerOverrides = function() {
timerOverrides = {}; timerOverrides = {};
@ -33,11 +33,19 @@ let OutputMappingCollection = function () {
} }
self.getTimerOverride = function (timer) { self.getTimerOverride = function (timer) {
timerOverrides[timer] = outputMode; return timerOverrides[timer];
} }
self.getTimerOverrideIds = function (timer) { self.getUsedTimerIds = function (timer) {
return Object.keys(timerOverrides).sort((a, b) => a - b); 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) { function getTimerMap(isMR, motors, servos) {

View file

@ -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() { function renderTimerOverride() {
let outputCount = OUTPUT_MAPPING.getOutputCount(), let outputCount = OUTPUT_MAPPING.getOutputCount(),
$container = $('#timerOutputsList'), timers = {}; $container = $('#timerOutputsList'), timers = {};
let usedTimers = OUTPUT_MAPPING.getTimerOverrideIds(); let usedTimers = OUTPUT_MAPPING.getUsedTimerIds();
for (t of usedTimers) { for (t of usedTimers) {
var usageMode = OUTPUT_MAPPING.getTimerOverride(t); var usageMode = OUTPUT_MAPPING.getTimerOverride(t);
console.log("timer settings: " + t);
/*
$container.append( $container.append(
'<div class="select">' + '<div class="select">' +
'<select id="timer-output-' + t + '">' + '<select id="timer-output-' + t + '">' +
'<option value=' + TIMER_OUTPUT_MODE_AUTO + '' + (usageMode == TIMER_OUTPUT_MODE_AUTO ? ' selected' : '')+ '>AUTO</option>'+ '<option value=' + OUTPUT_MAPPING.TIMER_OUTPUT_MODE_AUTO + '' + (usageMode == OUTPUT_MAPPING.TIMER_OUTPUT_MODE_AUTO ? ' selected' : '')+ '>AUTO</option>'+
'<option value=' + TIMER_OUTPUT_MODE_MOTORS + '' + (usageMode == TIMER_OUTPUT_MODE_MOTORS ? ' selected' : '')+ '>MOTORS</option>'+ '<option value=' + OUTPUT_MAPPING.TIMER_OUTPUT_MODE_MOTORS + '' + (usageMode == OUTPUT_MAPPING.TIMER_OUTPUT_MODE_MOTORS ? ' selected' : '')+ '>MOTORS</option>'+
'<option value=' + TIMER_OUTPUT_MODE_SERVOS + '' + (usageMode == TIMER_OUTPUT_MODE_SERVOS ? ' selected' : '')+ '>SERVOS</option>'+ '<option value=' + OUTPUT_MAPPING.TIMER_OUTPUT_MODE_SERVOS + '' + (usageMode == OUTPUT_MAPPING.TIMER_OUTPUT_MODE_SERVOS ? ' selected' : '')+ '>SERVOS</option>'+
'</select>' + '</select>' +
'<label for="timer-output-' + t + '">' + '<label for="timer-output-' + t + '">' +
'<span> T' + t + '</span>' + '<span> T' + t + '</span>' +
'</label>' + '</label>' +
'</div>' '</div>'
); );
*/
} }
} }
@ -468,9 +478,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
MOTOR_RULES.cleanup(); MOTOR_RULES.cleanup();
MOTOR_RULES.inflate(); MOTOR_RULES.inflate();
for (timerId OUTPUT_MAPPING.getTimerOverrideIds()) { updateTimerOverride();
}
saveChainer.execute(); saveChainer.execute();
} }