mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-17 05:15:20 +03:00
Merge branch 'development' into thenickdude-private-development
Conflicts: js/data_storage.js main.css tabs/dataflash.css tabs/dataflash.html
This commit is contained in:
commit
4ccd0bed3e
47 changed files with 1136 additions and 957 deletions
|
@ -467,16 +467,25 @@
|
|||
"message": "<strong>Note:</strong> Remember to configure a Serial Port (via Ports tab) and choose a Serial Receiver Provider when using RX_SERIAL feature."
|
||||
},
|
||||
"configurationBoardAlignment": {
|
||||
"message": "Board Alignment"
|
||||
"message": "Board and Sensor Alignment"
|
||||
},
|
||||
"configurationBoardAlignmentRoll": {
|
||||
"message": "Roll Adjustment [deg]"
|
||||
"message": "Roll Degrees"
|
||||
},
|
||||
"configurationBoardAlignmentPitch": {
|
||||
"message": "Pitch Adjustment [deg]"
|
||||
"message": "Pitch Degrees"
|
||||
},
|
||||
"configurationBoardAlignmentYaw": {
|
||||
"message": "Yaw Adjustment [deg]"
|
||||
"message": "Yaw Degrees"
|
||||
},
|
||||
"configurationSensorAlignmentGyro": {
|
||||
"message": "GYRO Alignment"
|
||||
},
|
||||
"configurationSensorAlignmentAcc": {
|
||||
"message": "ACCEL Alignment"
|
||||
},
|
||||
"configurationSensorAlignmentMag": {
|
||||
"message": "MAG Alignment"
|
||||
},
|
||||
"configurationAccelTrims": {
|
||||
"message": "Accelerometer Trim"
|
||||
|
@ -697,6 +706,18 @@
|
|||
"receiverRcRate": {
|
||||
"message": "RC Rate"
|
||||
},
|
||||
"receiverDeadband": {
|
||||
"message": "RC Deadband"
|
||||
},
|
||||
"receiverHelpDeadband": {
|
||||
"message": "These are values (in us) by how much RC input can be different before it's considered valid. For transmitters with jitter on outputs, this value can be increased if rc inputs twitch while idle."
|
||||
},
|
||||
"receiverHelpYawDeadband": {
|
||||
"message": "These are values (in us) by how much RC input can be different before it's considered valid. For transmitters with jitter on outputs, this value can be increased if rc inputs twitch while idle. <strong>This setting is for Yaw only.</strong>"
|
||||
},
|
||||
"receiverYawDeadband": {
|
||||
"message": "Yaw Deadband"
|
||||
},
|
||||
"receiverRcExpo": {
|
||||
"message": "RC Expo"
|
||||
},
|
||||
|
@ -861,6 +882,60 @@
|
|||
"adjustmentsFunction20": {
|
||||
"message": "Roll D Adjustment"
|
||||
},
|
||||
"adjustmentsFunction21": {
|
||||
"message": "Alt P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction22": {
|
||||
"message": "Alt I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction23": {
|
||||
"message": "Alt D Adjustment"
|
||||
},
|
||||
"adjustmentsFunction24": {
|
||||
"message": "Vel P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction25": {
|
||||
"message": "Vel I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction26": {
|
||||
"message": "Vel D Adjustment"
|
||||
},
|
||||
"adjustmentsFunction27": {
|
||||
"message": "MAG P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction28": {
|
||||
"message": "Pos P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction29": {
|
||||
"message": "Pos I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction30": {
|
||||
"message": "PosR P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction31": {
|
||||
"message": "PosR I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction32": {
|
||||
"message": "PosR D Adjustment"
|
||||
},
|
||||
"adjustmentsFunction33": {
|
||||
"message": "NavR P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction34": {
|
||||
"message": "NavR I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction35": {
|
||||
"message": "NavR D Adjustment"
|
||||
},
|
||||
"adjustmentsFunction36": {
|
||||
"message": "Level P Adjustment"
|
||||
},
|
||||
"adjustmentsFunction37": {
|
||||
"message": "Level I Adjustment"
|
||||
},
|
||||
"adjustmentsFunction38": {
|
||||
"message": "Level D Adjustment"
|
||||
},
|
||||
"adjustmentsSave": {
|
||||
"message": "Save"
|
||||
},
|
||||
|
@ -870,7 +945,7 @@
|
|||
|
||||
|
||||
"servosFirmwareUpgradeRequired": {
|
||||
"message": "Servos requires firmware >= 1.10.0."
|
||||
"message": "Servos requires firmware >= 1.10.0. and target support."
|
||||
},
|
||||
"servosChangeDirection": {
|
||||
"message": "Change Direction in TX To Match"
|
||||
|
@ -965,7 +1040,7 @@
|
|||
"message": "<strong>Motor Test Mode Notice:</strong><br />Moving the sliders will cause the motors to <strong>spin up</strong>.<br />In order to prevent injury <strong style=\"color: red\">remove ALL propellers</strong> before using this feature.<br />"
|
||||
},
|
||||
"motorsEnableControl": {
|
||||
"message": "I understand the risks, propellors are removed - Enable motor control."
|
||||
"message": "I understand the risks, propellers are removed - Enable motor control."
|
||||
},
|
||||
|
||||
"sensorsInfo": {
|
||||
|
@ -1219,7 +1294,7 @@
|
|||
"message": "<strong>Recovery / Lost communication<strong>"
|
||||
},
|
||||
"firmwareFlasherRecoveryText": {
|
||||
"message": "If you have lost comminication with your board follow these steps to restore communication: <ul><li>Power off</li><li>Enable 'No reboot sequence', enable 'Full chip erase'.</li><li>Jumper the BOOT pins or hold BOOT button.</li><li>Power on (activity LED will NOT flash if done correctly).</li><li>Release BOOT button if your FC has one.</li><li>Flash with correct firmware (using manual baud rate if specified in your FC's manual).</li><li>Power off.</li><li>Remove BOOT jumper.</li><li>Power on (activity LED should flash).</li><li>Connect normally.</li></ul>"
|
||||
"message": "If you have lost communication with your board follow these steps to restore communication: <ul><li>Power off</li><li>Enable 'No reboot sequence', enable 'Full chip erase'.</li><li>Jumper the BOOT pins or hold BOOT button.</li><li>Power on (activity LED will NOT flash if done correctly).</li><li>Release BOOT button if your FC has one.</li><li>Flash with correct firmware (using manual baud rate if specified in your FC's manual).</li><li>Power off.</li><li>Remove BOOT jumper.</li><li>Power on (activity LED should flash).</li><li>Connect normally.</li></ul>"
|
||||
},
|
||||
"firmwareFlasherButtonLeave": {
|
||||
"message": "Leave Firmware Flasher"
|
||||
|
@ -1335,7 +1410,9 @@
|
|||
"pidTuningLevelHelp": {
|
||||
"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."
|
||||
},
|
||||
|
||||
"configHelp2": {
|
||||
"message": "Arbitrary board rotation in degrees, to allow mounting it sideways / upside down / rotated etc. When running external sensors, use the sensor alignments (Gyro, Acc, Mag) to define sensor position independent from board orientation. "
|
||||
},
|
||||
"failsafeFeaturesHelpOld": {
|
||||
"message": "Failsafe configuration has changed considerably. Use Cleanflight <strong>v1.12.0+</strong> to enable the improved configuration panel."
|
||||
},
|
||||
|
@ -1369,6 +1446,12 @@
|
|||
"failsafeChannelFallbackSettingsHelp": {
|
||||
"message": "These settings are applied to invalid individual AUX channels or to all channels when entering stage 1. <strong>Note:</strong> values are saved in steps of 25usec, so small changes disappear"
|
||||
},
|
||||
"failsafeChannelFallbackSettingsAuto": {
|
||||
"message": "<strong>Auto</strong> means Roll, Pitch and Yaw to center and Throttle low. <strong>Hold</strong> means maintain the last good value received"
|
||||
},
|
||||
"failsafeChannelFallbackSettingsHold": {
|
||||
"message": "<strong>Hold</strong> means maintain the last good value received. <strong>Set</strong> means the value given here will be used"
|
||||
},
|
||||
"failsafeStageTwoSettingsTitle": {
|
||||
"message": "Stage 2 - Settings"
|
||||
},
|
||||
|
|
|
@ -111,13 +111,6 @@
|
|||
z-index: 3;
|
||||
}
|
||||
|
||||
/* Dirty fix for Firefox adding padding where it shouldn't. */
|
||||
@-moz-document url-prefix() {
|
||||
.dropdown-select {
|
||||
padding-left: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-dark {
|
||||
background: #636363; /* NEW2 */
|
||||
background: #3e403f; /* NEW */
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'open_sanslight';
|
||||
src: url('opensans-light-webfont.eot');
|
||||
|
@ -37,7 +36,6 @@
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'open_sansitalic';
|
||||
src: url('opensans-italic-webfont.eot');
|
||||
|
@ -50,7 +48,6 @@
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'open_sansbold_italic';
|
||||
src: url('opensans-bolditalic-webfont.eot');
|
||||
|
@ -63,7 +60,6 @@
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'open_sansbold';
|
||||
src: url('opensans-bold-webfont.eot');
|
||||
|
@ -76,7 +72,6 @@
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
/* Fonts shouldn't be transformed by browser.
|
||||
Using specific fonts for bold, italic and bold_italic instead.*/
|
||||
|
||||
|
@ -105,14 +100,12 @@ em strong {
|
|||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
strong {
|
||||
font-family: 'open_sansbold';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
b {
|
||||
font-family: 'open_sansbold';
|
||||
font-weight: normal;
|
||||
|
|
|
@ -1,129 +0,0 @@
|
|||
/*Notes about grid:
|
||||
Columns: 12
|
||||
Grid Width: 825px
|
||||
Column Width: 55px
|
||||
Gutter Width: 15px
|
||||
-------------------------------*/
|
||||
|
||||
|
||||
|
||||
.section {margin-bottom: 18px;
|
||||
}
|
||||
.section:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;}
|
||||
.section {*zoom: 1;}
|
||||
|
||||
.section .firstcolumn,
|
||||
.section .firstcol {margin-left: 0;}
|
||||
|
||||
|
||||
/* Border on left hand side of a column. */
|
||||
.border {
|
||||
padding-left: 7px;
|
||||
margin-left: 7px;
|
||||
border-left: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* Border with more whitespace, spans one column. */
|
||||
.colborder {
|
||||
padding-left: 42px;
|
||||
margin-left: 42px;
|
||||
border-left: 1px solid #eee;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The Grid Classes */
|
||||
.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12
|
||||
{margin-left: 15px;float: left;display: inline; overflow: hidden;}
|
||||
|
||||
|
||||
.width1, .grid1, .span-1 {width: 55px;}
|
||||
.width1_2cols,.grid1_2cols {width: 20px;}
|
||||
.width1_3cols,.grid1_3cols {width: 8px;}
|
||||
.width1_4cols,.grid1_4cols {width: 2px;}
|
||||
.input_width1 {width: 49px;}
|
||||
|
||||
.width2, .grid2, .span-2 {width: 125px;}
|
||||
.width2_3cols,.grid2_3cols {width: 31px;}
|
||||
.width2_4cols,.grid2_4cols {width: 20px;}
|
||||
.input_width2 {width: 119px;}
|
||||
|
||||
.width3, .grid3, .span-3 {width: 195px;}
|
||||
.width3_2cols,.grid3_2cols {width: 90px;}
|
||||
.width3_4cols,.grid3_4cols {width: 37px;}
|
||||
.input_width3 {width: 189px;}
|
||||
|
||||
.width4, .grid4, .span-4 {width: 265px;}
|
||||
.width4_3cols,.grid4_3cols {width: 78px;}
|
||||
.input_width4 {width: 259px;}
|
||||
|
||||
.width5, .grid5, .span-5 {width: 335px;}
|
||||
.width5_2cols,.grid5_2cols {width: 160px;}
|
||||
.width5_3cols,.grid5_3cols {width: 101px;}
|
||||
.width5_4cols,.grid5_4cols {width: 72px;}
|
||||
.input_width5 {width: 329px;}
|
||||
|
||||
.width6, .grid6, .span-6 {width: 405px;}
|
||||
.width6_4cols,.grid6_4cols {width: 90px;}
|
||||
.input_width6 {width: 399px;}
|
||||
|
||||
.width7, .grid7, .span-7 {width: 475px;}
|
||||
.width7_2cols,.grid7_2cols {width: 230px;}
|
||||
.width7_3cols,.grid7_3cols {width: 148px;}
|
||||
.width7_4cols,.grid7_4cols {width: 107px;}
|
||||
.input_width7 {width: 469px;}
|
||||
|
||||
.width8, .grid8, .span-8 {width: 545px;}
|
||||
.width8_3cols,.grid8_3cols {width: 171px;}
|
||||
.input_width8 {width: 539px;}
|
||||
|
||||
.width9, .grid9, .span-9 {width: 615px;}
|
||||
.width9_2cols,.grid9_2cols {width: 300px;}
|
||||
.width9_4cols,.grid9_4cols {width: 142px;}
|
||||
.input_width9 {width: 609px;}
|
||||
|
||||
.width10, .grid10, .span-10 {width: 685px;}
|
||||
.width10_3cols,.grid10_3cols {width: 218px;}
|
||||
.width10_4cols,.grid10_4cols {width: 160px;}
|
||||
.input_width10 {width: 679px;}
|
||||
|
||||
.width11, .grid11, .span-11 {width: 755px;}
|
||||
.width11_2cols,.grid11_2cols {width: 370px;}
|
||||
.width11_3cols,.grid11_3cols {width: 241px;}
|
||||
.width11_4cols,.grid11_4cols {width: 177px;}
|
||||
.input_width11 {width: 749px;}
|
||||
|
||||
.width12, .grid12, .span-12 {width: 825px;}
|
||||
.input_width12 {width: 819px;}
|
||||
|
||||
/* Subdivided grid spaces */
|
||||
.emptycols_left1, .prepend-1 {padding-left: 70px;}
|
||||
.emptycols_right1, .append-1 {padding-right: 70px;}
|
||||
.emptycols_left2, .prepend-2 {padding-left: 140px;}
|
||||
.emptycols_right2, .append-2 {padding-right: 140px;}
|
||||
.emptycols_left3, .prepend-3 {padding-left: 210px;}
|
||||
.emptycols_right3, .append-3 {padding-right: 210px;}
|
||||
.emptycols_left4, .prepend-4 {padding-left: 280px;}
|
||||
.emptycols_right4, .append-4 {padding-right: 280px;}
|
||||
.emptycols_left5, .prepend-5 {padding-left: 350px;}
|
||||
.emptycols_right5, .append-5 {padding-right: 350px;}
|
||||
.emptycols_left6, .prepend-6 {padding-left: 420px;}
|
||||
.emptycols_right6, .append-6 {padding-right: 420px;}
|
||||
.emptycols_left7, .prepend-7 {padding-left: 490px;}
|
||||
.emptycols_right7, .append-7 {padding-right: 490px;}
|
||||
.emptycols_left8, .prepend-8 {padding-left: 560px;}
|
||||
.emptycols_right8, .append-8 {padding-right: 560px;}
|
||||
.emptycols_left9, .prepend-9 {padding-left: 630px;}
|
||||
.emptycols_right9, .append-9 {padding-right: 630px;}
|
||||
.emptycols_left10, .prepend-10 {padding-left: 700px;}
|
||||
.emptycols_right10, .append-10 {padding-right: 700px;}
|
||||
.emptycols_left11, .prepend-11 {padding-left: 770px;}
|
||||
.emptycols_right11, .append-11 {padding-right: 770px;}
|
||||
.pull-1 {margin-left: -70px;}
|
||||
.push-1 {margin-right: -70px;margin-left: 18px;float: right;}
|
||||
.pull-2 {margin-left: -140px;}
|
||||
.push-2 {margin-right: -140px;margin-left: 18px;float: right;}
|
||||
.pull-3 {margin-left: -210px;}
|
||||
.push-3 {margin-right: -210px;margin-left: 18px;float: right;}
|
||||
.pull-4 {margin-left: -280px;}
|
||||
.push-4 {margin-right: -280px;margin-left: 18px;float: right;}
|
|
@ -1,396 +0,0 @@
|
|||
@import url('grid_12-825-55-15.css');
|
||||
|
||||
/*
|
||||
CSS Reset by Eric Meyer - Released under Public Domain
|
||||
http://meyerweb.com/eric/tools/css/reset/
|
||||
*/
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center, dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend, table,
|
||||
caption, tbody, tfoot, thead, tr, th, td
|
||||
{margin: 0;padding: 0;border: 0;outline: 0;
|
||||
font-size: 100%;vertical-align: baseline;
|
||||
background: transparent;}
|
||||
body {line-height: 1;}
|
||||
ol, ul {list-style: none;}
|
||||
blockquote, q {quotes: none;}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {content: ''; content: none;}
|
||||
:focus {outline: 0;}
|
||||
ins {text-decoration: none;}
|
||||
del {text-decoration: line-through;}
|
||||
table {border-collapse: collapse;border-spacing: 0;}
|
||||
|
||||
|
||||
|
||||
|
||||
body {
|
||||
color: #000;
|
||||
background-color: #dcdcdc;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #1883ba;
|
||||
}
|
||||
|
||||
h1{
|
||||
font-size: 32px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
#container {
|
||||
width: 865px;
|
||||
margin: 0px auto;
|
||||
}
|
||||
|
||||
|
||||
#header {
|
||||
padding: 20px;
|
||||
font-size: 36px;
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#header span {
|
||||
color: #666;
|
||||
}
|
||||
#main_content {
|
||||
background-color: #fff;
|
||||
padding: 60px 20px 20px;
|
||||
}
|
||||
|
||||
|
||||
#footer p {
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 50px;
|
||||
color: #333;
|
||||
font: 10px Arial, sans-serif;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
width: 100%;
|
||||
height: 31px;
|
||||
background-color: #444;
|
||||
}
|
||||
.tabs li {
|
||||
float: left;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
background-color: #444;
|
||||
}
|
||||
.tabs li a {
|
||||
display: block;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font: bold 11px/11px 'Arial';
|
||||
text-transform: uppercase;
|
||||
padding: 10px 15px;
|
||||
border-right: 1px solid #fff;
|
||||
}
|
||||
|
||||
.tabs li a:hover {
|
||||
background-color: #00b3ff;
|
||||
|
||||
}
|
||||
|
||||
.tabs li.active a {
|
||||
color: #000;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.huge {
|
||||
|
||||
font-size: 300px;
|
||||
line-height: 1em;
|
||||
padding: 0;
|
||||
letter-spacing: -.02em;
|
||||
overflow: hidden;
|
||||
}
|
||||
div.glyph_range {
|
||||
font-size: 72px;
|
||||
line-height: 1.1em;
|
||||
}
|
||||
|
||||
.size10{ font-size: 10px; }
|
||||
.size11{ font-size: 11px; }
|
||||
.size12{ font-size: 12px; }
|
||||
.size13{ font-size: 13px; }
|
||||
.size14{ font-size: 14px; }
|
||||
.size16{ font-size: 16px; }
|
||||
.size18{ font-size: 18px; }
|
||||
.size20{ font-size: 20px; }
|
||||
.size24{ font-size: 24px; }
|
||||
.size30{ font-size: 30px; }
|
||||
.size36{ font-size: 36px; }
|
||||
.size48{ font-size: 48px; }
|
||||
.size60{ font-size: 60px; }
|
||||
.size72{ font-size: 72px; }
|
||||
.size90{ font-size: 90px; }
|
||||
|
||||
|
||||
.psample_row1 { height: 120px;}
|
||||
.psample_row1 { height: 120px;}
|
||||
.psample_row2 { height: 160px;}
|
||||
.psample_row3 { height: 160px;}
|
||||
.psample_row4 { height: 160px;}
|
||||
|
||||
.psample {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.psample p {
|
||||
line-height: 1.3em;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.psample span {
|
||||
margin-right: .5em;
|
||||
}
|
||||
|
||||
.white_blend {
|
||||
width: 100%;
|
||||
height: 61px;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
.black_blend {
|
||||
width: 100%;
|
||||
height: 61px;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
.fullreverse {
|
||||
background: #000 !important;
|
||||
color: #fff !important;
|
||||
margin-left: -20px;
|
||||
padding-left: 20px;
|
||||
margin-right: -20px;
|
||||
padding-right: 20px;
|
||||
padding: 20px;
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
|
||||
.sample_table td {
|
||||
padding-top: 3px;
|
||||
padding-bottom:5px;
|
||||
padding-left: 5px;
|
||||
vertical-align: middle;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
.sample_table td:first-child {
|
||||
background-color: #eee;
|
||||
text-align: right;
|
||||
padding-right: 5px;
|
||||
padding-left: 0;
|
||||
padding: 5px;
|
||||
font: 11px/12px "Courier New", Courier, mono;
|
||||
}
|
||||
|
||||
code {
|
||||
white-space: pre;
|
||||
background-color: #eee;
|
||||
display: block;
|
||||
padding: 10px;
|
||||
margin-bottom: 18px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
.bottom,.last {margin-bottom:0 !important; padding-bottom:0 !important;}
|
||||
|
||||
.box {
|
||||
padding: 18px;
|
||||
margin-bottom: 18px;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.reverse,.reversed { background: #000 !important;color: #fff !important; border: none !important;}
|
||||
|
||||
#bodycomparison {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
font-size: 72px;
|
||||
height: 90px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#bodycomparison div{
|
||||
font-size: 72px;
|
||||
line-height: 90px;
|
||||
display: inline;
|
||||
margin: 0 15px 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#bodycomparison div span{
|
||||
font: 10px Arial;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
}
|
||||
#xheight {
|
||||
float: none;
|
||||
position: absolute;
|
||||
color: #d9f3ff;
|
||||
font-size: 72px;
|
||||
line-height: 90px;
|
||||
}
|
||||
|
||||
.fontbody {
|
||||
position: relative;
|
||||
}
|
||||
.arialbody{
|
||||
font-family: Arial;
|
||||
position: relative;
|
||||
}
|
||||
.verdanabody{
|
||||
font-family: Verdana;
|
||||
position: relative;
|
||||
}
|
||||
.georgiabody{
|
||||
font-family: Georgia;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* @group Layout page
|
||||
*/
|
||||
|
||||
#layout h1 {
|
||||
font-size: 36px;
|
||||
line-height: 42px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
#layout h2 {
|
||||
font-size: 24px;
|
||||
line-height: 23px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
#layout h3 {
|
||||
font-size: 22px;
|
||||
line-height: 1.4em;
|
||||
margin-top: 1em;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
#layout p.byline {
|
||||
font-size: 12px;
|
||||
margin-top: 18px;
|
||||
line-height: 12px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#layout p {
|
||||
font-size: 14px;
|
||||
line-height: 21px;
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
|
||||
#layout p.large{
|
||||
font-size: 18px;
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
#layout .sidebar p{
|
||||
font-size: 12px;
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
#layout p.caption {
|
||||
font-size: 10px;
|
||||
margin-top: -16px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Glyphs */
|
||||
|
||||
#glyph_chart div{
|
||||
background-color: #d9f3ff;
|
||||
color: black;
|
||||
float: left;
|
||||
font-size: 36px;
|
||||
height: 1.2em;
|
||||
line-height: 1.2em;
|
||||
margin-bottom: 1px;
|
||||
margin-right: 1px;
|
||||
text-align: center;
|
||||
width: 1.2em;
|
||||
position: relative;
|
||||
padding: .6em .2em .2em;
|
||||
}
|
||||
|
||||
#glyph_chart div p {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: block;
|
||||
text-align: center;
|
||||
font: bold 9px Arial, sans-serif;
|
||||
background-color: #3a768f;
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
padding: 2px 0;
|
||||
}
|
||||
|
||||
|
||||
#glyphs h1 {
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
/* @end */
|
||||
|
||||
/* @group Installing */
|
||||
|
||||
#installing {
|
||||
font: 13px Arial, sans-serif;
|
||||
}
|
||||
|
||||
#installing p,
|
||||
#glyphs p{
|
||||
line-height: 1.2em;
|
||||
margin-bottom: 18px;
|
||||
font: 13px Arial, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#installing h3{
|
||||
font-size: 15px;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
#rendering h1 {
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
.render_table td {
|
||||
font: 11px "Courier New", Courier, mono;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
16
images/icons/cf_icon_pitch.svg
Normal file
16
images/icons/cf_icon_pitch.svg
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 85 85" style="enable-background:new 0 0 85 85;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#707173;}
|
||||
.st1{fill:#9C9E9F;}
|
||||
</style>
|
||||
<path class="st0" d="M35.8,82h21.4c9.4-6.7,16-22.1,16-39.9C73.2,24.8,67,9.8,58,2.8H35.6c9,7,15.2,22,15.2,39.3
|
||||
c0,17.5-6.4,32.6-15.5,39.5C35.4,81.8,35.6,81.9,35.8,82z"/>
|
||||
<g>
|
||||
<path class="st1" d="M39.7,37.1c1.1-15.2,6.9-27.9,15-34.3H32.3c-8.1,6.3-14,19.1-15,34.3H39.7z"/>
|
||||
<path class="st1" d="M42.4,61.6H19.9c2.8,9.1,7.5,16.3,13.2,20.4h21.4c0.2-0.1,0.4-0.2,0.5-0.4C49.6,77.5,45.1,70.4,42.4,61.6z"/>
|
||||
</g>
|
||||
<polygon class="st1" points="12.5,28.9 29.8,58.3 47.7,28.7 "/>
|
||||
</svg>
|
After Width: | Height: | Size: 911 B |
18
images/icons/cf_icon_roll.svg
Normal file
18
images/icons/cf_icon_roll.svg
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 85 85" style="enable-background:new 0 0 85 85;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#707173;}
|
||||
.st1{fill:#9C9E9F;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M82.4,48.7V26.9C75.6,17.3,60,10.6,41.9,10.6C24.3,10.6,9.1,16.9,2,26.1v22.8c7.1-9.2,22.3-15.5,39.9-15.5
|
||||
c17.8,0,33.1,6.5,40.1,15.8C82.2,49,82.3,48.8,82.4,48.7z"/>
|
||||
<g>
|
||||
<path class="st1" d="M61.7,64.8c9.2-2.9,16.6-7.6,20.7-13.4V29.7c-0.1-0.2-0.2-0.4-0.4-0.5c-4.2,5.6-11.4,10.1-20.3,12.9V64.8z"/>
|
||||
<path class="st1" d="M36.8,67.4V44.6C21.4,43.5,8.4,37.6,2,29.3v22.9C8.4,60.4,21.4,66.4,36.8,67.4z"/>
|
||||
</g>
|
||||
<polygon class="st1" points="28.4,72.3 58.3,54.8 28.3,36.6 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 948 B |
12
images/icons/cf_icon_yaw.svg
Normal file
12
images/icons/cf_icon_yaw.svg
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 85 85" style="enable-background:new 0 0 85 85;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#707173;}
|
||||
</style>
|
||||
<path class="st0" d="M44.8,5.1C25,5.1,8.7,20.6,7.5,40.1h14.4c1.2-11.6,11-20.7,22.9-20.7c12.7,0,23.1,10.3,23.1,23.1
|
||||
S57.5,65.5,44.8,65.5c-5,0-9.6-1.6-13.4-4.3v0l-11.3,9.2c6.6,5.8,15.2,9.4,24.7,9.4c20.6,0,37.4-16.8,37.4-37.4S65.4,5.1,44.8,5.1z"
|
||||
/>
|
||||
<polygon class="st0" points="1.7,31 12.8,58.2 30.9,35.1 "/>
|
||||
</svg>
|
After Width: | Height: | Size: 726 B |
|
@ -12,19 +12,6 @@ function configuration_backup(callback) {
|
|||
'profiles': [],
|
||||
};
|
||||
|
||||
MSP.send_message(MSP_codes.MSP_STATUS, false, false, function () {
|
||||
activeProfile = CONFIG.profile;
|
||||
select_profile();
|
||||
});
|
||||
|
||||
function select_profile() {
|
||||
if (activeProfile > 0) {
|
||||
MSP.send_message(MSP_codes.MSP_SELECT_SETTING, [0], false, fetch_specific_data);
|
||||
} else {
|
||||
fetch_specific_data();
|
||||
}
|
||||
}
|
||||
|
||||
var profileSpecificData = [
|
||||
MSP_codes.MSP_PID_CONTROLLER,
|
||||
MSP_codes.MSP_PID,
|
||||
|
@ -41,10 +28,26 @@ function configuration_backup(callback) {
|
|||
} else {
|
||||
profileSpecificData.push(MSP_codes.MSP_SERVO_MIX_RULES);
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
profileSpecificData.push(MSP_codes.MSP_RC_DEADBAND);
|
||||
}
|
||||
}
|
||||
|
||||
update_profile_specific_data_list();
|
||||
|
||||
MSP.send_message(MSP_codes.MSP_STATUS, false, false, function () {
|
||||
activeProfile = CONFIG.profile;
|
||||
select_profile();
|
||||
});
|
||||
|
||||
function select_profile() {
|
||||
if (activeProfile > 0) {
|
||||
MSP.send_message(MSP_codes.MSP_SELECT_SETTING, [0], false, fetch_specific_data);
|
||||
} else {
|
||||
fetch_specific_data();
|
||||
}
|
||||
}
|
||||
|
||||
function fetch_specific_data() {
|
||||
var fetchingProfile = 0,
|
||||
codeKey = 0;
|
||||
|
@ -68,6 +71,9 @@ function configuration_backup(callback) {
|
|||
'AdjustmentRanges': jQuery.extend(true, [], ADJUSTMENT_RANGES)
|
||||
});
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
configuration.profiles[fetchingProfile].RCdeadband = jQuery.extend(true, {}, RC_deadband);
|
||||
}
|
||||
codeKey = 0;
|
||||
fetchingProfile++;
|
||||
|
||||
|
@ -100,6 +106,7 @@ function configuration_backup(callback) {
|
|||
uniqueData.push(MSP_codes.MSP_3D);
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
uniqueData.push(MSP_codes.MSP_SENSOR_ALIGNMENT);
|
||||
uniqueData.push(MSP_codes.MSP_RX_CONFIG);
|
||||
uniqueData.push(MSP_codes.MSP_FAILSAFE_CONFIG);
|
||||
uniqueData.push(MSP_codes.MSP_RXFAIL_CONFIG);
|
||||
|
@ -132,6 +139,7 @@ function configuration_backup(callback) {
|
|||
configuration._3D = jQuery.extend(true, {}, _3D);
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
configuration.SENSOR_ALIGNMENT = jQuery.extend(true, {}, SENSOR_ALIGNMENT);
|
||||
configuration.RX_CONFIG = jQuery.extend(true, {}, RX_CONFIG);
|
||||
configuration.FAILSAFE_CONFIG = jQuery.extend(true, {}, FAILSAFE_CONFIG);
|
||||
configuration.RXFAIL_CONFIG = jQuery.extend(true, [], RXFAIL_CONFIG);
|
||||
|
@ -217,6 +225,7 @@ function configuration_backup(callback) {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function configuration_restore(callback) {
|
||||
|
@ -299,6 +308,7 @@ function configuration_restore(callback) {
|
|||
return semver.gte(generated, required);
|
||||
}
|
||||
|
||||
|
||||
function migrate(configuration) {
|
||||
var appliedMigrationsCount = 0;
|
||||
var migratedVersion = configuration.generatedBy;
|
||||
|
@ -517,7 +527,28 @@ function configuration_restore(callback) {
|
|||
appliedMigrationsCount++;
|
||||
}
|
||||
|
||||
|
||||
if (compareVersions(migratedVersion, '0.66.0') && !compareVersions(configuration.apiVersion, '1.15.0')) {
|
||||
// api 1.15 exposes RCdeadband and sensor alignment
|
||||
|
||||
|
||||
for (var profileIndex = 0; profileIndex < configuration.profiles.length; profileIndex++) {
|
||||
if (configuration.profiles[profileIndex].RCdeadband == undefined) {
|
||||
configuration.profiles[profileIndex].RCdeadband = {
|
||||
deadband: 0,
|
||||
yaw_deadband: 0,
|
||||
alt_hold_deadband: 40,
|
||||
};
|
||||
}
|
||||
}
|
||||
if (configuration.SENSOR_ALIGNMENT == undefined) {
|
||||
configuration.SENSOR_ALIGNMENT = {
|
||||
align_gyro: 0,
|
||||
align_acc: 0,
|
||||
align_mag: 0
|
||||
};
|
||||
}
|
||||
|
||||
// api 1.15 exposes RX_CONFIG, FAILSAFE_CONFIG and RXFAIL_CONFIG configuration
|
||||
|
||||
if (configuration.RX_CONFIG == undefined) {
|
||||
|
@ -566,7 +597,6 @@ function configuration_restore(callback) {
|
|||
if (appliedMigrationsCount > 0) {
|
||||
GUI.log(chrome.i18n.getMessage('configMigrationSuccessful', [appliedMigrationsCount]));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -582,6 +612,10 @@ function configuration_restore(callback) {
|
|||
MSP_codes.MSP_SET_ACC_TRIM
|
||||
];
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
profileSpecificData.push(MSP_codes.MSP_SET_RC_DEADBAND);
|
||||
}
|
||||
|
||||
MSP.send_message(MSP_codes.MSP_STATUS, false, false, function () {
|
||||
activeProfile = CONFIG.profile;
|
||||
select_profile();
|
||||
|
@ -608,6 +642,7 @@ function configuration_restore(callback) {
|
|||
SERVO_RULES = configuration.profiles[profile].ServoRules;
|
||||
MODE_RANGES = configuration.profiles[profile].ModeRanges;
|
||||
ADJUSTMENT_RANGES = configuration.profiles[profile].AdjustmentRanges;
|
||||
RC_deadband = configuration.profiles[profile].RCdeadband;
|
||||
}
|
||||
|
||||
function upload_using_specific_commands() {
|
||||
|
@ -674,6 +709,7 @@ function configuration_restore(callback) {
|
|||
uniqueData.push(MSP_codes.MSP_SET_3D);
|
||||
}
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
uniqueData.push(MSP_codes.MSP_SET_SENSOR_ALIGNMENT);
|
||||
uniqueData.push(MSP_codes.MSP_SET_RX_CONFIG);
|
||||
uniqueData.push(MSP_codes.MSP_SET_FAILSAFE_CONFIG);
|
||||
}
|
||||
|
@ -688,6 +724,7 @@ function configuration_restore(callback) {
|
|||
ARMING_CONFIG = configuration.ARMING_CONFIG;
|
||||
FC_CONFIG = configuration.FC_CONFIG;
|
||||
_3D = configuration._3D;
|
||||
SENSOR_ALIGNMENT = configuration.SENSOR_ALIGNMENT;
|
||||
RX_CONFIG = configuration.RX_CONFIG;
|
||||
FAILSAFE_CONFIG = configuration.FAILSAFE_CONFIG;
|
||||
RXFAIL_CONFIG = configuration.RXFAIL_CONFIG;
|
||||
|
|
|
@ -195,6 +195,18 @@ var BLACKBOX = {
|
|||
blackboxRateDenom: 1
|
||||
};
|
||||
|
||||
var RC_deadband = {
|
||||
deadband: 0,
|
||||
yaw_deadband: 0,
|
||||
alt_hold_deadband: 0
|
||||
};
|
||||
|
||||
var SENSOR_ALIGNMENT = {
|
||||
align_gyro: 0,
|
||||
align_acc: 0,
|
||||
align_mag: 0
|
||||
};
|
||||
|
||||
var RX_CONFIG = {
|
||||
serialrx_provider: 0,
|
||||
maxcheck: 0,
|
||||
|
|
|
@ -288,7 +288,6 @@ GUI_control.prototype.content_ready = function (callback) {
|
|||
|
||||
$('.cf_tip').each(function() {
|
||||
$(this).jBox('Tooltip', {
|
||||
content: $(this).children('.cf_tooltiptext'),
|
||||
delayOpen: 100,
|
||||
delayClose: 100,
|
||||
position: {
|
||||
|
|
43
js/msp.js
43
js/msp.js
|
@ -62,6 +62,8 @@ var MSP_codes = {
|
|||
MSP_BOXIDS: 119,
|
||||
MSP_SERVO_CONFIGURATIONS: 120,
|
||||
MSP_3D: 124,
|
||||
MSP_RC_DEADBAND: 125,
|
||||
MSP_SENSOR_ALIGNMENT: 126,
|
||||
|
||||
MSP_SET_RAW_RC: 200,
|
||||
MSP_SET_RAW_GPS: 201,
|
||||
|
@ -78,6 +80,9 @@ var MSP_codes = {
|
|||
MSP_SET_SERVO_CONFIGURATION: 212,
|
||||
MSP_SET_MOTOR: 214,
|
||||
MSP_SET_3D: 217,
|
||||
MSP_SET_RC_DEADBAND: 218,
|
||||
MSP_SET_RESET_CURR_PID: 219,
|
||||
MSP_SET_SENSOR_ALIGNMENT: 220,
|
||||
|
||||
// MSP_BIND: 240,
|
||||
|
||||
|
@ -523,6 +528,18 @@ var MSP = {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MSP_codes.MSP_RC_DEADBAND:
|
||||
var offset = 0;
|
||||
RC_deadband.deadband = data.getUint8(offset++, 1);
|
||||
RC_deadband.yaw_deadband = data.getUint8(offset++, 1);
|
||||
RC_deadband.alt_hold_deadband = data.getUint8(offset++, 1);
|
||||
break;
|
||||
case MSP_codes.MSP_SENSOR_ALIGNMENT:
|
||||
var offset = 0;
|
||||
SENSOR_ALIGNMENT.align_gyro = data.getUint8(offset++, 1);
|
||||
SENSOR_ALIGNMENT.align_acc = data.getUint8(offset++, 1);
|
||||
SENSOR_ALIGNMENT.align_mag = data.getUint8(offset++, 1);
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RAW_RC:
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RAW_GPS:
|
||||
|
@ -934,6 +951,18 @@ var MSP = {
|
|||
case MSP_codes.MSP_SET_ARMING_CONFIG:
|
||||
console.log('Arming config saved');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RESET_CURR_PID:
|
||||
console.log('Current PID profile reset');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_3D:
|
||||
console.log('3D settings saved');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RC_DEADBAND:
|
||||
console.log('Rc controls settings saved');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_SENSOR_ALIGNMENT:
|
||||
console.log('Sensor alignment saved');
|
||||
break;
|
||||
case MSP_codes.MSP_SET_RX_CONFIG:
|
||||
console.log('Rx config saved');
|
||||
break;
|
||||
|
@ -1276,6 +1305,18 @@ MSP.crunch = function (code) {
|
|||
buffer.push(highByte(_3D.deadband3d_throttle));
|
||||
break;
|
||||
|
||||
case MSP_codes.MSP_SET_RC_DEADBAND:
|
||||
buffer.push(RC_deadband.deadband);
|
||||
buffer.push(RC_deadband.yaw_deadband);
|
||||
buffer.push(RC_deadband.alt_hold_deadband);
|
||||
break;
|
||||
|
||||
case MSP_codes.MSP_SET_SENSOR_ALIGNMENT:
|
||||
buffer.push(SENSOR_ALIGNMENT.align_gyro);
|
||||
buffer.push(SENSOR_ALIGNMENT.align_acc);
|
||||
buffer.push(SENSOR_ALIGNMENT.align_mag);
|
||||
break
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -1350,6 +1391,7 @@ MSP.sendServoConfigurations = function(onCompleteCallback) {
|
|||
nextFunction();
|
||||
}
|
||||
|
||||
|
||||
function send_next_servo_configuration() {
|
||||
|
||||
var buffer = [];
|
||||
|
@ -1472,6 +1514,7 @@ MSP.sendAdjustmentRanges = function(onCompleteCallback) {
|
|||
send_next_adjustment_range();
|
||||
}
|
||||
|
||||
|
||||
function send_next_adjustment_range() {
|
||||
|
||||
var adjustmentRange = ADJUSTMENT_RANGES[adjustmentRangeIndex];
|
||||
|
|
242
main.css
242
main.css
|
@ -225,7 +225,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.45));
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
text-align: center;
|
||||
text-shadow: 0px 1px rgba(0, 0, 0, 1.0);
|
||||
}
|
||||
|
||||
|
@ -282,7 +281,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
|
||||
.magicon.active {
|
||||
background-image: url(images/icons/sensor_mag_on.png);
|
||||
color: #61d514;
|
||||
color: #818181;
|
||||
}
|
||||
|
||||
|
@ -301,7 +299,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
|
||||
.gpsicon.active {
|
||||
background-image: url(images/icons/sensor_sat_on.png);
|
||||
color: #61d514;
|
||||
color: #818181;
|
||||
}
|
||||
|
||||
|
@ -320,7 +317,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
|
||||
.baroicon.active {
|
||||
background-image: url(images/icons/sensor_baro_on.png);
|
||||
color: #61d514;
|
||||
color: #818181;
|
||||
}
|
||||
|
||||
|
@ -339,7 +335,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
|
||||
.sonaricon.active {
|
||||
background-image: url(images/icons/sensor_sonar_on.png);
|
||||
color: #61d514;
|
||||
color: #818181;
|
||||
}
|
||||
|
||||
|
@ -408,6 +403,7 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
margin-bottom: 0px;
|
||||
border: 0px solid silver; /* was 1px*/
|
||||
background-color: #242424;
|
||||
color: #ccc;
|
||||
color: rgba(255, 255, 255, 0.60);
|
||||
line-height: 21px;
|
||||
height: 27px; /* was 65*/
|
||||
|
@ -433,7 +429,6 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
margin-right: 20px;
|
||||
width: 110px;
|
||||
opacity: 0.15;
|
||||
background-image: url(images/icons/scroll.svg);
|
||||
background-size: 80%;
|
||||
box-shadow: inset 0 0 5px #000000;
|
||||
transition: all ease 0.3s;
|
||||
|
@ -501,20 +496,10 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
|
||||
}
|
||||
|
||||
|
||||
#tabs {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#tabs ul {
|
||||
/* overflow-y: auto; do not force scrollbars as it renders blank stripe on some user agents */
|
||||
|
||||
}
|
||||
|
||||
#tabs.logopen ul {
|
||||
/* Cause the height to shrink to contain its floated contents while log is open */
|
||||
}
|
||||
|
||||
.header-wrapper .mode-connected {
|
||||
display: none;
|
||||
}
|
||||
|
@ -556,6 +541,8 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
#tabs li a:hover {
|
||||
text-decoration: none;
|
||||
background-color: rgba(0, 0, 0, 0.20);
|
||||
color: #fff;
|
||||
|
||||
}
|
||||
|
||||
#tabs li.active {
|
||||
|
@ -585,6 +572,10 @@ input[type="number"]::-webkit-inner-spin-button {
|
|||
background-image: url(images/icons/cf_icon_setup_grey.svg);
|
||||
}
|
||||
|
||||
.ic_setup:hover {
|
||||
background-image: url(images/icons/cf_icon_setup_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_setup {
|
||||
background-image: url(images/icons/cf_icon_setup_white.svg);
|
||||
}
|
||||
|
@ -593,6 +584,10 @@ li.active .ic_setup {
|
|||
background-image: url(images/icons/cf_icon_ports_grey.svg);
|
||||
}
|
||||
|
||||
.ic_ports:hover {
|
||||
background-image: url(images/icons/cf_icon_ports_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_ports {
|
||||
background-image: url(images/icons/cf_icon_ports_white.svg);
|
||||
}
|
||||
|
@ -601,6 +596,10 @@ li.active .ic_ports {
|
|||
background-image: url(images/icons/cf_icon_config_grey.svg);
|
||||
}
|
||||
|
||||
.ic_config:hover {
|
||||
background-image: url(images/icons/cf_icon_config_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_config {
|
||||
background-image: url(images/icons/cf_icon_config_white.svg);
|
||||
}
|
||||
|
@ -609,6 +608,10 @@ li.active .ic_config {
|
|||
background-image: url(images/icons/cf_icon_pid_grey.svg);
|
||||
}
|
||||
|
||||
.ic_pid:hover {
|
||||
background-image: url(images/icons/cf_icon_pid_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_pid {
|
||||
background-image: url(images/icons/cf_icon_pid_white.svg);
|
||||
}
|
||||
|
@ -617,6 +620,10 @@ li.active .ic_pid {
|
|||
background-image: url(images/icons/cf_icon_rx_grey.svg);
|
||||
}
|
||||
|
||||
.ic_rx:hover {
|
||||
background-image: url(images/icons/cf_icon_rx_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_rx {
|
||||
background-image: url(images/icons/cf_icon_rx_white.svg);
|
||||
}
|
||||
|
@ -625,6 +632,10 @@ li.active .ic_rx {
|
|||
background-image: url(images/icons/cf_icon_modes_grey.svg);
|
||||
}
|
||||
|
||||
.ic_modes:hover {
|
||||
background-image: url(images/icons/cf_icon_modes_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_modes {
|
||||
background-image: url(images/icons/cf_icon_modes_white.svg);
|
||||
}
|
||||
|
@ -633,6 +644,10 @@ li.active .ic_modes {
|
|||
background-image: url(images/icons/cf_icon_adjust_grey.svg);
|
||||
}
|
||||
|
||||
.ic_adjust:hover {
|
||||
background-image: url(images/icons/cf_icon_adjust_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_adjust {
|
||||
background-image: url(images/icons/cf_icon_adjust_white.svg);
|
||||
}
|
||||
|
@ -641,6 +656,10 @@ li.active .ic_adjust {
|
|||
background-image: url(images/icons/cf_icon_servo_grey.svg);
|
||||
}
|
||||
|
||||
.ic_servo:hover {
|
||||
background-image: url(images/icons/cf_icon_servo_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_servo {
|
||||
background-image: url(images/icons/cf_icon_servo_white.svg);
|
||||
}
|
||||
|
@ -649,6 +668,10 @@ li.active .ic_servo {
|
|||
background-image: url(images/icons/cf_icon_gps_grey.svg);
|
||||
}
|
||||
|
||||
.ic_gps:hover {
|
||||
background-image: url(images/icons/cf_icon_gps_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_gps {
|
||||
background-image: url(images/icons/cf_icon_gps_white.svg);
|
||||
}
|
||||
|
@ -657,6 +680,10 @@ li.active .ic_gps {
|
|||
background-image: url(images/icons/cf_icon_led_grey.svg);
|
||||
}
|
||||
|
||||
.ic_led:hover {
|
||||
background-image: url(images/icons/cf_icon_led_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_led {
|
||||
background-image: url(images/icons/cf_icon_led_white.svg);
|
||||
}
|
||||
|
@ -665,6 +692,10 @@ li.active .ic_led {
|
|||
background-image: url(images/icons/cf_icon_sensors_grey.svg);
|
||||
}
|
||||
|
||||
.ic_sensors:hover {
|
||||
background-image: url(images/icons/cf_icon_sensors_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_sensors {
|
||||
background-image: url(images/icons/cf_icon_sensors_white.svg);
|
||||
}
|
||||
|
@ -673,6 +704,10 @@ li.active .ic_sensors {
|
|||
background-image: url(images/icons/cf_icon_log_grey.svg);
|
||||
}
|
||||
|
||||
.ic_log:hover {
|
||||
background-image: url(images/icons/cf_icon_log_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_log {
|
||||
background-image: url(images/icons/cf_icon_log_white.svg);
|
||||
}
|
||||
|
@ -681,6 +716,10 @@ li.active .ic_log {
|
|||
background-image: url(images/icons/cf_icon_data_grey.svg);
|
||||
}
|
||||
|
||||
.ic_data:hover {
|
||||
background-image: url(images/icons/cf_icon_data_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_data {
|
||||
background-image: url(images/icons/cf_icon_data_white.svg);
|
||||
}
|
||||
|
@ -689,6 +728,10 @@ li.active .ic_data {
|
|||
background-image: url(images/icons/cf_icon_cli_grey.svg);
|
||||
}
|
||||
|
||||
.ic_cli:hover {
|
||||
background-image: url(images/icons/cf_icon_cli_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_cli {
|
||||
background-image: url(images/icons/cf_icon_cli_white.svg);
|
||||
}
|
||||
|
@ -697,6 +740,10 @@ li.active .ic_cli {
|
|||
background-image: url(images/icons/cf_icon_motor_grey.svg);
|
||||
}
|
||||
|
||||
.ic_motor:hover {
|
||||
background-image: url(images/icons/cf_icon_motor_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_motor {
|
||||
background-image: url(images/icons/cf_icon_motor_white.svg);
|
||||
}
|
||||
|
@ -705,6 +752,10 @@ li.active .ic_motor {
|
|||
background-image: url(images/icons/cf_icon_welcome_grey.svg);
|
||||
}
|
||||
|
||||
.ic_welcome:hover {
|
||||
background-image: url(images/icons/cf_icon_welcome_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_welcome {
|
||||
background-image: url(images/icons/cf_icon_welcome_white.svg);
|
||||
}
|
||||
|
@ -713,6 +764,10 @@ li.active .ic_welcome {
|
|||
background-image: url(images/icons/cf_icon_help_grey.svg);
|
||||
}
|
||||
|
||||
.ic_help:hover {
|
||||
background-image: url(images/icons/cf_icon_help_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_help {
|
||||
background-image: url(images/icons/cf_icon_help_white.svg);
|
||||
}
|
||||
|
@ -721,6 +776,10 @@ li.active .ic_help {
|
|||
background-image: url(images/icons/cf_icon_flasher_grey.svg);
|
||||
}
|
||||
|
||||
.ic_flasher:hover {
|
||||
background-image: url(images/icons/cf_icon_flasher_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_flasher {
|
||||
background-image: url(images/icons/cf_icon_flasher_white.svg);
|
||||
}
|
||||
|
@ -730,12 +789,19 @@ li.active .ic_flasher {
|
|||
background-image: url(images/icons/cf_icon_failsafe_grey.svg);
|
||||
}
|
||||
|
||||
.ic_failsafe:hover {
|
||||
background-image: url(images/icons/cf_icon_failsafe_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_failsafe {
|
||||
background-image: url(images/icons/cf_icon_failsafe_white.svg);
|
||||
}
|
||||
.ic_backup {
|
||||
background-image: url(images/icons/cf_icon_backup_grey.svg);
|
||||
}
|
||||
.ic_backup:hover {
|
||||
background-image: url(images/icons/cf_icon_backup_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_backup {
|
||||
background-image: url(images/icons/cf_icon_backup_white.svg);
|
||||
|
@ -744,6 +810,9 @@ li.active .ic_backup {
|
|||
.ic_wizzard {
|
||||
background-image: url(images/icons/cf_icon_wizard_grey.svg);
|
||||
}
|
||||
.ic_wizzard:hover {
|
||||
background-image: url(images/icons/cf_icon_wizard_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_wizard {
|
||||
background-image: url(images/icons/cf_icon_wizard_white.svg);
|
||||
|
@ -752,6 +821,9 @@ li.active .ic_wizard {
|
|||
.ic_advanced {
|
||||
background-image: url(images/icons/cf_icon_advanced_grey.svg);
|
||||
}
|
||||
.ic_advanced:hover {
|
||||
background-image: url(images/icons/cf_icon_advanced_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_advanced {
|
||||
background-image: url(images/icons/cf_icon_advanced_white.svg);
|
||||
|
@ -760,32 +832,35 @@ li.active .ic_advanced {
|
|||
.ic_mission {
|
||||
background-image: url(images/icons/cf_icon_mission_grey.svg);
|
||||
}
|
||||
.ic_mission:hover {
|
||||
background-image: url(images/icons/cf_icon_mission_white.svg);
|
||||
}
|
||||
|
||||
li.active .ic_mission {
|
||||
background-image: url(images/icons/cf_icon_mission_white.svg);
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-top: 0px; /* 31 */
|
||||
padding: 0px; /* 10 */
|
||||
margin-top: 0px;
|
||||
padding: 0px;
|
||||
height: calc(100% - 150px);
|
||||
/* (port picker 105px, log CLOSED 25px, status bar: 20px + padding) - was: calc(100% - 171px)*/
|
||||
background-color: white;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
border: 0px solid #848484; /* 1px solid #848484; */
|
||||
border: 0px solid #848484;
|
||||
-webkit-transform: rotateX(0deg); /* DO NOT REMOVE! this fixes the UI freezing bug on MAC OS X */
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
#content.logopen {
|
||||
margin-top: 0px; /* 31 */
|
||||
padding: 0px; /* 10 */
|
||||
margin-top: 0px;
|
||||
padding: 0px;
|
||||
height: calc(100% - 234px); /* (port picker, log OPEN, status bar: 20px + padding) - was: calc(100% - 171px)*/
|
||||
background-color: white;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
border: 0px solid #848484; /* 1px solid #848484; */
|
||||
border: 0px solid #848484;
|
||||
-webkit-transform: rotateX(0deg); /* DO NOT REMOVE! this fixes the UI freezing bug on MAC OS X */
|
||||
transition: all 0.5s;
|
||||
/* Cause the height to shrink to contain its floated contents while log is open */
|
||||
|
@ -874,10 +949,8 @@ dialog {
|
|||
}
|
||||
|
||||
.tab_wrapper {
|
||||
padding-left: 20px;
|
||||
padding-right: 15px;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
padding: 20px 15px 15px 15px;
|
||||
|
||||
}
|
||||
|
||||
.content_wrapper {
|
||||
|
@ -1361,7 +1434,7 @@ dialog {
|
|||
|
||||
.properties dd {
|
||||
width: 400px;
|
||||
height: auto !important;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* GPS Fix styling*/
|
||||
|
@ -1375,7 +1448,6 @@ dialog {
|
|||
font-size: 10px;
|
||||
}
|
||||
|
||||
|
||||
.fixfalse {
|
||||
background-color: #e60000;
|
||||
padding: 2px;
|
||||
|
@ -1452,11 +1524,10 @@ dialog {
|
|||
position: absolute;
|
||||
top: -18px;
|
||||
margin-top: 0px;
|
||||
text-align: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width:120px;
|
||||
text-align:left;
|
||||
text-align: left;
|
||||
color:silver;
|
||||
}
|
||||
|
||||
|
@ -1477,119 +1548,122 @@ dialog {
|
|||
margin-top:2px;
|
||||
}
|
||||
|
||||
.cf_tooltiptext {
|
||||
display:none;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
|
||||
.content_wrapper {
|
||||
|
||||
.content_wrapper {
|
||||
padding: 15px;
|
||||
}
|
||||
.tab_title {
|
||||
}
|
||||
|
||||
.tab_title {
|
||||
font-size: 16px;
|
||||
line-height: 18px;
|
||||
font-family: 'open_sanslight', Arial;
|
||||
margin-bottom: 10px;
|
||||
height: 22px;
|
||||
}
|
||||
.cf_doc_version_bt a {
|
||||
}
|
||||
|
||||
.cf_doc_version_bt a {
|
||||
padding: 1px 5px 1px 5px;
|
||||
margin-top: -35px;
|
||||
font-size: 9px;
|
||||
line-height: 15px;
|
||||
}
|
||||
#content {
|
||||
}
|
||||
|
||||
#content {
|
||||
height: calc(100% - 151px);
|
||||
/* (port picker 105px, log CLOSED 25px, status bar: 20px + padding) - was: calc(100% - 171px)*/
|
||||
}
|
||||
body {
|
||||
/*font-size: 11px;*/
|
||||
/* lets see if we really need this? */
|
||||
}
|
||||
|
||||
}
|
||||
.tab-setup, .tab-landing, .tab-adjustments, .tab-auxiliary, .tab-cli, .tab-configuration, .tab-failsafe, .tab-onboard_logging,
|
||||
.tab-firmware_flasher, .tab-gps, .tab-help, .tab-led-strip, .tab-logging, .tab-modes, .tab-motors,
|
||||
.tab-pid_tuning, .tab-ports, .tab-receiver, .tab-sensors, .tab-servos {
|
||||
|
||||
}
|
||||
.cf_table td {
|
||||
.cf_table td {
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
.default_btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.default_btn a {
|
||||
/*font-size:11px;*/
|
||||
}
|
||||
|
||||
}
|
||||
#tabs li a {
|
||||
.default_btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#tabs li a {
|
||||
font-family: 'open_sansregular', Arial;
|
||||
font-size: 12px;
|
||||
padding-left: 53px;
|
||||
padding-left: 60px;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 2px;
|
||||
content: "" !important;
|
||||
content: "";
|
||||
text-shadow: none;
|
||||
transition: none;
|
||||
/* following is just for a graceful degradation */
|
||||
text-overflow: clip;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
.tab_container {
|
||||
width: 40px;
|
||||
}
|
||||
.gui_box_titlebar {
|
||||
}
|
||||
|
||||
.tab_container {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.gui_box_titlebar {
|
||||
font-size: 12px;
|
||||
height: 24px;
|
||||
padding-bottom: 0px;
|
||||
margin-bottom: 5px;
|
||||
float: left;
|
||||
}
|
||||
.spacer_box_title {
|
||||
}
|
||||
|
||||
.spacer_box_title {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-top: 3px;
|
||||
margin-bottom: 0px;
|
||||
float: left;
|
||||
}
|
||||
input {
|
||||
}
|
||||
|
||||
input {
|
||||
font-size: 11px !important;
|
||||
}
|
||||
.helpicon {
|
||||
}
|
||||
|
||||
.helpicon {
|
||||
float: right;
|
||||
margin-top: 5px;
|
||||
margin-right: 7px;
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
transition: none;
|
||||
|
||||
}
|
||||
|
||||
#tooltiptext {
|
||||
}
|
||||
|
||||
.gps_false {
|
||||
.gps_false {
|
||||
padding: 0px 3px 0px 3px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.gps_true {
|
||||
}
|
||||
|
||||
.gps_true {
|
||||
padding: 0px 3px 0px 3px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.content_toolbar .btn a {
|
||||
}
|
||||
|
||||
.content_toolbar .btn a {
|
||||
margin-right: 15px;
|
||||
}
|
||||
.toolbar_fixed_bottom .content_wrapper {
|
||||
}
|
||||
|
||||
.toolbar_fixed_bottom .content_wrapper {
|
||||
/* content wrapper in view with toolbar fixed over bottom edge
|
||||
leave 50px space for the toolbar
|
||||
*/
|
||||
height: calc(100% - 81px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media only screen and (max-height: 700px) , only screen and (max-device-height: 700px) {
|
||||
|
||||
.tab_container {
|
||||
.tab_container {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,7 +1,3 @@
|
|||
.tab-adjustments {
|
||||
|
||||
}
|
||||
|
||||
#tab-adjustments-templates {
|
||||
display: none;
|
||||
}
|
||||
|
@ -122,3 +118,7 @@
|
|||
.tab-adjustments .adjustment .functionSwitchChannel {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
.tab-adjustments .spacebottom {
|
||||
margin-bottom: 15px;
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
<div class="cf_doc_version_bt">
|
||||
<a id="button-documentation" href="https://github.com/cleanflight/cleanflight/releases" target="_blank"></a>
|
||||
</div>
|
||||
<div class="note" style="margin-bottom: 15px;">
|
||||
<div class="note spacebottom">
|
||||
<div class="note_spacer">
|
||||
<p i18n="adjustmentsHelp"></p>
|
||||
<p i18n="adjustmentsExamples"></p>
|
||||
|
@ -88,6 +88,24 @@
|
|||
<option value="18" i18n="adjustmentsFunction18"></option>
|
||||
<option value="19" i18n="adjustmentsFunction19"></option>
|
||||
<option value="20" i18n="adjustmentsFunction20"></option>
|
||||
<option value="21" i18n="adjustmentsFunction21"></option>
|
||||
<option value="22" i18n="adjustmentsFunction22"></option>
|
||||
<option value="23" i18n="adjustmentsFunction23"></option>
|
||||
<option value="24" i18n="adjustmentsFunction24"></option>
|
||||
<option value="25" i18n="adjustmentsFunction25"></option>
|
||||
<option value="26" i18n="adjustmentsFunction26"></option>
|
||||
<option value="27" i18n="adjustmentsFunction27"></option>
|
||||
<option value="28" i18n="adjustmentsFunction28"></option>
|
||||
<option value="29" i18n="adjustmentsFunction29"></option>
|
||||
<option value="30" i18n="adjustmentsFunction30"></option>
|
||||
<option value="31" i18n="adjustmentsFunction31"></option>
|
||||
<option value="32" i18n="adjustmentsFunction32"></option>
|
||||
<option value="33" i18n="adjustmentsFunction33"></option>
|
||||
<option value="34" i18n="adjustmentsFunction34"></option>
|
||||
<option value="35" i18n="adjustmentsFunction35"></option>
|
||||
<option value="36" i18n="adjustmentsFunction36"></option>
|
||||
<option value="37" i18n="adjustmentsFunction37"></option>
|
||||
<option value="38" i18n="adjustmentsFunction38"></option>
|
||||
</select></td>
|
||||
<td class="adjustmentSlot"><select class="slot">
|
||||
<option value="0" i18n="adjustmentsSlot0"></option>
|
||||
|
|
|
@ -69,6 +69,9 @@ TABS.adjustments.initialize = function (callback) {
|
|||
availableFunctionCount += 2; // pitch and roll rate
|
||||
if (semver.gte(CONFIG.flightControllerVersion, '1.9.0')) {
|
||||
availableFunctionCount += 6; // pitch p,i,d and roll p,i,d
|
||||
if(semver.gte(CONFIG.apiVersion, "1.15.0")){
|
||||
availableFunctionCount += 18;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,10 +46,7 @@
|
|||
.tab-auxiliary .mode {
|
||||
background-color: #f9f9f9;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.tab-auxiliary .mode:nth-child(odd) {
|
||||
|
||||
border-bottom: 1px solid #000000;
|
||||
}
|
||||
|
||||
.tab-auxiliary .mode .name {
|
||||
|
@ -57,10 +54,6 @@
|
|||
padding: 13px 0px;
|
||||
}
|
||||
|
||||
.tab-auxiliary .mode.off .info, .tab-auxiliary .mode.on .info {
|
||||
|
||||
}
|
||||
|
||||
.tab-auxiliary .mode .info {
|
||||
text-align: center;
|
||||
width: 10%;
|
||||
|
@ -122,12 +115,7 @@
|
|||
padding: 2px;
|
||||
}
|
||||
|
||||
.tab-auxiliary .range:nth-child(odd) {
|
||||
|
||||
}
|
||||
|
||||
.tab-auxiliary .mode .range .channelInfo {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
min-width: 90px;
|
||||
text-align: center;
|
||||
|
@ -152,17 +140,12 @@
|
|||
}
|
||||
|
||||
.tab-auxiliary .range .channel-slider {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
width: 80%;
|
||||
margin-left: 20px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.tab-auxiliary .channel-slider {
|
||||
|
||||
}
|
||||
|
||||
.tab-auxiliary>.buttons {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
@ -220,6 +203,11 @@
|
|||
line-height: 28px;
|
||||
}
|
||||
|
||||
.tab-auxiliary .spacebottom {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
|
||||
.tab-auxiliary .fixed_band {
|
||||
margin: 0px;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="cf_doc_version_bt">
|
||||
<a id="button-documentation" href="https://github.com/cleanflight/cleanflight/releases" target="_blank"></a>
|
||||
</div>
|
||||
<div class="note" style="margin-bottom: 15px;">
|
||||
<div class="note spacebottom">
|
||||
<div class="note_spacer">
|
||||
<p i18n="auxiliaryHelp"></p>
|
||||
</div>
|
||||
|
@ -23,7 +23,7 @@
|
|||
<div id="tab-auxiliary-templates">
|
||||
<table class="modes">
|
||||
<tbody>
|
||||
<tr class="mode" style="border-bottom: 1px solid #000000">
|
||||
<tr class="mode">
|
||||
<td class="info">
|
||||
<p class="name"></p>
|
||||
<div class="buttons">
|
||||
|
|
|
@ -174,7 +174,7 @@ TABS.cli.read = function (readInfo) {
|
|||
GUI.timeout_add('waiting_for_bootup', function waiting_for_bootup() {
|
||||
MSP.send_message(MSP_codes.MSP_IDENT, false, false, function () {
|
||||
GUI.log(chrome.i18n.getMessage('deviceReady'));
|
||||
if (!this.tab_switch_in_progress) {
|
||||
if (!GUI.tab_switch_in_progress) {
|
||||
$('#tabs ul.mode-connected .tab_setup a').click();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
margin: 0 0 10px 20px;
|
||||
}
|
||||
|
||||
.tab-configuration select.mixerList {
|
||||
.tab-configuration .mixerList {
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
margin-top: 5px;
|
||||
|
@ -81,11 +81,6 @@
|
|||
line-height: 18px;
|
||||
}
|
||||
|
||||
.tab-configuration .number {
|
||||
margin-bottom: 5px;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.tab-configuration .number input {
|
||||
width: 50px;
|
||||
padding-left: 3px;
|
||||
|
@ -99,7 +94,7 @@
|
|||
font-weight: normal;
|
||||
}
|
||||
|
||||
.tab-configuration .number input.disabled {
|
||||
.tab-configuration .number .disabled {
|
||||
width: 43px;
|
||||
padding: 0px 5px;
|
||||
background-color: #ececec;
|
||||
|
@ -175,7 +170,7 @@
|
|||
}
|
||||
|
||||
.tab-configuration span {
|
||||
margin: 0px
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.tab-configuration .disarm .checkbox {
|
||||
|
@ -193,13 +188,6 @@
|
|||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.tab-configuration .number {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-configuration .disarm {
|
||||
margin-bottom: 5px;
|
||||
float: left;
|
||||
|
@ -214,7 +202,19 @@
|
|||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.tab-configuration .number:last-child {
|
||||
.tab-configuration .number,
|
||||
.tab-configuration .select
|
||||
{
|
||||
margin-bottom: 5px;
|
||||
clear: left;
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-configuration .number:last-child,
|
||||
.tab-configuration .select:last-child {
|
||||
border-bottom: none;
|
||||
padding-bottom: 0px;
|
||||
margin-bottom: 0px;
|
||||
|
@ -330,10 +330,135 @@
|
|||
font-style: normal;
|
||||
font-family: 'open_sansregular', Arial;
|
||||
line-height: 19px;
|
||||
color: #7d7d7d;
|
||||
color: #4F4F4F;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.tab-configuration .alignicon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
float: left;
|
||||
margin-left: -5px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.tab-configuration .pitch {
|
||||
background-image: url(../images/icons/cf_icon_pitch.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 20px;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.tab-configuration .yaw {
|
||||
background-image: url(../images/icons/cf_icon_yaw.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 20px;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.tab-configuration .roll {
|
||||
background-image: url(../images/icons/cf_icon_roll.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 20px;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.tab-configuration .board select {
|
||||
/*float: left;*/
|
||||
width: 45%;
|
||||
height: 20px;
|
||||
margin: 0 0px 2px 0;
|
||||
border: 1px solid silver;
|
||||
border-radius:3px;
|
||||
}
|
||||
|
||||
|
||||
#mixercontent .mixerheadline {
|
||||
font-size: 13px;
|
||||
width: 100%;
|
||||
padding-bottom: 0px;
|
||||
float: left;
|
||||
margin-bottom: 7px;
|
||||
font-family: 'open_sanssemibold', Arial;
|
||||
}
|
||||
|
||||
#mixercontent select {
|
||||
float: left;
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
margin: 0 0px 2px 0;
|
||||
border: 1px solid silver;
|
||||
border-radius:3px;
|
||||
margin-bottom: 20px;
|
||||
margin-top:3px;
|
||||
|
||||
}
|
||||
|
||||
#mixercontent input {
|
||||
width: 50px;
|
||||
padding-left: 3px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
border: 1px solid silver;
|
||||
border-radius: 3px;
|
||||
margin-right: 11px;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
|
||||
}
|
||||
|
||||
#mixercontent .mixerletter {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
background-color: #d0d0d0;
|
||||
line-height: 23px;
|
||||
text-align: center;
|
||||
border-radius: 100px;
|
||||
margin-right: 10px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#mixercontent .number {
|
||||
margin-bottom: 5px;
|
||||
clear: left;
|
||||
padding-top: 5px;
|
||||
border-top: 1px solid #ddd;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#mixercontent .number:last-child {
|
||||
padding-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
#mixercontent .mixercanvas {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #e4e4e4;
|
||||
height: 340px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.tab-configuration .sensoralignment {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-configuration .board_align_content {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-configuration .sensoralignment span {
|
||||
width: 55%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
|
||||
.tab-configuration .gui_box span {
|
||||
line-height: 17px;
|
||||
|
|
|
@ -33,13 +33,6 @@
|
|||
</div>
|
||||
<div class="spacer_box">
|
||||
<table cellpadding="0" cellspacing="0">
|
||||
<thead style="display: none;">
|
||||
<tr>
|
||||
<th i18n="configurationFeatureEnabled"></th>
|
||||
<th i18n="configurationFeatureDescription"></th>
|
||||
<th i18n="configurationFeatureName"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="features esc">
|
||||
<!-- table generated here -->
|
||||
</tbody>
|
||||
|
@ -58,7 +51,8 @@
|
|||
<label>
|
||||
<div class="numberspacer">
|
||||
<input type="number" name="autodisarmdelay" min="0" max="60" />
|
||||
</div> <span i18n="configurationAutoDisarmDelay"></span>
|
||||
</div>
|
||||
<span i18n="configurationAutoDisarmDelay"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,28 +61,32 @@
|
|||
<label>
|
||||
<div class="numberspacer">
|
||||
<input type="number" name="minthrottle" min="0" max="2000" />
|
||||
</div> <span i18n="configurationThrottleMinimum"></span>
|
||||
</div>
|
||||
<span i18n="configurationThrottleMinimum"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label>
|
||||
<div class="numberspacer">
|
||||
<input type="number" name="midthrottle" min="0" max="2000" />
|
||||
</div> <span i18n="configurationThrottleMid"></span>
|
||||
</div>
|
||||
<span i18n="configurationThrottleMid"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label>
|
||||
<div class="numberspacer">
|
||||
<input type="number" name="maxthrottle" min="0" max="2000" />
|
||||
</div> <span i18n="configurationThrottleMaximum"></span>
|
||||
</div>
|
||||
<span i18n="configurationThrottleMaximum"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label>
|
||||
<div class="numberspacer">
|
||||
<input type="number" name="mincommand" min="0" max="2000" />
|
||||
</div> <span i18n="configurationThrottleMinimumCommand"></span>
|
||||
</div>
|
||||
<span i18n="configurationThrottleMinimumCommand"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -99,22 +97,57 @@
|
|||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationBoardAlignment"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="configHelp2"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<div class="board_align_content">
|
||||
<div class="number">
|
||||
<label> <input type="number" name="board_align_roll" step="1" min="-180" max="360" /> <span
|
||||
i18n="configurationBoardAlignmentRoll"></span>
|
||||
</label>
|
||||
<div class="alignicon roll"></div>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label> <input type="number" name="board_align_pitch" step="1" min="-180" max="360" />
|
||||
<span i18n="configurationBoardAlignmentPitch"></span>
|
||||
</label>
|
||||
<div class="alignicon pitch"></div>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label> <input type="number" name="board_align_yaw" step="1" min="-180" max="360" /> <span
|
||||
i18n="configurationBoardAlignmentYaw"></span>
|
||||
</label>
|
||||
<div class="alignicon yaw"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sensoralignment">
|
||||
<div class="select">
|
||||
<label>
|
||||
<span i18n="configurationSensorAlignmentGyro"></span>
|
||||
<select class="gyroalign">
|
||||
<option value="0">Default</option>
|
||||
<!-- list generated here -->
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="select">
|
||||
<label>
|
||||
<span i18n="configurationSensorAlignmentAcc"></span>
|
||||
<select class="accalign">
|
||||
<option value="0">Default</option>
|
||||
<!-- list generated here -->
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="select">
|
||||
<label>
|
||||
<span i18n="configurationSensorAlignmentMag"></span>
|
||||
<select class="magalign">
|
||||
<option value="0">Default</option>
|
||||
<!-- list generated here -->
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -257,9 +290,7 @@
|
|||
<div class="gui_box grey">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="configurationRSSI"></div>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="configurationRSSIHelp" style="display:none;"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="configurationRSSIHelp"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<table cellpadding="0" cellspacing="0">
|
||||
|
@ -328,17 +359,20 @@
|
|||
<div class="line">
|
||||
<select class="gps_protocol">
|
||||
<!-- list generated here -->
|
||||
</select> <span i18n="configurationGPSProtocol"></span>
|
||||
</select>
|
||||
<span i18n="configurationGPSProtocol"></span>
|
||||
</div>
|
||||
<div class="line">
|
||||
<select class="gps_baudrate">
|
||||
<!-- list generated here -->
|
||||
</select> <span i18n="configurationGPSBaudrate"></span>
|
||||
</select>
|
||||
<span i18n="configurationGPSBaudrate"></span>
|
||||
</div>
|
||||
<div class="line">
|
||||
<select class="gps_ubx_sbas">
|
||||
<!-- list generated here -->
|
||||
</select> <span i18n="configurationGPSubxSbas"></span>
|
||||
</select>
|
||||
<span i18n="configurationGPSubxSbas"></span>
|
||||
</div>
|
||||
<div class="number">
|
||||
<label> <input type="number" name="mag_declination" step="0.1" min="-180" max="180" />
|
||||
|
|
|
@ -54,7 +54,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
|
||||
function load_3d() {
|
||||
var next_callback = load_html;
|
||||
var next_callback = load_sensor_alignment;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.14.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_3D, false, false, next_callback);
|
||||
} else {
|
||||
|
@ -62,6 +62,15 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
}
|
||||
|
||||
function load_sensor_alignment() {
|
||||
var next_callback = load_html;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_SENSOR_ALIGNMENT, false, false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function load_html() {
|
||||
$('#content').load("./tabs/configuration.html", process_html);
|
||||
}
|
||||
|
@ -202,6 +211,36 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
var alignments = [
|
||||
'CW 0°',
|
||||
'CW 90°',
|
||||
'CW 180°',
|
||||
'CW 270°',
|
||||
'CW 0° flip',
|
||||
'CW 90° flip',
|
||||
'CW 180° flip',
|
||||
'CW 270° flip'
|
||||
];
|
||||
|
||||
var orientation_gyro_e = $('select.gyroalign');
|
||||
var orientation_acc_e = $('select.accalign');
|
||||
var orientation_mag_e = $('select.magalign');
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.15.0")) {
|
||||
$('.tab-configuration .sensoralignment').hide();
|
||||
} else {
|
||||
for (var i = 0; i < alignments.length; i++) {
|
||||
orientation_gyro_e.append('<option value="' + (i+1) + '">'+ alignments[i] + '</option>');
|
||||
orientation_acc_e.append('<option value="' + (i+1) + '">'+ alignments[i] + '</option>');
|
||||
orientation_mag_e.append('<option value="' + (i+1) + '">'+ alignments[i] + '</option>');
|
||||
}
|
||||
orientation_gyro_e.val(SENSOR_ALIGNMENT.align_gyro);
|
||||
orientation_acc_e.val(SENSOR_ALIGNMENT.align_acc);
|
||||
orientation_mag_e.val(SENSOR_ALIGNMENT.align_mag);
|
||||
}
|
||||
|
||||
|
||||
// generate GPS
|
||||
var gpsProtocols = [
|
||||
'NMEA',
|
||||
|
@ -225,6 +264,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
'Indian GAGAN'
|
||||
];
|
||||
|
||||
|
||||
var gps_protocol_e = $('select.gps_protocol');
|
||||
for (var i = 0; i < gpsProtocols.length; i++) {
|
||||
gps_protocol_e.append('<option value="' + i + '">' + gpsProtocols[i] + '</option>');
|
||||
|
@ -433,6 +473,11 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
_3D.neutral3d = parseInt($('input[name="3dneutral"]').val());
|
||||
_3D.deadband3d_throttle = ($('input[name="3ddeadbandthrottle"]').val());
|
||||
|
||||
|
||||
SENSOR_ALIGNMENT.align_gyro = parseInt(orientation_gyro_e.val());
|
||||
SENSOR_ALIGNMENT.align_acc = parseInt(orientation_acc_e.val());
|
||||
SENSOR_ALIGNMENT.align_mag = parseInt(orientation_mag_e.val());
|
||||
|
||||
// track feature usage
|
||||
if (isFeatureEnabled('RX_SERIAL')) {
|
||||
googleAnalytics.sendEvent('Setting', 'SerialRxProvider', serialRXtypes[BF_CONFIG.serialrx_type]);
|
||||
|
@ -445,6 +490,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
|
@ -458,7 +504,21 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
|||
}
|
||||
|
||||
function save_3d() {
|
||||
MSP.send_message(MSP_codes.MSP_SET_3D, MSP.crunch(MSP_codes.MSP_SET_3D), false, save_acc_trim);
|
||||
var next_callback = save_sensor_alignment;
|
||||
if(semver.gte(CONFIG.apiVersion, "1.14.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_SET_3D, MSP.crunch(MSP_codes.MSP_SET_3D), false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function save_sensor_alignment() {
|
||||
var next_callback = save_acc_trim;
|
||||
if(semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_SET_SENSOR_ALIGNMENT, MSP.crunch(MSP_codes.MSP_SET_SENSOR_ALIGNMENT), false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function save_acc_trim() {
|
||||
|
|
|
@ -31,9 +31,7 @@
|
|||
font-weight: normal;
|
||||
}
|
||||
|
||||
.tab-failsafe .number input.disabled {
|
||||
width: 43px;
|
||||
padding: 0 5px;
|
||||
.tab-failsafe .number input:disabled {
|
||||
background-color: #ececec;
|
||||
}
|
||||
|
||||
|
@ -184,7 +182,7 @@
|
|||
font-style: normal;
|
||||
font-family: 'open_sansregular', sans-serif;
|
||||
line-height: 19px;
|
||||
color: #7d7d7d;
|
||||
color: #4F4F4F;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
|
@ -213,10 +211,31 @@
|
|||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.tab-failsafe .channelprimary {
|
||||
float:left;
|
||||
width:60%;
|
||||
}
|
||||
|
||||
.tab-failsafe .channelauxiliary {
|
||||
float:left;
|
||||
width:60%;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.tab-failsafe .channelname {
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.tab-failsafe .channelsetting {
|
||||
float:left;
|
||||
width:25%;
|
||||
}
|
||||
|
||||
.tab-failsafe .auxiliary {
|
||||
float:left;
|
||||
width:15%;
|
||||
}
|
||||
|
||||
.tab-failsafe .note {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
|
|
@ -39,9 +39,7 @@
|
|||
<div class="gui_box grey newpane">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="failsafePulsrangeTitle"></div>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafePulsrangeHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafePulsrangeHelp"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<div class="number">
|
||||
|
@ -59,9 +57,7 @@
|
|||
<div class="gui_box grey stage1 newpane">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" i18n="failsafeChannelFallbackSettingsTitle"></div>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeChannelFallbackSettingsHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeChannelFallbackSettingsHelp"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
<div class="activechannellist">
|
||||
|
@ -82,9 +78,7 @@
|
|||
</div>
|
||||
<label for="failsafe_feature_new"><span i18n="failsafeFeatureItem"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeFeatureHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeFeatureHelp"></div>
|
||||
</div>
|
||||
<div class="checkbox stage2">
|
||||
<div class="numberspacer" >
|
||||
|
@ -92,25 +86,19 @@
|
|||
</div>
|
||||
<label for="failsafe_kill_switch"><span i18n="failsafeKillSwitchItem"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeKillSwitchHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeKillSwitchHelp"></div>
|
||||
</div>
|
||||
<div class="number stage2">
|
||||
<label> <input type="number" name="failsafe_delay" min="0" max="2000" /> <span
|
||||
i18n="failsafeDelayItem"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeDelayHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeDelayHelp"></div>
|
||||
</div>
|
||||
<div class="number stage2">
|
||||
<label> <input type="number" name="failsafe_throttle_low_delay" min="0" max="2000" /> <span
|
||||
i18n="failsafeThrottleLowItem"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeThrottleLowHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeThrottleLowHelp"></div>
|
||||
</div>
|
||||
<!-- radio buttons -->
|
||||
<div class="subline stage2" i18n="failsafeSubTitle1"></div>
|
||||
|
@ -133,9 +121,7 @@
|
|||
<label> <input type="number" name="failsafe_off_delay" min="0" max="2000" /> <span
|
||||
i18n="failsafeOffDelayItem"></span>
|
||||
</label>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="failsafeOffDelayHelp"></div>
|
||||
</div>
|
||||
<div class="helpicon cf_tip" i18n_title="failsafeOffDelayHelp"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -126,34 +126,31 @@ TABS.failsafe.initialize = function (callback, scrollPosition) {
|
|||
if (i < channelNames.length) {
|
||||
fullChannels_e.append('\
|
||||
<div class="number">\
|
||||
<div style="width:60%; float:left;">\
|
||||
<div class="channelprimary">\
|
||||
<span>' + channelNames[i] + '</span>\
|
||||
</div>\
|
||||
<div class="cf_tip" style="width:25%; float:left;">\
|
||||
<div class="cf_tooltiptext" style="display:none;"><strong>Auto</strong> means Roll, Pitch and Yaw to center and Throttle low. <strong>Hold</strong> means maintain the last good value received.</div>\
|
||||
<div class="cf_tip channelsetting" title="' + chrome.i18n.getMessage("failsafeChannelFallbackSettingsAuto") + '">\
|
||||
<select class="aux_set" id="' + i + '">\
|
||||
<option value="0">Auto</option>\
|
||||
<option value="1">Hold</option>\
|
||||
</select>\
|
||||
</div>\
|
||||
<div style="width:15%; float:left;"><input type="number" name="aux_value" min="750" max="2250" id="' + i + '"/></div>\
|
||||
</div>\
|
||||
');
|
||||
} else {
|
||||
fullChannels_e.append('\
|
||||
<div class="number">\
|
||||
<div style="width:60%; float:left; padding-top: 2px;">\
|
||||
<div class="channelauxiliary">\
|
||||
<span class="channelname">' + chrome.i18n.getMessage("controlAxisAux" + (aux_index++)) + '</span>\
|
||||
' + auxAssignment[aux_assignment_index++] + '\
|
||||
</div>\
|
||||
<div class="cf_tip" style="width:25%; float:left;">\
|
||||
<div class="cf_tooltiptext" style="display:none;"><strong>Hold</strong> means maintain the last good value received. <strong>Set</strong> means the value given here will be used. </div>\
|
||||
<div class="cf_tip channelsetting" title="' + chrome.i18n.getMessage("failsafeChannelFallbackSettingsHold") + '">\
|
||||
<select class="aux_set" id="' + i + '">\
|
||||
<option value="1">Hold</option>\
|
||||
<option value="2">Set</option>\
|
||||
</select>\
|
||||
</div>\
|
||||
<div style="width:15%; float:left;"><input type="number" name="aux_value" min="750" max="2250" id="' + i + '"/></div>\
|
||||
<div class="auxiliary"><input type="number" name="aux_value" min="750" max="2250" id="' + i + '"/></div>\
|
||||
</div>\
|
||||
');
|
||||
}
|
||||
|
|
|
@ -243,12 +243,12 @@
|
|||
background-color: #b8b8b8;
|
||||
}
|
||||
|
||||
.tab-firmware_flasher .buttons a.back {
|
||||
.tab-firmware_flasher .buttons .back {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.btn a.disabled {
|
||||
.btn .disabled {
|
||||
cursor: default;
|
||||
color: #fff;
|
||||
background-color: #AFAFAF;
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.tab-gps {
|
||||
|
||||
}
|
||||
|
||||
.tab-gps progress {
|
||||
width: 100%;
|
||||
border-radius: 3px;
|
||||
|
|
|
@ -110,13 +110,15 @@
|
|||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.tab-landing .content_mid h2, .tab-landing .content_mid h3 {
|
||||
.tab-landing .content_mid h2 {
|
||||
margin-bottom: 5px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.tab-landing .content_mid h3 {
|
||||
font-size: 12px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
}
|
||||
|
||||
.tab-landing .content_mid .text1 .wrap {
|
||||
|
|
|
@ -154,11 +154,11 @@
|
|||
}
|
||||
|
||||
|
||||
.tab-led-strip button.w100 {
|
||||
.tab-led-strip .w100 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tab-led-strip button.w50 {
|
||||
.tab-led-strip .w50 {
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,6 @@
|
|||
background: linear-gradient( to bottom right, rgba(255, 0, 0, .5) 0%, rgba(255, 255, 0, 0.5) 15%, rgba(0, 255, 0, .5) 30%, rgba(0, 255, 255, .5) 50%, rgba(0, 0, 255, .5) 65%, rgba(255, 0, 255, .5) 80%, rgba(255, 0, 0, .5) 100%);
|
||||
}
|
||||
|
||||
.tab-led-strip .color-0 {}
|
||||
.tab-led-strip .color-1 {background: white;}
|
||||
.tab-led-strip .color-2 {background: red;}
|
||||
.tab-led-strip .color-3 {background: orange;}
|
||||
|
@ -186,8 +185,7 @@
|
|||
.tab-led-strip .color-11 {background: darkviolet;}
|
||||
.tab-led-strip .color-12 {background: magenta;}
|
||||
.tab-led-strip .color-13 {background: deeppink;}
|
||||
.tab-led-strip .color-14 {}
|
||||
.tab-led-strip .color-15 {}
|
||||
|
||||
|
||||
.tab-led-strip .directions button.btnOn,
|
||||
.tab-led-strip .functions button.btnOn,
|
||||
|
@ -354,3 +352,7 @@
|
|||
z-index: 100;
|
||||
border: 1px dotted white;
|
||||
}
|
||||
|
||||
.tab-led-strip .spacebottom {
|
||||
margin-bottom: 20px;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
<div class="tab-led-strip toolbar_fixed_bottom">
|
||||
<div class="content_wrapper">
|
||||
<div class="tab_title" i18n="tabLedStrip" style="float: none;"></div>
|
||||
<div class="tab_title" i18n="tabLedStrip"></div>
|
||||
<div class="cf_doc_version_bt">
|
||||
<a id="button-documentation" href="https://github.com/cleanflight/cleanflight/releases" target="_blank"></a>
|
||||
</div>
|
||||
<div class="note" style="margin-bottom: 20px;">
|
||||
<div class="note spacebottom">
|
||||
<div class="note_spacer">
|
||||
<p i18n="ledStripHelp"></p>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.tab-logging {
|
||||
|
||||
}
|
||||
|
||||
.tab-logging .properties {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
|
|
@ -51,3 +51,7 @@
|
|||
position: absolute;
|
||||
bottom: 10px;
|
||||
}
|
||||
|
||||
.tab-modes .partone {
|
||||
width: 18%;
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
<div class="content_wrapper">
|
||||
<table class="boxes">
|
||||
<tr class="heads">
|
||||
<th style="width: 18%"></th>
|
||||
<th class="partone"></th>
|
||||
</tr>
|
||||
<tr class="main">
|
||||
<th i18n="auxiliaryName"></th>
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
.tab-pid_tuning {
|
||||
|
||||
}
|
||||
|
||||
.tab-pid_tuning .rate-tpa th {
|
||||
font-weight: normal;
|
||||
background-color: #828885;
|
||||
padding: 4px;
|
||||
border-left: 0px solid #ccc;
|
||||
|
@ -62,7 +57,7 @@
|
|||
}
|
||||
|
||||
.tab-pid_tuning .rate-tpa {
|
||||
border: 0px solid #ccc;
|
||||
/*border: 0px solid #ccc; */
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
|
@ -78,7 +73,7 @@
|
|||
}
|
||||
|
||||
.tab-pid_tuning .gui_box {
|
||||
margin-bottom: 0px !important;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning table, .tab-pid_tuning table td {
|
||||
|
@ -128,10 +123,6 @@
|
|||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning table tr:nth-child(odd) {
|
||||
|
||||
}
|
||||
|
||||
.tab-pid_tuning table input {
|
||||
display: block;
|
||||
width: calc(100% - 0px);
|
||||
|
@ -144,10 +135,10 @@
|
|||
|
||||
.tab-pid_tuning .controller {
|
||||
float: left;
|
||||
width: calc(50% - 2px);
|
||||
width: calc(35% - 2px);
|
||||
margin-left: 0px;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 3px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
|
@ -155,8 +146,6 @@
|
|||
display: block;
|
||||
text-align: left;
|
||||
line-height: 20px;
|
||||
font-weight: bold;
|
||||
padding-left: 5px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: #828885;
|
||||
color: white;
|
||||
|
@ -164,6 +153,8 @@
|
|||
font-weight: normal;
|
||||
padding: 2px;
|
||||
padding-left: 6px;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .controller select {
|
||||
|
@ -183,8 +174,6 @@
|
|||
display: block;
|
||||
text-align: left;
|
||||
line-height: 20px;
|
||||
font-weight: bold;
|
||||
padding-left: 5px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: #828885;
|
||||
color: white;
|
||||
|
@ -203,12 +192,24 @@
|
|||
}
|
||||
|
||||
.tab-pid_tuning .pid_tuning .name {
|
||||
width: 30%;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .proportional {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .integral {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .derivative {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .rate-tpa {
|
||||
float: right;
|
||||
width: calc(100% - 0px); /* - ( "virtual" margin) */
|
||||
width: calc(100% - 2px); /* - ( "virtual" margin) */
|
||||
}
|
||||
|
||||
.tab-pid_tuning .top-buttons {
|
||||
|
@ -256,6 +257,12 @@
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
.show {
|
||||
width:110px;
|
||||
float:right;
|
||||
margin-right:3px;
|
||||
}
|
||||
|
||||
.show a {
|
||||
margin-left: 10px;
|
||||
width: calc(100% - 10px);
|
||||
|
@ -265,6 +272,62 @@
|
|||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .number .helpicon {
|
||||
margin-top: 3px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .gui_box_titlebar .helpicon {
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .spacer_left {
|
||||
padding-left: 15px;
|
||||
float: right;
|
||||
width: calc(100% - 20px)
|
||||
}
|
||||
|
||||
.tab-pid_tuning .numberspacer {
|
||||
float: left;
|
||||
width: 65px;
|
||||
height: 21px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .number {
|
||||
margin-bottom: 5px;
|
||||
clear: left;
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .number:last-child {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .number input {
|
||||
width: 50px;
|
||||
padding-left: 3px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
border: 1px solid silver;
|
||||
border-radius: 3px;
|
||||
margin-right: 11px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .gui_box span {
|
||||
font-style: normal;
|
||||
font-family: 'open_sansregular', Arial;
|
||||
line-height: 19px;
|
||||
color: #7d7d7d;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
#content-watermark {
|
||||
position: absolute;
|
||||
bottom: 40px;
|
||||
|
@ -279,3 +342,48 @@
|
|||
height: 174px;
|
||||
opacity: 0.15;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .resetbt {
|
||||
width: 140px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .pids {
|
||||
float: left;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .leftzero {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .tpa-breakpoint {
|
||||
border-top-left-radius: 0px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .roll {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .pidTuningLevel {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .borderleft {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .textleft {
|
||||
width: 25%;
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.tab-pid_tuning .topspacer {
|
||||
margin-top:15px;
|
||||
}
|
|
@ -7,14 +7,20 @@
|
|||
</div>
|
||||
<div class="cf_column half">
|
||||
<div class="controller">
|
||||
<span class="head" i18n="pidTuningControllerHead"></span> <select name="controller">
|
||||
<span class="head" i18n="pidTuningControllerHead"></span>
|
||||
<select name="controller">
|
||||
<!-- list generated here -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="cf_column fourth">
|
||||
<div class="cf_column right">
|
||||
<div class="default_btn show">
|
||||
<a href="#" id="showAllPids">Show all PIDs</a>
|
||||
</div>
|
||||
<div class="default_btn resetbt">
|
||||
<a href="#" id="resetPIDs">Reset PID Controller</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<form name="pid-tuning" id="pid-tuning">
|
||||
|
@ -23,10 +29,10 @@
|
|||
<div class="gui_box grey">
|
||||
<table class="pid_titlebar">
|
||||
<tr>
|
||||
<th class="name" i18n="pidTuningName" style="width: 25%;"></th>
|
||||
<th class="proportional" i18n="pidTuningProportional" style="width: 25%;"></th>
|
||||
<th class="integral" i18n="pidTuningIntegral" style="width: 25%;"></th>
|
||||
<th class="derivative" i18n="pidTuningDerivative" style="width: 25%;"></th>
|
||||
<th class="name" i18n="pidTuningName""></th>
|
||||
<th class="proportional" i18n="pidTuningProportional"></th>
|
||||
<th class="integral" i18n="pidTuningIntegral"></th>
|
||||
<th class="derivative" i18n="pidTuningDerivative"></th>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="pid_main" class="pid_tuning">
|
||||
|
@ -121,20 +127,18 @@
|
|||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="gui_box grey" style="margin-top:10px;">
|
||||
<table id="pid_accel" class="pid_tuning">
|
||||
<div class="gui_box grey topspacer">
|
||||
<table id="pid_accel" class="pid_tuning">
|
||||
<tr>
|
||||
<th colspan="4">
|
||||
<div class="pid_mode">
|
||||
<div style="width: 25%; float: left; text-align: left;">
|
||||
<div i18n="pidTuningLevel" style="float:left;"></div>
|
||||
<div class="helpicon cf_tip">
|
||||
<div class="cf_tooltiptext" i18n="pidTuningLevelHelp" style="display: none;"></div>
|
||||
<div class="pid_mode borderleft">
|
||||
<div class="textleft">
|
||||
<div class="pidTuningLevel" i18n="pidTuningLevel"></div>
|
||||
<div class="helpicon cf_tip" i18n_title="pidTuningLevelHelp"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:25%; float:left;" i18n="pidTuningLevelP"></div>
|
||||
<div style="width:25%; float:left;" i18n="pidTuningLevelI"></div>
|
||||
<div style="width:25%; float:left;" i18n="pidTuningLevelD"></div>
|
||||
<div class="pids" i18n="pidTuningLevelP"></div>
|
||||
<div class="pids" i18n="pidTuningLevelI"></div>
|
||||
<div class="pids" i18n="pidTuningLevelD"></div>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
|
@ -163,7 +167,7 @@
|
|||
<tr>
|
||||
<td class="roll-pitch"><input type="number" name="roll-pitch" step="0.01" min="0"
|
||||
max="1.00" /></td>
|
||||
<td class="roll" style="border-bottom-left-radius: 3px;"><input type="number"
|
||||
<td class="roll"><input type="number"
|
||||
name="roll" step="0.01" min="0" max="1.00" /></td>
|
||||
<td class="pitch"><input type="number" name="pitch" step="0.01" min="0" max="1.00" /></td>
|
||||
<td><input type="number" name="yaw" step="0.01" min="0" max="2.55" /></td>
|
||||
|
@ -174,13 +178,12 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th i18n="pidTuningTPA"></th>
|
||||
<th class="tpa-breakpoint" i18n="pidTuningTPABreakPoint"
|
||||
style="border-top-left-radius: 0px;"></th>
|
||||
<th class="tpa-breakpoint" i18n="pidTuningTPABreakPoint"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding-left: 0px;"><input type="number" name="tpa" step="0.01" min="0"
|
||||
<td class="leftzero"><input type="number" name="tpa" step="0.01" min="0"
|
||||
max="1.00" /></td>
|
||||
<td class="tpa-breakpoint"><input type="number" name="tpa-breakpoint" step="10"
|
||||
min="1000" max="2000" /></td>
|
||||
|
|
|
@ -276,6 +276,11 @@ TABS.pid_tuning.initialize = function (callback) {
|
|||
}
|
||||
});
|
||||
|
||||
$('#resetPIDs').on('click', function(){
|
||||
MSP.send_message(MSP_codes.MSP_SET_RESET_CURR_PID, false, false, false);
|
||||
updateActivatedTab();
|
||||
});
|
||||
|
||||
$('.pid_tuning tr').each(function(){
|
||||
for(i = 0; i < PID_names.length; i++) {
|
||||
if($(this).hasClass(PID_names[i])) {
|
||||
|
|
|
@ -24,10 +24,7 @@
|
|||
|
||||
.tab-ports table td {
|
||||
border-bottom: 1px solid #e4e4e4;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 7px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding: 6px 5px 7px 5px;
|
||||
border-left: 1px solid #e4e4e4;
|
||||
border-right: 1px solid #e4e4e4;
|
||||
}
|
||||
|
@ -56,6 +53,7 @@
|
|||
|
||||
.tab-ports select {
|
||||
border: 1px solid silver;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.tab-ports .require-support {
|
||||
|
@ -92,6 +90,10 @@
|
|||
border-right: 0px;
|
||||
}
|
||||
|
||||
.tab-ports .spacebottom {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
|
||||
.tab-ports table thead tr:first-child {
|
||||
font-size: 12px;
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
<a id="button-documentation" href="https://github.com/cleanflight/cleanflight/releases" target="_blank"></a>
|
||||
</div>
|
||||
<div class="require-support">
|
||||
<div class="note" style="margin-bottom: 20px;">
|
||||
<div class="note spacebottom">
|
||||
<div class="note_spacer">
|
||||
<p i18n="portsHelp"></p>
|
||||
<p i18n="portsMSPHelp"></p>
|
||||
</div>
|
||||
</div>
|
||||
<table class="ports" style="margin-bottom: 20px;">
|
||||
<table class="ports spacebottom">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Identifier</td>
|
||||
|
|
|
@ -219,16 +219,24 @@
|
|||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
.tab-receiver .rssi_channel_wrapper {
|
||||
float: right;
|
||||
margin: 0px 0px 10px 0;
|
||||
margin: 0px 0px 20px 0;
|
||||
border-left: 0;
|
||||
width: 30%;
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
background-color: #DEDEDE;
|
||||
}
|
||||
|
||||
.tab-receiver .rssi_channel_wrapper select {
|
||||
height: 22px;
|
||||
padding-left: 5px;
|
||||
border: 1px solid silver;
|
||||
margin: 4px;
|
||||
width: calc(100% - 8px);
|
||||
}
|
||||
.tab-receiver .rssi_channel_wrapper .head {
|
||||
height: 15px;
|
||||
padding: 4px;
|
||||
|
@ -251,10 +259,10 @@
|
|||
.tab-receiver .rcmap_wrapper {
|
||||
float: right;
|
||||
position: relative;
|
||||
margin: 0px 0px 10px 0;
|
||||
margin: 0px 0px 20px 0;
|
||||
width: calc(70% - 0px);
|
||||
border-top-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
background-color: #DEDEDE;
|
||||
}
|
||||
|
||||
|
@ -270,10 +278,6 @@
|
|||
border-right: 1px solid silver;
|
||||
}
|
||||
|
||||
.tab-receiver .rcmap_wrapper .head span {
|
||||
|
||||
}
|
||||
|
||||
.tab-receiver .hybrid_element {
|
||||
border-right: 1px solid silver;
|
||||
}
|
||||
|
@ -292,7 +296,6 @@
|
|||
}
|
||||
|
||||
.tab-receiver .hybrid_element select {
|
||||
width: 100%;
|
||||
height: 22px;
|
||||
z-index: 1;
|
||||
border: 1px solid silver;
|
||||
|
|
|
@ -21,7 +21,8 @@
|
|||
<span i18n="receiverChannelMap" i18n_title="receiverChannelMapTitle"></span>
|
||||
</div>
|
||||
<div class="hybrid_element">
|
||||
<input type="text" name="rcmap" spellcheck="false" /> <select class="hybrid_helper"
|
||||
<input type="text" name="rcmap" spellcheck="false" />
|
||||
<select class="hybrid_helper"
|
||||
name="rcmap_helper">
|
||||
<option value="AETR1234">Default</option>
|
||||
<option value="AETR1234">Futaba / Hitec</option>
|
||||
|
@ -49,6 +50,24 @@
|
|||
<td><input type="number" name="expo" step="0.01" min="0" max="1" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="deadband">
|
||||
<tr>
|
||||
<th i18n="receiverDeadband"></th>
|
||||
<th i18n="receiverYawDeadband"></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="cf_tip" i18n_title="receiverHelpDeadband">
|
||||
<input type="number" name="deadband" step="1" min="0" max="32" />
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="cf_tip" i18n_title="receiverHelpYawDeadband">
|
||||
<input type="number" name="yaw_deadband" step="1" min="0" max="100" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -26,7 +26,16 @@ TABS.receiver.initialize = function (callback) {
|
|||
|
||||
// Fetch features so we can check if RX_MSP is enabled:
|
||||
function load_config() {
|
||||
MSP.send_message(MSP_codes.MSP_BF_CONFIG, false, false, load_html);
|
||||
MSP.send_message(MSP_codes.MSP_BF_CONFIG, false, false, load_rc_configs);
|
||||
}
|
||||
|
||||
function load_rc_configs() {
|
||||
var next_callback = load_html;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_RC_DEADBAND, false, false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function load_html() {
|
||||
|
@ -59,6 +68,13 @@ TABS.receiver.initialize = function (callback) {
|
|||
}
|
||||
});
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.15.0")) {
|
||||
$('.deadband').hide();
|
||||
} else {
|
||||
$('.deadband input[name="yaw_deadband"]').val(RC_deadband.yaw_deadband);
|
||||
$('.deadband input[name="deadband"]').val(RC_deadband.deadband);
|
||||
}
|
||||
|
||||
// generate bars
|
||||
var bar_names = [
|
||||
chrome.i18n.getMessage('controlAxisRoll'),
|
||||
|
@ -292,6 +308,11 @@ TABS.receiver.initialize = function (callback) {
|
|||
RC_tuning.RC_EXPO = parseFloat($('.tunings .rate input[name="expo"]').val());
|
||||
RC_tuning.RC_YAW_EXPO = parseFloat($('.tunings .yaw_rate input[name="yaw_expo"]').val());
|
||||
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
RC_deadband.yaw_deadband = parseInt($('.deadband input[name="yaw_deadband"]').val());
|
||||
RC_deadband.deadband = parseInt($('.deadband input[name="deadband"]').val());
|
||||
}
|
||||
|
||||
// catch rc map
|
||||
var RC_MAP_Letters = ['A', 'E', 'R', 'T', '1', '2', '3', '4'];
|
||||
var strBuffer = $('input[name="rcmap"]').val().split('');
|
||||
|
@ -308,7 +329,16 @@ TABS.receiver.initialize = function (callback) {
|
|||
}
|
||||
|
||||
function save_misc() {
|
||||
MSP.send_message(MSP_codes.MSP_SET_MISC, MSP.crunch(MSP_codes.MSP_SET_MISC), false, save_to_eeprom);
|
||||
MSP.send_message(MSP_codes.MSP_SET_MISC, MSP.crunch(MSP_codes.MSP_SET_MISC), false, save_rc_configs);
|
||||
}
|
||||
|
||||
function save_rc_configs() {
|
||||
var next_callback = save_to_eeprom;
|
||||
if (semver.gte(CONFIG.apiVersion, "1.15.0")) {
|
||||
MSP.send_message(MSP_codes.MSP_SET_RC_DEADBAND, MSP.crunch(MSP_codes.MSP_SET_RC_DEADBAND), false, next_callback);
|
||||
} else {
|
||||
next_callback();
|
||||
}
|
||||
}
|
||||
|
||||
function save_to_eeprom() {
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.tab-sensors {
|
||||
|
||||
}
|
||||
|
||||
.tab-sensors .info {
|
||||
margin-bottom: 10px;
|
||||
margin-top: 8px;
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.tab-servos {
|
||||
|
||||
}
|
||||
|
||||
.tab-servos .title {
|
||||
margin-top: 0px;
|
||||
line-height: 30px;
|
||||
|
@ -31,7 +27,7 @@
|
|||
border: 0;
|
||||
}
|
||||
|
||||
.tab-servos table.directions td.direction select {
|
||||
.tab-servos .directions .direction select {
|
||||
height: 19px;
|
||||
line-height: 19px;
|
||||
}
|
||||
|
@ -45,10 +41,7 @@
|
|||
|
||||
.tab-servos table td {
|
||||
border-bottom: 1px solid #e4e4e4;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 7px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding: 6px 5px 7px 5px;
|
||||
border-left: 1px solid #e4e4e4;
|
||||
border-right: 1px solid #e4e4e4;
|
||||
}
|
||||
|
@ -113,10 +106,6 @@
|
|||
text-align: right;
|
||||
}
|
||||
|
||||
.tab-servos table .direction {
|
||||
|
||||
}
|
||||
|
||||
.tab-servos .direction .name {
|
||||
float: left;
|
||||
display: block;
|
||||
|
@ -184,3 +173,11 @@
|
|||
.tab-servos .live span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.tab-servos .wide {
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.tab-servos .short {
|
||||
width: 40px;
|
||||
}
|
|
@ -12,12 +12,12 @@
|
|||
<th i18n="servosMid"></th>
|
||||
<th i18n="servosMin"></th>
|
||||
<th i18n="servosMax"></th>
|
||||
<th style="width: 120px" i18n="servosAngleAtMin"></th>
|
||||
<th style="width: 120px" i18n="servosAngleAtMax"></th>
|
||||
<th style="width: 40px">CH1</th>
|
||||
<th style="width: 40px">CH2</th>
|
||||
<th style="width: 40px">CH3</th>
|
||||
<th style="width: 40px">CH4</th>
|
||||
<th class="wide" i18n="servosAngleAtMin"></th>
|
||||
<th class="wide" i18n="servosAngleAtMax"></th>
|
||||
<th class="short">CH1</th>
|
||||
<th class="short">CH2</th>
|
||||
<th class="short">CH3</th>
|
||||
<th class="short">CH4</th>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="live">
|
||||
|
|
|
@ -43,7 +43,7 @@ TABS.servos.initialize = function (callback) {
|
|||
|
||||
function update_ui() {
|
||||
|
||||
if (semver.lt(CONFIG.apiVersion, "1.12.0")) {
|
||||
if (semver.lt(CONFIG.apiVersion, "1.12.0") || SERVO_CONFIG.length == 0) {
|
||||
|
||||
$(".tab-servos").removeClass("supported");
|
||||
return;
|
||||
|
|
|
@ -45,10 +45,8 @@
|
|||
display: block;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
z-index: 10;
|
||||
border-radius: 3px;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
padding: 0 15px 0 15px;
|
||||
|
@ -56,7 +54,6 @@
|
|||
font-weight: bold;
|
||||
border: 1px solid silver;
|
||||
background-color: #ececec;
|
||||
border-radius: 3px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
@ -160,6 +157,40 @@
|
|||
padding-top: 7px;
|
||||
}
|
||||
|
||||
.tab_setup .content_wrapper {
|
||||
position: initial;
|
||||
}
|
||||
|
||||
.spacerbottom {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.initialstyle {
|
||||
position: initial;
|
||||
}
|
||||
|
||||
.buttonarea {
|
||||
min-height: 100px;
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.halfbuttons {
|
||||
width: calc(100% - 10px);
|
||||
}
|
||||
|
||||
.setupinfo {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.modelwrapper {
|
||||
clear: both;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.instrumentsbox {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
|
||||
.block.instrument .attitude {
|
||||
width: 50px !important;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<div class="tab-setup">
|
||||
<div class="content_wrapper" style="position: initial;">
|
||||
<div class="content_wrapper initialstyle">
|
||||
<!-- should be the first DIV on each tab -->
|
||||
<div class="cf_column full" style="margin-bottom: 10px;">
|
||||
<div class="cf_column full spacerbottom">
|
||||
<div class="tab_title" i18n="tabSetup">Setup</div>
|
||||
<div class="cf_doc_version_bt">
|
||||
<a id="button-documentation" href="" target="_blank"></a>
|
||||
</div>
|
||||
<div class="cf_column fourth" style="min-height: 100px; width: 20%;">
|
||||
<div class="cf_column fourth buttonarea">
|
||||
<div class="spacer_right">
|
||||
<div class="default_btn">
|
||||
<a class="calibrateAccel" id="default_btn green" href="#"
|
||||
|
@ -19,7 +19,7 @@
|
|||
<a class="resetSettings" href="#" i18n="initialSetupButtonReset"></a>
|
||||
</div>
|
||||
<div class="half">
|
||||
<div class="spacer_right" style="width: calc(100% - 10px);">
|
||||
<div class="spacer_right halfbuttons">
|
||||
<div class="default_btn half">
|
||||
<a class="backup" href="#" i18n="initialSetupButtonBackup"></a>
|
||||
</div>
|
||||
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="threefourth_right" style="width: 80%;">
|
||||
<div class="threefourth_right setupinfo">
|
||||
<div class="cell_setup">
|
||||
<span i18n="initialSetupCalibrateAccelText"></span>
|
||||
</div>
|
||||
|
@ -47,7 +47,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear: both; margin-bottom: 5px;"></div>
|
||||
<div class="modelwrapper"></div>
|
||||
<div class="cf_column threefourth_left">
|
||||
<div class="spacer_right">
|
||||
<div class="model-and-info">
|
||||
|
@ -130,7 +130,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="spacer_left">
|
||||
<div class="gui_box grey" align="center" style="margin-bottom: 0px;">
|
||||
<div class="gui_box grey instrumentsbox" align="center">
|
||||
<div class="gui_box_titlebar" align="left">
|
||||
<div class="spacer_box_title" i18n="initialSetupInstrumentsHead"></div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue