diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 62767eca..57033e3a 100755
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -249,14 +249,42 @@
"message": "Documentation / Manual"
},
"defaultDocumentation": {
- "message": "Cleanflight documentation is available in Markdown and PDF formats.
The PDF manual appropriate to the firmware can be downloaded from the github releases page, here.
The Markdown latest online documentation is available here - you can switch to the appropriate version of the documentation by selecting the tag."
+ "message": "Cleanflight documentation is available in Markdown and PDF formats.
"
+ },
+ "defaultDocumentation1": {
+ "message": "The PDF manual appropriate to the firmware can be downloaded from the github releases page, here."
+ },
+ "defaultDocumentation2": {
+ "message": "The Markdown latest online documentation is available here - you can switch to the appropriate version of the documentation by selecting the tag."
},
"defaultSupportHead": {
"message": "Support"
},
- "defaultSupport": {
- "message": "For support please search the forums first or contact your vendor.
RC Groups thread is here. MultiWii forums thread is here.
Developers and users hang out in IRC channel on freenode
irc://irc.freenode.net/#cleanflight or Join via web client."
+ "defaultSupportSubline1": {
+ "message": "Support Scources"
},
+ "defaultSupportSubline2": {
+ "message": "Developer"
+ },
+ "defaultSupport": {
+ "message": "For support please search the forums first or contact your vendor.
"
+ },
+ "defaultSupport1": {
+ "message": "RC Groups thread"
+ },
+ "defaultSupport2": {
+ "message": "MultiWii forums thread"
+ },
+ "defaultSupport3": {
+ "message": "GitHub"
+ },
+ "defaultSupport4": {
+ "message": "IRC channel on freenode"
+ },
+ "defaultSupport5": {
+ "message": "Join via WebClient"
+ },
+
"initialSetupBackupAndRestoreApiVersion": {
"message": "Backup and restore functionality disabled. You have firmware with API version $1, backup and restore requires $2. Please backup your settings via the CLI, see Cleanflight documentation for procedure."
},
@@ -414,8 +442,6 @@
"configurationFeatureDescription": {
"message": "Description"
},
-
-
"configurationMixer": {
"message": "Mixer"
},
@@ -428,17 +454,18 @@
"configurationRSSI": {
"message": "RSSI (Signal Strength)"
},
+ "configurationRSSIHelp": {
+ "message": "RSSI is a measurement of signal strength and is very handy so you know when your aircraft is going out of range or if it is suffering RF interference."
+ },
"configurationEscFeatures": {
"message": "ESC/Motor Features"
},
"configurationFeaturesHelp": {
"message": "Note: Not all combinations of features are valid. When the flight controller firmware detects invalid feature combinations conflicting features will be disabled.
Note: Configure serial ports before enabling the features that will use the ports."
},
-
"configurationSerialRXHelp": {
"message": "Note: Remember to configure a Serial Port (via Ports tab) and choose a Serial Receiver Provider when using RX_SERIAL feature."
},
-
"configurationBoardAlignment": {
"message": "Board Alignment"
},
@@ -468,7 +495,7 @@
},
"configurationDisarmKillSwitch": {
"message": "Disarm motors regardless of throttle value (When arming via AUX channel)"
- },
+ },
"configurationThrottleMinimum": {
"message": "Minimum Throttle"
},
@@ -508,7 +535,7 @@
"configurationBatteryMultiwiiCurrent": {
"message": "Enable support for legacy Multiwii MSP current output"
},
- "configuration3d": {
+ "configuration3d": {
"message": "3D"
},
"configuration3dDeadbandLow": {
@@ -550,7 +577,6 @@
"configurationGPSHelp": {
"message": "Note: Remember to configure a Serial Port (via Ports tab) when using GPS feature."
},
-
"configurationSerialRX": {
"message": "Serial Receiver Provider"
},
@@ -846,7 +872,6 @@
"servosFirmwareUpgradeRequired": {
"message": "Servos requires firmware >= 1.10.0."
},
-
"servosChangeDirection": {
"message": "Change Direction in TX To Match"
},
@@ -890,6 +915,15 @@
"gpsHead": {
"message": "GPS"
},
+ "gpsMapHead": {
+ "message": "Current GPS location"
+ },
+ "gpsMapMessage1": {
+ "message": "Please check your internet connection"
+ },
+ "gpsMapMessage2": {
+ "message": "Waiting for GPS 3D fix…"
+ },
"gps3dFix": {
"message": "3D Fix:"
},
@@ -1030,6 +1064,7 @@
"dataflashFileWriteFailed": {
"message": "Failed to write to the file you selected, are the permissions on that folder okay?"
},
+
"firmwareFlasherReleaseSummaryHead": {
"message": "Release info"
},
@@ -1113,10 +1148,10 @@
"message": "Manual selection of baud rate for boards that don't support the default speed or for flashing via bluetooth."
},
"firmwareFlasherShowDevelopmentReleases":{
- "message": "Show unstable releases"
+ "message": "Show unstable releases"
},
"firmwareFlasherShowDevelopmentReleasesDescription":{
- "message": "Show Release-Candidates and Development Releases."
+ "message": "Show Release-Candidates and Development Releases."
},
"firmwareFlasherOptionLabelSelectFirmware": {
"message": "Choose a Firmware / Board"
@@ -1185,6 +1220,7 @@
"ledStripEepromSaved": {
"message": "EEPROM saved"
},
+
"controlAxisRoll": {
"message": "Roll"
},
@@ -1245,6 +1281,7 @@
"controlAxisAux16": {
"message": "AUX 16"
},
+
"pidTuningBasic": {
"message": "Basic/Acro"
},
@@ -1268,13 +1305,11 @@
},
"pidTuningLevelD": {
"message": "Transition (Horizon)"
- },
- "pidHelp1": {
+ },
+ "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."
},
- "configHelp1": {
- "message": "RSSI is a measurement of signal strength and is very handy so you know when your aircraft is going out of range or if it is suffering RF interference."
- },
+
"failsafeFeaturesHelpOld": {
"message": "Failsafe configuration has changed considerably. Use Cleanflight v1.12.0+ to enable the improved configuration panel."
},
@@ -1297,60 +1332,60 @@
"message": "Pulses shorter then minimum or longer then maximum are invalid and will trigger application of individual channel fallback settings for AUX channels or entering stage 1 for flightchannels"
},
"failsafeRxMinUsecItem": {
- "message": "Minimum length"
+ "message": "Minimum length"
},
"failsafeRxMaxUsecItem": {
- "message": "Maximum length"
+ "message": "Maximum length"
},
"failsafeChannelFallbackSettingsTitle": {
- "message": "Channel Fallback Settings"
+ "message": "Channel Fallback Settings"
},
"failsafeChannelFallbackSettingsHelp": {
- "message": "These settings are applied to invalid individual AUX channels or to all channels when entering stage 1. Note: values are saved in steps of 25usec, so small changes disappear"
+ "message": "These settings are applied to invalid individual AUX channels or to all channels when entering stage 1. Note: values are saved in steps of 25usec, so small changes disappear"
},
"failsafeStageTwoSettingsTitle": {
- "message": "Stage 2 - Settings"
+ "message": "Stage 2 - Settings"
},
"failsafeFeatureItem": {
- "message": "Failsafe Stage 2 enabled"
+ "message": "Failsafe Stage 2 enabled"
},
"failsafeFeatureHelp": {
- "message": "Note: When Stage 2 is DISABLED, the fallback setting Auto is used instead of the user settings for all flightchannels (Roll, Pitch, Yaw and Throttle)."
+ "message": "Note: When Stage 2 is DISABLED, the fallback setting Auto is used instead of the user settings for all flightchannels (Roll, Pitch, Yaw and Throttle)."
},
"failsafeDelayItem": {
- "message": "Guard time for stage 2 activation after signal lost [1 = 0.1 sec.]"
+ "message": "Guard time for stage 2 activation after signal lost [1 = 0.1 sec.]"
},
"failsafeDelayHelp": {
- "message": "Time for stage 1 to wait for recovery"
+ "message": "Time for stage 1 to wait for recovery"
},
"failsafeThrottleLowItem": {
- "message": "Failsafe Throttle Low Delay [1 = 0.1 sec.]"
+ "message": "Failsafe Throttle Low Delay [1 = 0.1 sec.]"
},
"failsafeThrottleLowHelp": {
- "message": "Just disarm the craft instead of executing the selected failsafe procedure when the throttle was low for this amount of time"
+ "message": "Just disarm the craft instead of executing the selected failsafe procedure when the throttle was low for this amount of time"
},
"failsafeThrottleItem": {
"message": "Throttle value used while landing"
},
"failsafeOffDelayItem": {
- "message": "Delay for turning off the Motors during Failsafe [1 = 0.1 sec.]"
+ "message": "Delay for turning off the Motors during Failsafe [1 = 0.1 sec.]"
},
"failsafeOffDelayHelp": {
- "message": "Time to stay in landing mode untill the motors are turned off and the craft is disarmed"
+ "message": "Time to stay in landing mode untill the motors are turned off and the craft is disarmed"
},
"failsafeSubTitle1": {
- "message": "Stage 2 - Failsafe Procedure"
+ "message": "Stage 2 - Failsafe Procedure"
},
"failsafeProcedureItemSelect1": {
- "message": "Land"
+ "message": "Land"
},
"failsafeProcedureItemSelect2": {
- "message": "Drop"
+ "message": "Drop"
},
"failsafeKillSwitchItem": {
- "message": "Failsafe Kill Switch (setup Failsafe in Modes Tab)"
+ "message": "Failsafe Kill Switch (setup Failsafe in Modes Tab)"
},
"failsafeKillSwitchHelp": {
- "message": "Set this option to make the failsafe switch, configured in the modes tab, act as a direct kill switch, bypassing the selected failsafe procedure. Note: Arming is blocked with the failsafe kill switch in the ON position"
+ "message": "Set this option to make the failsafe switch, configured in the modes tab, act as a direct kill switch, bypassing the selected failsafe procedure. Note: Arming is blocked with the failsafe kill switch in the ON position"
}
}
diff --git a/images/icons/cf_icon_position.png b/images/icons/cf_icon_position.png
new file mode 100644
index 00000000..48f8c9da
Binary files /dev/null and b/images/icons/cf_icon_position.png differ
diff --git a/js/msp.js b/js/msp.js
index bbe56949..6b662d7b 100644
--- a/js/msp.js
+++ b/js/msp.js
@@ -233,6 +233,7 @@ var MSP = {
CONFIG.activeSensors = data.getUint16(4, 1);
CONFIG.mode = data.getUint32(6, 1);
CONFIG.profile = data.getUint8(10);
+ $('select[name="profilechange"]').val(CONFIG.profile);
sensor_status(CONFIG.activeSensors);
$('span.i2c-error').text(CONFIG.i2cError);
@@ -879,6 +880,7 @@ var MSP = {
DATAFLASH.totalSize = 0;
DATAFLASH.usedSize = 0;
}
+ update_dataflash_global();
break;
case MSP_codes.MSP_DATAFLASH_READ:
// No-op, let callback handle it
diff --git a/js/serial_backend.js b/js/serial_backend.js
index 57a02655..44d960eb 100755
--- a/js/serial_backend.js
+++ b/js/serial_backend.js
@@ -250,13 +250,21 @@ function onConnect() {
$('div#connectbutton a.connect_state').text(chrome.i18n.getMessage('disconnect')).addClass('active');
$('div#connectbutton a.connect').addClass('active');
$('#tabs ul.mode-disconnected').hide();
- $('#tabs ul.mode-connected').show();
-
+ $('#tabs ul.mode-connected').show();
+
+ MSP.send_message(MSP_codes.MSP_STATUS, false, false);
+
+ MSP.send_message(MSP_codes.MSP_DATAFLASH_SUMMARY, false, false);
+
var sensor_state = $('#sensor-status');
sensor_state.show();
-
+
var port_picker = $('#portsinput');
port_picker.hide();
+
+ var dataflash = $('#dataflash_wrapper_global');
+ dataflash.show();
+
}
function onClosed(result) {
@@ -269,12 +277,15 @@ function onClosed(result) {
$('#tabs ul.mode-connected').hide();
$('#tabs ul.mode-disconnected').show();
- var port_picker = $('#portsinput');
- port_picker.show();
-
var sensor_state = $('#sensor-status');
sensor_state.hide();
-
+
+ var port_picker = $('#portsinput');
+ port_picker.show();
+
+ var dataflash = $('#dataflash_wrapper_global');
+ dataflash.hide();
+
}
function read_serial(info) {
@@ -374,7 +385,34 @@ function highByte(num) {
function lowByte(num) {
return 0x00FF & num;
-}
+}function update_dataflash_global() {
+ var supportsDataflash = DATAFLASH.totalSize > 0;
+ if (supportsDataflash){
+
+ $(".noflash_global").css({
+ display: 'none'
+ });
+
+ $(".dataflash-contents_global").css({
+ display: 'block'
+ });
+
+ $(".dataflash-free_global").css({
+ width: (100-(DATAFLASH.totalSize - DATAFLASH.usedSize) / DATAFLASH.totalSize * 100) + "%",
+ display: 'block'
+ });
+ $(".dataflash-free_global div").text('Dataflash: free ' + formatFilesize(DATAFLASH.totalSize - DATAFLASH.usedSize));
+ } else {
+ $(".noflash_global").css({
+ display: 'block'
+ });
+
+ $(".dataflash-contents_global").css({
+ display: 'none'
+ });
+ }
+
+ }
function specificByte(num, pos) {
return 0x000000FF & (num >> (8 * pos));
@@ -392,3 +430,45 @@ function bit_clear(num, bit) {
return num & ~(1 << bit);
}
+function update_dataflash_global() {
+ function formatFilesize(bytes) {
+ if (bytes < 1024) {
+ return bytes + "B";
+ }
+ var kilobytes = bytes / 1024;
+
+ if (kilobytes < 1024) {
+ return Math.round(kilobytes) + "kB";
+ }
+
+ var megabytes = kilobytes / 1024;
+
+ return megabytes.toFixed(1) + "MB";
+ }
+
+ var supportsDataflash = DATAFLASH.totalSize > 0;
+
+ if (supportsDataflash){
+ $(".noflash_global").css({
+ display: 'none'
+ });
+
+ $(".dataflash-contents_global").css({
+ display: 'block'
+ });
+
+ $(".dataflash-free_global").css({
+ width: (100-(DATAFLASH.totalSize - DATAFLASH.usedSize) / DATAFLASH.totalSize * 100) + "%",
+ display: 'block'
+ });
+ $(".dataflash-free_global div").text('Dataflash: free ' + formatFilesize(DATAFLASH.totalSize - DATAFLASH.usedSize));
+ } else {
+ $(".noflash_global").css({
+ display: 'block'
+ });
+
+ $(".dataflash-contents_global").css({
+ display: 'none'
+ });
+ }
+}
diff --git a/main.css b/main.css
index a6280308..6cf8becb 100644
--- a/main.css
+++ b/main.css
@@ -489,12 +489,16 @@ input[type="number"]::-webkit-inner-spin-button {
width: 200px;
border-right: 4px solid #59aa29;
background-color: #2e2e2e;
+ transition: all 0.2s;
+
}
.tab_container.logopen {
height: calc(100% - 235px);
overflow-x: hidden;
overflow-y: auto;
+ transition: all 0.5s;
+
}
@@ -1159,6 +1163,7 @@ dialog {
line-height: 13px;
display: block;
transition: all ease 0.2s;
+ text-decoration:none;
}
.default_btn a:hover {
@@ -1166,6 +1171,8 @@ dialog {
color: #fff;
text-shadow: 0px 1px rgba(0, 0, 0, 0.25);
transition: all ease 0.2s;
+ text-decoration:none;
+
}
.default_btn a:active {
@@ -1366,7 +1373,8 @@ dialog {
border-radius: 3px;
color: #fff;
font-size: 10px;
- }
+}
+
.fixfalse {
background-color: #e60000;
@@ -1377,19 +1385,111 @@ dialog {
color: #fff;
font-size: 10px;
}
+/* Dataflash element styling*/
+
+#dataflash_wrapper_global {
+ color:white;
+ font-size:10px;
+ margin-top: 20px;
+ width:125px;
+ float: right;
+ margin-right: 20px;
+ line-height: 12px;
+ height: 33px;
+ border-radius: 5px;
+ border: 1px solid #272727;
+ box-shadow: 0px 1px 0px rgba(92, 92, 92, 0.5);
+ background-color: #434343;
+ background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.55));
+ padding-top:5px;
+ display:none;
+ text-shadow: 0px 1px rgba(0, 0, 0, 1.0);
+
+}
+
+#profile_change {
+ color:white;
+ margin-top: 16px;
+ width:125px;
+ float: right;
+ margin-right: 0px;
+ line-height: 12px;
+}
+
+.dataflash-contents_global {
+ margin-top: 18px;
+ border: 1px solid #4A4A4A;
+ background-color: #4A4A4A;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ border-radius: 3px;
+ margin-left: 5px;
+ margin-right: 5px;
+}
+
+
+.dataflash-free_global {
+ background-color: #59AA29;
+ border-radius: 4px;
+}
+
+
+.dataflash-contents_global .notsupported_global {
+ display: none;
+}
+
+.dataflash-contents_global li {
+ height: 5px;
+ position: relative;
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.20);
+ border-radius: 2px;
+
+}
+
+.dataflash-contents_global li div {
+ position: absolute;
+ top: -18px;
+ margin-top: 0px;
+ text-align: center;
+ left: 0;
+ right: 0;
+ width:120px;
+ text-align:left;
+ color:silver;
+}
+
+.dataflash-contents_global progress::-webkit-progress-bar {
+ height: 8px;
+ background-color: #eee;
+}
+
+.dataflash-contents progress::-webkit-progress-value {
+ background-color: #bcf;
+}
+
+.noflash_global {
+ display:none;
+ color: #868686;
+ text-align: center;
+ text-shadow: 0px 1px rgba(0, 0, 0, 1.0);
+ margin-top:2px;
+}
+
+
@media only screen and (max-width: 1055px) , only screen and (max-device-width: 1055px) {
.content_wrapper {
padding: 15px;
- /*width:calc(100% - 30px);*/
- }
+}
.tab_title {
font-size: 16px;
line-height: 18px;
font-family: 'open_sanslight', Arial;
margin-bottom: 10px;
height: 22px;
- }
+}
.cf_doc_version_bt a {
padding: 1px 5px 1px 5px;
margin-top: -35px;
diff --git a/main.html b/main.html
index 3ace3e17..5d9b9c19 100755
--- a/main.html
+++ b/main.html
@@ -128,6 +128,25 @@