mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-19 14:25:13 +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) {
|
||||
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([
|
||||
mspHelper.sendServoConfigurations,
|
||||
mspHelper.sendServoMixer,
|
||||
mspHelper.saveToEeprom
|
||||
]);
|
||||
saveChainer.setExitPoint(function () {
|
||||
GUI.log(chrome.i18n.getMessage('servosEepromSave'));
|
||||
SERVO_RULES.cleanup();
|
||||
renderServoMixRules();
|
||||
});
|
||||
|
||||
function load_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() {
|
||||
|
||||
var i,
|
||||
|
@ -122,6 +176,8 @@ TABS.servos.initialize = function (callback) {
|
|||
});
|
||||
|
||||
//Save configuration to FC
|
||||
SERVO_RULES.cleanup();
|
||||
SERVO_RULES.inflate();
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
function process_html() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue