mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-21 15:25:19 +03:00
Save servo mix over MSP
This commit is contained in:
parent
cf3a5b2a64
commit
958c5f8dc5
2 changed files with 92 additions and 48 deletions
|
@ -1691,6 +1691,42 @@ var mspHelper = (function (gui) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.sendServoMixer = function (onCompleteCallback) {
|
||||||
|
var nextFunction = sendMixer,
|
||||||
|
servoIndex = 0;
|
||||||
|
|
||||||
|
if (SERVO_RULES.length == 0) {
|
||||||
|
onCompleteCallback();
|
||||||
|
} else {
|
||||||
|
nextFunction();
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendMixer() {
|
||||||
|
|
||||||
|
var buffer = [];
|
||||||
|
|
||||||
|
// send one at a time, with index
|
||||||
|
|
||||||
|
var servoRule = SERVO_RULES.get()[servoIndex];
|
||||||
|
|
||||||
|
buffer.push(servoIndex);
|
||||||
|
buffer.push(servoRule.getTarget());
|
||||||
|
buffer.push(servoRule.getInput());
|
||||||
|
buffer.push(servoRule.getRate());
|
||||||
|
buffer.push(servoRule.getSpeed());
|
||||||
|
buffer.push(0);
|
||||||
|
buffer.push(0);
|
||||||
|
buffer.push(0);
|
||||||
|
|
||||||
|
// prepare for next iteration
|
||||||
|
servoIndex++;
|
||||||
|
if (servoIndex == 16) { //This is the last rule. Not pretty, but we have to send all rules
|
||||||
|
nextFunction = onCompleteCallback;
|
||||||
|
}
|
||||||
|
MSP.send_message(MSPCodes.MSP_SET_SERVO_MIX_RULE, buffer, false, nextFunction);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
self.sendModeRanges = function (onCompleteCallback) {
|
self.sendModeRanges = function (onCompleteCallback) {
|
||||||
var nextFunction = send_next_mode_range;
|
var nextFunction = send_next_mode_range;
|
||||||
|
|
||||||
|
|
104
tabs/servos.js
104
tabs/servos.js
|
@ -24,16 +24,70 @@ TABS.servos.initialize = function (callback) {
|
||||||
|
|
||||||
saveChainer.setChain([
|
saveChainer.setChain([
|
||||||
mspHelper.sendServoConfigurations,
|
mspHelper.sendServoConfigurations,
|
||||||
|
mspHelper.sendServoMixer,
|
||||||
mspHelper.saveToEeprom
|
mspHelper.saveToEeprom
|
||||||
]);
|
]);
|
||||||
saveChainer.setExitPoint(function () {
|
saveChainer.setExitPoint(function () {
|
||||||
GUI.log(chrome.i18n.getMessage('servosEepromSave'));
|
GUI.log(chrome.i18n.getMessage('servosEepromSave'));
|
||||||
|
SERVO_RULES.cleanup();
|
||||||
|
renderServoMixRules();
|
||||||
});
|
});
|
||||||
|
|
||||||
function load_html() {
|
function load_html() {
|
||||||
$('#content').load("./tabs/servos.html", process_html);
|
$('#content').load("./tabs/servos.html", process_html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderServoMixRules() {
|
||||||
|
|
||||||
|
var $servoMixTable = $('#servo-mix-table'),
|
||||||
|
$servoMixTableBody = $servoMixTable.find('tbody');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process servo mix table UI
|
||||||
|
*/
|
||||||
|
var rules = SERVO_RULES.get();
|
||||||
|
$servoMixTableBody.find("*").remove();
|
||||||
|
for (servoRuleIndex in rules) {
|
||||||
|
if (rules.hasOwnProperty(servoRuleIndex)) {
|
||||||
|
const servoRule = rules[servoRuleIndex];
|
||||||
|
|
||||||
|
$servoMixTableBody.append('\
|
||||||
|
<tr>\
|
||||||
|
<td><input type="number" class="mix-rule-servo" step="1" min="0" max="7" /></td>\
|
||||||
|
<td><select class="mix-rule-input"></select></td>\
|
||||||
|
<td><input type="number" class="mix-rule-rate" step="1" min="-100" max="100" /></td>\
|
||||||
|
<td><input type="number" class="mix-rule-speed" step="1" min="0" max="255" /></td>\
|
||||||
|
<td><span class="btn default_btn narrow"><a href="#" data-role="role-delete" data-i18n="servoMixerDelete"></a></span></td>\
|
||||||
|
</tr>\
|
||||||
|
');
|
||||||
|
|
||||||
|
const $row = $servoMixTableBody.find('tr:last');
|
||||||
|
|
||||||
|
GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput());
|
||||||
|
|
||||||
|
$row.find(".mix-rule-input").val(servoRule.getInput()).change(function () {
|
||||||
|
servoRule.setInput($(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
$row.find(".mix-rule-servo").val(servoRule.getTarget()).change(function () {
|
||||||
|
servoRule.setTarget($(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
$row.find(".mix-rule-rate").val(servoRule.getRate()).change(function () {
|
||||||
|
servoRule.setRate($(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
$row.find(".mix-rule-speed").val(servoRule.getSpeed()).change(function () {
|
||||||
|
servoRule.setSpeed($(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
$row.find("[data-role='role-delete']").attr("data-index", servoRuleIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
localize();
|
||||||
|
}
|
||||||
|
|
||||||
function update_ui() {
|
function update_ui() {
|
||||||
|
|
||||||
var i,
|
var i,
|
||||||
|
@ -122,6 +176,8 @@ TABS.servos.initialize = function (callback) {
|
||||||
});
|
});
|
||||||
|
|
||||||
//Save configuration to FC
|
//Save configuration to FC
|
||||||
|
SERVO_RULES.cleanup();
|
||||||
|
SERVO_RULES.inflate();
|
||||||
saveChainer.execute();
|
saveChainer.execute();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -157,55 +213,7 @@ TABS.servos.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function renderServoMixRules() {
|
|
||||||
/*
|
|
||||||
* Process servo mix table UI
|
|
||||||
*/
|
|
||||||
var rules = SERVO_RULES.get();
|
|
||||||
$servoMixTableBody.find("*").remove();
|
|
||||||
for (servoRuleIndex in rules) {
|
|
||||||
if (rules.hasOwnProperty(servoRuleIndex)) {
|
|
||||||
const servoRule = rules[servoRuleIndex];
|
|
||||||
|
|
||||||
$servoMixTableBody.append('\
|
|
||||||
<tr>\
|
|
||||||
<td><input type="number" class="mix-rule-servo" step="1" min="0" max="7" /></td>\
|
|
||||||
<td><select class="mix-rule-input"></select></td>\
|
|
||||||
<td><input type="number" class="mix-rule-rate" step="1" min="-100" max="100" /></td>\
|
|
||||||
<td><input type="number" class="mix-rule-speed" step="1" min="0" max="255" /></td>\
|
|
||||||
<td><span class="btn default_btn narrow"><a href="#" data-role="role-delete" data-i18n="servoMixerDelete"></a></span></td>\
|
|
||||||
</tr>\
|
|
||||||
');
|
|
||||||
|
|
||||||
const $row = $servoMixTableBody.find('tr:last');
|
|
||||||
|
|
||||||
GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput());
|
|
||||||
|
|
||||||
$row.find(".mix-rule-input").val(servoRule.getInput()).change(function () {
|
|
||||||
servoRule.setInput($(this).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
$row.find(".mix-rule-servo").val(servoRule.getTarget()).change(function () {
|
|
||||||
servoRule.setTarget($(this).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
$row.find(".mix-rule-rate").val(servoRule.getRate()).change(function () {
|
|
||||||
servoRule.setRate($(this).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
$row.find(".mix-rule-speed").val(servoRule.getSpeed()).change(function () {
|
|
||||||
servoRule.setSpeed($(this).val());
|
|
||||||
});
|
|
||||||
|
|
||||||
$row.find("[data-role='role-delete']").attr("data-index", servoRuleIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
localize();
|
|
||||||
}
|
|
||||||
|
|
||||||
renderServoMixRules();
|
renderServoMixRules();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function process_html() {
|
function process_html() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue