Commit d3ba1d38 authored by oberion's avatar oberion

Merge remote-tracking branch 'remotes/pixhawk/v10release' into dev_senseSoarMavlinkv10

parents e93ddb81 56e11079
...@@ -42,8 +42,8 @@ macx { ...@@ -42,8 +42,8 @@ macx {
# COMPILER_VERSION = $$system(gcc -v) # COMPILER_VERSION = $$system(gcc -v)
#message(Using compiler $$COMPILER_VERSION) #message(Using compiler $$COMPILER_VERSION)
CONFIG += x86 cocoa phonon CONFIG += x86_64 cocoa phonon
CONFIG -= x86_64 CONFIG -= x86
#HARDWARE_PLATFORM = $$system(uname -a) #HARDWARE_PLATFORM = $$system(uname -a)
#contains( $$HARDWARE_PLATFORM, "9.6.0" ) || contains( $$HARDWARE_PLATFORM, "9.7.0" ) || contains( $$HARDWARE_PLATFORM, "9.8.0" ) || contains( $$HARDWARE_PLATFORM, "9.9.0" ) { #contains( $$HARDWARE_PLATFORM, "9.6.0" ) || contains( $$HARDWARE_PLATFORM, "9.7.0" ) || contains( $$HARDWARE_PLATFORM, "9.8.0" ) || contains( $$HARDWARE_PLATFORM, "9.9.0" ) {
...@@ -65,11 +65,10 @@ macx { ...@@ -65,11 +65,10 @@ macx {
# debug { # debug {
#QMAKE_CXXFLAGS += -finstrument-functions #QMAKE_CXXFLAGS += -finstrument-functions
#LIBS += -lSaturn #LIBS += -lSaturn
CONFIG += console
# } # }
#} #}
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.5 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
#DESTDIR = $$BASEDIR/bin/mac #DESTDIR = $$BASEDIR/bin/mac
INCLUDEPATH += -framework SDL INCLUDEPATH += -framework SDL
...@@ -103,7 +102,7 @@ macx { ...@@ -103,7 +102,7 @@ macx {
DEFINES += QGC_OSG_ENABLED DEFINES += QGC_OSG_ENABLED
# Include OpenSceneGraph libraries # Include OpenSceneGraph libraries
INCLUDEPATH += -framework GLUT \ INCLUDEPATH += -framework GLUT \
-framework Carbon \ -framework Cocoa \
-framework OpenThreads \ -framework OpenThreads \
-framework osg \ -framework osg \
-framework osgViewer \ -framework osgViewer \
...@@ -113,7 +112,7 @@ macx { ...@@ -113,7 +112,7 @@ macx {
-framework osgWidget -framework osgWidget
LIBS += -framework GLUT \ LIBS += -framework GLUT \
-framework Carbon \ -framework Cocoa \
-framework OpenThreads \ -framework OpenThreads \
-framework osg \ -framework osg \
-framework osgViewer \ -framework osgViewer \
...@@ -123,37 +122,13 @@ macx { ...@@ -123,37 +122,13 @@ macx {
-framework osgWidget -framework osgWidget
} }
exists(/usr/include/osgEarth) { exists(/opt/local/include/libfreenect)|exists(/usr/local/include/libfreenect) {
message("Building support for osgEarth")
DEPENDENCIES_PRESENT += osgearth
# Include osgEarth libraries
INCLUDEPATH += -framework GDAL \
$$IN_PWD/lib/mac32-gcc/include \
-framework GEOS \
-framework SQLite3 \
-framework osgFX \
-framework osgTerrain
LIBS += -framework GDAL \
-framework GEOS \
-framework SQLite3 \
-framework osgFX \
-framework osgTerrain
DEFINES += QGC_OSGEARTH_ENABLED
}
exists(/opt/local/include/libfreenect) {
message("Building support for libfreenect") message("Building support for libfreenect")
DEPENDENCIES_PRESENT += libfreenect DEPENDENCIES_PRESENT += libfreenect
# Include libfreenect libraries # Include libfreenect libraries
LIBS += -lfreenect LIBS += -lfreenect
DEFINES += QGC_LIBFREENECT_ENABLED DEFINES += QGC_LIBFREENECT_ENABLED
} }
# osg/osgEarth dynamic casts might fail without this compiler option.
# see http://osgearth.org/wiki/FAQ for details.
#QMAKE_CXXFLAGS += -Wl,-E
} }
# GNU/Linux # GNU/Linux
......
...@@ -42,12 +42,14 @@ RCC_DIR = $${BUILDDIR}/rcc ...@@ -42,12 +42,14 @@ RCC_DIR = $${BUILDDIR}/rcc
MAVLINK_CONF = "" MAVLINK_CONF = ""
DEFINES += MAVLINK_NO_DATA DEFINES += MAVLINK_NO_DATA
win32 {
QMAKE_INCDIR_QT = $$(QTDIR)/include QMAKE_INCDIR_QT = $$(QTDIR)/include
QMAKE_LIBDIR_QT = $$(QTDIR)/lib QMAKE_LIBDIR_QT = $$(QTDIR)/lib
QMAKE_UIC = "$$(QTDIR)/bin/uic.exe" QMAKE_UIC = "$$(QTDIR)/bin/uic.exe"
QMAKE_MOC = "$$(QTDIR)/bin/moc.exe" QMAKE_MOC = "$$(QTDIR)/bin/moc.exe"
QMAKE_RCC = "$$(QTDIR)/bin/rcc.exe" QMAKE_RCC = "$$(QTDIR)/bin/rcc.exe"
QMAKE_QMAKE = "$$(QTDIR)/bin/qmake.exe" QMAKE_QMAKE = "$$(QTDIR)/bin/qmake.exe"
}
...@@ -540,19 +542,19 @@ TRANSLATIONS += es-MX.ts \ ...@@ -540,19 +542,19 @@ TRANSLATIONS += es-MX.ts \
# xbee support # xbee support
# libxbee only supported by linux and windows systems # libxbee only supported by linux and windows systems
win32-msvc2008|win32-msvc2010|linux{ #win32-msvc2008|win32-msvc2010|linux{
HEADERS += src/comm/XbeeLinkInterface.h \ # HEADERS += src/comm/XbeeLinkInterface.h \
src/comm/XbeeLink.h \ # src/comm/XbeeLink.h \
src/comm/HexSpinBox.h \ # src/comm/HexSpinBox.h \
src/ui/XbeeConfigurationWindow.h \ # src/ui/XbeeConfigurationWindow.h \
src/comm/CallConv.h # src/comm/CallConv.h
SOURCES += src/comm/XbeeLink.cpp \ # SOURCES += src/comm/XbeeLink.cpp \
src/comm/HexSpinBox.cpp \ # src/comm/HexSpinBox.cpp \
src/ui/XbeeConfigurationWindow.cpp # src/ui/XbeeConfigurationWindow.cpp
DEFINES += XBEELINK # DEFINES += XBEELINK
INCLUDEPATH += thirdParty/libxbee # INCLUDEPATH += thirdParty/libxbee
# TO DO: build library when it does not exists already # TO DO: build library when it does not exists already
LIBS += -LthirdParty/libxbee/lib \ # LIBS += -LthirdParty/libxbee/lib \
-llibxbee # -llibxbee
#
} #}
...@@ -119,9 +119,9 @@ GAudioOutput::GAudioOutput(QObject* parent) : QObject(parent), ...@@ -119,9 +119,9 @@ GAudioOutput::GAudioOutput(QObject* parent) : QObject(parent),
} }
#endif #endif
// Initialize audio output // Initialize audio output
m_media = new Phonon::MediaObject(this); //m_media = new Phonon::MediaObject(this);
Phonon::AudioOutput *audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); //Phonon::AudioOutput *audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
createPath(m_media, audioOutput); //createPath(m_media, audioOutput);
// Prepare regular emergency signal, will be fired off on calling startEmergency() // Prepare regular emergency signal, will be fired off on calling startEmergency()
emergencyTimer = new QTimer(); emergencyTimer = new QTimer();
...@@ -228,8 +228,8 @@ void GAudioOutput::notifyPositive() ...@@ -228,8 +228,8 @@ void GAudioOutput::notifyPositive()
if (!muted) { if (!muted) {
// Use QFile to transform path for all OS // Use QFile to transform path for all OS
QFile f(QCoreApplication::applicationDirPath()+QString("/audio/double_notify.wav")); QFile f(QCoreApplication::applicationDirPath()+QString("/audio/double_notify.wav"));
m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str())); //m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str()));
m_media->play(); //m_media->play();
} }
} }
...@@ -238,8 +238,8 @@ void GAudioOutput::notifyNegative() ...@@ -238,8 +238,8 @@ void GAudioOutput::notifyNegative()
if (!muted) { if (!muted) {
// Use QFile to transform path for all OS // Use QFile to transform path for all OS
QFile f(QCoreApplication::applicationDirPath()+QString("/audio/flat_notify.wav")); QFile f(QCoreApplication::applicationDirPath()+QString("/audio/flat_notify.wav"));
m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str())); //m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str()));
m_media->play(); //m_media->play();
} }
} }
...@@ -283,8 +283,8 @@ void GAudioOutput::beep() ...@@ -283,8 +283,8 @@ void GAudioOutput::beep()
// Use QFile to transform path for all OS // Use QFile to transform path for all OS
QFile f(QCoreApplication::applicationDirPath()+QString("/audio/alert.wav")); QFile f(QCoreApplication::applicationDirPath()+QString("/audio/alert.wav"));
qDebug() << "FILE:" << f.fileName(); qDebug() << "FILE:" << f.fileName();
m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str())); //m_media->setCurrentSource(Phonon::MediaSource(f.fileName().toStdString().c_str()));
m_media->play(); //m_media->play();
} }
} }
......
...@@ -705,9 +705,9 @@ void MAVLinkSimulationLink::writeBytes(const char* data, qint64 size) ...@@ -705,9 +705,9 @@ void MAVLinkSimulationLink::writeBytes(const char* data, qint64 size)
} }
break; break;
// EXECUTE OPERATOR ACTIONS // EXECUTE OPERATOR ACTIONS
case MAVLINK_MSG_ID_COMMAND_SHORT: { case MAVLINK_MSG_ID_COMMAND_LONG: {
mavlink_command_short_t action; mavlink_command_long_t action;
mavlink_msg_command_short_decode(&msg, &action); mavlink_msg_command_long_decode(&msg, &action);
qDebug() << "SIM" << "received action" << action.command << "for system" << action.target_system; qDebug() << "SIM" << "received action" << action.command << "for system" << action.target_system;
......
...@@ -38,6 +38,7 @@ This file is part of the QGROUNDCONTROL project ...@@ -38,6 +38,7 @@ This file is part of the QGROUNDCONTROL project
#include <QQueue> #include <QQueue>
#include <QMutex> #include <QMutex>
#include <QMap> #include <QMap>
#include <qmath.h>
#include <inttypes.h> #include <inttypes.h>
#include "QGCMAVLink.h" #include "QGCMAVLink.h"
......
...@@ -303,12 +303,12 @@ void MAVLinkSimulationMAV::mainloop() ...@@ -303,12 +303,12 @@ void MAVLinkSimulationMAV::mainloop()
timer25Hz--; timer25Hz--;
} }
static unsigned chan_counts[MAVLINK_COMM_NUM_BUFFERS]; //static unsigned chan_counts[MAVLINK_COMM_NUM_BUFFERS];
static const unsigned message_lengths[] = MAVLINK_MESSAGE_LENGTHS; static const unsigned message_lengths[] = MAVLINK_MESSAGE_LENGTHS;
static unsigned error_count; //static unsigned error_count;
static const mavlink_message_info_t message_info[256] = MAVLINK_MESSAGE_INFO; mavlink_message_info_t message_info[256] = MAVLINK_MESSAGE_INFO;
static void print_one_field(const mavlink_message_t *msg, const mavlink_field_info_t *f, int idx) static void print_one_field(const mavlink_message_t *msg, const mavlink_field_info_t *f, int idx)
{ {
......
...@@ -815,10 +815,10 @@ void MAVLinkSimulationWaypointPlanner::mavlink_handler (const mavlink_message_t* ...@@ -815,10 +815,10 @@ void MAVLinkSimulationWaypointPlanner::mavlink_handler (const mavlink_message_t*
break; break;
} }
case MAVLINK_MSG_ID_COMMAND_SHORT: case MAVLINK_MSG_ID_COMMAND_LONG:
{ // special action from ground station { // special action from ground station
mavlink_command_short_t action; mavlink_command_long_t action;
mavlink_msg_command_short_decode(msg, &action); mavlink_msg_command_long_decode(msg, &action);
if(action.target_system == systemid) { if(action.target_system == systemid) {
if (verbose) qDebug("Waypoint: received message with action %d\n", action.command); if (verbose) qDebug("Waypoint: received message with action %d\n", action.command);
// switch (action.action) { // switch (action.action) {
......
...@@ -211,8 +211,9 @@ using namespace TNX; ...@@ -211,8 +211,9 @@ using namespace TNX;
SerialLink::SerialLink(QString portname, int baudRate, bool hardwareFlowControl, bool parity, SerialLink::SerialLink(QString portname, int baudRate, bool hardwareFlowControl, bool parity,
int dataBits, int stopBits) : int dataBits, int stopBits) :
port(NULL), m_stopp(false), port(NULL),
ports(new QVector<QString>()) ports(new QVector<QString>()),
m_stopp(false)
{ {
// Setup settings // Setup settings
this->porthandle = portname.trimmed(); this->porthandle = portname.trimmed();
......
...@@ -33,7 +33,18 @@ ...@@ -33,7 +33,18 @@
namespace mapcontrol namespace mapcontrol
{ {
OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config):QGraphicsView(parent),configuration(config),UAV(0),GPS(0),Home(0),followmouse(true),compass(0),showuav(false),showhome(false),showDiag(false),diagGraphItem(0),diagTimer(0) OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config) : QGraphicsView(parent),
configuration(config),
UAV(0),
GPS(0),
Home(0),
followmouse(true),
compass(0),
showuav(false),
showhome(false),
diagTimer(0),
showDiag(false),
diagGraphItem(0)
{ {
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
core=new internals::Core; core=new internals::Core;
...@@ -277,6 +288,7 @@ namespace mapcontrol ...@@ -277,6 +288,7 @@ namespace mapcontrol
} }
void OPMapWidget::WPCreate(int id, WayPointItem* item) void OPMapWidget::WPCreate(int id, WayPointItem* item)
{ {
Q_UNUSED(id);
static internals::PointLatLng lastPos; static internals::PointLatLng lastPos;
ConnectWP(item); ConnectWP(item);
......
...@@ -29,14 +29,14 @@ namespace mapcontrol ...@@ -29,14 +29,14 @@ namespace mapcontrol
{ {
WayPointItem::WayPointItem(const internals::PointLatLng &coord,double const& altitude, MapGraphicItem *map) : WayPointItem::WayPointItem(const internals::PointLatLng &coord,double const& altitude, MapGraphicItem *map) :
map(map), map(map),
autoreachedEnabled(true),
coord(coord), coord(coord),
reached(false), reached(false),
description(""), description(""),
shownumber(true), shownumber(true),
isDragging(false), isDragging(false),
altitude(altitude), altitude(altitude),
heading(0), heading(0)
autoreachedEnabled(true)
{ {
text=0; text=0;
numberI=0; numberI=0;
...@@ -53,13 +53,13 @@ namespace mapcontrol ...@@ -53,13 +53,13 @@ namespace mapcontrol
RefreshPos(); RefreshPos();
} }
WayPointItem::WayPointItem(const internals::PointLatLng &coord,double const& altitude, const QString &description, MapGraphicItem *map) : WayPointItem::WayPointItem(const internals::PointLatLng &coord,double const& altitude, const QString &description, MapGraphicItem *map) :
map(map),
coord(coord), coord(coord),
reached(false), reached(false),
description(description), description(description),
shownumber(true), shownumber(true),
isDragging(false), isDragging(false),
altitude(altitude), altitude(altitude),
map(map),
heading(0) heading(0)
{ {
text=0; text=0;
......
...@@ -63,7 +63,7 @@ bool XmlConfig::readXmlFile(QIODevice &device, QSettings::SettingsMap &map) ...@@ -63,7 +63,7 @@ bool XmlConfig::readXmlFile(QIODevice &device, QSettings::SettingsMap &map)
.arg(errorLine) .arg(errorLine)
.arg(errorColumn) .arg(errorColumn)
.arg(errorStr); .arg(errorStr);
qFatal(err.toLatin1().data()); qFatal("%s", err.toLatin1().data());
return false; return false;
} }
root = domDoc.documentElement(); root = domDoc.documentElement();
......
...@@ -1459,6 +1459,7 @@ void UAS::writeParametersToStorage() ...@@ -1459,6 +1459,7 @@ void UAS::writeParametersToStorage()
{ {
mavlink_message_t msg; mavlink_message_t msg;
mavlink_msg_command_long_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, 0, MAV_CMD_PREFLIGHT_STORAGE, 1, 1, -1, -1, -1, 0, 0, 0); mavlink_msg_command_long_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, 0, MAV_CMD_PREFLIGHT_STORAGE, 1, 1, -1, -1, -1, 0, 0, 0);
qDebug() << "SENT COMMAND" << MAV_CMD_PREFLIGHT_STORAGE;
sendMessage(msg); sendMessage(msg);
} }
...@@ -1492,7 +1493,6 @@ void UAS::enableAllDataTransmission(int rate) ...@@ -1492,7 +1493,6 @@ void UAS::enableAllDataTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
} }
void UAS::enableRawSensorDataTransmission(int rate) void UAS::enableRawSensorDataTransmission(int rate)
...@@ -1514,7 +1514,6 @@ void UAS::enableRawSensorDataTransmission(int rate) ...@@ -1514,7 +1514,6 @@ void UAS::enableRawSensorDataTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
} }
void UAS::enableExtendedSystemStatusTransmission(int rate) void UAS::enableExtendedSystemStatusTransmission(int rate)
...@@ -1536,7 +1535,6 @@ void UAS::enableExtendedSystemStatusTransmission(int rate) ...@@ -1536,7 +1535,6 @@ void UAS::enableExtendedSystemStatusTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
} }
void UAS::enableRCChannelDataTransmission(int rate) void UAS::enableRCChannelDataTransmission(int rate)
...@@ -1562,7 +1560,6 @@ void UAS::enableRCChannelDataTransmission(int rate) ...@@ -1562,7 +1560,6 @@ void UAS::enableRCChannelDataTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
#endif #endif
} }
...@@ -1585,7 +1582,6 @@ void UAS::enableRawControllerDataTransmission(int rate) ...@@ -1585,7 +1582,6 @@ void UAS::enableRawControllerDataTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
} }
//void UAS::enableRawSensorFusionTransmission(int rate) //void UAS::enableRawSensorFusionTransmission(int rate)
...@@ -1629,7 +1625,6 @@ void UAS::enablePositionTransmission(int rate) ...@@ -1629,7 +1625,6 @@ void UAS::enablePositionTransmission(int rate)
mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream); mavlink_msg_request_data_stream_encode(mavlink->getSystemId(), mavlink->getComponentId(), &msg, &stream);
// Send message twice to increase chance of reception // Send message twice to increase chance of reception
sendMessage(msg); sendMessage(msg);
sendMessage(msg);
} }
void UAS::enableExtra1Transmission(int rate) void UAS::enableExtra1Transmission(int rate)
...@@ -2122,7 +2117,7 @@ void UAS::shutdown() ...@@ -2122,7 +2117,7 @@ void UAS::shutdown()
{ {
// If the active UAS is set, execute command // If the active UAS is set, execute command
mavlink_message_t msg; mavlink_message_t msg;
mavlink_msg_command_long_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_ALL, MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 0, 2, 0, 0, 0, 0, 0, 0); mavlink_msg_command_long_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_ALL, MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN, 1, 0, 2, 0, 0, 0, 0, 0);
sendMessage(msg); sendMessage(msg);
result = true; result = true;
} }
...@@ -2165,33 +2160,34 @@ QString UAS::getShortModeTextFor(int id) ...@@ -2165,33 +2160,34 @@ QString UAS::getShortModeTextFor(int id)
qDebug() << "MODE:" << modeid; qDebug() << "MODE:" << modeid;
// BASE MODE DECODING // BASE MODE DECODING
if (modeid & MAV_MODE_FLAG_DECODE_POSITION_AUTO) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_AUTO)
{ {
mode = "AUTO"; mode += "AUTO";
} }
else if (modeid & MAV_MODE_FLAG_DECODE_POSITION_GUIDED) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_GUIDED)
{ {
mode = "GUIDED"; mode += "GUIDED";
} }
else if (modeid & MAV_MODE_FLAG_DECODE_POSITION_STABILIZE) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_STABILIZE)
{ {
mode = "STABILIZED"; mode += "STABILIZED";
} }
else if (modeid & MAV_MODE_FLAG_DECODE_POSITION_TEST) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_TEST)
{ {
mode = "TEST"; mode += "TEST";
} }
else if (modeid & MAV_MODE_FLAG_DECODE_POSITION_MANUAL) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_MANUAL)
{ {
mode = "MANUAL"; mode += "MANUAL";
} }
else
if (modeid == 0)
{ {
mode = "PREFLIGHT"; mode = "PREFLIGHT";
} }
// ARMED STATE DECODING // ARMED STATE DECODING
if (modeid & MAV_MODE_FLAG_DECODE_POSITION_SAFETY) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_SAFETY)
{ {
mode.prepend("A|"); mode.prepend("A|");
} }
...@@ -2201,7 +2197,7 @@ QString UAS::getShortModeTextFor(int id) ...@@ -2201,7 +2197,7 @@ QString UAS::getShortModeTextFor(int id)
} }
// HARDWARE IN THE LOOP DECODING // HARDWARE IN THE LOOP DECODING
if (modeid & MAV_MODE_FLAG_DECODE_POSITION_HIL) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_HIL)
{ {
mode.prepend("HIL:"); mode.prepend("HIL:");
} }
......
...@@ -45,8 +45,8 @@ UASWaypointManager::UASWaypointManager(UAS* _uas) ...@@ -45,8 +45,8 @@ UASWaypointManager::UASWaypointManager(UAS* _uas)
current_state(WP_IDLE), current_state(WP_IDLE),
current_partner_systemid(0), current_partner_systemid(0),
current_partner_compid(0), current_partner_compid(0),
protocol_timer(this), currentWaypointEditable(NULL),
currentWaypointEditable(NULL) protocol_timer(this)
{ {
if (uas) if (uas)
{ {
...@@ -112,7 +112,14 @@ void UASWaypointManager::handleLocalPositionChanged(UASInterface* mav, double x, ...@@ -112,7 +112,14 @@ void UASWaypointManager::handleLocalPositionChanged(UASInterface* mav, double x,
void UASWaypointManager::handleGlobalPositionChanged(UASInterface* mav, double lat, double lon, double alt, quint64 time) void UASWaypointManager::handleGlobalPositionChanged(UASInterface* mav, double lat, double lon, double alt, quint64 time)
{ {
Q_UNUSED(mav);
Q_UNUSED(time);
if (waypointsEditable.count() > 0 && currentWaypointEditable && (currentWaypointEditable->getFrame() == MAV_FRAME_GLOBAL || currentWaypointEditable->getFrame() == MAV_FRAME_GLOBAL_RELATIVE_ALT))
{
// TODO FIXME Calculate distance
double dist = 0;
emit waypointDistanceChanged(dist);
}
} }
void UASWaypointManager::handleWaypointCount(quint8 systemId, quint8 compId, quint16 count) void UASWaypointManager::handleWaypointCount(quint8 systemId, quint8 compId, quint16 count)
...@@ -240,6 +247,7 @@ void UASWaypointManager::handleWaypointReached(quint8 systemId, quint8 compId, m ...@@ -240,6 +247,7 @@ void UASWaypointManager::handleWaypointReached(quint8 systemId, quint8 compId, m
void UASWaypointManager::handleWaypointCurrent(quint8 systemId, quint8 compId, mavlink_mission_current_t *wpc) void UASWaypointManager::handleWaypointCurrent(quint8 systemId, quint8 compId, mavlink_mission_current_t *wpc)
{ {
Q_UNUSED(compId);
if (!uas) return; if (!uas) return;
if (systemId == uasid) { if (systemId == uasid) {
// FIXME Petri // FIXME Petri
......
...@@ -216,7 +216,7 @@ void HDDisplay::saveState() ...@@ -216,7 +216,7 @@ void HDDisplay::saveState()
// Restore instrument settings // Restore instrument settings
for (int i = 0; i < acceptList->count(); i++) { for (int i = 0; i < acceptList->count(); i++) {
QString key = acceptList->at(i); QString key = acceptList->at(i);
instruments += "|" + QString::number(minValues.value(key, -1.0))+","+key+","+acceptUnitList->at(i)+","+QString::number(maxValues.value(key, +1.0))+","+((symmetric.value(key, false)) ? "s" : ""); instruments += "|" + QString::number(minValues.value(key, -1.0))+","+key+","+acceptUnitList->at(i)+","+QString::number(maxValues.value(key, +1.0))+","+customNames.value(key, "")+","+((symmetric.value(key, false)) ? "s" : "");
} }
// qDebug() << "Saving" << instruments; // qDebug() << "Saving" << instruments;
...@@ -271,16 +271,23 @@ void HDDisplay::addGauge() ...@@ -271,16 +271,23 @@ void HDDisplay::addGauge()
QStringList items; QStringList items;
for (int i = 0; i < values.count(); ++i) { for (int i = 0; i < values.count(); ++i) {
QString key = values.keys().at(i); QString key = values.keys().at(i);
QString label = key;
QStringList keySplit = key.split(".");
if (keySplit.size() > 1)
{
keySplit.removeFirst();
label = keySplit.join(".");
}
QString unit = units.value(key); QString unit = units.value(key);
if (unit.contains("deg") || unit.contains("rad")) { if (unit.contains("deg") || unit.contains("rad")) {
items.append(QString("%1,%2,%3,%4,s").arg("-180").arg(key).arg(unit).arg("+180")); items.append(QString("%1,%2,%3,%4,%5,s").arg("-180").arg(key).arg(unit).arg("+180").arg(label));
} else { } else {
items.append(QString("%1,%2,%3,%4").arg("0").arg(key).arg(unit).arg("+100")); items.append(QString("%1,%2,%3,%4,%5").arg("0").arg(key).arg(unit).arg("+100").arg(label));
} }
} }
bool ok; bool ok;
QString item = QInputDialog::getItem(this, tr("Add Gauge Instrument"), QString item = QInputDialog::getItem(this, tr("Add Gauge Instrument"),
tr("Format: min, curve name, unit, max[,s]"), items, 0, true, &ok); tr("Format: min, data name, unit, max, label [,s]"), items, 0, true, &ok);
if (ok && !item.isEmpty()) { if (ok && !item.isEmpty()) {
addGauge(item); addGauge(item);
} }
...@@ -307,9 +314,19 @@ void HDDisplay::addGauge(const QString& gauge) ...@@ -307,9 +314,19 @@ void HDDisplay::addGauge(const QString& gauge)
val = parts.at(3).toDouble(&ok); val = parts.at(3).toDouble(&ok);
success &= ok; success &= ok;
if (ok) maxValues.insert(key, val); if (ok) maxValues.insert(key, val);
// Convert name
if (parts.length() >= 5)
{
if (parts.at(4).length() > 0)
{
customNames.insert(key, parts.at(4));
}
}
// Convert symmetric flag // Convert symmetric flag
if (parts.length() >= 5) { if (parts.length() >= 6)
if (parts.at(4).contains("s")) { {
if (parts.at(5).contains("s"))
{
symmetric.insert(key, true); symmetric.insert(key, true);
} }
} }
...@@ -425,12 +442,15 @@ void HDDisplay::renderOverlay() ...@@ -425,12 +442,15 @@ void HDDisplay::renderOverlay()
float topSpacing = leftSpacing; float topSpacing = leftSpacing;
float yCoord = topSpacing + gaugeWidth/2.0f; float yCoord = topSpacing + gaugeWidth/2.0f;
for (int i = 0; i < acceptList->size(); ++i) { for (int i = 0; i < acceptList->size(); ++i)
{
QString value = acceptList->at(i); QString value = acceptList->at(i);
drawGauge(xCoord, yCoord, gaugeWidth/2.0f, minValues.value(value, -1.0f), maxValues.value(value, 1.0f), value, values.value(value, minValues.value(value, 0.0f)), gaugeColor, &painter, symmetric.value(value, false), goodRanges.value(value, qMakePair(0.0f, 0.5f)), critRanges.value(value, qMakePair(0.7f, 1.0f)), true); QString label = customNames.value(value);
drawGauge(xCoord, yCoord, gaugeWidth/2.0f, minValues.value(value, -1.0f), maxValues.value(value, 1.0f), label, values.value(value, minValues.value(value, 0.0f)), gaugeColor, &painter, symmetric.value(value, false), goodRanges.value(value, qMakePair(0.0f, 0.5f)), critRanges.value(value, qMakePair(0.7f, 1.0f)), true);
xCoord += gaugeWidth + leftSpacing; xCoord += gaugeWidth + leftSpacing;
// Move one row down if necessary // Move one row down if necessary
if (xCoord + gaugeWidth*0.9f > vwidth) { if (xCoord + gaugeWidth*0.9f > vwidth)
{
yCoord += topSpacing + gaugeWidth; yCoord += topSpacing + gaugeWidth;
xCoord = leftSpacing + gaugeWidth/2.0f; xCoord = leftSpacing + gaugeWidth/2.0f;
} }
...@@ -807,12 +827,45 @@ float HDDisplay::refLineWidthToPen(float line) ...@@ -807,12 +827,45 @@ float HDDisplay::refLineWidthToPen(float line)
return line * 2.50f; return line * 2.50f;
} }
void HDDisplay::addSource(QObject* obj)
{
//genericSources.append(obj);
// FIXME XXX HACK
// if (plots.size() > 0)
// {
// Connect generic source
connect(obj, SIGNAL(valueChanged(int,QString,QString,int,quint64)), this, SLOT(updateValue(int,QString,QString,int,quint64)));
connect(obj, SIGNAL(valueChanged(int,QString,QString,unsigned int,quint64)), this, SLOT(updateValue(int,QString,QString,unsigned int,quint64)));
connect(obj, SIGNAL(valueChanged(int,QString,QString,quint64,quint64)), this, SLOT(updateValue(int,QString,QString,quint64,quint64)));
connect(obj, SIGNAL(valueChanged(int,QString,QString,qint64,quint64)), this, SLOT(updateValue(int,QString,QString,qint64,quint64)));
connect(obj, SIGNAL(valueChanged(int,QString,QString,double,quint64)), this, SLOT(updateValue(int,QString,QString,double,quint64)));
// }
}
void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const int value, const quint64 msec) void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const int value, const quint64 msec)
{ {
if (!intValues.contains(name)) intValues.insert(name, true); if (!intValues.contains(name)) intValues.insert(name, true);
updateValue(uasId, name, unit, (double)value, msec); updateValue(uasId, name, unit, (double)value, msec);
} }
void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const unsigned int value, const quint64 msec)
{
if (!intValues.contains(name)) intValues.insert(name, true);
updateValue(uasId, name, unit, (double)value, msec);
}
void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const qint64 value, const quint64 msec)
{
if (!intValues.contains(name)) intValues.insert(name, true);
updateValue(uasId, name, unit, (double)value, msec);
}
void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const quint64 value, const quint64 msec)
{
if (!intValues.contains(name)) intValues.insert(name, true);
updateValue(uasId, name, unit, (double)value, msec);
}
void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const double value, const quint64 msec) void HDDisplay::updateValue(const int uasId, const QString& name, const QString& unit, const double value, const quint64 msec)
{ {
Q_UNUSED(uasId); Q_UNUSED(uasId);
......
...@@ -68,7 +68,14 @@ public slots: ...@@ -68,7 +68,14 @@ public slots:
void updateValue(const int uasId, const QString& name, const QString& unit, const double value, const quint64 msec); void updateValue(const int uasId, const QString& name, const QString& unit, const double value, const quint64 msec);
/** @brief Update a HDD integer value */ /** @brief Update a HDD integer value */
void updateValue(const int uasId, const QString& name, const QString& unit, const int value, const quint64 msec); void updateValue(const int uasId, const QString& name, const QString& unit, const int value, const quint64 msec);
/** @brief Update a HDD integer value */
void updateValue(const int uasId, const QString& name, const QString& unit, const unsigned int value, const quint64 msec);
/** @brief Update a HDD integer value */
void updateValue(const int uasId, const QString& name, const QString& unit, const qint64 value, const quint64 msec);
/** @brief Update a HDD integer value */
void updateValue(const int uasId, const QString& name, const QString& unit, const quint64 value, const quint64 msec);
virtual void setActiveUAS(UASInterface* uas); virtual void setActiveUAS(UASInterface* uas);
void addSource(QObject* obj);
/** @brief Removes a plot item by the action data */ /** @brief Removes a plot item by the action data */
void removeItemByAction(); void removeItemByAction();
...@@ -149,6 +156,7 @@ protected: ...@@ -149,6 +156,7 @@ protected:
QMap<QString, float> maxValues; ///< The maximum value this variable is assumed to have QMap<QString, float> maxValues; ///< The maximum value this variable is assumed to have
QMap<QString, bool> symmetric; ///< Draw the gauge / dial symmetric bool = yes QMap<QString, bool> symmetric; ///< Draw the gauge / dial symmetric bool = yes
QMap<QString, bool> intValues; ///< Is the gauge value an integer? QMap<QString, bool> intValues; ///< Is the gauge value an integer?
QMap<QString, QString> customNames; ///< Custom names for the data names
QMap<QString, QPair<float, float> > goodRanges; ///< The range of good values QMap<QString, QPair<float, float> > goodRanges; ///< The range of good values
QMap<QString, QPair<float, float> > critRanges; ///< The range of critical values QMap<QString, QPair<float, float> > critRanges; ///< The range of critical values
double scalingFactor; ///< Factor used to scale all absolute values to screen coordinates double scalingFactor; ///< Factor used to scale all absolute values to screen coordinates
......
...@@ -99,12 +99,13 @@ HSIDisplay::HSIDisplay(QWidget *parent) : ...@@ -99,12 +99,13 @@ HSIDisplay::HSIDisplay(QWidget *parent) :
laserFix(0), laserFix(0),
mavInitialized(false), mavInitialized(false),
bottomMargin(10.0f), bottomMargin(10.0f),
topMargin(12.0f),
userSetPointSet(false),
dragStarted(false), dragStarted(false),
topMargin(12.0f),
leftDragStarted(false), leftDragStarted(false),
mouseHasMoved(false), mouseHasMoved(false),
actionPending(false) actionPending(false),
userSetPointSet(false),
userXYSetPointSet(false)
{ {
refreshTimer->setInterval(updateInterval); refreshTimer->setInterval(updateInterval);
......
...@@ -12,7 +12,6 @@ MAVLinkDecoder::MAVLinkDecoder(MAVLinkProtocol* protocol, QObject *parent) : ...@@ -12,7 +12,6 @@ MAVLinkDecoder::MAVLinkDecoder(MAVLinkProtocol* protocol, QObject *parent) :
messageFilter.insert(MAVLINK_MSG_ID_HEARTBEAT, false); messageFilter.insert(MAVLINK_MSG_ID_HEARTBEAT, false);
messageFilter.insert(MAVLINK_MSG_ID_SYS_STATUS, false); messageFilter.insert(MAVLINK_MSG_ID_SYS_STATUS, false);
messageFilter.insert(MAVLINK_MSG_ID_STATUSTEXT, false); messageFilter.insert(MAVLINK_MSG_ID_STATUSTEXT, false);
messageFilter.insert(MAVLINK_MSG_ID_COMMAND_SHORT, false);
messageFilter.insert(MAVLINK_MSG_ID_COMMAND_LONG, false); messageFilter.insert(MAVLINK_MSG_ID_COMMAND_LONG, false);
messageFilter.insert(MAVLINK_MSG_ID_COMMAND_ACK, false); messageFilter.insert(MAVLINK_MSG_ID_COMMAND_ACK, false);
messageFilter.insert(MAVLINK_MSG_ID_PARAM_SET, false); messageFilter.insert(MAVLINK_MSG_ID_PARAM_SET, false);
......
...@@ -88,12 +88,12 @@ MainWindow* MainWindow::instance(QSplashScreen* screen) ...@@ -88,12 +88,12 @@ MainWindow* MainWindow::instance(QSplashScreen* screen)
MainWindow::MainWindow(QWidget *parent): MainWindow::MainWindow(QWidget *parent):
QMainWindow(parent), QMainWindow(parent),
currentView(VIEW_UNCONNECTED), currentView(VIEW_UNCONNECTED),
currentStyle(QGC_MAINWINDOW_STYLE_INDOOR),
aboutToCloseFlag(false), aboutToCloseFlag(false),
changingViewsFlag(false), changingViewsFlag(false),
centerStackActionGroup(this),
styleFileName(QCoreApplication::applicationDirPath() + "/style-indoor.css"), styleFileName(QCoreApplication::applicationDirPath() + "/style-indoor.css"),
autoReconnect(false), autoReconnect(false),
currentStyle(QGC_MAINWINDOW_STYLE_INDOOR),
centerStackActionGroup(this),
lowPowerMode(false) lowPowerMode(false)
{ {
hide(); hide();
...@@ -427,14 +427,18 @@ void MainWindow::buildCommonWidgets() ...@@ -427,14 +427,18 @@ void MainWindow::buildCommonWidgets()
if (!headDown1DockWidget) { if (!headDown1DockWidget) {
headDown1DockWidget = new QDockWidget(tr("Flight Display"), this); headDown1DockWidget = new QDockWidget(tr("Flight Display"), this);
headDown1DockWidget->setWidget( new HDDisplay(acceptList, "Flight Display", this) ); HDDisplay* hdDisplay = new HDDisplay(acceptList, "Flight Display", this);
hdDisplay->addSource(mavlinkDecoder);
headDown1DockWidget->setWidget(hdDisplay);
headDown1DockWidget->setObjectName("HEAD_DOWN_DISPLAY_1_DOCK_WIDGET"); headDown1DockWidget->setObjectName("HEAD_DOWN_DISPLAY_1_DOCK_WIDGET");
addTool(headDown1DockWidget, tr("Flight Display"), Qt::RightDockWidgetArea); addTool(headDown1DockWidget, tr("Flight Display"), Qt::RightDockWidgetArea);
} }
if (!headDown2DockWidget) { if (!headDown2DockWidget) {
headDown2DockWidget = new QDockWidget(tr("Actuator Status"), this); headDown2DockWidget = new QDockWidget(tr("Actuator Status"), this);
headDown2DockWidget->setWidget( new HDDisplay(acceptList2, "Actuator Status", this) ); HDDisplay* hdDisplay = new HDDisplay(acceptList2, "Actuator Status", this);
hdDisplay->addSource(mavlinkDecoder);
headDown2DockWidget->setWidget(hdDisplay);
headDown2DockWidget->setObjectName("HEAD_DOWN_DISPLAY_2_DOCK_WIDGET"); headDown2DockWidget->setObjectName("HEAD_DOWN_DISPLAY_2_DOCK_WIDGET");
addTool(headDown2DockWidget, tr("Actuator Status"), Qt::RightDockWidgetArea); addTool(headDown2DockWidget, tr("Actuator Status"), Qt::RightDockWidgetArea);
} }
...@@ -1603,4 +1607,4 @@ void MainWindow::arrangeSenseSoarCenterStack() ...@@ -1603,4 +1607,4 @@ void MainWindow::arrangeSenseSoarCenterStack()
void MainWindow::connectSenseSoarActions() void MainWindow::connectSenseSoarActions()
{ {
} }
*/ */
\ No newline at end of file
...@@ -279,6 +279,7 @@ protected: ...@@ -279,6 +279,7 @@ protected:
/** @brief Keeps track of the current view */ /** @brief Keeps track of the current view */
VIEW_SECTIONS currentView; VIEW_SECTIONS currentView;
QGC_MAINWINDOW_STYLE currentStyle;
bool aboutToCloseFlag; bool aboutToCloseFlag;
bool changingViewsFlag; bool changingViewsFlag;
...@@ -372,7 +373,6 @@ protected: ...@@ -372,7 +373,6 @@ protected:
QTimer* videoTimer; QTimer* videoTimer;
QString styleFileName; QString styleFileName;
bool autoReconnect; bool autoReconnect;
QGC_MAINWINDOW_STYLE currentStyle;
Qt::WindowStates windowStateVal; Qt::WindowStates windowStateVal;
bool lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets bool lowPowerMode; ///< If enabled, QGC reduces the update rates of all widgets
QGCFlightGearLink* fgLink; QGCFlightGearLink* fgLink;
......
...@@ -707,15 +707,15 @@ void QGCParamWidget::saveParameters() ...@@ -707,15 +707,15 @@ void QGCParamWidget::saveParameters()
{ {
case QVariant::Int: case QVariant::Int:
paramValue = paramValue.arg(j.value().toInt()); paramValue = paramValue.arg(j.value().toInt());
paramType.arg(MAVLINK_TYPE_INT32_T); paramType = paramType.arg(MAVLINK_TYPE_INT32_T);
break; break;
case QVariant::UInt: case QVariant::UInt:
paramValue = paramValue.arg(j.value().toUInt()); paramValue = paramValue.arg(j.value().toUInt());
paramType.arg(MAVLINK_TYPE_UINT32_T); paramType = paramType.arg(MAVLINK_TYPE_UINT32_T);
break; break;
case QMetaType::Float: case QMetaType::Float:
paramValue = paramValue.arg(j.value().toDouble(), 25, 'g', 12); paramValue = paramValue.arg(j.value().toDouble(), 25, 'g', 12);
paramType.arg(MAVLINK_TYPE_FLOAT); paramType = paramType.arg(MAVLINK_TYPE_FLOAT);
break; break;
default: default:
qCritical() << "ABORTED PARAM WRITE TO FILE, NO VALID QVARIANT TYPE" << j.value(); qCritical() << "ABORTED PARAM WRITE TO FILE, NO VALID QVARIANT TYPE" << j.value();
......
...@@ -50,12 +50,12 @@ UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent), ...@@ -50,12 +50,12 @@ UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent),
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setUAS(UASInterface*))); connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setUAS(UASInterface*)));
ui.modeComboBox->clear(); ui.modeComboBox->clear();
ui.modeComboBox->insertItem(MAV_MODE_PREFLIGHT, UAS::getShortModeTextFor(MAV_MODE_PREFLIGHT)); ui.modeComboBox->insertItem(0, UAS::getShortModeTextFor(MAV_MODE_PREFLIGHT), MAV_MODE_PREFLIGHT);
ui.modeComboBox->insertItem(MAV_MODE_STABILIZE_ARMED, UAS::getShortModeTextFor(MAV_MODE_STABILIZE_ARMED)); ui.modeComboBox->insertItem(1, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED));
ui.modeComboBox->insertItem(MAV_MODE_MANUAL_ARMED, UAS::getShortModeTextFor(MAV_MODE_MANUAL_ARMED)); ui.modeComboBox->insertItem(2, UAS::getShortModeTextFor(MAV_MODE_FLAG_MANUAL_INPUT_ENABLED), MAV_MODE_FLAG_MANUAL_INPUT_ENABLED);
ui.modeComboBox->insertItem(MAV_MODE_GUIDED_DISARMED, UAS::getShortModeTextFor(MAV_MODE_GUIDED_ARMED)); ui.modeComboBox->insertItem(3, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED)), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED));
ui.modeComboBox->insertItem(MAV_MODE_AUTO_ARMED, UAS::getShortModeTextFor(MAV_MODE_AUTO_ARMED)); ui.modeComboBox->insertItem(4, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED | MAV_MODE_FLAG_AUTO_ENABLED)), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED | MAV_MODE_FLAG_AUTO_ENABLED));
ui.modeComboBox->insertItem(MAV_MODE_TEST_ARMED, UAS::getShortModeTextFor(MAV_MODE_TEST_ARMED)); ui.modeComboBox->insertItem(5, UAS::getShortModeTextFor((MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_TEST_ENABLED)), (MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_TEST_ENABLED));
connect(ui.modeComboBox, SIGNAL(activated(int)), this, SLOT(setMode(int))); connect(ui.modeComboBox, SIGNAL(activated(int)), this, SLOT(setMode(int)));
connect(ui.setModeButton, SIGNAL(clicked()), this, SLOT(transmitMode())); connect(ui.setModeButton, SIGNAL(clicked()), this, SLOT(transmitMode()));
...@@ -157,7 +157,7 @@ void UASControlWidget::updateState(int state) ...@@ -157,7 +157,7 @@ void UASControlWidget::updateState(int state)
void UASControlWidget::setMode(int mode) void UASControlWidget::setMode(int mode)
{ {
// Adapt context button mode // Adapt context button mode
uasMode = mode; uasMode = ui.modeComboBox->itemData(mode).toInt();
ui.modeComboBox->blockSignals(true); ui.modeComboBox->blockSignals(true);
ui.modeComboBox->setCurrentIndex(mode); ui.modeComboBox->setCurrentIndex(mode);
ui.modeComboBox->blockSignals(false); ui.modeComboBox->blockSignals(false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment