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 @@ Settings for the revo to control the algorithm and what is updated - +