mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-11 01:54:14 +01:00
Merge remote-tracking branch 'origin/rel-14.01' into laurent/OP-1187_allow_french_translations_in_future_releases
This commit is contained in:
commit
64485f1cf8
23
.commit-template
Normal file
23
.commit-template
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# *************** OpenPilot commits guidelines ***************
|
||||||
|
# Each commit needs to have a message like the following sample:
|
||||||
|
# OP-1150 UI for thermal calibration: Connect State machine to UI
|
||||||
|
#
|
||||||
|
# It needs to begin with a reference to one or more Jira tickets followed by a short description.
|
||||||
|
# If needed add a longer description in the following lines, after an empty line.
|
||||||
|
#
|
||||||
|
# Before committing, ensure your code is properly formatted using:
|
||||||
|
# make uncrustify_all
|
||||||
|
# You can format flight or ground code only using respectively
|
||||||
|
# uncrustify_flight or uncrustify_ground
|
||||||
|
#
|
||||||
|
# To automatically create a review, append the following smart commit messages:
|
||||||
|
# +review OPReview
|
||||||
|
#
|
||||||
|
# To append the commit to an existing review, use the following smart commit message:
|
||||||
|
# +review OPReview-NNN
|
||||||
|
# For example "+review OPReview-609"
|
||||||
|
#
|
||||||
|
# *NOTE* leave an empty line between the commit message and "smart commit command"
|
||||||
|
# Smart commits commands need to starts immediately at first column
|
@ -5,7 +5,9 @@ Pedro Assuncao
|
|||||||
Fredrik Arvidsson
|
Fredrik Arvidsson
|
||||||
Werner Backes
|
Werner Backes
|
||||||
Jose Barros
|
Jose Barros
|
||||||
|
Mikael Blomqvist
|
||||||
Pete Boehl
|
Pete Boehl
|
||||||
|
Glenn Campigli
|
||||||
David Carlson
|
David Carlson
|
||||||
James Cotton
|
James Cotton
|
||||||
Steve Doll
|
Steve Doll
|
||||||
@ -13,7 +15,9 @@ Piotr Esden-Tempski
|
|||||||
Richard Flay
|
Richard Flay
|
||||||
Peter Farnworth
|
Peter Farnworth
|
||||||
Ed Faulkner
|
Ed Faulkner
|
||||||
|
Andrew Finegan
|
||||||
Darren Furniss
|
Darren Furniss
|
||||||
|
Cliff Geerdes
|
||||||
Frederic Goddeeris
|
Frederic Goddeeris
|
||||||
Daniel Godin
|
Daniel Godin
|
||||||
Anthony Gomez
|
Anthony Gomez
|
||||||
@ -24,6 +28,7 @@ Peter Gunnarsson
|
|||||||
Dean Hall
|
Dean Hall
|
||||||
Joe Hlebasko
|
Joe Hlebasko
|
||||||
Andy Honecker
|
Andy Honecker
|
||||||
|
Patrick Huebner
|
||||||
Ryan Hunt
|
Ryan Hunt
|
||||||
Mark James
|
Mark James
|
||||||
Ricky King
|
Ricky King
|
||||||
@ -34,6 +39,7 @@ Alan Krum
|
|||||||
Edouard Lafargue
|
Edouard Lafargue
|
||||||
Mike Labranche
|
Mike Labranche
|
||||||
Fredrik Larsson
|
Fredrik Larsson
|
||||||
|
Richard von Lehe
|
||||||
Pablo Lema
|
Pablo Lema
|
||||||
David Llama
|
David Llama
|
||||||
Matt Lipski
|
Matt Lipski
|
||||||
@ -65,6 +71,7 @@ Troy Schultz
|
|||||||
Dr. Erhard Siegl
|
Dr. Erhard Siegl
|
||||||
Dusty Anne Smith
|
Dusty Anne Smith
|
||||||
Mike Smith
|
Mike Smith
|
||||||
|
Bertrand Songis
|
||||||
Alex Sowa
|
Alex Sowa
|
||||||
Pete Stapley
|
Pete Stapley
|
||||||
Vova Starikh
|
Vova Starikh
|
||||||
|
2
Makefile
2
Makefile
@ -859,6 +859,8 @@ help:
|
|||||||
@$(ECHO)
|
@$(ECHO)
|
||||||
@$(ECHO) " Here is a summary of the available targets:"
|
@$(ECHO) " Here is a summary of the available targets:"
|
||||||
@$(ECHO)
|
@$(ECHO)
|
||||||
|
@$(ECHO) " [Source tree preparation]"
|
||||||
|
@$(ECHO) " prepare - Install GIT commit message template"
|
||||||
@$(ECHO) " [Tool Installers]"
|
@$(ECHO) " [Tool Installers]"
|
||||||
@$(ECHO) " arm_sdk_install - Install the GNU ARM gcc toolchain"
|
@$(ECHO) " arm_sdk_install - Install the GNU ARM gcc toolchain"
|
||||||
@$(ECHO) " qt_sdk_install - Install the QT development tools"
|
@$(ECHO) " qt_sdk_install - Install the QT development tools"
|
||||||
|
21
WHATSNEW.txt
21
WHATSNEW.txt
@ -1,3 +1,20 @@
|
|||||||
|
--- RELEASE-14.01-RC1 --- Cruising Ratt ---
|
||||||
|
This is the RC1 for the first 2014 software release.
|
||||||
|
This version still supports the CopterControl and CC3D.
|
||||||
|
It includes some major "under the hood" changes like migration
|
||||||
|
to Qt5.1 and QtQuick2 widgets, an overhaul of UAVTalk to improve
|
||||||
|
Telemetry and OPLink reliability.
|
||||||
|
Some additions in this release:
|
||||||
|
- "Rattitude" flight mode;
|
||||||
|
- Altitude Hold Reimplementation;
|
||||||
|
- Multiple PID banks;
|
||||||
|
- "Cruise Control"
|
||||||
|
|
||||||
|
the full list of features, improvements and bufixes shipping
|
||||||
|
in this release is accessible here:
|
||||||
|
|
||||||
|
http://progress.openpilot.org/browse/OP/fixforversion/10220
|
||||||
|
|
||||||
--- RELEASE-13.06.04 ---
|
--- RELEASE-13.06.04 ---
|
||||||
This maintenance release includes the following fixes missing in (previously not released to public) RELEASE-13.06.03.
|
This maintenance release includes the following fixes missing in (previously not released to public) RELEASE-13.06.03.
|
||||||
- Fixed issues with Google Maps;
|
- Fixed issues with Google Maps;
|
||||||
@ -6,7 +23,8 @@ This maintenance release includes the following fixes missing in (previously not
|
|||||||
JIRA issues addressed in this maintenance release:
|
JIRA issues addressed in this maintenance release:
|
||||||
OP-1044, OP-1070, OP-1072
|
OP-1044, OP-1070, OP-1072
|
||||||
Use the following link for a comprehensive list of issues addressed by this release
|
Use the following link for a comprehensive list of issues addressed by this release
|
||||||
http://progress.openpilot.org/browse/OP-1070
|
|
||||||
|
http://progress.openpilot.org/issues/?filter=11060
|
||||||
|
|
||||||
--- RELEASE-13.06.03 ---
|
--- RELEASE-13.06.03 ---
|
||||||
|
|
||||||
@ -296,6 +314,7 @@ GCS code changes:
|
|||||||
- added OPLinkMini configuration page;
|
- added OPLinkMini configuration page;
|
||||||
- hardware options are now dynamically enabled/disabled to allow supported configurations only;
|
- hardware options are now dynamically enabled/disabled to allow supported configurations only;
|
||||||
- new artwork for all boards everywhere;
|
- new artwork for all boards everywhere;
|
||||||
|
|
||||||
- optimised some 3D models;
|
- optimised some 3D models;
|
||||||
- new About dialog showing version info and contributors list;
|
- new About dialog showing version info and contributors list;
|
||||||
- fixed badly broken HiTL options dialog;
|
- fixed badly broken HiTL options dialog;
|
||||||
|
@ -331,6 +331,7 @@ static void manualControlTask(__attribute__((unused)) void *parameters)
|
|||||||
if (settings.FailsafeBehavior != MANUALCONTROLSETTINGS_FAILSAFEBEHAVIOR_NONE) {
|
if (settings.FailsafeBehavior != MANUALCONTROLSETTINGS_FAILSAFEBEHAVIOR_NONE) {
|
||||||
FlightStatusGet(&flightStatus);
|
FlightStatusGet(&flightStatus);
|
||||||
|
|
||||||
|
cmd.FlightModeSwitchPosition = (uint8_t)settings.FailsafeBehavior - 1;
|
||||||
flightStatus.FlightMode = settings.FlightModePosition[settings.FailsafeBehavior - 1];
|
flightStatus.FlightMode = settings.FlightModePosition[settings.FailsafeBehavior - 1];
|
||||||
FlightStatusSet(&flightStatus);
|
FlightStatusSet(&flightStatus);
|
||||||
}
|
}
|
||||||
@ -358,7 +359,6 @@ static void manualControlTask(__attribute__((unused)) void *parameters)
|
|||||||
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
|
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmd.FlightModeSwitchPosition = (uint8_t)255;
|
|
||||||
} else if (valid_input_detected) {
|
} else if (valid_input_detected) {
|
||||||
AlarmsClear(SYSTEMALARMS_ALARM_MANUALCONTROL);
|
AlarmsClear(SYSTEMALARMS_ALARM_MANUALCONTROL);
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
#if defined(PIOS_STABILIZATION_STACK_SIZE)
|
#if defined(PIOS_STABILIZATION_STACK_SIZE)
|
||||||
#define STACK_SIZE_BYTES PIOS_STABILIZATION_STACK_SIZE
|
#define STACK_SIZE_BYTES PIOS_STABILIZATION_STACK_SIZE
|
||||||
#else
|
#else
|
||||||
#define STACK_SIZE_BYTES 790
|
#define STACK_SIZE_BYTES 840
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TASK_PRIORITY (tskIDLE_PRIORITY + 4)
|
#define TASK_PRIORITY (tskIDLE_PRIORITY + 4)
|
||||||
|
@ -524,9 +524,11 @@ static void updateStats()
|
|||||||
stats.FlightTime = xTaskGetTickCount() * portTICK_RATE_MS;
|
stats.FlightTime = xTaskGetTickCount() * portTICK_RATE_MS;
|
||||||
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
|
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
|
||||||
// POSIX port of FreeRTOS doesn't have xPortGetFreeHeapSize()
|
// POSIX port of FreeRTOS doesn't have xPortGetFreeHeapSize()
|
||||||
|
stats.SystemModStackRemaining = 128;
|
||||||
stats.HeapRemaining = 10240;
|
stats.HeapRemaining = 10240;
|
||||||
#else
|
#else
|
||||||
stats.HeapRemaining = xPortGetFreeHeapSize();
|
stats.HeapRemaining = xPortGetFreeHeapSize();
|
||||||
|
stats.SystemModStackRemaining = uxTaskGetStackHighWaterMark(NULL) * 4;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Get Irq stack status
|
// Get Irq stack status
|
||||||
|
@ -250,7 +250,7 @@ static void PIOS_SBus_UpdateState(struct pios_sbus_state *state, uint8_t b)
|
|||||||
state->received_data[state->byte_count - 1] = b;
|
state->received_data[state->byte_count - 1] = b;
|
||||||
state->byte_count++;
|
state->byte_count++;
|
||||||
} else {
|
} else {
|
||||||
if (b == SBUS_EOF_BYTE) {
|
if (b == SBUS_EOF_BYTE || (b % SBUS_R7008SB_EOF_COUNTER_MASK) == SBUS_R7008SB_EOF_BYTE) {
|
||||||
/* full frame received */
|
/* full frame received */
|
||||||
uint8_t flags = state->received_data[SBUS_FRAME_LENGTH - 3];
|
uint8_t flags = state->received_data[SBUS_FRAME_LENGTH - 3];
|
||||||
if (flags & SBUS_FLAG_FL) {
|
if (flags & SBUS_FLAG_FL) {
|
||||||
|
@ -50,7 +50,14 @@
|
|||||||
* 0x08 - failsafe flag,
|
* 0x08 - failsafe flag,
|
||||||
* 0xf0 - reserved
|
* 0xf0 - reserved
|
||||||
* 1 byte - 0x00 (end of frame byte)
|
* 1 byte - 0x00 (end of frame byte)
|
||||||
|
*
|
||||||
|
* The R7008SB receiver has four different end of frame bytes, which rotates in order:
|
||||||
|
* 00000100
|
||||||
|
* 00010100
|
||||||
|
* 00100100
|
||||||
|
* 00110100
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SBUS_FRAME_LENGTH (1 + 22 + 1 + 1)
|
#define SBUS_FRAME_LENGTH (1 + 22 + 1 + 1)
|
||||||
#define SBUS_SOF_BYTE 0x0f
|
#define SBUS_SOF_BYTE 0x0f
|
||||||
#define SBUS_EOF_BYTE 0x00
|
#define SBUS_EOF_BYTE 0x00
|
||||||
@ -59,6 +66,9 @@
|
|||||||
#define SBUS_FLAG_FL 0x04
|
#define SBUS_FLAG_FL 0x04
|
||||||
#define SBUS_FLAG_FS 0x08
|
#define SBUS_FLAG_FS 0x08
|
||||||
|
|
||||||
|
#define SBUS_R7008SB_EOF_COUNTER_MASK 0xCF
|
||||||
|
#define SBUS_R7008SB_EOF_BYTE 0x04
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* S.Bus protocol provides 16 proportional and 2 discrete channels.
|
* S.Bus protocol provides 16 proportional and 2 discrete channels.
|
||||||
* Do not change unless driver code is updated accordingly.
|
* Do not change unless driver code is updated accordingly.
|
||||||
|
@ -154,11 +154,15 @@
|
|||||||
|
|
||||||
/* Task stack sizes */
|
/* Task stack sizes */
|
||||||
#define PIOS_ACTUATOR_STACK_SIZE 1020
|
#define PIOS_ACTUATOR_STACK_SIZE 1020
|
||||||
#define PIOS_MANUAL_STACK_SIZE 800
|
#define PIOS_MANUAL_STACK_SIZE 850
|
||||||
|
#ifdef DIAG_TASKS
|
||||||
|
#define PIOS_SYSTEM_STACK_SIZE 720
|
||||||
|
#else
|
||||||
#define PIOS_SYSTEM_STACK_SIZE 660
|
#define PIOS_SYSTEM_STACK_SIZE 660
|
||||||
|
#endif
|
||||||
#define PIOS_STABILIZATION_STACK_SIZE 790
|
#define PIOS_STABILIZATION_STACK_SIZE 790
|
||||||
#define PIOS_TELEM_STACK_SIZE 800
|
#define PIOS_TELEM_STACK_SIZE 540
|
||||||
#define PIOS_EVENTDISPATCHER_STACK_SIZE 130
|
#define PIOS_EVENTDISPATCHER_STACK_SIZE 150
|
||||||
|
|
||||||
/* This can't be too high to stop eventdispatcher thread overflowing */
|
/* This can't be too high to stop eventdispatcher thread overflowing */
|
||||||
#define PIOS_EVENTDISAPTCHER_QUEUE 10
|
#define PIOS_EVENTDISAPTCHER_QUEUE 10
|
||||||
|
@ -5,6 +5,124 @@ TEMPLATE = subdirs
|
|||||||
# Copy Qt runtime libraries into the build directory (to run or package)
|
# Copy Qt runtime libraries into the build directory (to run or package)
|
||||||
equals(copydata, 1) {
|
equals(copydata, 1) {
|
||||||
|
|
||||||
|
GCS_LIBRARY_PATH
|
||||||
|
|
||||||
|
linux-* {
|
||||||
|
|
||||||
|
QT_LIBS = libQt5Core.so.5 \
|
||||||
|
libQt5Gui.so.5 \
|
||||||
|
libQt5Widgets.so.5 \
|
||||||
|
libQt5Network.so.5 \
|
||||||
|
libQt5OpenGL.so.5 \
|
||||||
|
libQt5Sql.so.5 \
|
||||||
|
libQt5Svg.so.5 \
|
||||||
|
libQt5Test.so.5 \
|
||||||
|
libQt5Xml.so.5 \
|
||||||
|
libQt5Declarative.so.5 \
|
||||||
|
libQt5XmlPatterns.so.5 \
|
||||||
|
libQt5Script.so.5 \
|
||||||
|
libQt5Concurrent.so.5 \
|
||||||
|
libQt5PrintSupport.so.5 \
|
||||||
|
libQt5SerialPort.so.5 \
|
||||||
|
libQt5Multimedia.so.5 \
|
||||||
|
libQt5MultimediaWidgets.so.5 \
|
||||||
|
libQt5Quick.so.5 \
|
||||||
|
libQt5Qml.so.5 \
|
||||||
|
libQt5V8.so.5 \
|
||||||
|
libQt5DBus.so.5 \
|
||||||
|
libQt5QuickParticles.so.5 \
|
||||||
|
libicui18n.so.51 \
|
||||||
|
libicuuc.so.51 \
|
||||||
|
libicudata.so.51
|
||||||
|
|
||||||
|
data_copy.commands += -@$(MKDIR) $$targetPath(\"$$GCS_QT_LIBRARY_PATH\") $$addNewline()
|
||||||
|
for(lib, QT_LIBS) {
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_LIBS]/$$lib\") $$targetPath(\"$$GCS_QT_LIBRARY_PATH/$$lib\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
# create Qt plugin directories
|
||||||
|
QT_PLUGIN_DIRS = iconengines \
|
||||||
|
imageformats \
|
||||||
|
platforms \
|
||||||
|
mediaservice \
|
||||||
|
sqldrivers
|
||||||
|
for(dir, QT_PLUGIN_DIRS) {
|
||||||
|
data_copy.commands += -@$(MKDIR) $$targetPath(\"$$GCS_QT_PLUGINS_PATH/$$dir\") $$addNewline()
|
||||||
|
}
|
||||||
|
QT_PLUGIN_LIBS = iconengines/libqsvgicon.so \
|
||||||
|
imageformats/libqgif.so \
|
||||||
|
imageformats/libqico.so \
|
||||||
|
imageformats/libqjpeg.so \
|
||||||
|
imageformats/libqmng.so \
|
||||||
|
imageformats/libqsvg.so \
|
||||||
|
imageformats/libqtiff.so \
|
||||||
|
platforms/libqxcb.so \
|
||||||
|
sqldrivers/libqsqlite.so
|
||||||
|
for(lib, QT_PLUGIN_LIBS) {
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_PLUGINS]/$$lib\") $$targetPath(\"$$GCS_QT_PLUGINS_PATH/$$lib\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
# create QtQuick2 plugin directories
|
||||||
|
QT_QUICK2_DIRS = QtQuick \
|
||||||
|
QtQuick.2 \
|
||||||
|
QtQuick/Layouts \
|
||||||
|
QtQuick/LocalStorage \
|
||||||
|
QtQuick/Particles.2 \
|
||||||
|
QtQuick/PrivateWidgets \
|
||||||
|
QtQuick/Window.2 \
|
||||||
|
QtQuick/XmlListModel
|
||||||
|
for(dir, QT_QUICK2_DIRS) {
|
||||||
|
data_copy.commands += -@$(MKDIR) $$targetPath(\"$$GCS_QT_QML_PATH/$$dir\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
# Copy QtQuick2 complete directories
|
||||||
|
# These directories have a lot of files
|
||||||
|
# Easier to copy everything
|
||||||
|
QTQ_WHOLE_DIRS = QtQuick/Controls \
|
||||||
|
QtQuick/Dialogs
|
||||||
|
for(dir, QTQ_WHOLE_DIRS) {
|
||||||
|
data_copy.commands += $(COPY_DIR) $$targetPath(\"$$[QT_INSTALL_QML]/$$dir\") $$targetPath(\"$$GCS_QT_QML_PATH/$$dir\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove the few unwanted libs after whole dir copy
|
||||||
|
QT_QUICK2_DELS = QtQuick/Controls/libqtquickcontrolsplugin.so \
|
||||||
|
QtQuick/Controls/Private/libqtquickcontrolsprivateplugin.so \
|
||||||
|
QtQuick/Dialogs/libdialogplugin.so
|
||||||
|
|
||||||
|
for(delfile, QT_QUICK2_DELS) {
|
||||||
|
data_copy.commands += $(DEL_FILE) $$targetPath(\"$$GCS_QT_QML_PATH/$${delfile}\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remaining QtQuick plugin libs
|
||||||
|
QT_QUICK2_DLLS = QtQuick.2/libqtquick2plugin.so \
|
||||||
|
QtQuick.2/plugins.qmltypes \
|
||||||
|
QtQuick.2/qmldir \
|
||||||
|
QtQuick/Layouts/libqquicklayoutsplugin.so \
|
||||||
|
QtQuick/Layouts/plugins.qmltypes \
|
||||||
|
QtQuick/Layouts/qmldir \
|
||||||
|
QtQuick/LocalStorage/libqmllocalstorageplugin.so \
|
||||||
|
QtQuick/LocalStorage/plugins.qmltypes \
|
||||||
|
QtQuick/LocalStorage/qmldir \
|
||||||
|
QtQuick/Particles.2/libparticlesplugin.so \
|
||||||
|
QtQuick/Particles.2/plugins.qmltypes \
|
||||||
|
QtQuick/Particles.2/qmldir \
|
||||||
|
QtQuick/PrivateWidgets/libwidgetsplugin.so \
|
||||||
|
QtQuick/PrivateWidgets/plugins.qmltypes \
|
||||||
|
QtQuick/PrivateWidgets/qmldir \
|
||||||
|
QtQuick/Window.2/libwindowplugin.so \
|
||||||
|
QtQuick/Window.2/plugins.qmltypes \
|
||||||
|
QtQuick/Window.2/qmldir \
|
||||||
|
QtQuick/XmlListModel/libqmlxmllistmodelplugin.so \
|
||||||
|
QtQuick/XmlListModel/plugins.qmltypes \
|
||||||
|
QtQuick/XmlListModel/qmldir
|
||||||
|
|
||||||
|
for(lib, QT_QUICK2_DLLS) {
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_QML]/$$lib\") $$targetPath(\"$$GCS_QT_QML_PATH/$$lib\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
data_copy.target = FORCE
|
||||||
|
QMAKE_EXTRA_TARGETS += data_copy
|
||||||
|
}
|
||||||
# Windows release only, no debug target DLLs ending with 'd'
|
# Windows release only, no debug target DLLs ending with 'd'
|
||||||
# It is assumed that SDL.dll can be found in the same directory as mingw32-make.exe
|
# It is assumed that SDL.dll can be found in the same directory as mingw32-make.exe
|
||||||
win32 {
|
win32 {
|
||||||
@ -146,11 +264,37 @@ equals(copydata, 1) {
|
|||||||
ssleay32.dll \
|
ssleay32.dll \
|
||||||
libeay32.dll
|
libeay32.dll
|
||||||
for(dll, OPENSSL_DLLS) {
|
for(dll, OPENSSL_DLLS) {
|
||||||
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$(OPENSSL)/$$dll\") $$targetPath(\"$$GCS_APP_PATH/$$dll\") $$addNewline()
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$(OPENSSL_DIR)/$$dll\") $$targetPath(\"$$GCS_APP_PATH/$$dll\") $$addNewline()
|
||||||
}
|
}
|
||||||
|
|
||||||
data_copy.target = FORCE
|
data_copy.target = FORCE
|
||||||
QMAKE_EXTRA_TARGETS += data_copy
|
QMAKE_EXTRA_TARGETS += data_copy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macx{
|
||||||
|
#NOTE: debug dylib can be copied as they will be cleaned out with packaging scripts
|
||||||
|
#standard plugins directory (will copy just dylib, plugins.qmltypes and qmldir
|
||||||
|
QT_QUICK2_PLUGINS = QtQuick.2 QtQuick/Layouts QtQuick/LocalStorage QtQuick/Particles.2 QtQuick/PrivateWidgets QtQuick/Window.2 QtQuick/XmlListModel
|
||||||
|
#those directories will be fully copied to dest
|
||||||
|
QT_QUICK2_FULL_DIRS = QtQuick/Controls QtQuick/Dialogs
|
||||||
|
|
||||||
|
#create QtQuick dir (that will host all subdirs)
|
||||||
|
data_copy.commands += -@$(MKDIR) $$targetPath(\"$$GCS_QT_QML_PATH/QtQuick\") $$addNewline()
|
||||||
|
|
||||||
|
for(dir, QT_QUICK2_FULL_DIRS) {
|
||||||
|
#data_copy.commands += -@$(MKDIR) $$targetPath(\"$$GCS_QT_QML_PATH/$$dir\") $$addNewline()
|
||||||
|
data_copy.commands += $(COPY_DIR) $$targetPath(\"$$[QT_INSTALL_QML]/$$dir\") $$targetPath(\"$$GCS_QT_QML_PATH/$$dir\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
for(lib, QT_QUICK2_PLUGINS) {
|
||||||
|
data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_QT_QML_PATH/$$lib\") $$addNewline()
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_QML]/$$lib/\"*.dylib) $$targetPath(\"$$GCS_QT_QML_PATH/$$lib/\") $$addNewline()
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_QML]/$$lib/plugins.qmltypes\") $$targetPath(\"$$GCS_QT_QML_PATH/$$lib/plugins.qmltypes\") $$addNewline()
|
||||||
|
data_copy.commands += $(COPY_FILE) $$targetPath(\"$$[QT_INSTALL_QML]/$$lib/qmldir\") $$targetPath(\"$$GCS_QT_QML_PATH/$$lib/qmldir\") $$addNewline()
|
||||||
|
}
|
||||||
|
|
||||||
|
data_copy.target = FORCE
|
||||||
|
QMAKE_EXTRA_TARGETS += data_copy
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,7 @@ macx {
|
|||||||
GCS_APP_TARGET = "OpenPilot GCS"
|
GCS_APP_TARGET = "OpenPilot GCS"
|
||||||
GCS_LIBRARY_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Plugins
|
GCS_LIBRARY_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Plugins
|
||||||
GCS_PLUGIN_PATH = $$GCS_LIBRARY_PATH
|
GCS_PLUGIN_PATH = $$GCS_LIBRARY_PATH
|
||||||
|
GCS_QT_QML_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Imports
|
||||||
GCS_LIBEXEC_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Resources
|
GCS_LIBEXEC_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Resources
|
||||||
GCS_DATA_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Resources
|
GCS_DATA_PATH = $$GCS_APP_PATH/$${GCS_APP_TARGET}.app/Contents/Resources
|
||||||
GCS_DATA_BASENAME = Resources
|
GCS_DATA_BASENAME = Resources
|
||||||
@ -89,6 +90,9 @@ macx {
|
|||||||
} else {
|
} else {
|
||||||
GCS_APP_WRAPPER = openpilotgcs
|
GCS_APP_WRAPPER = openpilotgcs
|
||||||
GCS_APP_TARGET = openpilotgcs.bin
|
GCS_APP_TARGET = openpilotgcs.bin
|
||||||
|
GCS_QT_LIBRARY_PATH = $$GCS_BUILD_TREE/$$GCS_LIBRARY_BASENAME/qt5
|
||||||
|
GCS_QT_PLUGINS_PATH = $$GCS_BUILD_TREE/$$GCS_LIBRARY_BASENAME/qt5/plugins
|
||||||
|
GCS_QT_QML_PATH = $$GCS_BUILD_TREE/$$GCS_LIBRARY_BASENAME/qt5/qml
|
||||||
}
|
}
|
||||||
GCS_LIBRARY_PATH = $$GCS_BUILD_TREE/$$GCS_LIBRARY_BASENAME/openpilotgcs
|
GCS_LIBRARY_PATH = $$GCS_BUILD_TREE/$$GCS_LIBRARY_BASENAME/openpilotgcs
|
||||||
GCS_PLUGIN_PATH = $$GCS_LIBRARY_PATH/plugins
|
GCS_PLUGIN_PATH = $$GCS_LIBRARY_PATH/plugins
|
||||||
|
@ -21,6 +21,7 @@ macx {
|
|||||||
QMAKE_CC = /usr/bin/gcc
|
QMAKE_CC = /usr/bin/gcc
|
||||||
QMAKE_CXX = /usr/bin/g++
|
QMAKE_CXX = /usr/bin/g++
|
||||||
QMAKE_LINK = /usr/bin/g++
|
QMAKE_LINK = /usr/bin/g++
|
||||||
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
|
||||||
}
|
}
|
||||||
|
|
||||||
include(openpilotgcs.pri)
|
include(openpilotgcs.pri)
|
||||||
|
@ -35,7 +35,7 @@ Item {
|
|||||||
Rotation {
|
Rotation {
|
||||||
angle: -AttitudeState.Roll
|
angle: -AttitudeState.Roll
|
||||||
origin.x : world.parent.width/2
|
origin.x : world.parent.width/2
|
||||||
origin.y : world.parent.height/2
|
origin.y : horizontCenter
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ macx {
|
|||||||
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../Plugins/$${PROVIDER}/
|
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../Plugins/$${PROVIDER}/
|
||||||
} else:linux-* {
|
} else:linux-* {
|
||||||
#do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
|
#do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
|
||||||
QMAKE_RPATHDIR += \$\$ORIGIN
|
QMAKE_RPATHDIR = \$\$ORIGIN
|
||||||
QMAKE_RPATHDIR += \$\$ORIGIN/..
|
QMAKE_RPATHDIR += \$\$ORIGIN/..
|
||||||
QMAKE_RPATHDIR += \$\$ORIGIN/../..
|
QMAKE_RPATHDIR += \$\$ORIGIN/../..
|
||||||
GCS_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
|
GCS_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
|
||||||
@ -45,7 +45,7 @@ contains(QT_CONFIG, reduce_exports):CONFIG += hGCS_symbols
|
|||||||
CONFIG += plugin plugin_with_soname
|
CONFIG += plugin plugin_with_soname
|
||||||
|
|
||||||
!macx {
|
!macx {
|
||||||
target.path = /$$GCS_LIBRARY_BASENAME/opnepilotgcs/plugins/$$PROVIDER
|
target.path = /$$GCS_LIBRARY_BASENAME/openpilotgcs/plugins/$$PROVIDER
|
||||||
pluginspec.files += $${TARGET}.pluginspec
|
pluginspec.files += $${TARGET}.pluginspec
|
||||||
pluginspec.path = /$$GCS_LIBRARY_BASENAME/openpilotgcs/plugins/$$PROVIDER
|
pluginspec.path = /$$GCS_LIBRARY_BASENAME/openpilotgcs/plugins/$$PROVIDER
|
||||||
INSTALLS += target pluginspec
|
INSTALLS += target pluginspec
|
||||||
|
@ -79,17 +79,23 @@ ConfigInputWidget::ConfigInputWidget(QWidget *parent) :
|
|||||||
unsigned int indexRT = 0;
|
unsigned int indexRT = 0;
|
||||||
foreach(QString name, manualSettingsObj->getField("ChannelNumber")->getElementNames()) {
|
foreach(QString name, manualSettingsObj->getField("ChannelNumber")->getElementNames()) {
|
||||||
Q_ASSERT(index < ManualControlSettings::CHANNELGROUPS_NUMELEM);
|
Q_ASSERT(index < ManualControlSettings::CHANNELGROUPS_NUMELEM);
|
||||||
inputChannelForm *inpForm = new inputChannelForm(this, index == 0);
|
InputChannelForm *inpForm = new InputChannelForm(this, index == 0);
|
||||||
ui->channelSettings->layout()->addWidget(inpForm); // Add the row to the UI
|
ui->channelSettings->layout()->addWidget(inpForm); // Add the row to the UI
|
||||||
inpForm->setName(name);
|
inpForm->setName(name);
|
||||||
addWidgetBinding("ManualControlSettings", "ChannelGroups", inpForm->ui->channelGroup, index);
|
addWidgetBinding("ManualControlSettings", "ChannelGroups", inpForm->ui->channelGroup, index);
|
||||||
addWidgetBinding("ManualControlSettings", "ChannelNumber", inpForm->ui->channelNumber, index);
|
addWidgetBinding("ManualControlSettings", "ChannelNumber", inpForm->ui->channelNumber, index);
|
||||||
addWidgetBinding("ManualControlSettings", "ChannelMin", inpForm->ui->channelMin, index);
|
|
||||||
|
// The order of the following three binding calls is important. Since the values will be populated
|
||||||
|
// in reverse order of the binding order otherwise the 'Reversed' logic will floor the neutral value
|
||||||
|
// to the max value ( which is smaller than the neutral value when reversed )
|
||||||
addWidgetBinding("ManualControlSettings", "ChannelNeutral", inpForm->ui->channelNeutral, index);
|
addWidgetBinding("ManualControlSettings", "ChannelNeutral", inpForm->ui->channelNeutral, index);
|
||||||
|
addWidgetBinding("ManualControlSettings", "ChannelNeutral", inpForm->ui->neutralValue, index);
|
||||||
|
addWidgetBinding("ManualControlSettings", "ChannelMin", inpForm->ui->channelMin, index);
|
||||||
addWidgetBinding("ManualControlSettings", "ChannelMax", inpForm->ui->channelMax, index);
|
addWidgetBinding("ManualControlSettings", "ChannelMax", inpForm->ui->channelMax, index);
|
||||||
|
|
||||||
addWidget(inpForm->ui->channelNumberDropdown);
|
addWidget(inpForm->ui->channelNumberDropdown);
|
||||||
addWidget(inpForm->ui->channelRev);
|
|
||||||
addWidget(inpForm->ui->channelResponseTime);
|
addWidget(inpForm->ui->channelResponseTime);
|
||||||
|
addWidget(inpForm->ui->channelRev);
|
||||||
|
|
||||||
// Input filter response time fields supported for some channels only
|
// Input filter response time fields supported for some channels only
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
@ -53,7 +53,6 @@ ConfigPipXtremeWidget::ConfigPipXtremeWidget(QWidget *parent) : ConfigTaskWidget
|
|||||||
} else {
|
} else {
|
||||||
qDebug() << "Error: Object is unknown (OPLinkSettings).";
|
qDebug() << "Error: Object is unknown (OPLinkSettings).";
|
||||||
}
|
}
|
||||||
autoLoadWidgets();
|
|
||||||
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
|
||||||
if (!settings->useExpertMode()) {
|
if (!settings->useExpertMode()) {
|
||||||
m_oplink->Apply->setVisible(false);
|
m_oplink->Apply->setVisible(false);
|
||||||
@ -114,7 +113,7 @@ ConfigPipXtremeWidget::ConfigPipXtremeWidget(QWidget *parent) : ConfigTaskWidget
|
|||||||
|
|
||||||
// Request and update of the setting object.
|
// Request and update of the setting object.
|
||||||
settingsUpdated = false;
|
settingsUpdated = false;
|
||||||
|
autoLoadWidgets();
|
||||||
disableMouseWheelEvents();
|
disableMouseWheelEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +92,10 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
|
|||||||
addWidget(ui->realTimeUpdates_8);
|
addWidget(ui->realTimeUpdates_8);
|
||||||
connect(ui->realTimeUpdates_12, SIGNAL(toggled(bool)), this, SLOT(realtimeUpdatesSlot(bool)));
|
connect(ui->realTimeUpdates_12, SIGNAL(toggled(bool)), this, SLOT(realtimeUpdatesSlot(bool)));
|
||||||
addWidget(ui->realTimeUpdates_12);
|
addWidget(ui->realTimeUpdates_12);
|
||||||
|
connect(ui->realTimeUpdates_7, SIGNAL(toggled(bool)), this, SLOT(realtimeUpdatesSlot(bool)));
|
||||||
|
addWidget(ui->realTimeUpdates_7);
|
||||||
|
connect(ui->realTimeUpdates_9, SIGNAL(toggled(bool)), this, SLOT(realtimeUpdatesSlot(bool)));
|
||||||
|
addWidget(ui->realTimeUpdates_9);
|
||||||
|
|
||||||
connect(ui->checkBox_7, SIGNAL(toggled(bool)), this, SLOT(linkCheckBoxes(bool)));
|
connect(ui->checkBox_7, SIGNAL(toggled(bool)), this, SLOT(linkCheckBoxes(bool)));
|
||||||
addWidget(ui->checkBox_7);
|
addWidget(ui->checkBox_7);
|
||||||
@ -143,6 +147,8 @@ void ConfigStabilizationWidget::realtimeUpdatesSlot(bool value)
|
|||||||
ui->realTimeUpdates_6->setChecked(value);
|
ui->realTimeUpdates_6->setChecked(value);
|
||||||
ui->realTimeUpdates_8->setChecked(value);
|
ui->realTimeUpdates_8->setChecked(value);
|
||||||
ui->realTimeUpdates_12->setChecked(value);
|
ui->realTimeUpdates_12->setChecked(value);
|
||||||
|
ui->realTimeUpdates_7->setChecked(value);
|
||||||
|
ui->realTimeUpdates_9->setChecked(value);
|
||||||
|
|
||||||
if (value && !realtimeUpdates->isActive()) {
|
if (value && !realtimeUpdates->isActive()) {
|
||||||
realtimeUpdates->start(AUTOMATIC_UPDATE_RATE);
|
realtimeUpdates->start(AUTOMATIC_UPDATE_RATE);
|
||||||
|
@ -128,8 +128,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>768</width>
|
<width>766</width>
|
||||||
<height>742</height>
|
<height>745</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
@ -151,7 +151,7 @@
|
|||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QGroupBox" name="groupBox_5">
|
<widget class="QGroupBox" name="groupBox_5">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string/>
|
<string>Input Channel Configuration</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
@ -277,13 +277,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="Line" name="line_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="wizard">
|
<widget class="QWidget" name="wizard">
|
||||||
@ -388,6 +381,12 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="configurationWizard">
|
<widget class="QPushButton" name="configurationWizard">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>210</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Start Configuration Wizard</string>
|
<string>Start Configuration Wizard</string>
|
||||||
</property>
|
</property>
|
||||||
@ -559,8 +558,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>768</width>
|
<width>766</width>
|
||||||
<height>742</height>
|
<height>745</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_7" rowstretch="1,0,0,0">
|
<layout class="QGridLayout" name="gridLayout_7" rowstretch="1,0,0,0">
|
||||||
@ -2183,8 +2182,8 @@ Setup the flight mode channel on the RC Input tab if you have not done so alread
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>504</width>
|
<width>766</width>
|
||||||
<height>156</height>
|
<height>745</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
#include "manualcontrolsettings.h"
|
#include "manualcontrolsettings.h"
|
||||||
#include "gcsreceiver.h"
|
#include "gcsreceiver.h"
|
||||||
|
|
||||||
inputChannelForm::inputChannelForm(QWidget *parent, bool showlegend) :
|
InputChannelForm::InputChannelForm(QWidget *parent, bool showlegend) :
|
||||||
ConfigTaskWidget(parent),
|
ConfigTaskWidget(parent),
|
||||||
ui(new Ui::inputChannelForm)
|
ui(new Ui::InputChannelForm)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ inputChannelForm::inputChannelForm(QWidget *parent, bool showlegend) :
|
|||||||
layout()->removeWidget(ui->legend4);
|
layout()->removeWidget(ui->legend4);
|
||||||
layout()->removeWidget(ui->legend5);
|
layout()->removeWidget(ui->legend5);
|
||||||
layout()->removeWidget(ui->legend6);
|
layout()->removeWidget(ui->legend6);
|
||||||
|
layout()->removeWidget(ui->legend7);
|
||||||
delete ui->legend0;
|
delete ui->legend0;
|
||||||
delete ui->legend1;
|
delete ui->legend1;
|
||||||
delete ui->legend2;
|
delete ui->legend2;
|
||||||
@ -26,12 +27,14 @@ inputChannelForm::inputChannelForm(QWidget *parent, bool showlegend) :
|
|||||||
delete ui->legend4;
|
delete ui->legend4;
|
||||||
delete ui->legend5;
|
delete ui->legend5;
|
||||||
delete ui->legend6;
|
delete ui->legend6;
|
||||||
|
delete ui->legend7;
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(ui->channelMin, SIGNAL(valueChanged(int)), this, SLOT(minMaxUpdated()));
|
connect(ui->channelMin, SIGNAL(valueChanged(int)), this, SLOT(minMaxUpdated()));
|
||||||
connect(ui->channelMax, SIGNAL(valueChanged(int)), this, SLOT(minMaxUpdated()));
|
connect(ui->channelMax, SIGNAL(valueChanged(int)), this, SLOT(minMaxUpdated()));
|
||||||
|
connect(ui->neutralValue, SIGNAL(valueChanged(int)), this, SLOT(neutralUpdated()));
|
||||||
connect(ui->channelGroup, SIGNAL(currentIndexChanged(int)), this, SLOT(groupUpdated()));
|
connect(ui->channelGroup, SIGNAL(currentIndexChanged(int)), this, SLOT(groupUpdated()));
|
||||||
connect(ui->channelNeutral, SIGNAL(valueChanged(int)), this, SLOT(neutralUpdated(int)));
|
connect(ui->channelRev, SIGNAL(toggled(bool)), this, SLOT(reversedUpdated()));
|
||||||
|
|
||||||
// This is awkward but since we want the UI to be a dropdown but the field is not an enum
|
// This is awkward but since we want the UI to be a dropdown but the field is not an enum
|
||||||
// it breaks the UAUVObject widget relation of the task gadget. Running the data through
|
// it breaks the UAUVObject widget relation of the task gadget. Running the data through
|
||||||
@ -43,17 +46,17 @@ inputChannelForm::inputChannelForm(QWidget *parent, bool showlegend) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inputChannelForm::~inputChannelForm()
|
InputChannelForm::~InputChannelForm()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void inputChannelForm::setName(QString &name)
|
void InputChannelForm::setName(QString &name)
|
||||||
{
|
{
|
||||||
ui->channelName->setText(name);
|
ui->channelName->setText(name);
|
||||||
QFontMetrics metrics(ui->channelName->font());
|
QFontMetrics metrics(ui->channelName->font());
|
||||||
int width = metrics.width(name) + 5;
|
int width = metrics.width(name) + 5;
|
||||||
foreach(inputChannelForm * form, parent()->findChildren<inputChannelForm *>()) {
|
foreach(InputChannelForm * form, parent()->findChildren<InputChannelForm *>()) {
|
||||||
if (form == this) {
|
if (form == this) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -69,7 +72,7 @@ void inputChannelForm::setName(QString &name)
|
|||||||
/**
|
/**
|
||||||
* Update the direction of the slider and boundaries
|
* Update the direction of the slider and boundaries
|
||||||
*/
|
*/
|
||||||
void inputChannelForm::minMaxUpdated()
|
void InputChannelForm::minMaxUpdated()
|
||||||
{
|
{
|
||||||
bool reverse = ui->channelMin->value() > ui->channelMax->value();
|
bool reverse = ui->channelMin->value() > ui->channelMax->value();
|
||||||
|
|
||||||
@ -85,9 +88,43 @@ void inputChannelForm::minMaxUpdated()
|
|||||||
ui->channelNeutral->setInvertedControls(reverse);
|
ui->channelNeutral->setInvertedControls(reverse);
|
||||||
}
|
}
|
||||||
|
|
||||||
void inputChannelForm::neutralUpdated(int newval)
|
void InputChannelForm::neutralUpdated()
|
||||||
{
|
{
|
||||||
ui->neutral->setText(QString::number(newval));
|
int neutralValue = ui->neutralValue->value();
|
||||||
|
if(ui->channelRev->isChecked()) {
|
||||||
|
if(neutralValue > ui->channelMin->value()) {
|
||||||
|
ui->channelMin->setValue(neutralValue);
|
||||||
|
} else if(neutralValue < ui->channelMax->value()) {
|
||||||
|
ui->channelMax->setValue(neutralValue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(neutralValue < ui->channelMin->value()) {
|
||||||
|
ui->channelMin->setValue(neutralValue);
|
||||||
|
} else if(neutralValue > ui->channelMax->value()) {
|
||||||
|
ui->channelMax->setValue(neutralValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputChannelForm::reversedUpdated()
|
||||||
|
{
|
||||||
|
int value = ui->channelNeutral->value();
|
||||||
|
int min = ui->channelMin->value();
|
||||||
|
int max = ui->channelMax->value();
|
||||||
|
|
||||||
|
if(ui->channelRev->isChecked()) {
|
||||||
|
if(min < max) {
|
||||||
|
ui->channelMax->setValue(min);
|
||||||
|
ui->channelMin->setValue(max);
|
||||||
|
ui->channelNeutral->setValue(value);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(min > max) {
|
||||||
|
ui->channelMax->setValue(min);
|
||||||
|
ui->channelMin->setValue(max);
|
||||||
|
ui->channelNeutral->setValue(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,7 +133,7 @@ void inputChannelForm::neutralUpdated(int newval)
|
|||||||
* I fully admit this is terrible practice to embed data within UI
|
* I fully admit this is terrible practice to embed data within UI
|
||||||
* like this. Open to suggestions. JC 2011-09-07
|
* like this. Open to suggestions. JC 2011-09-07
|
||||||
*/
|
*/
|
||||||
void inputChannelForm::groupUpdated()
|
void InputChannelForm::groupUpdated()
|
||||||
{
|
{
|
||||||
ui->channelNumberDropdown->clear();
|
ui->channelNumberDropdown->clear();
|
||||||
ui->channelNumberDropdown->addItem("Disabled");
|
ui->channelNumberDropdown->addItem("Disabled");
|
||||||
@ -140,7 +177,7 @@ void inputChannelForm::groupUpdated()
|
|||||||
/**
|
/**
|
||||||
* Update the dropdown from the hidden control
|
* Update the dropdown from the hidden control
|
||||||
*/
|
*/
|
||||||
void inputChannelForm::channelDropdownUpdated(int newval)
|
void InputChannelForm::channelDropdownUpdated(int newval)
|
||||||
{
|
{
|
||||||
ui->channelNumber->setValue(newval);
|
ui->channelNumber->setValue(newval);
|
||||||
}
|
}
|
||||||
@ -148,7 +185,7 @@ void inputChannelForm::channelDropdownUpdated(int newval)
|
|||||||
/**
|
/**
|
||||||
* Update the hidden control from the dropdown
|
* Update the hidden control from the dropdown
|
||||||
*/
|
*/
|
||||||
void inputChannelForm::channelNumberUpdated(int newval)
|
void InputChannelForm::channelNumberUpdated(int newval)
|
||||||
{
|
{
|
||||||
ui->channelNumberDropdown->setCurrentIndex(newval);
|
ui->channelNumberDropdown->setCurrentIndex(newval);
|
||||||
}
|
}
|
||||||
|
@ -4,26 +4,27 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include "configinputwidget.h"
|
#include "configinputwidget.h"
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class inputChannelForm;
|
class InputChannelForm;
|
||||||
}
|
}
|
||||||
|
|
||||||
class inputChannelForm : public ConfigTaskWidget {
|
class InputChannelForm : public ConfigTaskWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit inputChannelForm(QWidget *parent = 0, bool showlegend = false);
|
explicit InputChannelForm(QWidget *parent = 0, bool showlegend = false);
|
||||||
~inputChannelForm();
|
~InputChannelForm();
|
||||||
friend class ConfigInputWidget;
|
friend class ConfigInputWidget;
|
||||||
void setName(QString &name);
|
void setName(QString &name);
|
||||||
private slots:
|
private slots:
|
||||||
void minMaxUpdated();
|
void minMaxUpdated();
|
||||||
void neutralUpdated(int);
|
void neutralUpdated();
|
||||||
|
void reversedUpdated();
|
||||||
void groupUpdated();
|
void groupUpdated();
|
||||||
void channelDropdownUpdated(int);
|
void channelDropdownUpdated(int);
|
||||||
void channelNumberUpdated(int);
|
void channelNumberUpdated(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::inputChannelForm *ui;
|
Ui::InputChannelForm *ui;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INPUTCHANNELFORM_H
|
#endif // INPUTCHANNELFORM_H
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>inputChannelForm</class>
|
<class>InputChannelForm</class>
|
||||||
<widget class="QWidget" name="inputChannelForm">
|
<widget class="QWidget" name="InputChannelForm">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>828</width>
|
<width>828</width>
|
||||||
<height>69</height>
|
<height>93</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -26,6 +26,169 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item row="0" column="5" colspan="2">
|
||||||
|
<widget class="QLabel" name="legend4">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel neutral</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
border-radius: 5;
|
||||||
|
margin:1px;
|
||||||
|
font:bold;</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Neutral</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="8">
|
||||||
|
<widget class="QSpinBox" name="channelMax">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="focusPolicy">
|
||||||
|
<enum>Qt::StrongFocus</enum>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::UpDownArrows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1000</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="12">
|
||||||
|
<widget class="QLabel" name="legend7">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Response time</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
border-radius: 5;
|
||||||
|
margin:1px;
|
||||||
|
font:bold;</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>RT</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="10" colspan="2">
|
||||||
|
<widget class="QLabel" name="legend6">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>75</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel values are inverted</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
border-radius: 5;
|
||||||
|
margin:1px;
|
||||||
|
font:bold;</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Reversed</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="legend0">
|
<widget class="QLabel" name="legend0">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
@ -50,6 +213,9 @@
|
|||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel function</string>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
@ -92,6 +258,9 @@ font:bold;</string>
|
|||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel type</string>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
@ -134,6 +303,9 @@ font:bold;</string>
|
|||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel number</string>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
@ -176,6 +348,9 @@ font:bold;</string>
|
|||||||
<bold>true</bold>
|
<bold>true</bold>
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel min</string>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
color: rgb(255, 255, 255);
|
color: rgb(255, 255, 255);
|
||||||
@ -194,48 +369,6 @@ font:bold;</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="5">
|
|
||||||
<widget class="QLabel" name="legend4">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<italic>false</italic>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
border-radius: 5;
|
|
||||||
margin:1px;
|
|
||||||
font:bold;</string>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Neutral</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="channelName">
|
<widget class="QLabel" name="channelName">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -255,31 +388,6 @@ font:bold;</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="channelGroup">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
|
||||||
<horstretch>6</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>25</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>100</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="focusPolicy">
|
|
||||||
<enum>Qt::StrongFocus</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QComboBox" name="channelNumberDropdown">
|
<widget class="QComboBox" name="channelNumberDropdown">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -308,6 +416,31 @@ font:bold;</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="channelGroup">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||||
|
<horstretch>6</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>100</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="focusPolicy">
|
||||||
|
<enum>Qt::StrongFocus</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<widget class="QSpinBox" name="channelMin">
|
<widget class="QSpinBox" name="channelMin">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
@ -320,7 +453,7 @@ font:bold;</string>
|
|||||||
<enum>Qt::StrongFocus</enum>
|
<enum>Qt::StrongFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
<enum>QAbstractSpinBox::UpDownArrows</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>9999</number>
|
<number>9999</number>
|
||||||
@ -346,6 +479,70 @@ font:bold;</string>
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="8">
|
||||||
|
<widget class="QLabel" name="legend5">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<italic>false</italic>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Channel max</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
border-radius: 5;
|
||||||
|
margin:1px;
|
||||||
|
font:bold;</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Max</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="7">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>10</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item row="1" column="5">
|
<item row="1" column="5">
|
||||||
<widget class="QSlider" name="channelNeutral">
|
<widget class="QSlider" name="channelNeutral">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -368,112 +565,13 @@ font:bold;</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="6">
|
<item row="1" column="12">
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>10</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="7">
|
|
||||||
<widget class="QSpinBox" name="channelMax">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>25</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="focusPolicy">
|
|
||||||
<enum>Qt::StrongFocus</enum>
|
|
||||||
</property>
|
|
||||||
<property name="buttonSymbols">
|
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>9999</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>1000</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="7">
|
|
||||||
<widget class="QLabel" name="legend5">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<italic>false</italic>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
border-radius: 5;
|
|
||||||
margin:1px;
|
|
||||||
font:bold;</string>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="lineWidth">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Max</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="9">
|
|
||||||
<widget class="QCheckBox" name="channelRev">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Rev</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="10">
|
|
||||||
<widget class="QSpinBox" name="channelResponseTime">
|
<widget class="QSpinBox" name="channelResponseTime">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@ -501,67 +599,49 @@ even lead to crash. Use with caution.</string>
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
<enum>QAbstractSpinBox::UpDownArrows</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>999</number>
|
<number>999</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="10">
|
<item row="1" column="10" colspan="2">
|
||||||
<widget class="QLabel" name="legend6">
|
<widget class="QFrame" name="frame">
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>30</width>
|
<width>75</width>
|
||||||
<height>26</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<italic>false</italic>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
|
|
||||||
color: rgb(255, 255, 255);
|
|
||||||
border-radius: 5;
|
|
||||||
margin:5px;
|
|
||||||
font:bold;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>RT</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="8">
|
|
||||||
<widget class="QLabel" name="neutral">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>48</width>
|
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0" alignment="Qt::AlignHCenter">
|
||||||
|
<widget class="QCheckBox" name="channelRev">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>45</width>
|
<width>0</width>
|
||||||
<height>16777215</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -570,6 +650,25 @@ font:bold;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="6">
|
||||||
|
<widget class="QSpinBox" name="neutralValue">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>25</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1000</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
<widget class="QSpinBox" name="channelNumber">
|
<widget class="QSpinBox" name="channelNumber">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -8614,16 +8614,16 @@ border-radius: 5;</string>
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_11">
|
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
<property name="rightMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="lowThrottleZeroIntegral_8">
|
<widget class="QCheckBox" name="lowThrottleZeroIntegral_8">
|
||||||
@ -18750,8 +18750,8 @@ border-radius: 5;</string>
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>752</width>
|
<width>796</width>
|
||||||
<height>526</height>
|
<height>708</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||||
@ -26881,14 +26881,11 @@ border-radius: 5;</string>
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>284</width>
|
<width>796</width>
|
||||||
<height>133</height>
|
<height>708</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_17">
|
<layout class="QVBoxLayout" name="verticalLayout_19">
|
||||||
<property name="spacing">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="gridGroupBox">
|
<widget class="QGroupBox" name="gridGroupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
@ -27107,7 +27104,7 @@ border-radius: 5;</string>
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_23">
|
<layout class="QGridLayout" name="gridLayout_23">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>9</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
@ -27118,20 +27115,47 @@ border-radius: 5;</string>
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QPushButton" name="pushButton_11">
|
||||||
|
<property name="text">
|
||||||
|
<string>Default</string>
|
||||||
|
</property>
|
||||||
|
<property name="objrelation" stdset="0">
|
||||||
|
<stringlist>
|
||||||
|
<string>objname:StabilizationSettings</string>
|
||||||
|
<string>button:default</string>
|
||||||
|
<string>buttongroup:16</string>
|
||||||
|
</stringlist>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<spacer name="horizontalSpacer_58">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item row="1" column="0" colspan="2">
|
<item row="1" column="0" colspan="2">
|
||||||
<widget class="QGroupBox" name="gridGroupBox">
|
<widget class="QFrame" name="gridFrame">
|
||||||
<layout class="QGridLayout" name="gridLayout_25">
|
<layout class="QGridLayout" name="gridLayout_25">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
<property name="rightMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_6">
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_6">
|
||||||
@ -27614,32 +27638,39 @@ border-radius: 5;</string>
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
</layout>
|
||||||
<widget class="QPushButton" name="pushButton_11">
|
|
||||||
<property name="text">
|
|
||||||
<string>Default</string>
|
|
||||||
</property>
|
|
||||||
<property name="objrelation" stdset="0">
|
|
||||||
<stringlist>
|
|
||||||
<string>objname:StabilizationSettings</string>
|
|
||||||
<string>button:default</string>
|
|
||||||
<string>buttongroup:16</string>
|
|
||||||
</stringlist>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<spacer name="horizontalSpacer_58">
|
<widget class="QGroupBox" name="groupBox_9">
|
||||||
<property name="orientation">
|
<property name="title">
|
||||||
<enum>Qt::Horizontal</enum>
|
<string>Instant Update</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<layout class="QVBoxLayout" name="verticalLayout_17">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="realTimeUpdates_9">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>136</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Enabling this feature mean that any changes made to the sliders will be instantly sent and used by the Flight Controller, useful for two person tuning where one normally flies and ones changes the GCS.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Update flight controller in real time</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
@ -27696,8 +27727,8 @@ border-radius: 5;</string>
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>347</width>
|
<width>796</width>
|
||||||
<height>500</height>
|
<height>708</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_18">
|
<layout class="QVBoxLayout" name="verticalLayout_18">
|
||||||
@ -29523,7 +29554,7 @@ border-radius: 5;</string>
|
|||||||
<string>element:Kp</string>
|
<string>element:Kp</string>
|
||||||
<string>scale:0.01</string>
|
<string>scale:0.01</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
<string>buttongroup:98</string>
|
<string>buttongroup:98,10</string>
|
||||||
</stringlist>
|
</stringlist>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
@ -29570,7 +29601,7 @@ border-radius: 5;</string>
|
|||||||
<string>element:Kp</string>
|
<string>element:Kp</string>
|
||||||
<string>scale:0.01</string>
|
<string>scale:0.01</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
<string>buttongroup:98</string>
|
<string>buttongroup:98,10</string>
|
||||||
</stringlist>
|
</stringlist>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
@ -29617,7 +29648,7 @@ border-radius: 5;</string>
|
|||||||
<string>element:Ki</string>
|
<string>element:Ki</string>
|
||||||
<string>scale:0.00001</string>
|
<string>scale:0.00001</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
<string>buttongroup:98</string>
|
<string>buttongroup:98,10</string>
|
||||||
</stringlist>
|
</stringlist>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
@ -30763,7 +30794,7 @@ border-radius: 5;</string>
|
|||||||
<string>fieldname:ThrottleExp</string>
|
<string>fieldname:ThrottleExp</string>
|
||||||
<string>haslimits:no</string>
|
<string>haslimits:no</string>
|
||||||
<string>scale:1</string>
|
<string>scale:1</string>
|
||||||
<string>buttongroup:99</string>
|
<string>buttongroup:99,10</string>
|
||||||
</stringlist>
|
</stringlist>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
@ -30837,7 +30868,7 @@ border-radius: 5;</string>
|
|||||||
<string>fieldname:ThrottleRate</string>
|
<string>fieldname:ThrottleRate</string>
|
||||||
<string>haslimits:no</string>
|
<string>haslimits:no</string>
|
||||||
<string>scale:1</string>
|
<string>scale:1</string>
|
||||||
<string>buttongroup:99</string>
|
<string>buttongroup:99,10</string>
|
||||||
</stringlist>
|
</stringlist>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
@ -31491,7 +31522,7 @@ border-radius: 5;</string>
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Instant Update</string>
|
<string>Instant Update</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_14">
|
<layout class="QVBoxLayout" name="verticalLayout_14" stretch="0">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="realTimeUpdates_7">
|
<widget class="QCheckBox" name="realTimeUpdates_7">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -42,11 +42,11 @@ HighLightManager::HighLightManager(long checkingInterval)
|
|||||||
bool HighLightManager::add(TreeItem *itemToAdd)
|
bool HighLightManager::add(TreeItem *itemToAdd)
|
||||||
{
|
{
|
||||||
// Lock to ensure thread safety
|
// Lock to ensure thread safety
|
||||||
QMutexLocker locker(&m_listMutex);
|
QMutexLocker locker(&m_mutex);
|
||||||
|
|
||||||
// Check so that the item isn't already in the list
|
// Check so that the item isn't already in the list
|
||||||
if (!m_itemsList.contains(itemToAdd)) {
|
if (!m_items.contains(itemToAdd)) {
|
||||||
m_itemsList.append(itemToAdd);
|
m_items.insert(itemToAdd);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -59,10 +59,10 @@ bool HighLightManager::add(TreeItem *itemToAdd)
|
|||||||
bool HighLightManager::remove(TreeItem *itemToRemove)
|
bool HighLightManager::remove(TreeItem *itemToRemove)
|
||||||
{
|
{
|
||||||
// Lock to ensure thread safety
|
// Lock to ensure thread safety
|
||||||
QMutexLocker locker(&m_listMutex);
|
QMutexLocker locker(&m_mutex);
|
||||||
|
|
||||||
// Remove item and return result
|
// Remove item and return result
|
||||||
return m_itemsList.removeOne(itemToRemove);
|
return m_items.remove(itemToRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -74,10 +74,10 @@ bool HighLightManager::remove(TreeItem *itemToRemove)
|
|||||||
void HighLightManager::checkItemsExpired()
|
void HighLightManager::checkItemsExpired()
|
||||||
{
|
{
|
||||||
// Lock to ensure thread safety
|
// Lock to ensure thread safety
|
||||||
QMutexLocker locker(&m_listMutex);
|
QMutexLocker locker(&m_mutex);
|
||||||
|
|
||||||
// Get a mutable iterator for the list
|
// Get a mutable iterator for the list
|
||||||
QMutableLinkedListIterator<TreeItem *> iter(m_itemsList);
|
QMutableSetIterator<TreeItem *> iter(m_items);
|
||||||
|
|
||||||
// This is the timestamp to compare with
|
// This is the timestamp to compare with
|
||||||
QTime now = QTime::currentTime();
|
QTime now = QTime::currentTime();
|
||||||
@ -211,7 +211,6 @@ void TreeItem::setHighlight(bool highlight)
|
|||||||
void TreeItem::removeHighlight()
|
void TreeItem::removeHighlight()
|
||||||
{
|
{
|
||||||
m_highlight = false;
|
m_highlight = false;
|
||||||
// update();
|
|
||||||
emit updateHighlight(this);
|
emit updateHighlight(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,11 +78,11 @@ private:
|
|||||||
// The timer checking highlight expiration.
|
// The timer checking highlight expiration.
|
||||||
QTimer m_expirationTimer;
|
QTimer m_expirationTimer;
|
||||||
|
|
||||||
// The list holding all items due to be updated.
|
// The collection holding all items due to be updated.
|
||||||
QLinkedList<TreeItem *> m_itemsList;
|
QSet<TreeItem *> m_items;
|
||||||
|
|
||||||
// Mutex to lock when accessing list.
|
// Mutex to lock when accessing collection.
|
||||||
QMutex m_listMutex;
|
QMutex m_mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TreeItem : public QObject {
|
class TreeItem : public QObject {
|
||||||
@ -231,8 +231,8 @@ public:
|
|||||||
QList<MetaObjectTreeItem *> getMetaObjectItems();
|
QList<MetaObjectTreeItem *> getMetaObjectItems();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMap<quint32, DataObjectTreeItem *> m_objectTreeItemsPerObjectIds;
|
QHash<quint32, DataObjectTreeItem *> m_objectTreeItemsPerObjectIds;
|
||||||
QMap<quint32, MetaObjectTreeItem *> m_metaObjectTreeItemsPerObjectIds;
|
QHash<quint32, MetaObjectTreeItem *> m_metaObjectTreeItemsPerObjectIds;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ObjectTreeItem : public TreeItem {
|
class ObjectTreeItem : public TreeItem {
|
||||||
|
@ -122,7 +122,7 @@ void UAVObjectBrowserWidget::useScientificNotation(bool scientific)
|
|||||||
Q_ASSERT(objManager);
|
Q_ASSERT(objManager);
|
||||||
|
|
||||||
UAVObjectTreeModel *tmpModel = m_model;
|
UAVObjectTreeModel *tmpModel = m_model;
|
||||||
m_model = new UAVObjectTreeModel(0, m_viewoptions->cbCategorized, scientific);
|
m_model = new UAVObjectTreeModel(0, m_viewoptions->cbCategorized->isChecked(), scientific);
|
||||||
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
||||||
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
||||||
m_model->setRecentlyUpdatedTimeout(m_recentlyUpdatedTimeout);
|
m_model->setRecentlyUpdatedTimeout(m_recentlyUpdatedTimeout);
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
#include "uavobjectfield.h"
|
#include "uavobjectfield.h"
|
||||||
#include "extensionsystem/pluginmanager.h"
|
#include "extensionsystem/pluginmanager.h"
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
// #include <QIcon>
|
|
||||||
#include <QtCore/QTimer>
|
#include <QtCore/QTimer>
|
||||||
#include <QtCore/QSignalMapper>
|
#include <QtCore/QSignalMapper>
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
@ -41,6 +40,7 @@
|
|||||||
UAVObjectTreeModel::UAVObjectTreeModel(QObject *parent, bool categorize, bool useScientificNotation) :
|
UAVObjectTreeModel::UAVObjectTreeModel(QObject *parent, bool categorize, bool useScientificNotation) :
|
||||||
QAbstractItemModel(parent),
|
QAbstractItemModel(parent),
|
||||||
m_useScientificFloatNotation(useScientificNotation),
|
m_useScientificFloatNotation(useScientificNotation),
|
||||||
|
m_categorize(categorize),
|
||||||
m_recentlyUpdatedTimeout(500), // ms
|
m_recentlyUpdatedTimeout(500), // ms
|
||||||
m_recentlyUpdatedColor(QColor(255, 230, 230)),
|
m_recentlyUpdatedColor(QColor(255, 230, 230)),
|
||||||
m_manuallyChangedColor(QColor(230, 230, 255))
|
m_manuallyChangedColor(QColor(230, 230, 255))
|
||||||
@ -54,7 +54,7 @@ UAVObjectTreeModel::UAVObjectTreeModel(QObject *parent, bool categorize, bool us
|
|||||||
connect(objManager, SIGNAL(newInstance(UAVObject *)), this, SLOT(newObject(UAVObject *)));
|
connect(objManager, SIGNAL(newInstance(UAVObject *)), this, SLOT(newObject(UAVObject *)));
|
||||||
|
|
||||||
TreeItem::setHighlightTime(m_recentlyUpdatedTimeout);
|
TreeItem::setHighlightTime(m_recentlyUpdatedTimeout);
|
||||||
setupModelData(objManager, categorize);
|
setupModelData(objManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
UAVObjectTreeModel::~UAVObjectTreeModel()
|
UAVObjectTreeModel::~UAVObjectTreeModel()
|
||||||
@ -63,7 +63,7 @@ UAVObjectTreeModel::~UAVObjectTreeModel()
|
|||||||
delete m_rootItem;
|
delete m_rootItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UAVObjectTreeModel::setupModelData(UAVObjectManager *objManager, bool categorize)
|
void UAVObjectTreeModel::setupModelData(UAVObjectManager *objManager)
|
||||||
{
|
{
|
||||||
// root
|
// root
|
||||||
QList<QVariant> rootData;
|
QList<QVariant> rootData;
|
||||||
@ -83,7 +83,7 @@ void UAVObjectTreeModel::setupModelData(UAVObjectManager *objManager, bool categ
|
|||||||
QList< QList<UAVDataObject *> > objList = objManager->getDataObjects();
|
QList< QList<UAVDataObject *> > objList = objManager->getDataObjects();
|
||||||
foreach(QList<UAVDataObject *> list, objList) {
|
foreach(QList<UAVDataObject *> list, objList) {
|
||||||
foreach(UAVDataObject * obj, list) {
|
foreach(UAVDataObject * obj, list) {
|
||||||
addDataObject(obj, categorize);
|
addDataObject(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,13 +97,13 @@ void UAVObjectTreeModel::newObject(UAVObject *obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UAVObjectTreeModel::addDataObject(UAVDataObject *obj, bool categorize)
|
void UAVObjectTreeModel::addDataObject(UAVDataObject *obj)
|
||||||
{
|
{
|
||||||
TopTreeItem *root = obj->isSettings() ? m_settingsTree : m_nonSettingsTree;
|
TopTreeItem *root = obj->isSettings() ? m_settingsTree : m_nonSettingsTree;
|
||||||
|
|
||||||
TreeItem *parent = root;
|
TreeItem *parent = root;
|
||||||
|
|
||||||
if (categorize && obj->getCategory() != 0 && !obj->getCategory().isEmpty()) {
|
if (m_categorize && obj->getCategory() != 0 && !obj->getCategory().isEmpty()) {
|
||||||
QStringList categoryPath = obj->getCategory().split('/');
|
QStringList categoryPath = obj->getCategory().split('/');
|
||||||
parent = createCategoryItems(categoryPath, root);
|
parent = createCategoryItems(categoryPath, root);
|
||||||
}
|
}
|
||||||
|
@ -92,9 +92,9 @@ private slots:
|
|||||||
void updateHighlight(TreeItem *);
|
void updateHighlight(TreeItem *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setupModelData(UAVObjectManager *objManager, bool categorize = true);
|
void setupModelData(UAVObjectManager *objManager);
|
||||||
QModelIndex index(TreeItem *item);
|
QModelIndex index(TreeItem *item);
|
||||||
void addDataObject(UAVDataObject *obj, bool categorize = true);
|
void addDataObject(UAVDataObject *obj);
|
||||||
MetaObjectTreeItem *addMetaObject(UAVMetaObject *obj, TreeItem *parent);
|
MetaObjectTreeItem *addMetaObject(UAVMetaObject *obj, TreeItem *parent);
|
||||||
void addArrayField(UAVObjectField *field, TreeItem *parent);
|
void addArrayField(UAVObjectField *field, TreeItem *parent);
|
||||||
void addSingleField(int index, UAVObjectField *field, TreeItem *parent);
|
void addSingleField(int index, UAVObjectField *field, TreeItem *parent);
|
||||||
@ -115,6 +115,7 @@ private:
|
|||||||
QColor m_manuallyChangedColor;
|
QColor m_manuallyChangedColor;
|
||||||
bool m_onlyHilightChangedValues;
|
bool m_onlyHilightChangedValues;
|
||||||
bool m_useScientificFloatNotation;
|
bool m_useScientificFloatNotation;
|
||||||
|
bool m_categorize;
|
||||||
|
|
||||||
// Highlight manager to handle highlighting of tree items.
|
// Highlight manager to handle highlighting of tree items.
|
||||||
HighLightManager *m_highlightManager;
|
HighLightManager *m_highlightManager;
|
||||||
|
@ -467,6 +467,8 @@ bool UAVObjectUtilManager::descriptionToStructure(QByteArray desc, deviceDescrip
|
|||||||
struc.fwHash = desc.mid(40, 20);
|
struc.fwHash = desc.mid(40, 20);
|
||||||
struc.uavoHash.clear();
|
struc.uavoHash.clear();
|
||||||
struc.uavoHash = desc.mid(60, 20);
|
struc.uavoHash = desc.mid(60, 20);
|
||||||
|
|
||||||
|
/*
|
||||||
qDebug() << __FUNCTION__ << ":description from board:";
|
qDebug() << __FUNCTION__ << ":description from board:";
|
||||||
foreach(char x, desc) {
|
foreach(char x, desc) {
|
||||||
qDebug() << QString::number(x, 16);
|
qDebug() << QString::number(x, 16);
|
||||||
@ -477,6 +479,7 @@ bool UAVObjectUtilManager::descriptionToStructure(QByteArray desc, deviceDescrip
|
|||||||
foreach(char x, array2) {
|
foreach(char x, array2) {
|
||||||
qDebug() << QString::number(x, 16);
|
qDebug() << QString::number(x, 16);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -362,7 +362,7 @@ void ConfigTaskWidget::enableControls(bool enable)
|
|||||||
button->setEnabled(enable);
|
button->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(WidgetBinding * binding, m_widgetBindingsPerObject) {
|
foreach(WidgetBinding * binding, m_widgetBindingsPerWidget) {
|
||||||
if (binding->isEnabled() && binding->widget()) {
|
if (binding->isEnabled() && binding->widget()) {
|
||||||
binding->widget()->setEnabled(enable);
|
binding->widget()->setEnabled(enable);
|
||||||
foreach(ShadowWidgetBinding * shadow, binding->shadows()) {
|
foreach(ShadowWidgetBinding * shadow, binding->shadows()) {
|
||||||
@ -746,7 +746,7 @@ void ConfigTaskWidget::reloadButtonClicked()
|
|||||||
}
|
}
|
||||||
int groupID = sender()->property("group").toInt();
|
int groupID = sender()->property("group").toInt();
|
||||||
QList<WidgetBinding *> bindings = m_reloadGroups.values(groupID);
|
QList<WidgetBinding *> bindings = m_reloadGroups.values(groupID);
|
||||||
if (!bindings.isEmpty()) {
|
if (bindings.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ObjectPersistence *objper = dynamic_cast<ObjectPersistence *>(getObjectManager()->getObject(ObjectPersistence::NAME));
|
ObjectPersistence *objper = dynamic_cast<ObjectPersistence *>(getObjectManager()->getObject(ObjectPersistence::NAME));
|
||||||
@ -811,6 +811,8 @@ void ConfigTaskWidget::connectWidgetUpdatesToSlot(QWidget *widget, const char *f
|
|||||||
connect(cb, SIGNAL(valueChanged(int)), this, function, Qt::UniqueConnection);
|
connect(cb, SIGNAL(valueChanged(int)), this, function, Qt::UniqueConnection);
|
||||||
} else if (QDoubleSpinBox * cb = qobject_cast<QDoubleSpinBox *>(widget)) {
|
} else if (QDoubleSpinBox * cb = qobject_cast<QDoubleSpinBox *>(widget)) {
|
||||||
connect(cb, SIGNAL(valueChanged(double)), this, function, Qt::UniqueConnection);
|
connect(cb, SIGNAL(valueChanged(double)), this, function, Qt::UniqueConnection);
|
||||||
|
} else if (QLineEdit * cb = qobject_cast<QLineEdit *>(widget)) {
|
||||||
|
connect(cb, SIGNAL(textChanged(QString)), this, function, Qt::UniqueConnection);
|
||||||
} else if (QCheckBox * cb = qobject_cast<QCheckBox *>(widget)) {
|
} else if (QCheckBox * cb = qobject_cast<QCheckBox *>(widget)) {
|
||||||
connect(cb, SIGNAL(stateChanged(int)), this, function, Qt::UniqueConnection);
|
connect(cb, SIGNAL(stateChanged(int)), this, function, Qt::UniqueConnection);
|
||||||
} else if (QPushButton * cb = qobject_cast<QPushButton *>(widget)) {
|
} else if (QPushButton * cb = qobject_cast<QPushButton *>(widget)) {
|
||||||
@ -837,6 +839,8 @@ void ConfigTaskWidget::disconnectWidgetUpdatesToSlot(QWidget *widget, const char
|
|||||||
disconnect(cb, SIGNAL(valueChanged(int)), this, function);
|
disconnect(cb, SIGNAL(valueChanged(int)), this, function);
|
||||||
} else if (QDoubleSpinBox * cb = qobject_cast<QDoubleSpinBox *>(widget)) {
|
} else if (QDoubleSpinBox * cb = qobject_cast<QDoubleSpinBox *>(widget)) {
|
||||||
disconnect(cb, SIGNAL(valueChanged(double)), this, function);
|
disconnect(cb, SIGNAL(valueChanged(double)), this, function);
|
||||||
|
}else if (QLineEdit * cb = qobject_cast<QLineEdit *>(widget)) {
|
||||||
|
disconnect(cb, SIGNAL(textChanged(double)), this, function);
|
||||||
} else if (QCheckBox * cb = qobject_cast<QCheckBox *>(widget)) {
|
} else if (QCheckBox * cb = qobject_cast<QCheckBox *>(widget)) {
|
||||||
disconnect(cb, SIGNAL(stateChanged(int)), this, function);
|
disconnect(cb, SIGNAL(stateChanged(int)), this, function);
|
||||||
} else if (QPushButton * cb = qobject_cast<QPushButton *>(widget)) {
|
} else if (QPushButton * cb = qobject_cast<QPushButton *>(widget)) {
|
||||||
|
@ -3,7 +3,8 @@ macx {
|
|||||||
} else:linux-* {
|
} else:linux-* {
|
||||||
#do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
|
#do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
|
||||||
# this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var
|
# this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var
|
||||||
QMAKE_RPATHDIR += \$\$ORIGIN/../$$GCS_LIBRARY_BASENAME/openpilotgcs
|
QMAKE_RPATHDIR = \$\$ORIGIN/../$$GCS_LIBRARY_BASENAME/openpilotgcs
|
||||||
|
QMAKE_RPATHDIR += \$\$ORIGIN/../$$GCS_LIBRARY_BASENAME/qt5
|
||||||
GCS_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
|
GCS_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
|
||||||
|
|
||||||
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${GCS_PLUGIN_RPATH}\'
|
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${GCS_PLUGIN_RPATH}\'
|
||||||
|
@ -45,6 +45,7 @@ recursive()
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
*.c|*.h|*.cc|*.cpp|*.hpp)
|
*.c|*.h|*.cc|*.cpp|*.hpp)
|
||||||
${UNCRUSTIFY} -c "${UNCRUSTIFY_CONFIG}" --no-backup "$1"
|
${UNCRUSTIFY} -c "${UNCRUSTIFY_CONFIG}" --no-backup "$1"
|
||||||
|
${UNCRUSTIFY} -c "${UNCRUSTIFY_CONFIG}" --no-backup "$1" -q
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
@ -564,12 +564,16 @@ ifeq ($(UNAME), Windows)
|
|||||||
$(eval $(call TOOL_INSTALL_TEMPLATE,openssl,$(OPENSSL_DIR),$(OPENSSL_URL),$(notdir $(OPENSSL_URL))))
|
$(eval $(call TOOL_INSTALL_TEMPLATE,openssl,$(OPENSSL_DIR),$(OPENSSL_URL),$(notdir $(OPENSSL_URL))))
|
||||||
|
|
||||||
ifeq ($(shell [ -d "$(OPENSSL_DIR)" ] && $(ECHO) "exists"), exists)
|
ifeq ($(shell [ -d "$(OPENSSL_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
export OPENSSL := $(OPENSSL_DIR)
|
export OPENSSL := "$(OPENSSL_DIR)/bin/openssl"
|
||||||
|
export OPENSSL_DIR := "$(OPENSSL_DIR)"
|
||||||
else
|
else
|
||||||
# not installed, hope it's in the path...
|
# not installed, hope it's in the path...
|
||||||
# $(info $(EMPTY) WARNING $(call toprel, $(OPENSSL_DIR)) not found (make openssl_install), using system PATH)
|
# $(info $(EMPTY) WARNING $(call toprel, $(OPENSSL_DIR)) not found (make openssl_install), using system PATH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
.PHONY: openssl_version
|
||||||
|
openssl_version:
|
||||||
|
-$(V1) $(ECHO) "OpenSSL `$(OPENSSL) version`"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
@ -947,6 +951,19 @@ android_sdk_update:
|
|||||||
$(V0) @echo " UPDATE $(ANDROID_SDK_DIR)"
|
$(V0) @echo " UPDATE $(ANDROID_SDK_DIR)"
|
||||||
$(ANDROID_SDK_DIR)/tools/android update sdk --no-ui -t platform-tools,android-16,addon-google_apis-google-16
|
$(ANDROID_SDK_DIR)/tools/android update sdk --no-ui -t platform-tools,android-16,addon-google_apis-google-16
|
||||||
|
|
||||||
|
#Install git hooks under the right folder
|
||||||
|
|
||||||
|
.PHONY: prepare
|
||||||
|
prepare:
|
||||||
|
$(V0) @echo " Configuring GIT commit template"
|
||||||
|
$(V1) $(CD) "$(ROOT_DIR)"
|
||||||
|
$(V1) $(GIT) config commit.template .commit-template
|
||||||
|
|
||||||
|
.PHONY: prepare_clean
|
||||||
|
prepare_clean:
|
||||||
|
$(V0) @echo " Cleanup GIT commit template configuration"
|
||||||
|
$(V1) $(CD) "$(ROOT_DIR)"
|
||||||
|
$(V1) $(GIT) config --unset commit.template
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
shlibs:Depends=libc6 (>= 2.3.6-6~), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libglu1-mesa | libglu1, libphonon4 (>= 4:4.3.0), libqt4-network (>= 4:4.6.1), libqt4-opengl (>= 4:4.6.1), libqt4-script (>= 4:4.5.3), libqt4-sql (>= 4:4.5.3), libqt4-svg (>= 4:4.5.3), libqt4-test (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.6.2), libsdl1.2debian (>= 1.2.10-1), libstdc++6 (>= 4.1.1), libudev0 (>= 147), libusb-0.1-4 (>= 2:0.1.12), phonon
|
shlibs:Depends=libc6, libgcc1, libgl1-mesa-glx | libgl1, libglu1-mesa | libglu1, libsdl1.2debian, libstdc++6, libudev0 | libudev1, libusb-1.0-0
|
||||||
misc:Depends=
|
misc:Depends=
|
||||||
|
@ -37,6 +37,7 @@ install:
|
|||||||
cp -arp build/openpilotgcs_release/lib debian/openpilot/usr/local/OpenPilot
|
cp -arp build/openpilotgcs_release/lib debian/openpilot/usr/local/OpenPilot
|
||||||
cp -arp build/openpilotgcs_release/share debian/openpilot/usr/local/OpenPilot
|
cp -arp build/openpilotgcs_release/share debian/openpilot/usr/local/OpenPilot
|
||||||
cp -arp build/openpilotgcs_release/.obj debian/openpilot/usr/local/OpenPilot
|
cp -arp build/openpilotgcs_release/.obj debian/openpilot/usr/local/OpenPilot
|
||||||
|
cp -arp package/linux/qt.conf debian/openpilot/usr/local/OpenPilot/bin
|
||||||
cp -arp package/linux/openpilot.desktop debian/openpilot/usr/share/applications
|
cp -arp package/linux/openpilot.desktop debian/openpilot/usr/share/applications
|
||||||
cp -arp package/linux/openpilot.png debian/openpilot/usr/share/pixmaps
|
cp -arp package/linux/openpilot.png debian/openpilot/usr/share/pixmaps
|
||||||
cp -arp package/linux/openpilot_menu.png debian/openpilot/usr/share/pixmaps
|
cp -arp package/linux/openpilot_menu.png debian/openpilot/usr/share/pixmaps
|
||||||
@ -54,7 +55,8 @@ endif
|
|||||||
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/mapicons/mapicons
|
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/mapicons/mapicons
|
||||||
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/dials/dials
|
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/dials/dials
|
||||||
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/diagrams/diagrams
|
rm -rf debian/openpilot/usr/local/OpenPilot/share/openpilotgcs/diagrams/diagrams
|
||||||
|
# Removing leaked files from the dist
|
||||||
|
find debian/openpilot -name Makefile -exec rm -f {} \;
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
# Build architecture-independent files here.
|
||||||
binary-indep: install
|
binary-indep: install
|
||||||
@ -73,10 +75,10 @@ binary-arch: install
|
|||||||
dh_compress
|
dh_compress
|
||||||
dh_fixperms
|
dh_fixperms
|
||||||
dh_installdeb
|
dh_installdeb
|
||||||
dh_shlibdeps -l/usr/local/OpenPilot/lib/openpilotgcs --dpkg-shlibdeps-params="--ignore-missing-info -v"
|
dh_shlibdeps -l/usr/local/OpenPilot/lib/openpilotgcs:/usr/local/OpenPilot/lib/qt5 --dpkg-shlibdeps-params="--ignore-missing-info -v"
|
||||||
dh_gencontrol
|
dh_gencontrol
|
||||||
dh_md5sums
|
dh_md5sums
|
||||||
dh_builddeb
|
dh_builddeb -- -Zbzip2
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
binary: binary-indep binary-arch
|
||||||
|
|
||||||
|
6
package/linux/qt.conf
Normal file
6
package/linux/qt.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[Paths]
|
||||||
|
Prefix = ..
|
||||||
|
Plugins = lib/qt5/plugins
|
||||||
|
Imports = lib/qt5/qml
|
||||||
|
Qml2Imports = lib/qt5/qml
|
||||||
|
Libraries = lib/qt5
|
@ -3,7 +3,7 @@
|
|||||||
APP="${1?}"
|
APP="${1?}"
|
||||||
PLUGINS="${APP}/Contents/Plugins"
|
PLUGINS="${APP}/Contents/Plugins"
|
||||||
OP_PLUGINS="${APP}/Contents/Plugins/OpenPilot"
|
OP_PLUGINS="${APP}/Contents/Plugins/OpenPilot"
|
||||||
QT_LIBS="QtDeclarative QtXmlPatterns QtGui QtTest QtCore QtSvg QtSql QtOpenGL QtNetwork QtXml QtScript"
|
QT_LIBS="QtCore QtGui QtMultimedia QtMultimediaWidgets QtNetwork QtOpenGL QtPrintSupport QtQml QtQuick QtScript QtSerialPort QtSql QtSvg QtWidgets QtV8 QtXml"
|
||||||
QT_DIR=$(otool -L "${APP}/Contents/MacOS/OpenPilot GCS" | sed -n -e 's/\/QtCore\.framework.*//p' | sed -n -E 's:^.::p')
|
QT_DIR=$(otool -L "${APP}/Contents/MacOS/OpenPilot GCS" | sed -n -e 's/\/QtCore\.framework.*//p' | sed -n -E 's:^.::p')
|
||||||
QT_EXTRA="accessible/libqtaccessiblewidgets.dylib bearer/libqgenericbearer.dylib imageformats/libqgif.dylib imageformats/libqico.dylib imageformats/libqjpeg.dylib imageformats/libqmng.dylib imageformats/libqtiff.dylib imageformats/libqsvg.dylib qmltooling/libqmldbg_tcp.dylib sqldrivers/libqsqlodbc.dylib sqldrivers/libqsqlpsql.dylib sqldrivers/libqsqlite.dylib imageformats/libqtga.dylib iconengines/libqsvgicon.dylib"
|
QT_EXTRA="accessible/libqtaccessiblewidgets.dylib bearer/libqgenericbearer.dylib imageformats/libqgif.dylib imageformats/libqico.dylib imageformats/libqjpeg.dylib imageformats/libqmng.dylib imageformats/libqtiff.dylib imageformats/libqsvg.dylib qmltooling/libqmldbg_tcp.dylib sqldrivers/libqsqlodbc.dylib sqldrivers/libqsqlpsql.dylib sqldrivers/libqsqlite.dylib imageformats/libqtga.dylib iconengines/libqsvgicon.dylib"
|
||||||
|
|
||||||
@ -23,25 +23,36 @@ fi
|
|||||||
|
|
||||||
echo "Qt library directory is \"${QT_DIR}\""
|
echo "Qt library directory is \"${QT_DIR}\""
|
||||||
|
|
||||||
echo "Running macdeployqt"
|
echo "Running macdeployqt from ${QT_DIR}../bin/macdeployqt"
|
||||||
macdeployqt "${APP}" -no-strip
|
|
||||||
|
|
||||||
echo "Processing Qt libraries in ${APP}"
|
"${QT_DIR}../bin/macdeployqt" "${APP}" -no-strip -verbose=2
|
||||||
for f in "${PLUGINS}/"*.dylib "${OP_PLUGINS}/"*.dylib
|
|
||||||
|
#Append Qml2Imports config to qt.conf
|
||||||
|
echo "Qml2Imports = Imports" >> "${APP}/"Contents/Resources/qt.conf
|
||||||
|
|
||||||
|
echo "Processing Qt libraries paths in ${APP}"
|
||||||
|
for f in "${PLUGINS}/"*.dylib "${OP_PLUGINS}/"*.dylib "${APP}/"Contents/Imports/QtQuick.2/*.dylib "${APP}/"Contents/Imports/QtQuick/*/*.dylib
|
||||||
do
|
do
|
||||||
|
if [ -f "${f}" ] && [ ! -L "${f}" ]
|
||||||
|
then
|
||||||
# Only process plain files
|
# Only process plain files
|
||||||
[ ! -L "${f}" ] && for g in $QT_LIBS
|
chmod +w "${f}"
|
||||||
|
echo "* ${f}"
|
||||||
|
for g in $QT_LIBS
|
||||||
do
|
do
|
||||||
install_name_tool -change \
|
install_name_tool -change \
|
||||||
"${QT_DIR}${g}.framework/Versions/5/${g}" \
|
"${QT_DIR}${g}.framework/Versions/5/${g}" \
|
||||||
@executable_path/../Frameworks/${g}.framework/Versions/5/${g} \
|
@executable_path/../Frameworks/${g}.framework/Versions/5/${g} \
|
||||||
"${f}"
|
"${f}"
|
||||||
done
|
done
|
||||||
|
chmod -w "${f}"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Copying SDL"
|
echo "Copying SDL"
|
||||||
cp -a "/Library/Frameworks/SDL.framework" "${APP}/Contents/Frameworks/"
|
cp -a "/Library/Frameworks/SDL.framework" "${APP}/Contents/Frameworks/"
|
||||||
|
chmod +w "${APP}/Contents/Plugins/libsdlgamepad.1.dylib"
|
||||||
|
chmod +w "${APP}/Contents/Frameworks/SDL.framework/SDL"
|
||||||
echo "Changing package identification of SDL"
|
echo "Changing package identification of SDL"
|
||||||
install_name_tool -id \
|
install_name_tool -id \
|
||||||
@executable_path/../Frameworks/SDL.framework/SDL \
|
@executable_path/../Frameworks/SDL.framework/SDL \
|
||||||
@ -50,6 +61,8 @@ install_name_tool -change \
|
|||||||
@rpath/SDL.framework/Versions/A/SDL \
|
@rpath/SDL.framework/Versions/A/SDL \
|
||||||
"@executable_path/../Frameworks/SDL.framework/SDL" \
|
"@executable_path/../Frameworks/SDL.framework/SDL" \
|
||||||
"${APP}/Contents/Plugins/libsdlgamepad.1.dylib"
|
"${APP}/Contents/Plugins/libsdlgamepad.1.dylib"
|
||||||
|
chmod -w "${APP}/Contents/Plugins/libsdlgamepad.1.dylib"
|
||||||
|
chmod -w "${APP}/Contents/Frameworks/SDL.framework/SDL"
|
||||||
|
|
||||||
# deleting unnecessary files
|
# deleting unnecessary files
|
||||||
echo "Deleting unnecessary files"
|
echo "Deleting unnecessary files"
|
||||||
|
@ -14,8 +14,9 @@ rm -f "${TEMP_FILE}"
|
|||||||
rm -f "${OUT_FILE}"
|
rm -f "${OUT_FILE}"
|
||||||
|
|
||||||
# if an OpenPilot volume is already mounted, unmount it
|
# if an OpenPilot volume is already mounted, unmount it
|
||||||
if [ ! -f "/Volumes/${VOL_NAME}" ]
|
if [ -f "/Volumes/${VOL_NAME}" ]
|
||||||
then
|
then
|
||||||
|
echo "Unmount existing /Volumes/${VOL_NAME}"
|
||||||
hdiutil unmount "/Volumes/${VOL_NAME}"
|
hdiutil unmount "/Volumes/${VOL_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -24,18 +25,30 @@ hdiutil convert "${ROOT_DIR}/package/osx/OpenPilot.dmg" \
|
|||||||
device=$(hdiutil attach "${TEMP_FILE}" | \
|
device=$(hdiutil attach "${TEMP_FILE}" | \
|
||||||
egrep '^/dev/' | sed 1q | awk '{print $1}')
|
egrep '^/dev/' | sed 1q | awk '{print $1}')
|
||||||
|
|
||||||
|
#Just in case something is still mounted as ${VOL_NAME}, check the correct mount point
|
||||||
|
mountvolume=$(hdiutil info | egrep "^${device}"| egrep "${VOL_NAME}" | sed 's/.*Volumes\///;s/*//' | sed 1q)
|
||||||
|
|
||||||
|
echo "Image mounted as /Volumes/${mountvolume}"
|
||||||
|
|
||||||
|
if [ ! -d "/Volumes/${mountvolume}/OpenPilot GCS.app" ]
|
||||||
|
then
|
||||||
|
echo "Cannot find a valid image at /Volumes/${mountvolume}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# packaging goes here
|
# packaging goes here
|
||||||
cp -a "${APP_PATH}" "/Volumes/${VOL_NAME}"
|
cp -a "${APP_PATH}" "/Volumes/${mountvolume}"
|
||||||
|
|
||||||
#ls "${FW_DIR}" | xargs -n 1 -I {} cp "${FW_DIR}/{}" "/Volumes/${VOL_NAME}/Firmware"
|
#ls "${FW_DIR}" | xargs -n 1 -I {} cp "${FW_DIR}/{}" "/Volumes/${VOL_NAME}/Firmware"
|
||||||
cp "${BUILD_DIR}/uavobject-synthetics/matlab/OPLogConvert.m" "/Volumes/${VOL_NAME}/Utilities"
|
cp "${BUILD_DIR}/uavobject-synthetics/matlab/OPLogConvert.m" "/Volumes/${mountvolume}/Utilities"
|
||||||
cp "${ROOT_DIR}/WHATSNEW.txt" "/Volumes/${VOL_NAME}"
|
cp "${ROOT_DIR}/WHATSNEW.txt" "/Volumes/${mountvolume}"
|
||||||
cp "${ROOT_DIR}/README.txt" "/Volumes/${VOL_NAME}/Docs"
|
cp "${ROOT_DIR}/README.txt" "/Volumes/${mountvolume}/Docs"
|
||||||
cp "${ROOT_DIR}/MILESTONES.txt" "/Volumes/${VOL_NAME}/Docs"
|
cp "${ROOT_DIR}/MILESTONES.txt" "/Volumes/${mountvolume}/Docs"
|
||||||
cp "${ROOT_DIR}/LICENSE.txt" "/Volumes/${VOL_NAME}/Docs"
|
cp "${ROOT_DIR}/LICENSE.txt" "/Volumes/${mountvolume}/Docs"
|
||||||
cp "${ROOT_DIR}/GPLv3.txt" "/Volumes/${VOL_NAME}/Docs"
|
cp "${ROOT_DIR}/GPLv3.txt" "/Volumes/${mountvolume}/Docs"
|
||||||
|
|
||||||
"${ROOT_DIR}/package/osx/libraries" \
|
"${ROOT_DIR}/package/osx/libraries" \
|
||||||
"/Volumes/${VOL_NAME}/OpenPilot GCS.app" || exit 1
|
"/Volumes/${mountvolume}/OpenPilot GCS.app" || exit 1
|
||||||
|
|
||||||
hdiutil detach ${device}
|
hdiutil detach ${device}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<field name="Yaw" units="%" type="float" elements="1"/>
|
<field name="Yaw" units="%" type="float" elements="1"/>
|
||||||
<field name="Collective" units="%" type="float" elements="1"/>
|
<field name="Collective" units="%" type="float" elements="1"/>
|
||||||
<field name="Channel" units="us" type="uint16" elements="9"/>
|
<field name="Channel" units="us" type="uint16" elements="9"/>
|
||||||
<field name="FlightModeSwitchPosition" units="" type="uint8" elements="1"/>
|
<field name="FlightModeSwitchPosition" units="" type="uint8" elements="1" defaultvalue="0"/>
|
||||||
<access gcs="readwrite" flight="readwrite"/>
|
<access gcs="readwrite" flight="readwrite"/>
|
||||||
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
||||||
<telemetryflight acked="false" updatemode="periodic" period="2000"/>
|
<telemetryflight acked="false" updatemode="periodic" period="2000"/>
|
||||||
|
@ -44,31 +44,31 @@
|
|||||||
type="enum"
|
type="enum"
|
||||||
elements="6"
|
elements="6"
|
||||||
options="Manual,Stabilized1,Stabilized2,Stabilized3,Autotune,AltitudeHold,AltitudeVario,VelocityControl,PositionHold,ReturnToBase,Land,PathPlanner,POI"
|
options="Manual,Stabilized1,Stabilized2,Stabilized3,Autotune,AltitudeHold,AltitudeVario,VelocityControl,PositionHold,ReturnToBase,Land,PathPlanner,POI"
|
||||||
defaultvalue="Stabilized1,Stabilized2,Stabilized3,AltitudeHold,PositionHold,Manual"
|
defaultvalue="Stabilized1,Stabilized2,Stabilized3,AltitudeHold,AltitudeVario,Manual"
|
||||||
limits="\
|
limits="\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
||||||
\
|
\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
||||||
\
|
\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
||||||
\
|
\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
||||||
\
|
\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI;\
|
||||||
\
|
\
|
||||||
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0401NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
%0402NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI,\
|
||||||
%0903NE:Autotune:AltitudeVario:AltitudeHold:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI"/>
|
%0903NE:Autotune:VelocityControl:PositionHold:ReturnToBase:Land:PathPlanner:POI"/>
|
||||||
|
|
||||||
<field name="ArmedTimeout" units="ms" type="uint16" elements="1" defaultvalue="30000"/>
|
<field name="ArmedTimeout" units="ms" type="uint16" elements="1" defaultvalue="30000"/>
|
||||||
<field name="ArmingSequenceTime" units="ms" type="uint16" elements="1" defaultvalue="1000"/>
|
<field name="ArmingSequenceTime" units="ms" type="uint16" elements="1" defaultvalue="1000"/>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<field name="FlightTime" units="ms" type="uint32" elements="1"/>
|
<field name="FlightTime" units="ms" type="uint32" elements="1"/>
|
||||||
<field name="HeapRemaining" units="bytes" type="uint16" elements="1"/>
|
<field name="HeapRemaining" units="bytes" type="uint16" elements="1"/>
|
||||||
<field name="IRQStackRemaining" units="bytes" type="uint16" elements="1"/>
|
<field name="IRQStackRemaining" units="bytes" type="uint16" elements="1"/>
|
||||||
|
<field name="SystemModStackRemaining" units="bytes" type="uint16" elements="1"/>
|
||||||
<field name="CPULoad" units="%" type="uint8" elements="1"/>
|
<field name="CPULoad" units="%" type="uint8" elements="1"/>
|
||||||
<field name="CPUTemp" units="C" type="int8" elements="1"/>
|
<field name="CPUTemp" units="C" type="int8" elements="1"/>
|
||||||
<field name="EventSystemWarningID" units="uavoid" type="uint32" elements="1"/>
|
<field name="EventSystemWarningID" units="uavoid" type="uint32" elements="1"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user