mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-22 07:45:19 +03:00
Merge branch 'master' of https://github.com/NightHawk32/cleanflight-configurator into NightHawk32-master
This commit is contained in:
commit
e801cd260a
6 changed files with 126 additions and 10 deletions
|
@ -514,6 +514,21 @@
|
||||||
"configurationBatteryMultiwiiCurrent": {
|
"configurationBatteryMultiwiiCurrent": {
|
||||||
"message": "Enable support for legacy Multiwii MSP current output"
|
"message": "Enable support for legacy Multiwii MSP current output"
|
||||||
},
|
},
|
||||||
|
"configuration3d": {
|
||||||
|
"message": "3D"
|
||||||
|
},
|
||||||
|
"configuration3dDeadbandLow": {
|
||||||
|
"message": "3D Deadband Low"
|
||||||
|
},
|
||||||
|
"configuration3dDeadbandHigh": {
|
||||||
|
"message": "3D Deadband High"
|
||||||
|
},
|
||||||
|
"configuration3dNeutral": {
|
||||||
|
"message": "3D Neutral"
|
||||||
|
},
|
||||||
|
"configuration3dDeadbandThrottle": {
|
||||||
|
"message": "3D Deadband Throttle"
|
||||||
|
},
|
||||||
"configurationSystem": {
|
"configurationSystem": {
|
||||||
"message": "System configuration"
|
"message": "System configuration"
|
||||||
},
|
},
|
||||||
|
|
|
@ -165,6 +165,13 @@ var MISC = {
|
||||||
vbatwarningcellvoltage: 0
|
vbatwarningcellvoltage: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var _3D = {
|
||||||
|
deadband3d_low: 0,
|
||||||
|
deadband3d_high: 0,
|
||||||
|
neutral3d: 0,
|
||||||
|
deadband3d_throttle: 0
|
||||||
|
};
|
||||||
|
|
||||||
var DATAFLASH = {
|
var DATAFLASH = {
|
||||||
ready: false,
|
ready: false,
|
||||||
sectors: 0,
|
sectors: 0,
|
||||||
|
|
23
js/msp.js
23
js/msp.js
|
@ -52,6 +52,7 @@ var MSP_codes = {
|
||||||
MSP_WP: 118,
|
MSP_WP: 118,
|
||||||
MSP_BOXIDS: 119,
|
MSP_BOXIDS: 119,
|
||||||
MSP_SERVO_CONFIGURATIONS: 120,
|
MSP_SERVO_CONFIGURATIONS: 120,
|
||||||
|
MSP_3D: 124,
|
||||||
|
|
||||||
MSP_SET_RAW_RC: 200,
|
MSP_SET_RAW_RC: 200,
|
||||||
MSP_SET_RAW_GPS: 201,
|
MSP_SET_RAW_GPS: 201,
|
||||||
|
@ -67,6 +68,7 @@ var MSP_codes = {
|
||||||
MSP_SET_HEAD: 211,
|
MSP_SET_HEAD: 211,
|
||||||
MSP_SET_SERVO_CONFIGURATION: 212,
|
MSP_SET_SERVO_CONFIGURATION: 212,
|
||||||
MSP_SET_MOTOR: 214,
|
MSP_SET_MOTOR: 214,
|
||||||
|
MSP_SET_3D: 217,
|
||||||
|
|
||||||
// MSP_BIND: 240,
|
// MSP_BIND: 240,
|
||||||
|
|
||||||
|
@ -409,6 +411,16 @@ var MSP = {
|
||||||
MISC.vbatmaxcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
|
MISC.vbatmaxcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
|
||||||
MISC.vbatwarningcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
|
MISC.vbatwarningcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
|
||||||
break;
|
break;
|
||||||
|
case MSP_codes.MSP_3D:
|
||||||
|
var offset = 0;
|
||||||
|
_3D.deadband3d_low = data.getUint16(offset, 1);
|
||||||
|
offset += 2;
|
||||||
|
_3D.deadband3d_high = data.getUint16(offset, 1);
|
||||||
|
offset += 2;
|
||||||
|
_3D.neutral3d = data.getUint16(offset, 1);
|
||||||
|
offset += 2;
|
||||||
|
_3D.deadband3d_throttle = data.getUint16(offset, 1);
|
||||||
|
break;
|
||||||
case MSP_codes.MSP_MOTOR_PINS:
|
case MSP_codes.MSP_MOTOR_PINS:
|
||||||
console.log(data);
|
console.log(data);
|
||||||
break;
|
break;
|
||||||
|
@ -1129,6 +1141,17 @@ MSP.crunch = function (code) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MSP_codes.MSP_SET_3D:
|
||||||
|
buffer.push(lowByte(_3D.deadband3d_low));
|
||||||
|
buffer.push(highByte(_3D.deadband3d_low));
|
||||||
|
buffer.push(lowByte(_3D.deadband3d_high));
|
||||||
|
buffer.push(highByte(_3D.deadband3d_high));
|
||||||
|
buffer.push(lowByte(_3D.neutral3d));
|
||||||
|
buffer.push(highByte(_3D.neutral3d));
|
||||||
|
buffer.push(lowByte(_3D.deadband3d_throttle));
|
||||||
|
buffer.push(highByte(_3D.deadband3d_throttle));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -393,6 +393,35 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="leftWrapper 3d">
|
||||||
|
<div class="gui_box grey">
|
||||||
|
<div class="gui_box_titlebar">
|
||||||
|
<div class="spacer_box_title" i18n="configuration3d"></div>
|
||||||
|
</div>
|
||||||
|
<div class="spacer_box">
|
||||||
|
<div class="number">
|
||||||
|
<label> <input type="number" name="3ddeadbandlow" step="1" min="1000" max="2000" /> <span
|
||||||
|
i18n="configuration3dDeadbandLow"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<label> <input type="number" name="3ddeadbandhigh" step="1" min="1000" max="2000" /> <span
|
||||||
|
i18n="configuration3dDeadbandHigh"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<label> <input type="number" name="3dneutral" step="1" min="1000" max="2000" /> <span
|
||||||
|
i18n="configuration3dNeutral"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="number">
|
||||||
|
<label> <input type="number" name="3ddeadbandthrottle" step="1" min="0" max="1000" /> <span
|
||||||
|
i18n="configuration3dDeadbandThrottle"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="clear-both"></div>
|
<div class="clear-both"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_toolbar">
|
<div class="content_toolbar">
|
||||||
|
|
|
@ -27,7 +27,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_misc() {
|
function load_misc() {
|
||||||
MSP.send_message(MSP_codes.MSP_MISC, false, false, load_acc_trim);
|
MSP.send_message(MSP_codes.MSP_MISC, false, false, load_3d);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_3d() {
|
||||||
|
MSP.send_message(MSP_codes.MSP_3D, false, false, load_acc_trim);
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_acc_trim() {
|
function load_acc_trim() {
|
||||||
|
@ -313,6 +317,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
$('input[name="currentoffset"]').val(BF_CONFIG.currentoffset);
|
$('input[name="currentoffset"]').val(BF_CONFIG.currentoffset);
|
||||||
$('input[name="multiwiicurrentoutput"]').prop('checked', MISC.multiwiicurrentoutput);
|
$('input[name="multiwiicurrentoutput"]').prop('checked', MISC.multiwiicurrentoutput);
|
||||||
|
|
||||||
|
//fill 3D
|
||||||
|
$('input[name="3ddeadbandlow"]').val(_3D.deadband3d_low);
|
||||||
|
$('input[name="3ddeadbandhigh"]').val(_3D.deadband3d_high);
|
||||||
|
$('input[name="3dneutral"]').val(_3D.neutral3d);
|
||||||
|
$('input[name="3ddeadbandthrottle"]').val(_3D.deadband3d_throttle);
|
||||||
|
|
||||||
// UI hooks
|
// UI hooks
|
||||||
$('input[name="looptime"]').change(function() {
|
$('input[name="looptime"]').change(function() {
|
||||||
|
@ -389,6 +398,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
BF_CONFIG.currentoffset = parseInt($('input[name="currentoffset"]').val());
|
BF_CONFIG.currentoffset = parseInt($('input[name="currentoffset"]').val());
|
||||||
MISC.multiwiicurrentoutput = ~~$('input[name="multiwiicurrentoutput"]').is(':checked'); // ~~ boolean to decimal conversion
|
MISC.multiwiicurrentoutput = ~~$('input[name="multiwiicurrentoutput"]').is(':checked'); // ~~ boolean to decimal conversion
|
||||||
|
|
||||||
|
_3D.deadband3d_low = parseInt($('input[name="3ddeadbandlow"]').val());
|
||||||
|
_3D.deadband3d_high = parseInt($('input[name="3ddeadbandhigh"]').val());
|
||||||
|
_3D.neutral3d = parseInt($('input[name="3dneutral"]').val());
|
||||||
|
_3D.deadband3d_throttle = ($('input[name="3ddeadbandthrottle"]').val());
|
||||||
|
|
||||||
function save_serial_config() {
|
function save_serial_config() {
|
||||||
if (semver.lt(CONFIG.apiVersion, "1.6.0")) {
|
if (semver.lt(CONFIG.apiVersion, "1.6.0")) {
|
||||||
MSP.send_message(MSP_codes.MSP_SET_CF_SERIAL_CONFIG, MSP.crunch(MSP_codes.MSP_SET_CF_SERIAL_CONFIG), false, save_misc);
|
MSP.send_message(MSP_codes.MSP_SET_CF_SERIAL_CONFIG, MSP.crunch(MSP_codes.MSP_SET_CF_SERIAL_CONFIG), false, save_misc);
|
||||||
|
@ -398,7 +412,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function save_misc() {
|
function save_misc() {
|
||||||
MSP.send_message(MSP_codes.MSP_SET_MISC, MSP.crunch(MSP_codes.MSP_SET_MISC), false, save_acc_trim);
|
MSP.send_message(MSP_codes.MSP_SET_MISC, MSP.crunch(MSP_codes.MSP_SET_MISC), false, save_3d);
|
||||||
|
}
|
||||||
|
|
||||||
|
function save_3d() {
|
||||||
|
MSP.send_message(MSP_codes.MSP_SET_3D, MSP.crunch(MSP_codes.MSP_SET_3D), false, save_acc_trim);
|
||||||
}
|
}
|
||||||
|
|
||||||
function save_acc_trim() {
|
function save_acc_trim() {
|
||||||
|
|
|
@ -12,7 +12,15 @@ TABS.motors.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_arm_status() {
|
function get_arm_status() {
|
||||||
MSP.send_message(MSP_codes.MSP_STATUS, false, false, get_motor_data);
|
MSP.send_message(MSP_codes.MSP_STATUS, false, false, load_config);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_config() {
|
||||||
|
MSP.send_message(MSP_codes.MSP_BF_CONFIG, false, false, load_3d);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_3d() {
|
||||||
|
MSP.send_message(MSP_codes.MSP_3D, false, false, get_motor_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_arm_status() {
|
function update_arm_status() {
|
||||||
|
@ -287,8 +295,13 @@ TABS.motors.initialize = function (callback) {
|
||||||
|
|
||||||
$('div.sliders input').prop('min', MISC.mincommand);
|
$('div.sliders input').prop('min', MISC.mincommand);
|
||||||
$('div.sliders input').prop('max', MISC.maxthrottle);
|
$('div.sliders input').prop('max', MISC.maxthrottle);
|
||||||
$('div.sliders input').val(MISC.mincommand);
|
|
||||||
$('div.values li:not(:last)').text(MISC.mincommand);
|
$('div.values li:not(:last)').text(MISC.mincommand);
|
||||||
|
|
||||||
|
if(bit_check(BF_CONFIG.features,12)){
|
||||||
|
$('div.sliders input').val(_3D.neutral3d);
|
||||||
|
}else{
|
||||||
|
$('div.sliders input').val(MISC.mincommand);
|
||||||
|
}
|
||||||
|
|
||||||
// UI hooks
|
// UI hooks
|
||||||
var buffering_set_motor = [],
|
var buffering_set_motor = [],
|
||||||
|
@ -341,7 +354,11 @@ TABS.motors.initialize = function (callback) {
|
||||||
$('div.sliders input').prop('disabled', true);
|
$('div.sliders input').prop('disabled', true);
|
||||||
|
|
||||||
// change all values to default
|
// change all values to default
|
||||||
$('div.sliders input').val(MISC.mincommand);
|
if (! bit_check(BF_CONFIG.features,12)) {
|
||||||
|
$('div.sliders input').val(MISC.mincommand);
|
||||||
|
} else {
|
||||||
|
$('div.sliders input').val(_3D.neutral3d);
|
||||||
|
}
|
||||||
|
|
||||||
// trigger change event so values are sent to mcu
|
// trigger change event so values are sent to mcu
|
||||||
$('div.sliders input').trigger('input');
|
$('div.sliders input').trigger('input');
|
||||||
|
@ -351,11 +368,18 @@ TABS.motors.initialize = function (callback) {
|
||||||
// check if motors are already spinning
|
// check if motors are already spinning
|
||||||
var motors_running = false;
|
var motors_running = false;
|
||||||
|
|
||||||
for (var i = 0; i < MOTOR_DATA.length; i++) {
|
for (var i = 0; i < number_of_valid_outputs; i++) {
|
||||||
if (MOTOR_DATA[i] > MISC.mincommand) {
|
if( ! bit_check(BF_CONFIG.features,12) ){
|
||||||
motors_running = true;
|
if (MOTOR_DATA[i] > MISC.mincommand) {
|
||||||
break;
|
motors_running = true;
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if( (MOTOR_DATA[i] < _3D.deadband3d_low) || (MOTOR_DATA[i] > _3D.deadband3d_high) ){
|
||||||
|
motors_running = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (motors_running) {
|
if (motors_running) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue