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:
parent
385827a66f
commit
bb8507e81b
6 changed files with 112 additions and 4 deletions
|
@ -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',
|
||||||
|
|
4
js/fc.js
4
js/fc.js
|
@ -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
52
js/motorMixRule.js
Normal 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;
|
||||||
|
};
|
49
js/motorMixerRuleCollection.js
Normal file
49
js/motorMixerRuleCollection.js
Normal 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;
|
||||||
|
};
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
Loading…
Add table
Add a link
Reference in a new issue