mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-17 13:25:22 +03:00
Merge pull request #1423 from iNavFlight/MrD-Mixer-improvements
Updated fixed wing mixer to improve the ease of use
This commit is contained in:
commit
cb07674c3f
6 changed files with 50 additions and 58 deletions
|
@ -3574,9 +3574,6 @@
|
||||||
"platformConfiguration": {
|
"platformConfiguration": {
|
||||||
"message": "Platform configuration"
|
"message": "Platform configuration"
|
||||||
},
|
},
|
||||||
"platformHasFlaps": {
|
|
||||||
"message": "Has flaps"
|
|
||||||
},
|
|
||||||
"mixerPreset": {
|
"mixerPreset": {
|
||||||
"message": "Mixer preset"
|
"message": "Mixer preset"
|
||||||
},
|
},
|
||||||
|
|
2
js/fc.js
2
js/fc.js
|
@ -999,7 +999,7 @@ var FC = {
|
||||||
'RC Channel 8', // 11
|
'RC Channel 8', // 11
|
||||||
'Gimbal Pitch', // 12
|
'Gimbal Pitch', // 12
|
||||||
'Gimbal Roll', // 13
|
'Gimbal Roll', // 13
|
||||||
'Flaps', // 14
|
'Flaperon Mode', // 14
|
||||||
'RC Channel 9', // 15
|
'RC Channel 9', // 15
|
||||||
'RC Channel 10', // 16
|
'RC Channel 10', // 16
|
||||||
'RC Channel 11', // 17
|
'RC Channel 11', // 17
|
||||||
|
|
60
js/model.js
60
js/model.js
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
const SERVO_GIMBAL_PITCH = 0,
|
const SERVO_GIMBAL_PITCH = 0,
|
||||||
SERVO_GIMBAL_ROLL = 1,
|
SERVO_GIMBAL_ROLL = 1,
|
||||||
SERVO_ELEVATOR = 2,
|
SERVO_ELEVATOR = 1,
|
||||||
SERVO_FLAPPERON_1 = 3,
|
SERVO_ELEVON_1 = 1,
|
||||||
SERVO_FLAPPERON_2 = 4,
|
SERVO_ELEVON_2 = 2,
|
||||||
SERVO_RUDDER = 5,
|
SERVO_FLAPPERON_1 = 2,
|
||||||
|
SERVO_FLAPPERON_2 = 3,
|
||||||
|
SERVO_RUDDER = 4,
|
||||||
SERVO_BICOPTER_LEFT = 4,
|
SERVO_BICOPTER_LEFT = 4,
|
||||||
SERVO_BICOPTER_RIGHT = 5,
|
SERVO_BICOPTER_RIGHT = 5,
|
||||||
SERVO_DUALCOPTER_LEFT = 4,
|
SERVO_DUALCOPTER_LEFT = 4,
|
||||||
|
@ -162,10 +164,10 @@ const mixerList = [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
],
|
],
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_ROLL, 50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, -50, 0),
|
new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_ROLL, -50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
]
|
]
|
||||||
}, // 8
|
}, // 8
|
||||||
{
|
{
|
||||||
|
@ -181,10 +183,10 @@ const mixerList = [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, -0.1)
|
new MotorMixRule(1.0, 0.0, 0.0, -0.1)
|
||||||
],
|
],
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_ROLL, 50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_1, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, -50, 0),
|
new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_ROLL, -50, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(SERVO_ELEVON_2, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
]
|
]
|
||||||
}, // 27
|
}, // 27
|
||||||
{
|
{
|
||||||
|
@ -289,6 +291,7 @@ const mixerList = [
|
||||||
enabled: true,
|
enabled: true,
|
||||||
legacy: true,
|
legacy: true,
|
||||||
platform: PLATFORM_AIRPLANE,
|
platform: PLATFORM_AIRPLANE,
|
||||||
|
hasFlaps: true,
|
||||||
motorMixer: [
|
motorMixer: [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
|
@ -296,9 +299,9 @@ const mixerList = [
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),
|
/*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),
|
/*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),*/
|
||||||
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
|
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
|
||||||
]
|
]
|
||||||
}, // 14
|
}, // 14
|
||||||
|
@ -448,6 +451,7 @@ const mixerList = [
|
||||||
enabled: true,
|
enabled: true,
|
||||||
legacy: false,
|
legacy: false,
|
||||||
platform: PLATFORM_AIRPLANE,
|
platform: PLATFORM_AIRPLANE,
|
||||||
|
hasFlaps: true,
|
||||||
motorMixer: [
|
motorMixer: [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.3),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.3),
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, -0.3)
|
new MotorMixRule(1.0, 0.0, 0.0, -0.3)
|
||||||
|
@ -455,9 +459,9 @@ const mixerList = [
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),
|
/*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),
|
/*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, -100, 0),*/
|
||||||
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
|
new ServoMixRule(SERVO_RUDDER, INPUT_STABILIZED_YAW, 100, 0),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -469,16 +473,19 @@ const mixerList = [
|
||||||
enabled: true,
|
enabled: true,
|
||||||
legacy: false,
|
legacy: false,
|
||||||
platform: PLATFORM_AIRPLANE,
|
platform: PLATFORM_AIRPLANE,
|
||||||
|
hasFlaps: true,
|
||||||
motorMixer: [
|
motorMixer: [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
],
|
],
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
|
new ServoMixRule(1, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
|
/*new ServoMixRule(1, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(3, INPUT_STABILIZED_ROLL, 100, 0),
|
/*new ServoMixRule(2, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
new ServoMixRule(4, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(3, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0),
|
new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0),
|
||||||
new ServoMixRule(5, INPUT_STABILIZED_PITCH, -50, 0),
|
new ServoMixRule(4, INPUT_STABILIZED_PITCH, -50, 0),
|
||||||
new ServoMixRule(5, INPUT_STABILIZED_YAW, -50, 0)
|
new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0)
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -493,11 +500,11 @@ const mixerList = [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
],
|
],
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(2, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(1, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
new ServoMixRule(3, INPUT_STABILIZED_PITCH, 50, 0),
|
new ServoMixRule(2, INPUT_STABILIZED_PITCH, 50, 0),
|
||||||
|
new ServoMixRule(2, INPUT_STABILIZED_YAW, -50, 0),
|
||||||
|
new ServoMixRule(3, INPUT_STABILIZED_PITCH, -50, 0),
|
||||||
new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0),
|
new ServoMixRule(3, INPUT_STABILIZED_YAW, -50, 0),
|
||||||
new ServoMixRule(4, INPUT_STABILIZED_PITCH, -50, 0),
|
|
||||||
new ServoMixRule(4, INPUT_STABILIZED_YAW, -50, 0),
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -508,13 +515,16 @@ const mixerList = [
|
||||||
enabled: true,
|
enabled: true,
|
||||||
legacy: false,
|
legacy: false,
|
||||||
platform: PLATFORM_AIRPLANE,
|
platform: PLATFORM_AIRPLANE,
|
||||||
|
hasFlaps: true,
|
||||||
motorMixer: [
|
motorMixer: [
|
||||||
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
new MotorMixRule(1.0, 0.0, 0.0, 0.0),
|
||||||
],
|
],
|
||||||
servoMixer: [
|
servoMixer: [
|
||||||
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
new ServoMixRule(SERVO_ELEVATOR, INPUT_STABILIZED_PITCH, 100, 0),
|
||||||
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_1, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
|
/*new ServoMixRule(SERVO_FLAPPERON_1, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
new ServoMixRule(SERVO_FLAPPERON_2, INPUT_STABILIZED_ROLL, 100, 0),
|
||||||
|
/*new ServoMixRule(SERVO_FLAPPERON_2, INPUT_FEATURE_FLAPS, 100, 0),*/
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,6 +84,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.mixer_btn_add {
|
.mixer_btn_add {
|
||||||
|
float: right;
|
||||||
|
margin: 15px 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mixer_btn_logic {
|
||||||
|
float: left;
|
||||||
margin: 15px 0 10px;
|
margin: 15px 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,12 +15,6 @@
|
||||||
<span data-i18n="platformType"></span>
|
<span data-i18n="platformType"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div id="has-flaps-wrapper" class="checkbox">
|
|
||||||
<input type="checkbox" id="has-flaps" class="toggle" />
|
|
||||||
<label for="has-flaps">
|
|
||||||
<span data-i18n="platformHasFlaps"></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -118,12 +112,12 @@
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="btn default_btn narrow pull-left mixer_btn_add">
|
|
||||||
<a href="#" data-role="role-logic-conditions-open" data-i18n="tabLogicConditions"></a>
|
|
||||||
</div>
|
|
||||||
<div class="btn default_btn narrow pull-right green mixer_btn_add">
|
<div class="btn default_btn narrow pull-right green mixer_btn_add">
|
||||||
<a href="#" data-role="role-servo-add" data-i18n="servoMixerAdd"></a>
|
<a href="#" data-role="role-servo-add" data-i18n="servoMixerAdd"></a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn default_btn narrow pull-left mixer_btn_logic">
|
||||||
|
<a href="#" data-role="role-logic-conditions-open" data-i18n="tabLogicConditions"></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,10 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
|
|
||||||
GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput());
|
GUI.fillSelect($row.find(".mix-rule-input"), FC.getServoMixInputNames(), servoRule.getInput());
|
||||||
|
|
||||||
|
if (!MIXER_CONFIG.hasFlaps) {
|
||||||
|
$row.find(".mix-rule-input").children('option[value="14"]').remove();
|
||||||
|
}
|
||||||
|
|
||||||
$row.find(".mix-rule-input").val(servoRule.getInput()).change(function () {
|
$row.find(".mix-rule-input").val(servoRule.getInput()).change(function () {
|
||||||
servoRule.setInput($(this).val());
|
servoRule.setInput($(this).val());
|
||||||
updateFixedValueVisibility($row, $(this));
|
updateFixedValueVisibility($row, $(this));
|
||||||
|
@ -272,8 +276,6 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
|
|
||||||
let $platformSelect = $('#platform-type'),
|
let $platformSelect = $('#platform-type'),
|
||||||
platforms = helper.platform.getList(),
|
platforms = helper.platform.getList(),
|
||||||
$hasFlapsWrapper = $('#has-flaps-wrapper'),
|
|
||||||
$hasFlaps = $('#has-flaps'),
|
|
||||||
$mixerPreset = $('#mixer-preset'),
|
$mixerPreset = $('#mixer-preset'),
|
||||||
$wizardButton = $("#mixer-wizard");
|
$wizardButton = $("#mixer-wizard");
|
||||||
|
|
||||||
|
@ -354,30 +356,12 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$hasFlaps.prop("checked", MIXER_CONFIG.hasFlaps);
|
|
||||||
$hasFlaps.change(function () {
|
|
||||||
if ($(this).is(":checked")) {
|
|
||||||
MIXER_CONFIG.hasFlaps = 1;
|
|
||||||
} else {
|
|
||||||
MIXER_CONFIG.hasFlaps = 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$hasFlaps.change();
|
|
||||||
|
|
||||||
$platformSelect.change(function () {
|
$platformSelect.change(function () {
|
||||||
MIXER_CONFIG.platformType = parseInt($platformSelect.val(), 10);
|
MIXER_CONFIG.platformType = parseInt($platformSelect.val(), 10);
|
||||||
currentPlatform = helper.platform.getById(MIXER_CONFIG.platformType);
|
currentPlatform = helper.platform.getById(MIXER_CONFIG.platformType);
|
||||||
|
|
||||||
var $platformSelectParent = $platformSelect.parent('.select');
|
var $platformSelectParent = $platformSelect.parent('.select');
|
||||||
|
|
||||||
if (currentPlatform.flapsPossible) {
|
|
||||||
$hasFlapsWrapper.removeClass('is-hidden');
|
|
||||||
$platformSelectParent.removeClass('no-bottom-border');
|
|
||||||
} else {
|
|
||||||
$hasFlapsWrapper.addClass('is-hidden');
|
|
||||||
$platformSelectParent.addClass('no-bottom-border');
|
|
||||||
}
|
|
||||||
|
|
||||||
fillMixerPreset();
|
fillMixerPreset();
|
||||||
$mixerPreset.change();
|
$mixerPreset.change();
|
||||||
});
|
});
|
||||||
|
@ -430,6 +414,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
|
||||||
$('#load-mixer-button').click(function () {
|
$('#load-mixer-button').click(function () {
|
||||||
helper.mixer.loadServoRules(currentMixerPreset);
|
helper.mixer.loadServoRules(currentMixerPreset);
|
||||||
helper.mixer.loadMotorRules(currentMixerPreset);
|
helper.mixer.loadMotorRules(currentMixerPreset);
|
||||||
|
MIXER_CONFIG.hasFlaps = (currentMixerPreset.hasFlaps === true) ? true : false;
|
||||||
renderServoMixRules();
|
renderServoMixRules();
|
||||||
renderMotorMixRules();
|
renderMotorMixRules();
|
||||||
renderOutputMapping();
|
renderOutputMapping();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue