mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-06 21:54:15 +01:00
Merge branch 'rel-14.10' into next
This commit is contained in:
commit
2c986cf53f
141
WHATSNEW.txt
141
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 ---
|
--- RELEASE-14.06.01 ---
|
||||||
This is the first maintenance release for 14.06.
|
This is the first maintenance release for 14.06.
|
||||||
This mainly fixes a bug causing flips when switching to Weaklevel flight mode.
|
This mainly fixes a bug causing flips when switching to Weaklevel flight mode.
|
||||||
|
@ -75,7 +75,7 @@ int32_t configuration_check()
|
|||||||
bool navCapableFusion;
|
bool navCapableFusion;
|
||||||
switch (revoFusion) {
|
switch (revoFusion) {
|
||||||
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAGGPSOUTDOOR:
|
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAGGPSOUTDOOR:
|
||||||
case REVOSETTINGS_FUSIONALGORITHM_INS13GPSOUTDOOR:
|
case REVOSETTINGS_FUSIONALGORITHM_GPSNAVIGATIONINS13:
|
||||||
navCapableFusion = true;
|
navCapableFusion = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -382,7 +382,7 @@ static void StateEstimationCb(void)
|
|||||||
if (fs.Armed == FLIGHTSTATUS_ARMED_DISARMED || fusionAlgorithm == FILTER_INIT_FORCE) {
|
if (fs.Armed == FLIGHTSTATUS_ARMED_DISARMED || fusionAlgorithm == FILTER_INIT_FORCE) {
|
||||||
const filterPipeline *newFilterChain;
|
const filterPipeline *newFilterChain;
|
||||||
switch (revoSettings.FusionAlgorithm) {
|
switch (revoSettings.FusionAlgorithm) {
|
||||||
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARY:
|
case REVOSETTINGS_FUSIONALGORITHM_BASICCOMPLEMENTARY:
|
||||||
newFilterChain = cfQueue;
|
newFilterChain = cfQueue;
|
||||||
break;
|
break;
|
||||||
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAG:
|
case REVOSETTINGS_FUSIONALGORITHM_COMPLEMENTARYMAG:
|
||||||
@ -394,7 +394,7 @@ static void StateEstimationCb(void)
|
|||||||
case REVOSETTINGS_FUSIONALGORITHM_INS13INDOOR:
|
case REVOSETTINGS_FUSIONALGORITHM_INS13INDOOR:
|
||||||
newFilterChain = ekf13iQueue;
|
newFilterChain = ekf13iQueue;
|
||||||
break;
|
break;
|
||||||
case REVOSETTINGS_FUSIONALGORITHM_INS13GPSOUTDOOR:
|
case REVOSETTINGS_FUSIONALGORITHM_GPSNAVIGATIONINS13:
|
||||||
newFilterChain = ekf13Queue;
|
newFilterChain = ekf13Queue;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -44,7 +44,6 @@ static bool PIOS_SPI_validate(__attribute__((unused)) struct pios_spi_dev *com_d
|
|||||||
/* Should check device magic here */
|
/* Should check device magic here */
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#define SPI_MAX_BLOCK_PIO 128
|
|
||||||
|
|
||||||
#if defined(PIOS_INCLUDE_FREERTOS)
|
#if defined(PIOS_INCLUDE_FREERTOS)
|
||||||
static struct pios_spi_dev *PIOS_SPI_alloc(void)
|
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;
|
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.<BR>
|
||||||
|
* If NULL, 0xff (all-one) will be sent.
|
||||||
|
* \param[in] receive_buffer pointer to buffer which should get the received values.<BR>
|
||||||
|
* 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;
|
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;
|
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.<BR>
|
|
||||||
* If NULL, 0xff (all-one) will be sent.
|
|
||||||
* \param[in] receive_buffer pointer to buffer which should get the received values.<BR>
|
|
||||||
* 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.<BR>
|
|
||||||
* If NULL, 0xff (all-one) will be sent.
|
|
||||||
* \param[in] receive_buffer pointer to buffer which should get the received values.<BR>
|
|
||||||
* 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
|
* Check if a transfer is in progress
|
||||||
* \param[in] spi SPI number (0 or 1)
|
* \param[in] spi SPI number (0 or 1)
|
||||||
|
@ -37,15 +37,11 @@ const QString ProviderStrings::levelsForSigPacSpainMap[] = { "0", "1",
|
|||||||
|
|
||||||
ProviderStrings::ProviderStrings()
|
ProviderStrings::ProviderStrings()
|
||||||
{
|
{
|
||||||
// VersionGoogleMap = "m@132";
|
|
||||||
// VersionGoogleSatellite = "71";
|
|
||||||
// VersionGoogleLabels = "h@132";
|
|
||||||
// VersionGoogleTerrain = "t@125,r@132";
|
|
||||||
// Google version strings
|
// Google version strings
|
||||||
VersionGoogleMap = "m@132";
|
VersionGoogleMap = "h@249000000";
|
||||||
VersionGoogleSatellite = "71";
|
VersionGoogleSatellite = "145";
|
||||||
VersionGoogleLabels = "h@132";
|
VersionGoogleLabels = "h@221000000";
|
||||||
VersionGoogleTerrain = "t@125,r@132";
|
VersionGoogleTerrain = "t@132,r@249000000";
|
||||||
SecGoogleWord = "Galileo";
|
SecGoogleWord = "Galileo";
|
||||||
|
|
||||||
// Google (China) version strings
|
// Google (China) version strings
|
||||||
|
@ -109,7 +109,7 @@ void UrlFactory::TryCorrectGoogleVersions()
|
|||||||
qDebug() << "Correct GoogleVersion";
|
qDebug() << "Correct GoogleVersion";
|
||||||
#endif // DEBUG_URLFACTORY
|
#endif // DEBUG_URLFACTORY
|
||||||
// setIsCorrectGoogleVersions(true);
|
// setIsCorrectGoogleVersions(true);
|
||||||
QString url = "https://maps.google.com";
|
QString url = "https://maps.google.com/maps?output=classic";
|
||||||
|
|
||||||
qheader.setUrl(QUrl(url));
|
qheader.setUrl(QUrl(url));
|
||||||
qheader.setRawHeader("User-Agent", UserAgent);
|
qheader.setRawHeader("User-Agent", UserAgent);
|
||||||
@ -186,18 +186,18 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
|
|||||||
QString sec2 = ""; // after &zoom=...
|
QString sec2 = ""; // after &zoom=...
|
||||||
GetSecGoogleWords(pos, sec1, sec2);
|
GetSecGoogleWords(pos, sec1, sec2);
|
||||||
TryCorrectGoogleVersions();
|
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;
|
break;
|
||||||
case MapType::GoogleSatellite:
|
case MapType::GoogleSatellite:
|
||||||
{
|
{
|
||||||
QString server = "khms";
|
QString server = "khm";
|
||||||
QString request = "kh";
|
QString request = "kh";
|
||||||
QString sec1 = ""; // after &x=...
|
QString sec1 = ""; // after &x=...
|
||||||
QString sec2 = ""; // after &zoom=...
|
QString sec2 = ""; // after &zoom=...
|
||||||
GetSecGoogleWords(pos, sec1, sec2);
|
GetSecGoogleWords(pos, sec1, sec2);
|
||||||
TryCorrectGoogleVersions();
|
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;
|
break;
|
||||||
case MapType::GoogleLabels:
|
case MapType::GoogleLabels:
|
||||||
@ -209,7 +209,7 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
|
|||||||
GetSecGoogleWords(pos, sec1, sec2);
|
GetSecGoogleWords(pos, sec1, sec2);
|
||||||
TryCorrectGoogleVersions();
|
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;
|
break;
|
||||||
case MapType::GoogleTerrain:
|
case MapType::GoogleTerrain:
|
||||||
@ -220,7 +220,7 @@ QString UrlFactory::MakeImageUrl(const MapType::Types &type, const Point &pos, c
|
|||||||
QString sec2 = ""; // after &zoom=...
|
QString sec2 = ""; // after &zoom=...
|
||||||
GetSecGoogleWords(pos, sec1, sec2);
|
GetSecGoogleWords(pos, sec1, sec2);
|
||||||
TryCorrectGoogleVersions();
|
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;
|
break;
|
||||||
case MapType::GoogleMapChina:
|
case MapType::GoogleMapChina:
|
||||||
|
@ -49,8 +49,8 @@ Core::IUAVGadget *ConfigGadgetFactory::createGadget(QWidget *parent)
|
|||||||
|
|
||||||
Core::Command *cmd = am->registerAction(new QAction(this), "ConfigPlugin.ShowInputWizard",
|
Core::Command *cmd = am->registerAction(new QAction(this), "ConfigPlugin.ShowInputWizard",
|
||||||
QList<int>() << Core::Constants::C_GLOBAL_ID);
|
QList<int>() << Core::Constants::C_GLOBAL_ID);
|
||||||
cmd->setDefaultKeySequence(QKeySequence("Ctrl+R"));
|
cmd->setDefaultKeySequence(QKeySequence("Ctrl+T"));
|
||||||
cmd->action()->setText(tr("Radio Setup Wizard"));
|
cmd->action()->setText(tr("Transmitter Setup Wizard"));
|
||||||
|
|
||||||
Core::ModeManager::instance()->addAction(cmd, 1);
|
Core::ModeManager::instance()->addAction(cmd, 1);
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ ConfigRevoWidget::ConfigRevoWidget(QWidget *parent) :
|
|||||||
// home location
|
// home location
|
||||||
connect(m_ui->hlClearButton, SIGNAL(clicked()), this, SLOT(clearHomeLocation()));
|
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->rollRotation, AttitudeSettings::BOARDROTATION_ROLL);
|
||||||
addWidgetBinding("AttitudeSettings", "BoardRotation", m_ui->pitchRotation, AttitudeSettings::BOARDROTATION_PITCH);
|
addWidgetBinding("AttitudeSettings", "BoardRotation", m_ui->pitchRotation, AttitudeSettings::BOARDROTATION_PITCH);
|
||||||
@ -194,10 +194,12 @@ ConfigRevoWidget::ConfigRevoWidget(QWidget *parent) :
|
|||||||
addWidgetBinding("AttitudeSettings", "AccelTau", m_ui->accelTau);
|
addWidgetBinding("AttitudeSettings", "AccelTau", m_ui->accelTau);
|
||||||
|
|
||||||
populateWidgets();
|
populateWidgets();
|
||||||
refreshWidgetsValues();
|
|
||||||
enableAllCalibrations();
|
enableAllCalibrations();
|
||||||
|
|
||||||
|
updateEnableControls();
|
||||||
|
|
||||||
forceConnectedState();
|
forceConnectedState();
|
||||||
|
refreshWidgetsValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigRevoWidget::~ConfigRevoWidget()
|
ConfigRevoWidget::~ConfigRevoWidget()
|
||||||
|
@ -40,6 +40,12 @@ EscCalibrationPage::EscCalibrationPage(SetupWizard *wizard, QWidget *parent) :
|
|||||||
ui(new Ui::EscCalibrationPage), m_isCalibrating(false)
|
ui(new Ui::EscCalibrationPage), m_isCalibrating(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
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->startStopButton, SIGNAL(clicked()), this, SLOT(startStopButtonClicked()));
|
||||||
|
|
||||||
connect(ui->securityCheckBox1, SIGNAL(toggled(bool)), this, SLOT(securityCheckBoxesToggled()));
|
connect(ui->securityCheckBox1, SIGNAL(toggled(bool)), this, SLOT(securityCheckBoxesToggled()));
|
||||||
@ -82,6 +88,9 @@ void EscCalibrationPage::startStopButtonClicked()
|
|||||||
m_isCalibrating = true;
|
m_isCalibrating = true;
|
||||||
ui->startStopButton->setEnabled(false);
|
ui->startStopButton->setEnabled(false);
|
||||||
enableButtons(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();
|
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||||
UAVObjectManager *uavoManager = pm->getObject<UAVObjectManager>();
|
UAVObjectManager *uavoManager = pm->getObject<UAVObjectManager>();
|
||||||
Q_ASSERT(uavoManager);
|
Q_ASSERT(uavoManager);
|
||||||
@ -107,6 +116,9 @@ void EscCalibrationPage::startStopButtonClicked()
|
|||||||
output->stopChannelOutput();
|
output->stopChannelOutput();
|
||||||
delete output;
|
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_outputs.clear();
|
||||||
m_isCalibrating = false;
|
m_isCalibrating = false;
|
||||||
resetAllSecurityCheckboxes();
|
resetAllSecurityCheckboxes();
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>500</height>
|
<height>507</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -64,6 +64,356 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>ESC Output Level</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="outputLow">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>22</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="palette">
|
||||||
|
<palette>
|
||||||
|
<active>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Button">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Text">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="ButtonText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</active>
|
||||||
|
<inactive>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Button">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Text">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="ButtonText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="LinearGradientPattern">
|
||||||
|
<gradient startx="0.507000000000000" starty="0.000000000000000" endx="0.507000000000000" endy="0.772000000000000" type="LinearGradient" spread="ReflectSpread" coordinatemode="ObjectBoundingMode">
|
||||||
|
<gradientstop position="0.208955000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>34</red>
|
||||||
|
<green>34</green>
|
||||||
|
<blue>200</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
<gradientstop position="0.786070000000000">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>6</red>
|
||||||
|
<green>6</green>
|
||||||
|
<blue>150</blue>
|
||||||
|
</color>
|
||||||
|
</gradientstop>
|
||||||
|
</gradient>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</inactive>
|
||||||
|
<disabled>
|
||||||
|
<colorrole role="WindowText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Button">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>100</red>
|
||||||
|
<green>150</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Text">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="ButtonText">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>159</red>
|
||||||
|
<green>158</green>
|
||||||
|
<blue>158</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Base">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>255</red>
|
||||||
|
<green>255</green>
|
||||||
|
<blue>255</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
<colorrole role="Window">
|
||||||
|
<brush brushstyle="SolidPattern">
|
||||||
|
<color alpha="255">
|
||||||
|
<red>242</red>
|
||||||
|
<green>241</green>
|
||||||
|
<blue>240</blue>
|
||||||
|
</color>
|
||||||
|
</brush>
|
||||||
|
</colorrole>
|
||||||
|
</disabled>
|
||||||
|
</palette>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">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;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Low/Off</string>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="outputLevel">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>N/A</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line_2">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="outputHigh">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>22</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">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;
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>High</string>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
|
@ -727,7 +727,7 @@ void VehicleConfigurationHelper::applyManualControlDefaults()
|
|||||||
case VehicleConfigurationSource::INPUT_DSMX10:
|
case VehicleConfigurationSource::INPUT_DSMX10:
|
||||||
case VehicleConfigurationSource::INPUT_DSMX11:
|
case VehicleConfigurationSource::INPUT_DSMX11:
|
||||||
case VehicleConfigurationSource::INPUT_DSM2:
|
case VehicleConfigurationSource::INPUT_DSM2:
|
||||||
channelType = ManualControlSettings::CHANNELGROUPS_DSMMAINPORT;
|
channelType = ManualControlSettings::CHANNELGROUPS_DSMFLEXIPORT;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -319,7 +319,6 @@ public:
|
|||||||
{
|
{
|
||||||
return parent()->isKnown();
|
return parent()->isKnown();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class DataObjectTreeItem : public ObjectTreeItem {
|
class DataObjectTreeItem : public ObjectTreeItem {
|
||||||
|
@ -252,6 +252,9 @@ void ConfigTaskWidget::onAutopilotDisconnect()
|
|||||||
// dynamic widgets don't recieve the connected signal. This should be called instead.
|
// dynamic widgets don't recieve the connected signal. This should be called instead.
|
||||||
void ConfigTaskWidget::forceConnectedState()
|
void ConfigTaskWidget::forceConnectedState()
|
||||||
{
|
{
|
||||||
|
if (m_objectUtilManager) {
|
||||||
|
m_currentBoardId = m_objectUtilManager->getBoardModel();
|
||||||
|
}
|
||||||
m_isConnected = true;
|
m_isConnected = true;
|
||||||
setDirty(false);
|
setDirty(false);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#
|
#
|
||||||
# Project: OpenPilot
|
# Project: OpenPilot
|
||||||
# NSIS configuration file for OpenPilot GCS
|
# NSIS configuration file for OpenPilot GCS
|
||||||
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2010-2013.
|
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2010-2013.
|
||||||
@ -72,7 +72,7 @@
|
|||||||
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
|
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
|
||||||
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
|
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
|
||||||
VIAddVersionKey "LegalTrademarks" "${PRODUCT_NAME} is a trademark of The OpenPilot Team"
|
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}"
|
VIAddVersionKey "FileDescription" "${INSTALLER_NAME}"
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
@ -93,7 +93,7 @@
|
|||||||
;--------------------------------
|
;--------------------------------
|
||||||
; Branding
|
; 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_ICON "${NSIS_DATA_TREE}\resources\openpilot.ico"
|
||||||
!define MUI_HEADERIMAGE
|
!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" "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" "DisplayIcon" '"$INSTDIR\bin\openpilotgcs.exe"'
|
||||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "Publisher" "OpenPilot Team"
|
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" "URLInfoAbout" "http://www.openpilot.org"
|
||||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "HelpLink" "http://wiki.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
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenPilot" "EstimatedSize" 100600
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
<xml>
|
<xml>
|
||||||
<object name="RevoSettings" singleinstance="true" settings="true" category="State">
|
<object name="RevoSettings" singleinstance="true" settings="true" category="State">
|
||||||
<description>Settings for the revo to control the algorithm and what is updated</description>
|
<description>Settings for the revo to control the algorithm and what is updated</description>
|
||||||
<field name="FusionAlgorithm" units="" type="enum" elements="1" options="None,Complementary,Complementary+Mag,Complementary+Mag+GPSOutdoor,INS13Indoor,INS13GPSOutdoor" defaultvalue="Complementary"/>
|
<field name="FusionAlgorithm" units="" type="enum" elements="1"
|
||||||
|
options="None,Basic (Complementary),Complementary+Mag,Complementary+Mag+GPSOutdoor,INS13Indoor,GPS Navigation (INS13)"
|
||||||
|
limits="%NE:None:Complementary+Mag:Complementary+Mag+GPSOutdoor:INS13Indoor;"
|
||||||
|
defaultvalue="Complementary"/>
|
||||||
|
|
||||||
<!-- Low pass filter configuration to calculate offset of barometric altitude sensor.
|
<!-- Low pass filter configuration to calculate offset of barometric altitude sensor.
|
||||||
Defaults: updates at 5 Hz, tau = 300s settle time, exp(-(1/f)/tau) ~= 0.9993335555062
|
Defaults: updates at 5 Hz, tau = 300s settle time, exp(-(1/f)/tau) ~= 0.9993335555062
|
||||||
|
Loading…
x
Reference in New Issue
Block a user