diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index ce0845421..76e1480e2 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,144 @@
+--- RELEASE-14.10 ---
+This release mainly focuses on flight performance, especially aimed at mini multirotors and adds support for the OpenPilot Platinum GPS (V9).
+This version supports the CopterControl, CC3D, Atom and the Revolution Flight controllers as well as the OPLink Modems.
+
+Some key addition in this release:
+- A brand new Acro+ flight mode, a Rate mode "on steroids";
+- Support for latest OpenPilot Platinum GPS (V9) and its integrated magnetometer;
+- Throttle PID Scaling: automatically scale PIDs based on throttle;
+- On board Expo support;
+- Several additions to the Setup Wizard such as Fixed wing support, GPS selection, TriCopter servo speed selection and ESC calibration;
+- First implementation of Cloud config;
+- Redesigned PFD artwork and addition of multifunctional slide out panels;
+- Support for additional Flexi-IO serial port for Revolution;
+- External (ws281x compatible) status LED support;
+- Several OPLink reliability improvements;
+- Considerable flight performance improvements
+
+The full list of features, improvements and bugfixes in this release is accessible here:
+
+http://progress.openpilot.org/issues/?filter=11860
+
+NOTE: If you were using OPLink at power levels lower than 100mW, please redo a range test after upgrading to 14.10.
+
+** Improvement
+ * [OP-838] - Adding servo update rate to vehicle setup wizard for tricopters.
+ * [OP-1088] - Redesign the OPLink GUI in the GCS
+ * [OP-1134] - Custom vehicle should show settings from last mixer preset
+ * [OP-1156] - Unify path followers into a single module with submodules
+ * [OP-1317] - Improvement of IMU wind estimation
+ * [OP-1319] - Fix minor spelling mistakes in fw code
+ * [OP-1324] - Fix build when python isn't python2
+ * [OP-1338] - copydata.pro uses specific icu so version when it doesn't need to?
+ * [OP-1370] - Add optional UBX GPS self configuration
+ * [OP-1379] - Create a notification module that allows for some Naza like led signalling and more
+ * [OP-1395] - Several enhancements/fixes to flight side log
+ * [OP-1397] - Add Responsiveness to TxPID
+ * [OP-1404] - Add support for UBlox PVT sentence
+ * [OP-1405] - Add support for 25qXXX series of flash memories
+ * [OP-1406] - Add support for an aux magnetometer
+ * [OP-1423] - Populate TxPID Min/Max fields with the current values from the Stabilization page
+ * [OP-1429] - Optimize GPSSatellites UAVO
+ * [OP-1438] - Change VSI to Arc on the PFD
+ * [OP-1440] - Timing on WS2812 to support all models
+ * [OP-1447] - Make it easier to adjust the slider on the Output Calibration Setup Wizard page
+ * [OP-1451] - Change udev rules from using plugdev group to uaccess/udev-acl
+ * [OP-1452] - Usability fixes to ComUsbBridge
+ * [OP-1453] - Check if new version of OP Software suite is available, notify if so
+ * [OP-1457] - Hide feed forward tab when in config plugin for Fixed wings
+ * [OP-1458] - Remove delays and other quirks from TX Wizard
+ * [OP-1462] - Find better default EKF settings
+ * [OP-1465] - update stm32flash to support new targets
+ * [OP-1472] - Make connection diagram button more visible
+ * [OP-1474] - Scaling back PIDs at high / full throttle with Multis.
+ * [OP-1482] - TPS graph needs labels, also scale should not be -100% to +100%, suggest 50% as max
+ * [OP-1489] - Hide ILimit stuff
+ * [OP-1491] - Create H Quad type in artwork and add to wizard
+ * [OP-1493] - Make the discoveryf4bare target more usable from GCS
+ * [OP-1504] - Add a SystemSetting field to be used to name the vehicle.
+ * [OP-1507] - Optimize GPS module cpu utilization
+ * [OP-1508] - SBus Connection Diagram - Vehicle Setup Wizard
+ * [OP-1512] - Add ESC calibration to wizard
+ * [OP-1515] - Gyro Fifo handling for CC3D
+ * [OP-1516] - Create Acro+
+ * [OP-1520] - Remove "Attitude" as a selection for Yaw (safety Issue)
+ * [OP-1521] - Responsiveness scale
+ * [OP-1524] - Render chars/strings in the Uavobrowser
+ * [OP-1528] - Enable Telemetry on Flexi-IO (receiver) port on Revo platform
+ * [OP-1534] - Add expo and acro insanity factor to TxPID
+ * [OP-1535] - MPU handling optimization
+ * [OP-1538] - UAVO Browser - embedded descriptions
+ * [OP-1545] - Added GUI to visualize the ESC calibration output level during calibration
+ * [OP-1548] - Change Fusion algorithm names to make clear their usage
+ * [OP-1552] - Changed text of menu for input setup wizard for clarity
+
+
+** New Feature
+ * [OP-1222] - Add support for Fixed Wing configuration in Vehicle Setup Wizard
+ * [OP-1275] - Create a PiOS F0 target
+ * [OP-1403] - Add generic I2C/SPI HMC5x83 mag driver
+ * [OP-1434] - Support for GPSV9
+ * [OP-1476] - Serial bootloader and support tools for F0
+ * [OP-1477] - V9 firmware
+
+
+** Task
+ * [OP-1093] - Investigate Font issues on non-Windows platforms
+ * [OP-1337] - French translations updates (14.10)
+ * [OP-1398] - Qt 5.3.1 upgrade
+ * [OP-1468] - Change default PIDs for Atom
+ * [OP-1544] - Change defaults for GPSSettings.UbxAutoConfig to "Configure"
+
+** Sub task
+ * [OP-790] - Add labels to Custom Mode Vehicle type channels
+ * [OP-1399] - Qt 5.3.1 upgrade (Windows)
+ * [OP-1400] - Qt 5.3.1 upgrade (Linux)
+ * [OP-1401] - Qt 5.3.1 upgrade (Mac)
+ * [OP-1435] - Add Up Time, Arm Status and flight mode to PFD
+ * [OP-1439] - Add minor vignette / gradient to PFD
+ * [OP-1525] - GUI for Acro+
+
+** Bug
+ * [OP-868] - Text in Barographs is beyond image in Horizontal, Too tight spacing in Vertical
+ * [OP-922] - compiling firmware with DEBUG=YES fails in multiple places
+ * [OP-1077] - GCS corrupts flight log files (*.opl)
+ * [OP-1140] - Weak Leveling code appears to be wrong
+ * [OP-1186] - Clean up GCS configuration UI...
+ * [OP-1349] - GCS Neutral Spinboxes in Input and Output are incorrectly affected by and affect Min and Max
+ * [OP-1362] - Translation : 'make ts' errors
+ * [OP-1422] - Vehicle Setup Wizard (Tricopter) and Vehicle Mixer Settings Frame type dropdown (Tricopter) do not give the same Pitch mixer settings
+ * [OP-1425] - A small typo
+ * [OP-1433] - Change the order of the TxPID PID Options
+ * [OP-1445] - GCS bugs down in RC Input and Manual Calibration
+ * [OP-1455] - No output from "Test outputs" until sliders are moved
+ * [OP-1459] - Workaround white-box bug in GCS on OSX
+ * [OP-1460] - ICU libraries need to be copied, like they used to be.
+ * [OP-1461] - copyqt logic flawed on linux
+ * [OP-1463] - New copyqt logic might break if user has alternate OPENPILOT_TOOLS_DIR defined
+ * [OP-1473] - Incorrect Handling of EOF bytes for Futaba R7008SB
+ * [OP-1478] - Qt Creator build fails on windows
+ * [OP-1481] - UAVTalk transacted sends limit the number of waypoints that can sent over a slow link
+ * [OP-1483] - Switching from ReturnToBase into PathFollower mode doesn't work reliably
+ * [OP-1484] - Yaw rate Ki slider on basic stabilization page out of range
+ * [OP-1485] - board target revoproto is broken
+ * [OP-1488] - Typo in uavobject.java.template
+ * [OP-1494] - First exit from Stabilization page brings up warning, although no changes made
+ * [OP-1499] - UBXAutoConfig not Auto Configuring
+ * [OP-1506] - Wrong display in altitude / speed + refactoring PFD
+ * [OP-1510] - Don't force operating at 100mW
+ * [OP-1513] - Filter every temperature measurement used for temperature calibration
+ * [OP-1517] - Setup Wizard - sets SBus and GPS to main port
+ * [OP-1522] - Improve Robustness of OPLink radio
+ * [OP-1526] - Reverse all motors not working?
+ * [OP-1532] - OPLINKMINI and Revo do not communicate correctly
+ * [OP-1536] - The Revo ComBridge outputs garbage at the end of transmissions
+ * [OP-1537] - OPLink unreliable at high data rates
+ * [OP-1539] - AcroInsanityFactor limit parsing error
+ * [OP-1540] - Fix GPS v9 reported sha1sum
+ * [OP-1542] - Welcome Screen does not show latest available Update
+ * [OP-1547] - Wrong DSM port in SetupWizard
+ * [OP-1549] - Fix Map version retrieval url
+
--- RELEASE-14.06.01 ---
This is the first maintenance release for 14.06.
This mainly fixes a bug causing flips when switching to Weaklevel flight mode.
diff --git a/flight/libraries/sanitycheck.c b/flight/libraries/sanitycheck.c
index 7faf4bc08..2bba89db4 100644
--- a/flight/libraries/sanitycheck.c
+++ b/flight/libraries/sanitycheck.c
@@ -75,7 +75,7 @@ int32_t configuration_check()
bool navCapableFusion;
switch (revoFusion) {
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAGGPSOUTDOOR:
- case REVOSETTINGS_FUSIONALGORITHM_INS13GPSOUTDOOR:
+ case REVOSETTINGS_FUSIONALGORITHM_GPSNAVIGATIONINS13:
navCapableFusion = true;
break;
default:
diff --git a/flight/modules/StateEstimation/stateestimation.c b/flight/modules/StateEstimation/stateestimation.c
index 0e38f844d..5c999f01e 100644
--- a/flight/modules/StateEstimation/stateestimation.c
+++ b/flight/modules/StateEstimation/stateestimation.c
@@ -382,7 +382,7 @@ static void StateEstimationCb(void)
if (fs.Armed == FLIGHTSTATUS_ARMED_DISARMED || fusionAlgorithm == FILTER_INIT_FORCE) {
const filterPipeline *newFilterChain;
switch (revoSettings.FusionAlgorithm) {
- case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARY:
+ case REVOSETTINGS_FUSIONALGORITHM_BASICCOMPLEMENTARY:
newFilterChain = cfQueue;
break;
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAG:
@@ -394,7 +394,7 @@ static void StateEstimationCb(void)
case REVOSETTINGS_FUSIONALGORITHM_INS13INDOOR:
newFilterChain = ekf13iQueue;
break;
- case REVOSETTINGS_FUSIONALGORITHM_INS13GPSOUTDOOR:
+ case REVOSETTINGS_FUSIONALGORITHM_GPSNAVIGATIONINS13:
newFilterChain = ekf13Queue;
break;
default:
diff --git a/flight/pios/stm32f10x/pios_spi.c b/flight/pios/stm32f10x/pios_spi.c
index 01b7722aa..21db6bd5e 100644
--- a/flight/pios/stm32f10x/pios_spi.c
+++ b/flight/pios/stm32f10x/pios_spi.c
@@ -44,7 +44,6 @@ static bool PIOS_SPI_validate(__attribute__((unused)) struct pios_spi_dev *com_d
/* Should check device magic here */
return true;
}
-#define SPI_MAX_BLOCK_PIO 128
#if defined(PIOS_INCLUDE_FREERTOS)
static struct pios_spi_dev *PIOS_SPI_alloc(void)
@@ -433,7 +432,23 @@ int32_t PIOS_SPI_TransferByte(uint32_t spi_id, uint8_t b)
return rx_byte;
}
-static int32_t SPI_DMA_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
+/**
+ * Transfers a block of bytes via DMA.
+ * \param[in] spi SPI number (0 or 1)
+ * \param[in] send_buffer pointer to buffer which should be sent.
+ * If NULL, 0xff (all-one) will be sent.
+ * \param[in] receive_buffer pointer to buffer which should get the received values.
+ * If NULL, received bytes will be discarded.
+ * \param[in] len number of bytes which should be transfered
+ * \param[in] callback pointer to callback function which will be executed
+ * from DMA channel interrupt once the transfer is finished.
+ * If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will
+ * block until the transfer is finished.
+ * \return >= 0 if no error during transfer
+ * \return -1 if disabled SPI port selected
+ * \return -3 if function has been called during an ongoing DMA transfer
+ */
+int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
{
struct pios_spi_dev *spi_dev = (struct pios_spi_dev *)spi_id;
@@ -565,95 +580,6 @@ static int32_t SPI_DMA_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer
return 0;
}
-/**
- * Transfers a block of bytes via PIO.
- *
- * \param[in] spi_id SPI device handle
- * \param[in] send_buffer pointer to buffer which should be sent.
- * If NULL, 0xff (all-one) will be sent.
- * \param[in] receive_buffer pointer to buffer which should get the received values.
- * If NULL, received bytes will be discarded.
- * \param[in] len number of bytes which should be transfered
- * \return >= 0 if no error during transfer
- * \return -1 if disabled SPI port selected
- * \return -3 if function has been called during an ongoing DMA transfer
- */
-static int32_t SPI_PIO_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len)
-{
- struct pios_spi_dev *spi_dev = (struct pios_spi_dev *)spi_id;
- uint8_t b;
-
- bool valid = PIOS_SPI_validate(spi_dev);
-
- PIOS_Assert(valid)
-
- /* Exit if ongoing transfer */
- if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)) {
- return -3;
- }
-
- /* Make sure the RXNE flag is cleared by reading the DR register */
- b = spi_dev->cfg->regs->DR;
-
- while (len--) {
- /* get the byte to send */
- b = send_buffer ? *(send_buffer++) : 0xff;
-
- /* Start the transfer */
- spi_dev->cfg->regs->DR = b;
-
- /* Wait until there is a byte to read */
- while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_RXNE)) {
- ;
- }
-
- /* Read the rx'd byte */
- b = spi_dev->cfg->regs->DR;
-
- /* save the received byte */
- if (receive_buffer) {
- *(receive_buffer++) = b;
- }
-
- /* Wait until the TXE goes high */
- while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_TXE)) {
- ;
- }
- }
-
- /* Wait for SPI transfer to have fully completed */
- while (spi_dev->cfg->regs->SR & SPI_I2S_FLAG_BSY) {
- ;
- }
-
- return 0;
-}
-
-
-/**
- * Transfers a block of bytes via PIO or DMA.
- * \param[in] spi_id SPI device handle
- * \param[in] send_buffer pointer to buffer which should be sent.
- * If NULL, 0xff (all-one) will be sent.
- * \param[in] receive_buffer pointer to buffer which should get the received values.
- * If NULL, received bytes will be discarded.
- * \param[in] len number of bytes which should be transfered
- * \param[in] callback pointer to callback function which will be executed
- * from DMA channel interrupt once the transfer is finished.
- * If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will
- * block until the transfer is finished.
- * \return >= 0 if no error during transfer
- * \return -1 if disabled SPI port selected
- * \return -3 if function has been called during an ongoing DMA transfer
- */
-int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback)
-{
- if (callback || len > SPI_MAX_BLOCK_PIO) {
- return SPI_DMA_TransferBlock(spi_id, send_buffer, receive_buffer, len, callback);
- }
- return SPI_PIO_TransferBlock(spi_id, send_buffer, receive_buffer, len);
-}
-
/**
* Check if a transfer is in progress
* \param[in] spi SPI number (0 or 1)
diff --git a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/providerstrings.cpp b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/providerstrings.cpp
index a4c913b9e..50d16bbc9 100644
--- a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/providerstrings.cpp
+++ b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/providerstrings.cpp
@@ -37,15 +37,11 @@ const QString ProviderStrings::levelsForSigPacSpainMap[] = { "0", "1",
ProviderStrings::ProviderStrings()
{
-// VersionGoogleMap = "m@132";
-// VersionGoogleSatellite = "71";
-// VersionGoogleLabels = "h@132";
-// VersionGoogleTerrain = "t@125,r@132";
// Google version strings
- VersionGoogleMap = "m@132";
- VersionGoogleSatellite = "71";
- VersionGoogleLabels = "h@132";
- VersionGoogleTerrain = "t@125,r@132";
+ VersionGoogleMap = "h@249000000";
+ VersionGoogleSatellite = "145";
+ VersionGoogleLabels = "h@221000000";
+ VersionGoogleTerrain = "t@132,r@249000000";
SecGoogleWord = "Galileo";
// Google (China) version strings
diff --git a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/urlfactory.cpp b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/urlfactory.cpp
index 6025eecc1..e033d58dc 100644
--- a/ground/openpilotgcs/src/libs/opmapcontrol/src/core/urlfactory.cpp
+++ b/ground/openpilotgcs/src/libs/opmapcontrol/src/core/urlfactory.cpp
@@ -109,7 +109,7 @@ void UrlFactory::TryCorrectGoogleVersions()
qDebug() << "Correct GoogleVersion";
#endif // DEBUG_URLFACTORY
// setIsCorrectGoogleVersions(true);
- QString url = "https://maps.google.com";
+ QString url = "https://maps.google.com/maps?output=classic";
qheader.setUrl(QUrl(url));
qheader.setRawHeader("User-Agent", UserAgent);
@@ -186,18 +186,18 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
QString sec2 = ""; // after &zoom=...
GetSecGoogleWords(pos, sec1, sec2);
TryCorrectGoogleVersions();
- return QString("https://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMap).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
+ return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleMap).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
}
break;
case MapType::GoogleSatellite:
{
- QString server = "khms";
+ QString server = "khm";
QString request = "kh";
QString sec1 = ""; // after &x=...
QString sec2 = ""; // after &zoom=...
GetSecGoogleWords(pos, sec1, sec2);
TryCorrectGoogleVersions();
- return QString("https://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatellite).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
+ return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleSatellite).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
}
break;
case MapType::GoogleLabels:
@@ -209,7 +209,7 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
GetSecGoogleWords(pos, sec1, sec2);
TryCorrectGoogleVersions();
- return QString("https://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabels).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
+ return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleLabels).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
}
break;
case MapType::GoogleTerrain:
@@ -220,7 +220,7 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
QString sec2 = ""; // after &zoom=...
GetSecGoogleWords(pos, sec1, sec2);
TryCorrectGoogleVersions();
- return QString("https://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrain).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
+ return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(GetServerNum(pos, 4)).arg(request).arg(VersionGoogleTerrain).arg(language).arg(pos.X()).arg(sec1).arg(pos.Y()).arg(zoom).arg(sec2);
}
break;
case MapType::GoogleMapChina:
diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp
index a9add1da0..cea8f10b4 100644
--- a/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configgadgetfactory.cpp
@@ -49,8 +49,8 @@ Core::IUAVGadget *ConfigGadgetFactory::createGadget(QWidget *parent)
Core::Command *cmd = am->registerAction(new QAction(this), "ConfigPlugin.ShowInputWizard",
QList() << Core::Constants::C_GLOBAL_ID);
- cmd->setDefaultKeySequence(QKeySequence("Ctrl+R"));
- cmd->action()->setText(tr("Radio Setup Wizard"));
+ cmd->setDefaultKeySequence(QKeySequence("Ctrl+T"));
+ cmd->action()->setText(tr("Transmitter Setup Wizard"));
Core::ModeManager::instance()->addAction(cmd, 1);
diff --git a/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp b/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp
index c512e3cde..d4d1ea933 100644
--- a/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configrevowidget.cpp
@@ -186,7 +186,7 @@ ConfigRevoWidget::ConfigRevoWidget(QWidget *parent) :
// home location
connect(m_ui->hlClearButton, SIGNAL(clicked()), this, SLOT(clearHomeLocation()));
- addWidgetBinding("RevoSettings", "FusionAlgorithm", m_ui->FusionAlgorithm);
+ addWidgetBinding("RevoSettings", "FusionAlgorithm", m_ui->FusionAlgorithm, 0, 1, true);
addWidgetBinding("AttitudeSettings", "BoardRotation", m_ui->rollRotation, AttitudeSettings::BOARDROTATION_ROLL);
addWidgetBinding("AttitudeSettings", "BoardRotation", m_ui->pitchRotation, AttitudeSettings::BOARDROTATION_PITCH);
@@ -194,10 +194,12 @@ ConfigRevoWidget::ConfigRevoWidget(QWidget *parent) :
addWidgetBinding("AttitudeSettings", "AccelTau", m_ui->accelTau);
populateWidgets();
- refreshWidgetsValues();
enableAllCalibrations();
+ updateEnableControls();
+
forceConnectedState();
+ refreshWidgetsValues();
}
ConfigRevoWidget::~ConfigRevoWidget()
diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp b/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp
index 270a3ddef..6a5752ca1 100644
--- a/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp
+++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp
@@ -40,6 +40,12 @@ EscCalibrationPage::EscCalibrationPage(SetupWizard *wizard, QWidget *parent) :
ui(new Ui::EscCalibrationPage), m_isCalibrating(false)
{
ui->setupUi(this);
+
+ ui->outputHigh->setEnabled(false);
+ ui->outputLow->setEnabled(true);
+ ui->outputLevel->setEnabled(true);
+ ui->outputLevel->setText(QString(tr("%1 µs")).arg(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
+
connect(ui->startStopButton, SIGNAL(clicked()), this, SLOT(startStopButtonClicked()));
connect(ui->securityCheckBox1, SIGNAL(toggled(bool)), this, SLOT(securityCheckBoxesToggled()));
@@ -82,6 +88,9 @@ void EscCalibrationPage::startStopButtonClicked()
m_isCalibrating = true;
ui->startStopButton->setEnabled(false);
enableButtons(false);
+ ui->outputHigh->setEnabled(true);
+ ui->outputLow->setEnabled(false);
+ ui->outputLevel->setText(QString(tr("%1 µs")).arg(HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *uavoManager = pm->getObject();
Q_ASSERT(uavoManager);
@@ -107,6 +116,9 @@ void EscCalibrationPage::startStopButtonClicked()
output->stopChannelOutput();
delete output;
}
+ ui->outputHigh->setEnabled(false);
+ ui->outputLow->setEnabled(true);
+ ui->outputLevel->setText(QString(tr("%1 µs")).arg(LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS));
m_outputs.clear();
m_isCalibrating = false;
resetAllSecurityCheckboxes();
diff --git a/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.ui b/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.ui
index c22be3413..8e62e6ce8 100644
--- a/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.ui
+++ b/ground/openpilotgcs/src/plugins/setupwizard/pages/esccalibrationpage.ui
@@ -7,7 +7,7 @@
0
0
600
- 500
+ 507
@@ -64,6 +64,356 @@
+ -
+
+
+ ESC Output Level
+
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
+
-
+
+
+ false
+
+
+
+ 100
+ 22
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+
+
+ 34
+ 34
+ 200
+
+
+
+
+ 6
+ 6
+ 150
+
+
+
+
+
+
+
+
+
+
+ 159
+ 158
+ 158
+
+
+
+
+
+
+ 100
+ 150
+ 255
+
+
+
+
+
+
+ 159
+ 158
+ 158
+
+
+
+
+
+
+ 159
+ 158
+ 158
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 242
+ 241
+ 240
+
+
+
+
+
+
+
+ QPushButton:enabled {
+ background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(34, 34, 200, 255), stop:0.78607 rgba(6, 6, 150, 255));
+ color: rgb(255, 255, 255);
+ border-radius: 5;
+}
+
+
+ Low/Off
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::Sunken
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ false
+
+
+ N/A
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ false
+
+
+
+ 100
+ 22
+
+
+
+ QPushButton:enabled {
+ background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(200, 14, 14, 255), stop:0.78607 rgba(160, 6, 6, 255));
+ color: rgb(255, 255, 255);
+ border-radius: 5;
+}
+
+
+ High
+
+
+ true
+
+
+
+
+
+
-
diff --git a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
index 031349cc1..a6074db2a 100644
--- a/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
+++ b/ground/openpilotgcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp
@@ -727,7 +727,7 @@ void VehicleConfigurationHelper::applyManualControlDefaults()
case VehicleConfigurationSource::INPUT_DSMX10:
case VehicleConfigurationSource::INPUT_DSMX11:
case VehicleConfigurationSource::INPUT_DSM2:
- channelType = ManualControlSettings::CHANNELGROUPS_DSMMAINPORT;
+ channelType = ManualControlSettings::CHANNELGROUPS_DSMFLEXIPORT;
break;
default:
break;
diff --git a/ground/openpilotgcs/src/plugins/uavobjectbrowser/treeitem.h b/ground/openpilotgcs/src/plugins/uavobjectbrowser/treeitem.h
index 6d7a7f2a1..bd8504870 100644
--- a/ground/openpilotgcs/src/plugins/uavobjectbrowser/treeitem.h
+++ b/ground/openpilotgcs/src/plugins/uavobjectbrowser/treeitem.h
@@ -319,7 +319,6 @@ public:
{
return parent()->isKnown();
}
-
};
class DataObjectTreeItem : public ObjectTreeItem {
diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
index 1ffd22f8e..532a28ca4 100644
--- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp
@@ -252,6 +252,9 @@ void ConfigTaskWidget::onAutopilotDisconnect()
// dynamic widgets don't recieve the connected signal. This should be called instead.
void ConfigTaskWidget::forceConnectedState()
{
+ if (m_objectUtilManager) {
+ m_currentBoardId = m_objectUtilManager->getBoardModel();
+ }
m_isConnected = true;
setDirty(false);
}
diff --git a/package/winx86/openpilotgcs.nsi b/package/winx86/openpilotgcs.nsi
index f569ef6e2..2f6025579 100644
--- a/package/winx86/openpilotgcs.nsi
+++ b/package/winx86/openpilotgcs.nsi
@@ -1,4 +1,4 @@
-#
+#
# Project: OpenPilot
# NSIS configuration file for OpenPilot GCS
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2010-2013.
@@ -72,7 +72,7 @@
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
VIAddVersionKey "LegalTrademarks" "${PRODUCT_NAME} is a trademark of The OpenPilot Team"
- VIAddVersionKey "LegalCopyright" "© 2010-2013 The OpenPilot Team"
+ VIAddVersionKey "LegalCopyright" "© 2010-2013 The OpenPilot Team"
VIAddVersionKey "FileDescription" "${INSTALLER_NAME}"
;--------------------------------
@@ -93,7 +93,7 @@
;--------------------------------
; Branding
- BrandingText "© 2010-2013 The OpenPilot Team, http://www.openpilot.org"
+ BrandingText "© 2010-2013 The OpenPilot Team, http://www.openpilot.org"
!define MUI_ICON "${NSIS_DATA_TREE}\resources\openpilot.ico"
!define MUI_HEADERIMAGE
@@ -301,7 +301,7 @@ Section ; create uninstall info
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "UninstallString" '"$INSTDIR\Uninstall.exe"'
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "DisplayIcon" '"$INSTDIR\bin\openpilotgcs.exe"'
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "Publisher" "OpenPilot Team"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "DisplayVersion" "Italian Stallion"
+ WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "DisplayVersion" "Mini Me"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "URLInfoAbout" "http://www.openpilot.org"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "HelpLink" "http://wiki.openpilot.org"
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "EstimatedSize" 100600
diff --git a/shared/uavobjectdefinition/revosettings.xml b/shared/uavobjectdefinition/revosettings.xml
index d2c8b9d4f..17d3e8f4e 100644
--- a/shared/uavobjectdefinition/revosettings.xml
+++ b/shared/uavobjectdefinition/revosettings.xml
@@ -1,7 +1,10 @@