diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 2c8b3e56..487d5d8f 100755
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -514,6 +514,21 @@
"configurationBatteryMultiwiiCurrent": {
"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": {
"message": "System configuration"
},
@@ -1203,6 +1218,30 @@
"controlAxisAux8": {
"message": "AUX 8"
},
+ "pidTuningBasic": {
+ "message": "Basic/Acro"
+ },
+ "pidTuningLevel": {
+ "message": "Angle/Horizon"
+ },
+ "pidTuningAltitude": {
+ "message": "Barometer & Sonar/Altitude"
+ },
+ "pidTuningMag": {
+ "message": "Magnometer/Heading"
+ },
+ "pidTuningGps": {
+ "message": "GPS Navigation"
+ },
+ "pidTuningLevelP": {
+ "message": "Strength (Angle)"
+ },
+ "pidTuningLevelI": {
+ "message": "Strength (Horizon)"
+ },
+ "pidTuningLevelD": {
+ "message": "Transition (Horizon)"
+ },
"pidHelp1": {
"message": "The values below change the behaviour of the ANGLE and HORIZON flight modes. Different PID controllers handle the LEVEL values differently. Please check the documentation."
},
diff --git a/eventPage.js b/eventPage.js
index bca1916f..a321e4e9 100755
--- a/eventPage.js
+++ b/eventPage.js
@@ -11,7 +11,7 @@ function startApplication() {
frame: 'chrome',
innerBounds: {
minWidth: 1024,
- minHeight: 700
+ minHeight: 550
}
}, function (createdWindow) {
createdWindow.contentWindow.addEventListener('load', function () {
diff --git a/js/data_storage.js b/js/data_storage.js
index b5582bdf..2d75ed18 100755
--- a/js/data_storage.js
+++ b/js/data_storage.js
@@ -165,6 +165,13 @@ var MISC = {
vbatwarningcellvoltage: 0
};
+var _3D = {
+ deadband3d_low: 0,
+ deadband3d_high: 0,
+ neutral3d: 0,
+ deadband3d_throttle: 0
+};
+
var DATAFLASH = {
ready: false,
sectors: 0,
diff --git a/js/msp.js b/js/msp.js
index 1cdc18c0..cfde7dc0 100644
--- a/js/msp.js
+++ b/js/msp.js
@@ -52,6 +52,7 @@ var MSP_codes = {
MSP_WP: 118,
MSP_BOXIDS: 119,
MSP_SERVO_CONFIGURATIONS: 120,
+ MSP_3D: 124,
MSP_SET_RAW_RC: 200,
MSP_SET_RAW_GPS: 201,
@@ -67,6 +68,7 @@ var MSP_codes = {
MSP_SET_HEAD: 211,
MSP_SET_SERVO_CONFIGURATION: 212,
MSP_SET_MOTOR: 214,
+ MSP_SET_3D: 217,
// MSP_BIND: 240,
@@ -409,6 +411,16 @@ var MSP = {
MISC.vbatmaxcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
MISC.vbatwarningcellvoltage = data.getUint8(offset++, 1) / 10; // 10-50
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:
console.log(data);
break;
@@ -1129,6 +1141,17 @@ MSP.crunch = function (code) {
}
}
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:
return false;
diff --git a/main.css b/main.css
index 4d2ab191..681a0f78 100644
--- a/main.css
+++ b/main.css
@@ -111,9 +111,9 @@ input[type="number"]::-webkit-inner-spin-button {
}
.headerbar {
- height:110px;
- width:100%;
- background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.15));
+ height:110px;
+ width:100%;
+ background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.15));
}
@@ -491,6 +491,13 @@ input[type="number"]::-webkit-inner-spin-button {
background-color: #2e2e2e;
}
+.tab_container.logopen {
+ height: calc(100% - 235px);
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+
#tabs {
font-size: 13px;
}
@@ -502,7 +509,6 @@ input[type="number"]::-webkit-inner-spin-button {
#tabs.logopen ul {
/* Cause the height to shrink to contain its floated contents while log is open */
-
}
.header-wrapper .mode-connected {
@@ -864,8 +870,8 @@ dialog {
}
.content_wrapper {
- padding: 20px;
- position: relative;
+ padding: 20px;
+ position: relative;
}
.content_toolbar {
@@ -1329,6 +1335,7 @@ dialog {
font-size: 10px;
}
+
.fixfalse {
background-color: #e60000;
padding: 2px;
@@ -1539,3 +1546,12 @@ dialog {
overflow-y: auto;
}
}
+
+@media only screen and (max-height: 700px) , only screen and (max-device-height: 700px) {
+
+.tab_container {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+ }
diff --git a/main.js b/main.js
index a581967e..91dec3ea 100644
--- a/main.js
+++ b/main.js
@@ -376,7 +376,7 @@ $("#showlog").on('click', function() {
$("#log").animate({height: 111}, 200);
$("#log").addClass('active');
$("#content").addClass('logopen');
- $("#tabs").addClass('logopen');
+ $(".tab_container").addClass('logopen');
$("#scrollicon").addClass('active');
state = true;
diff --git a/tabs/configuration.html b/tabs/configuration.html
index e6760af3..d89f130e 100644
--- a/tabs/configuration.html
+++ b/tabs/configuration.html
@@ -393,6 +393,35 @@
+
diff --git a/tabs/configuration.js b/tabs/configuration.js
index f0cbd979..d6623288 100644
--- a/tabs/configuration.js
+++ b/tabs/configuration.js
@@ -27,7 +27,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
}
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() {
@@ -313,6 +317,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
$('input[name="currentoffset"]').val(BF_CONFIG.currentoffset);
$('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
$('input[name="looptime"]').change(function() {
@@ -389,6 +398,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
BF_CONFIG.currentoffset = parseInt($('input[name="currentoffset"]').val());
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() {
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);
@@ -398,7 +412,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
}
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() {
diff --git a/tabs/dataflash.css b/tabs/dataflash.css
index f175382e..653f3c04 100644
--- a/tabs/dataflash.css
+++ b/tabs/dataflash.css
@@ -124,8 +124,42 @@
.tab-dataflash dialog .buttons {
position: static;
margin-top: 2em;
- overflow: hidden;
- width: auto;
+ float: left;
+}
+
+.tab-dataflash .buttons a {
+ margin-top: 9px;
+ margin-bottom: 0px;
+ margin-right: 10px;
+ background-color: #59aa29;
+ border-radius: 3px;
+ border: 1px solid #4c8829;
+ color: #fff;
+ float: left;
+ font-family: 'open_sansbold', Arial;
+ font-size: 12px;
+ text-shadow: 0px 1px rgba(0, 0, 0, 0.25);
+ display: block;
+ cursor: pointer;
+ transition: all ease 0.2s;
+ padding: 0px;
+ padding-left: 9px;
+ padding-right: 9px;
+ line-height: 28px;
+}
+
+.tab-dataflash .buttons a:hover {
+ background-color: #6ac435;
+ border: 1px solid #4d9324;
+ text-shadow: 0px 1px rgba(0, 0, 0, 0.25);
+ color: #fff;
+ transition: all ease 0.2s;
+}
+
+.tab-dataflash .buttons a:active {
+ background-color: #4d9324;
+ transition: all ease 0.0s;
+ box-shadow: inset 0px 1px 5px rgba(0, 0, 0, 0.35);
}
.tab-dataflash dialog h3 {
diff --git a/tabs/motors.js b/tabs/motors.js
index 74c99079..b3ba6d7b 100644
--- a/tabs/motors.js
+++ b/tabs/motors.js
@@ -12,7 +12,15 @@ TABS.motors.initialize = function (callback) {
}
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() {
@@ -287,8 +295,13 @@ TABS.motors.initialize = function (callback) {
$('div.sliders input').prop('min', MISC.mincommand);
$('div.sliders input').prop('max', MISC.maxthrottle);
- $('div.sliders input').val(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
var buffering_set_motor = [],
@@ -341,7 +354,11 @@ TABS.motors.initialize = function (callback) {
$('div.sliders input').prop('disabled', true);
// 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
$('div.sliders input').trigger('input');
@@ -351,11 +368,18 @@ TABS.motors.initialize = function (callback) {
// check if motors are already spinning
var motors_running = false;
- for (var i = 0; i < MOTOR_DATA.length; i++) {
- if (MOTOR_DATA[i] > MISC.mincommand) {
- motors_running = true;
- break;
- }
+ for (var i = 0; i < number_of_valid_outputs; i++) {
+ if( ! bit_check(BF_CONFIG.features,12) ){
+ if (MOTOR_DATA[i] > MISC.mincommand) {
+ 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) {
diff --git a/tabs/pid_tuning.html b/tabs/pid_tuning.html
index ce0e5eb1..3d6ae3f3 100755
--- a/tabs/pid_tuning.html
+++ b/tabs/pid_tuning.html
@@ -39,7 +39,7 @@
- Basic/Acro
+
|
@@ -67,7 +67,7 @@
- Barometer & Sonar/Altitude
+
|
@@ -88,7 +88,7 @@
- Magnometer/Heading
+
|
@@ -102,7 +102,7 @@
- GPS Navigation
+
|
@@ -134,14 +134,14 @@
- Strength (Angle)
- Strength (Horizon)
- Transition (Horizon)
+
+
+
|
diff --git a/tabs/receiver_msp.css b/tabs/receiver_msp.css
index 18231ee1..1c16f6c5 100644
--- a/tabs/receiver_msp.css
+++ b/tabs/receiver_msp.css
@@ -98,10 +98,44 @@ body {
left: -65px;
}
-.button-enable {
- padding: 0.5em;
- font-size: 110%;
- margin-left: auto;
- margin-right: auto;
+a {
+ text-decoration: none;
+ color: #000;
+ font-family: 'open_sanssemibold', Arial;
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+.button-enable a {
+ /* common styles for content toolbar buttons */
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 0px;
+ background-color: #59aa29;
+ border-radius: 3px;
+ border: 1px solid #4c8829;
+ color: #fff;
+ float: left;
+ font-family: 'open_sansbold', Arial;
+ font-size: 12px;
+ text-shadow: 0px 1px rgba(0, 0, 0, 0.25);
display: block;
+ cursor: pointer;
+ transition: all ease 0.2s;
+ padding: 0px;
+ padding-left: 9px;
+ padding-right: 9px;
+ line-height: 28px;
+}
+
+.button-enable a:hover {
+ background-color: #6ac435;
+ transition: all ease 0.2s;
+}
+.button-enable a:active {
+ background-color: #4d9324;
+ transition: all ease 0.0s;
+ box-shadow: inset 0px 1px 5px rgba(0, 0, 0, 0.35);
}
\ No newline at end of file
diff --git a/tabs/receiver_msp.html b/tabs/receiver_msp.html
index c569ca31..9aa396bd 100644
--- a/tabs/receiver_msp.html
+++ b/tabs/receiver_msp.html
@@ -1,5 +1,6 @@
+
@@ -56,7 +57,9 @@
This feature does not guarantee reliable control of your craft. Serious injury is likely to
result if propellers are left on.
-
+
\ No newline at end of file
diff --git a/tabs/setup.css b/tabs/setup.css
index 4bb8c372..c43122b5 100644
--- a/tabs/setup.css
+++ b/tabs/setup.css
@@ -14,7 +14,6 @@
border-radius: 5px;
border: 1px solid #e4e4e4;
margin-bottom: 10px;
- /* min-height:400px; */
}
.attitude_info {
@@ -173,7 +172,6 @@
#interactive_block {
position: absolute;
width: calc(75% - 20px);
- min-height: 300px;
height: calc(100% - 218px);
}
}
\ No newline at end of file