1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-15 04:15:28 +03:00

ground work for mmix editing

This commit is contained in:
Pawel Spychalski (DzikuVx) 2018-01-26 15:31:42 +01:00
parent 385827a66f
commit bb8507e81b
6 changed files with 112 additions and 4 deletions

View file

@ -91,7 +91,9 @@ sources.js = [
'./js/boards.js', './js/boards.js',
'./js/tasks.js', './js/tasks.js',
'./js/servoMixRule.js', './js/servoMixRule.js',
'./js/servoMixRuleCollection.js', './js/motorMixRule.js',
'./js/servoMixerRuleCollection.js',
'./js/motorMixerRuleCollection.js',
'./main.js', './main.js',
'./tabs/*.js', './tabs/*.js',
'./js/eventFrequencyAnalyzer.js', './js/eventFrequencyAnalyzer.js',

View file

@ -18,6 +18,7 @@ var CONFIG,
ADJUSTMENT_RANGES, ADJUSTMENT_RANGES,
SERVO_CONFIG, SERVO_CONFIG,
SERVO_RULES, SERVO_RULES,
MOTOR_RULES,
SERIAL_CONFIG, SERIAL_CONFIG,
SENSOR_DATA, SENSOR_DATA,
MOTOR_DATA, MOTOR_DATA,
@ -150,7 +151,8 @@ var FC = {
ADJUSTMENT_RANGES = []; ADJUSTMENT_RANGES = [];
SERVO_CONFIG = []; SERVO_CONFIG = [];
SERVO_RULES = new ServoMixRuleCollection(); SERVO_RULES = new ServoMixerRuleCollection();
MOTOR_RULES = new MotorMixerRuleCollection();
SERIAL_CONFIG = { SERIAL_CONFIG = {
ports: [], ports: [],

52
js/motorMixRule.js Normal file
View file

@ -0,0 +1,52 @@
/*global $*/
'use strict';
var MotorMixRule = function (throttle, roll, pitch, yaw) {
var self = {};
self.fromMsp = function (mspThrottle, mspRoll, mspPitch, mspYaw) {
throttle = mspThrottle / 1000;
roll = (mspRoll / 1000) - 1;
pitch = (mspPitch / 1000) - 1;
yaw = (mspYaw / 1000) - 1;
};
self.isUsed = function () {
return throttle !== 0;
};
self.getThrottle = function () {
return throttle;
};
self.setThrottle = function (data) {
throttle = data;
};
self.getRoll = function () {
return roll;
};
self.setRoll = function (data) {
roll = data;
};
self.getPitch = function () {
return pitch;
};
self.setPitch = function (data) {
pitch = data;
};
self.getYaw = function () {
return yaw;
};
self.setYaw = function (data) {
yaw = data;
};
return self;
};

View file

@ -0,0 +1,49 @@
/*global $, MotorMixRule*/
'use strict';
var MotorMixerRuleCollection = function () {
var self = {};
var data = [];
self.put = function (element) {
data.push(element);
};
self.get = function () {
return data;
};
self.drop = function (index) {
data[index].setThrottle(0);
self.cleanup();
};
self.flush = function () {
data = [];
};
self.cleanup = function () {
var tmpData = [];
data.forEach(function (element) {
if (element.isUsed()) {
tmpData.push(element);
}
});
data = tmpData;
};
self.inflate = function () {
while (self.hasFreeSlots()) {
self.put(new MotorMixRule(0, 0, 0, 0));
}
};
self.hasFreeSlots = function () {
return data.length < 8;
};
return self;
};

View file

@ -153,4 +153,7 @@ var MSPCodes = {
// INAV specific codes // INAV specific codes
MSPV2_SETTING: 0x1003, MSPV2_SETTING: 0x1003,
MSPV2_SET_SETTING: 0x1004, MSPV2_SET_SETTING: 0x1004,
MSP2_COMMON_MOTOR_MIXER: 0x1005,
MSP2_COMMON_SET_MOTOR_MIXER: 0x1006
}; };

View file

@ -1,7 +1,7 @@
/*global $, ServoMixRule*/ /*global $, ServoMixRule*/
'use strict'; 'use strict';
var ServoMixRuleCollection = function () { var ServoMixerRuleCollection = function () {
var self = {}; var self = {};
var data = []; var data = [];
@ -39,7 +39,7 @@ var ServoMixRuleCollection = function () {
while (self.hasFreeSlots()) { while (self.hasFreeSlots()) {
self.put(new ServoMixRule(0, 0, 0, 0)); self.put(new ServoMixRule(0, 0, 0, 0));
} }
} };
self.hasFreeSlots = function () { self.hasFreeSlots = function () {
return data.length < 16; return data.length < 16;