Commit bb350243 authored by Bryan Godbolt's avatar Bryan Godbolt

Merge branch 'master' of git://github.com/pixhawk/qgroundcontrol into dev

parents 7cee3ba2 1755f202
* { font-family: "Bitstream Vera Sans"; font: "Roman"; font-size: 12px; }
QWidget#colorIcon {} QWidget#colorIcon {}
QWidget { QWidget {
......
...@@ -72,6 +72,8 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv) ...@@ -72,6 +72,8 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
// Show splash screen // Show splash screen
QPixmap splashImage(":images/splash.png"); QPixmap splashImage(":images/splash.png");
QSplashScreen* splashScreen = new QSplashScreen(splashImage, Qt::WindowStaysOnTopHint); QSplashScreen* splashScreen = new QSplashScreen(splashImage, Qt::WindowStaysOnTopHint);
// Delete splash screen after mainWindow was displayed
splashScreen->setAttribute(Qt::WA_DeleteOnClose);
splashScreen->show(); splashScreen->show();
splashScreen->showMessage(tr("Loading application fonts"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141)); splashScreen->showMessage(tr("Loading application fonts"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141));
...@@ -79,13 +81,15 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv) ...@@ -79,13 +81,15 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
// Exit main application when last window is closed // Exit main application when last window is closed
connect(this, SIGNAL(lastWindowClosed()), this, SLOT(quit())); connect(this, SIGNAL(lastWindowClosed()), this, SLOT(quit()));
// Set application font // Load application font
QFontDatabase fontDatabase = QFontDatabase(); QFontDatabase fontDatabase = QFontDatabase();
const QString fontFileName = ":/general/vera.ttf"; ///< Font file is part of the QRC file and compiled into the app const QString fontFileName = ":/general/vera.ttf"; ///< Font file is part of the QRC file and compiled into the app
const QString fontFamilyName = "Bitstream Vera Sans"; const QString fontFamilyName = "Bitstream Vera Sans";
if(!QFile::exists(fontFileName)) printf("ERROR! font file: %s DOES NOT EXIST!\n", fontFileName.toStdString().c_str()); if(!QFile::exists(fontFileName)) printf("ERROR! font file: %s DOES NOT EXIST!\n", fontFileName.toStdString().c_str());
fontDatabase.addApplicationFont(fontFileName); fontDatabase.addApplicationFont(fontFileName);
setFont(fontDatabase.font(fontFamilyName, "Roman", 12)); // Avoid Using setFont(). In the Qt docu you can read the following:
// "Warning: Do not use this function in conjunction with Qt Style Sheets."
// setFont(fontDatabase.font(fontFamilyName, "Roman", 12));
// Start the comm link manager // Start the comm link manager
splashScreen->showMessage(tr("Starting Communication Links"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141)); splashScreen->showMessage(tr("Starting Communication Links"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141));
......
...@@ -139,7 +139,6 @@ void PxQuadMAV::receiveMessage(LinkInterface* link, mavlink_message_t message) ...@@ -139,7 +139,6 @@ void PxQuadMAV::receiveMessage(LinkInterface* link, mavlink_message_t message)
emit errCountChanged(uasId, "IMU", "SPI0", status.spi0_err_count); emit errCountChanged(uasId, "IMU", "SPI0", status.spi0_err_count);
emit errCountChanged(uasId, "IMU", "SPI1", status.spi1_err_count); emit errCountChanged(uasId, "IMU", "SPI1", status.spi1_err_count);
emit errCountChanged(uasId, "IMU", "UART", status.uart_total_err_count); emit errCountChanged(uasId, "IMU", "UART", status.uart_total_err_count);
qDebug() << "System Load:" << status.load;
emit UAS::valueChanged(this, "Load", ((float)status.load)/1000.0f, MG::TIME::getGroundTimeNow()); emit UAS::valueChanged(this, "Load", ((float)status.load)/1000.0f, MG::TIME::getGroundTimeNow());
} }
break; break;
......
...@@ -391,6 +391,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) ...@@ -391,6 +391,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message)
{ {
mavlink_rc_channels_t channels; mavlink_rc_channels_t channels;
mavlink_msg_rc_channels_decode(&message, &channels); mavlink_msg_rc_channels_decode(&message, &channels);
emit remoteControlRSSIChanged(channels.rssi/255.0f);
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
switch (i) switch (i)
...@@ -576,6 +577,43 @@ void UAS::setLocalPositionSetpoint(float x, float y, float z, float yaw) ...@@ -576,6 +577,43 @@ void UAS::setLocalPositionSetpoint(float x, float y, float z, float yaw)
#endif #endif
} }
void UAS::setLocalPositionOffset(float x, float y, float z, float yaw)
{
#ifdef MAVLINK_ENABLED_PIXHAWK_MESSAGES
mavlink_message_t msg;
mavlink_msg_position_control_offset_set_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, 0, x, y, z, yaw);
sendMessage(msg);
#endif
}
void UAS::startRadioControlCalibration()
{
mavlink_message_t msg;
mavlink_msg_action_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_IMU, MAV_ACTION_CALIBRATE_RC);
sendMessage(msg);
}
void UAS::startMagnetometerCalibration()
{
mavlink_message_t msg;
mavlink_msg_action_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_IMU, MAV_ACTION_CALIBRATE_MAG);
sendMessage(msg);
}
void UAS::startGyroscopeCalibration()
{
mavlink_message_t msg;
mavlink_msg_action_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_IMU, MAV_ACTION_CALIBRATE_GYRO);
sendMessage(msg);
}
void UAS::startPressureCalibration()
{
mavlink_message_t msg;
mavlink_msg_action_pack(mavlink->getSystemId(), mavlink->getComponentId(), &msg, uasId, MAV_COMP_ID_IMU, MAV_ACTION_CALIBRATE_PRESSURE);
sendMessage(msg);
}
quint64 UAS::getUnixTime(quint64 time) quint64 UAS::getUnixTime(quint64 time)
{ {
if (time == 0) if (time == 0)
......
...@@ -221,6 +221,13 @@ public slots: ...@@ -221,6 +221,13 @@ public slots:
/** @brief Set local position setpoint */ /** @brief Set local position setpoint */
void setLocalPositionSetpoint(float x, float y, float z, float yaw); void setLocalPositionSetpoint(float x, float y, float z, float yaw);
/** @brief Add an offset in body frame to the setpoint */
void setLocalPositionOffset(float x, float y, float z, float yaw);
void startRadioControlCalibration();
void startMagnetometerCalibration();
void startGyroscopeCalibration();
void startPressureCalibration();
signals: signals:
......
...@@ -211,6 +211,12 @@ public slots: ...@@ -211,6 +211,12 @@ public slots:
virtual void enableRawSensorFusionTransmission(bool enabled) = 0; virtual void enableRawSensorFusionTransmission(bool enabled) = 0;
virtual void setLocalPositionSetpoint(float x, float y, float z, float yaw) = 0; virtual void setLocalPositionSetpoint(float x, float y, float z, float yaw) = 0;
virtual void setLocalPositionOffset(float x, float y, float z, float yaw) = 0;
virtual void startRadioControlCalibration() = 0;
virtual void startMagnetometerCalibration() = 0;
virtual void startGyroscopeCalibration() = 0;
virtual void startPressureCalibration() = 0;
protected: protected:
QColor color; QColor color;
...@@ -331,6 +337,8 @@ signals: ...@@ -331,6 +337,8 @@ signals:
void positionYawControlEnabled(bool enabled); void positionYawControlEnabled(bool enabled);
/** @brief Value of a remote control channel */ /** @brief Value of a remote control channel */
void remoteControlChannelChanged(int channelId, float raw, float normalized); void remoteControlChannelChanged(int channelId, float raw, float normalized);
/** @brief Remote control RSSI changed */
void remoteControlRSSIChanged(float rssi);
/** /**
* @brief Localization quality changed * @brief Localization quality changed
......
...@@ -108,6 +108,7 @@ MainWindow::~MainWindow() ...@@ -108,6 +108,7 @@ MainWindow::~MainWindow()
void MainWindow::buildWidgets() void MainWindow::buildWidgets()
{ {
//FIXME: memory of acceptList will never be freed again
QStringList* acceptList = new QStringList(); QStringList* acceptList = new QStringList();
acceptList->append("roll IMU"); acceptList->append("roll IMU");
acceptList->append("pitch IMU"); acceptList->append("pitch IMU");
...@@ -116,50 +117,93 @@ void MainWindow::buildWidgets() ...@@ -116,50 +117,93 @@ void MainWindow::buildWidgets()
acceptList->append("pitchspeed IMU"); acceptList->append("pitchspeed IMU");
acceptList->append("yawspeed IMU"); acceptList->append("yawspeed IMU");
//FIXME: memory of acceptList2 will never be freed again
QStringList* acceptList2 = new QStringList(); QStringList* acceptList2 = new QStringList();
acceptList2->append("Battery"); acceptList2->append("Battery");
acceptList2->append("Pressure"); acceptList2->append("Pressure");
//TODO: move protocol outside UI
mavlink = new MAVLinkProtocol(); mavlink = new MAVLinkProtocol();
linechart = new Linecharts(this);
control = new UASControlWidget(this); // Center widgets
list = new UASListWidget(this); linechartWidget = new Linecharts(this);
waypoints = new WaypointList(this, NULL); hudWidget = new HUD(640, 480, this);
info = new UASInfoWidget(this); mapWidget = new MapWidget(this);
detection = new ObjectDetectionView("images/patterns", this); protocolWidget = new XMLCommProtocolWidget(this);
hud = new HUD(640, 480, this); dataplotWidget = new QGCDataPlot2D(this);
debugConsole= new DebugConsole(this);
map = new MapWidget(this); // Dock widgets
protocol = new XMLCommProtocolWidget(this); controlDockWidget = new QDockWidget(tr("Control"), this);
parameters = new ParameterInterface(this); controlDockWidget->setWidget( new UASControlWidget(this) );
watchdogControl = new WatchdogControl(this);
hsi = new HSIDisplay(this); listDockWidget = new QDockWidget(tr("Unmanned Systems"), this);
headDown1 = new HDDisplay(acceptList, this); listDockWidget->setWidget( new UASListWidget(this) );
headDown2 = new HDDisplay(acceptList2, this);
waypointsDockWidget = new QDockWidget(tr("Waypoint List"), this);
waypointsDockWidget->setWidget( new WaypointList(this, NULL) );
infoDockWidget = new QDockWidget(tr("Status Details"), this);
infoDockWidget->setWidget( new UASInfoWidget(this) );
detectionDockWidget = new QDockWidget(tr("Object Recognition"), this);
detectionDockWidget->setWidget( new ObjectDetectionView("images/patterns", this) );
debugConsoleDockWidget = new QDockWidget(tr("Communication Console"), this);
debugConsoleDockWidget->setWidget( new DebugConsole(this) );
parametersDockWidget = new QDockWidget(tr("Onboard Parameters"), this);
parametersDockWidget->setWidget( new ParameterInterface(this) );
watchdogControlDockWidget = new QDockWidget(tr("Process Control"), this);
watchdogControlDockWidget->setWidget( new WatchdogControl(this) );
hsiDockWidget = new QDockWidget(tr("Horizontal Situation Indicator"), this);
hsiDockWidget->setWidget( new HSIDisplay(this) );
headDown1DockWidget = new QDockWidget(tr("Primary Flight Display"), this);
headDown1DockWidget->setWidget( new HDDisplay(acceptList, this) );
headDown2DockWidget = new QDockWidget(tr("Payload Status"), this);
headDown2DockWidget->setWidget( new HDDisplay(acceptList2, this) );
rcViewDockWidget = new QDockWidget(tr("Radio Control"), this);
rcViewDockWidget->setWidget( new QGCRemoteControlView(this) );
// Dialogue widgets
//FIXME: free memory in destructor
joystick = new JoystickInput(); joystick = new JoystickInput();
dataplot = new QGCDataPlot2D(this);
rcView = new QGCRemoteControlView(this);
} }
void MainWindow::connectWidgets() void MainWindow::connectWidgets()
{ {
connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), linechart, SLOT(addSystem(UASInterface*))); if (linechartWidget)
connect(UASManager::instance(), SIGNAL(activeUASSet(int)), linechart, SLOT(selectSystem(int))); {
connect(linechart, SIGNAL(logfileWritten(QString)), this, SLOT(loadDataView(QString))); connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)),
connect(mavlink, SIGNAL(receiveLossChanged(int, float)), info, SLOT(updateSendLoss(int, float))); linechartWidget, SLOT(addSystem(UASInterface*)));
connect(UASManager::instance(), SIGNAL(activeUASSet(int)),
linechartWidget, SLOT(selectSystem(int)));
connect(linechartWidget, SIGNAL(logfileWritten(QString)),
this, SLOT(loadDataView(QString)));
}
if (infoDockWidget && infoDockWidget->widget())
{
connect(mavlink, SIGNAL(receiveLossChanged(int, float)),
infoDockWidget->widget(), SLOT(updateSendLoss(int, float)));
}
} }
void MainWindow::arrangeCenterStack() void MainWindow::arrangeCenterStack()
{ {
centerStack = new QStackedWidget(this); QStackedWidget *centerStack = new QStackedWidget(this);
if (!centerStack) return;
centerStack->addWidget(linechart); if (linechartWidget) centerStack->addWidget(linechartWidget);
centerStack->addWidget(protocol); if (protocolWidget) centerStack->addWidget(protocolWidget);
centerStack->addWidget(map); if (mapWidget) centerStack->addWidget(mapWidget);
centerStack->addWidget(hud); if (hudWidget) centerStack->addWidget(hudWidget);
centerStack->addWidget(dataplot); if (dataplotWidget) centerStack->addWidget(dataplotWidget);
setCentralWidget(centerStack); setCentralWidget(centerStack);
} }
...@@ -425,13 +469,35 @@ void MainWindow::UASCreated(UASInterface* uas) ...@@ -425,13 +469,35 @@ void MainWindow::UASCreated(UASInterface* uas)
ui.menuConnected_Systems->addAction(icon, tr("Select %1 for control").arg(uas->getUASName()), uas, SLOT(setSelected())); ui.menuConnected_Systems->addAction(icon, tr("Select %1 for control").arg(uas->getUASName()), uas, SLOT(setSelected()));
// FIXME Should be not inside the mainwindow // FIXME Should be not inside the mainwindow
connect(uas, SIGNAL(textMessageReceived(int,int,int,QString)), debugConsole, SLOT(receiveTextMessage(int,int,int,QString))); if (debugConsoleDockWidget)
{
DebugConsole *debugConsole = dynamic_cast<DebugConsole*>(debugConsoleDockWidget->widget());
if (debugConsole)
{
connect(uas, SIGNAL(textMessageReceived(int,int,int,QString)),
debugConsole, SLOT(receiveTextMessage(int,int,int,QString)));
}
}
// Health / System status indicator // Health / System status indicator
info->addUAS(uas); if (infoDockWidget)
{
UASInfoWidget *infoWidget = dynamic_cast<UASInfoWidget*>(infoDockWidget->widget());
if (infoWidget)
{
infoWidget->addUAS(uas);
}
}
// UAS List // UAS List
list->addUAS(uas); if (listDockWidget)
{
UASListWidget *listWidget = dynamic_cast<UASListWidget*>(listDockWidget->widget());
if (listWidget)
{
listWidget->addUAS(uas);
}
}
// Camera view // Camera view
//camera->addUAS(uas); //camera->addUAS(uas);
...@@ -455,27 +521,42 @@ void MainWindow::UASCreated(UASInterface* uas) ...@@ -455,27 +521,42 @@ void MainWindow::UASCreated(UASInterface* uas)
void MainWindow::clearView() void MainWindow::clearView()
{ {
// Halt HUD // Halt HUD
hud->stop(); if (hudWidget) hudWidget->stop();
linechart->setActive(false); // Disable linechart
headDown1->stop(); if (linechartWidget) linechartWidget->setActive(false);
headDown2->stop(); // Halt HDDs
hsi->stop(); if (headDown1DockWidget)
{
HDDisplay* hddWidget = dynamic_cast<HDDisplay*>( headDown1DockWidget->widget() );
if (hddWidget) hddWidget->stop();
}
if (headDown2DockWidget)
{
HDDisplay* hddWidget = dynamic_cast<HDDisplay*>( headDown2DockWidget->widget() );
if (hddWidget) hddWidget->stop();
}
// Halt HSI
if (hsiDockWidget)
{
HSIDisplay* hsi = dynamic_cast<HSIDisplay*>( hsiDockWidget->widget() );
if (hsi) hsi->stop();
}
// Remove all dock widgets // Remove all dock widgets from main window
QList<QObject*> list = this->children(); QObjectList childList( this->children() );
QList<QObject*>::iterator i; QObjectList::iterator i;
for (i = list.begin(); i != list.end(); ++i) QDockWidget* dockWidget;
for (i = childList.begin(); i != childList.end(); ++i)
{ {
QDockWidget* widget = dynamic_cast<QDockWidget*>(*i); dockWidget = dynamic_cast<QDockWidget*>(*i);
if (widget) if (dockWidget)
{ {
// Hide widgets // Remove dock widget from main window
QWidget* childWidget = dynamic_cast<QWidget*>(widget->widget()); this->removeDockWidget(dockWidget);
if (childWidget) childWidget->setVisible(false); // Deletion of dockWidget would also delete all child
// Remove dock widget // widgets of dockWidget
this->removeDockWidget(widget); // Is there a way to unset a widget from QDockWidget?
//delete widget;
} }
} }
} }
...@@ -486,45 +567,69 @@ void MainWindow::loadSlugsView() ...@@ -486,45 +567,69 @@ void MainWindow::loadSlugsView()
// Engineer view, used in EMAV2009 // Engineer view, used in EMAV2009
// LINE CHART // LINE CHART
linechart->setActive(true); if (linechartWidget)
centerStack->setCurrentWidget(linechart); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
linechartWidget->setActive(true);
centerStack->setCurrentWidget(linechartWidget);
}
}
// UAS CONTROL // UAS CONTROL
QDockWidget* container1 = new QDockWidget(tr("Control"), this); if (controlDockWidget)
container1->setWidget(control); {
addDockWidget(Qt::LeftDockWidgetArea, container1); addDockWidget(Qt::LeftDockWidgetArea, controlDockWidget);
controlDockWidget->show();
}
// UAS LIST // UAS LIST
QDockWidget* container4 = new QDockWidget(tr("Unmanned Systems"), this); if (listDockWidget)
container4->setWidget(list); {
addDockWidget(Qt::BottomDockWidgetArea, container4); addDockWidget(Qt::BottomDockWidgetArea, listDockWidget);
listDockWidget->show();
}
// UAS STATUS // UAS STATUS
QDockWidget* container3 = new QDockWidget(tr("Status Details"), this); if (infoDockWidget)
container3->setWidget(info); {
addDockWidget(Qt::LeftDockWidgetArea, container3); addDockWidget(Qt::LeftDockWidgetArea, infoDockWidget);
infoDockWidget->show();
}
// HORIZONTAL SITUATION INDICATOR // HORIZONTAL SITUATION INDICATOR
QDockWidget* container6 = new QDockWidget(tr("Horizontal Situation Indicator"), this); if (hsiDockWidget)
container6->setWidget(hsi); {
HSIDisplay* hsi = dynamic_cast<HSIDisplay*>( hsiDockWidget->widget() );
if (hsi)
{
hsi->start(); hsi->start();
addDockWidget(Qt::LeftDockWidgetArea, container6); addDockWidget(Qt::LeftDockWidgetArea, hsiDockWidget);
hsiDockWidget->show();
}
}
// WAYPOINT LIST // WAYPOINT LIST
QDockWidget* container5 = new QDockWidget(tr("Waypoint List"), this); if (waypointsDockWidget)
container5->setWidget(waypoints); {
addDockWidget(Qt::BottomDockWidgetArea, container5); addDockWidget(Qt::BottomDockWidgetArea, waypointsDockWidget);
waypointsDockWidget->show();
}
// DEBUG CONSOLE // DEBUG CONSOLE
QDockWidget* container7 = new QDockWidget(tr("Communication Console"), this); if (debugConsoleDockWidget)
container7->setWidget(debugConsole); {
addDockWidget(Qt::BottomDockWidgetArea, container7); addDockWidget(Qt::BottomDockWidgetArea, debugConsoleDockWidget);
debugConsoleDockWidget->show();
}
// ONBOARD PARAMETERS // ONBOARD PARAMETERS
QDockWidget* containerParams = new QDockWidget(tr("Onboard Parameters"), this); if (parametersDockWidget)
containerParams->setWidget(parameters); {
addDockWidget(Qt::RightDockWidgetArea, containerParams); addDockWidget(Qt::RightDockWidgetArea, parametersDockWidget);
parametersDockWidget->show();
}
this->show(); this->show();
} }
...@@ -535,44 +640,64 @@ void MainWindow::loadPixhawkView() ...@@ -535,44 +640,64 @@ void MainWindow::loadPixhawkView()
// Engineer view, used in EMAV2009 // Engineer view, used in EMAV2009
// LINE CHART // LINE CHART
linechart->setActive(true); if (linechartWidget)
centerStack->setCurrentWidget(linechart); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
linechartWidget->setActive(true);
centerStack->setCurrentWidget(linechartWidget);
}
}
// UAS CONTROL // UAS CONTROL
QDockWidget* container1 = new QDockWidget(tr("Control"), this); if (controlDockWidget)
container1->setWidget(control); {
addDockWidget(Qt::LeftDockWidgetArea, container1); addDockWidget(Qt::LeftDockWidgetArea, controlDockWidget);
controlDockWidget->show();
}
// UAS LIST // UAS LIST
QDockWidget* container4 = new QDockWidget(tr("Unmanned Systems"), this); if (listDockWidget)
container4->setWidget(list); {
addDockWidget(Qt::BottomDockWidgetArea, container4); addDockWidget(Qt::BottomDockWidgetArea, listDockWidget);
listDockWidget->show();
}
// UAS STATUS // UAS STATUS
QDockWidget* container3 = new QDockWidget(tr("Status Details"), this); if (infoDockWidget)
container3->setWidget(info); {
addDockWidget(Qt::LeftDockWidgetArea, container3); addDockWidget(Qt::LeftDockWidgetArea, infoDockWidget);
infoDockWidget->show();
}
// WAYPOINT LIST // WAYPOINT LIST
QDockWidget* container5 = new QDockWidget(tr("Waypoint List"), this); if (waypointsDockWidget)
container5->setWidget(waypoints); {
addDockWidget(Qt::BottomDockWidgetArea, container5); addDockWidget(Qt::BottomDockWidgetArea, waypointsDockWidget);
waypointsDockWidget->show();
}
// DEBUG CONSOLE // DEBUG CONSOLE
QDockWidget* container7 = new QDockWidget(tr("Communication Console"), this); if (debugConsoleDockWidget)
container7->setWidget(debugConsole); {
addDockWidget(Qt::BottomDockWidgetArea, container7); addDockWidget(Qt::BottomDockWidgetArea, debugConsoleDockWidget);
debugConsoleDockWidget->show();
}
// RADIO CONTROL VIEW // RADIO CONTROL VIEW
QDockWidget* rcContainer = new QDockWidget(tr("Radio Control"), this); if (rcViewDockWidget)
rcContainer->setWidget(rcView); {
addDockWidget(Qt::BottomDockWidgetArea, rcContainer); addDockWidget(Qt::BottomDockWidgetArea, rcViewDockWidget);
rcViewDockWidget->show();
}
// ONBOARD PARAMETERS // ONBOARD PARAMETERS
QDockWidget* containerParams = new QDockWidget(tr("Onboard Parameters"), this); if (parametersDockWidget)
containerParams->setWidget(parameters); {
addDockWidget(Qt::RightDockWidgetArea, containerParams); addDockWidget(Qt::RightDockWidgetArea, parametersDockWidget);
parametersDockWidget->show();
}
this->show(); this->show();
} }
...@@ -580,14 +705,30 @@ void MainWindow::loadPixhawkView() ...@@ -580,14 +705,30 @@ void MainWindow::loadPixhawkView()
void MainWindow::loadDataView() void MainWindow::loadDataView()
{ {
clearView(); clearView();
centerStack->setCurrentWidget(dataplot);
// DATAPLOT
if (dataplotWidget)
{
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
centerStack->setCurrentWidget(dataplotWidget);
}
} }
void MainWindow::loadDataView(QString fileName) void MainWindow::loadDataView(QString fileName)
{ {
clearView(); clearView();
centerStack->setCurrentWidget(dataplot);
dataplot->loadFile(fileName); // DATAPLOT
if (dataplotWidget)
{
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
centerStack->setCurrentWidget(dataplotWidget);
dataplotWidget->loadFile(fileName);
}
}
} }
void MainWindow::loadPilotView() void MainWindow::loadPilotView()
...@@ -595,20 +736,38 @@ void MainWindow::loadPilotView() ...@@ -595,20 +736,38 @@ void MainWindow::loadPilotView()
clearView(); clearView();
// HEAD UP DISPLAY // HEAD UP DISPLAY
centerStack->setCurrentWidget(hud); if (hudWidget)
hud->start(); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
centerStack->setCurrentWidget(hudWidget);
hudWidget->start();
}
}
//connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), pfd, SLOT(setActiveUAS(UASInterface*))); //connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), pfd, SLOT(setActiveUAS(UASInterface*)));
QDockWidget* container1 = new QDockWidget(tr("Primary Flight Display"), this); if (headDown1DockWidget)
container1->setWidget(headDown1); {
addDockWidget(Qt::RightDockWidgetArea, container1); HDDisplay *hdd = dynamic_cast<HDDisplay*>(headDown1DockWidget->widget());
if (hdd)
QDockWidget* container2 = new QDockWidget(tr("Payload Status"), this); {
container2->setWidget(headDown2); addDockWidget(Qt::RightDockWidgetArea, headDown1DockWidget);
addDockWidget(Qt::RightDockWidgetArea, container2); headDown1DockWidget->show();
hdd->start();
}
headDown1->start(); }
headDown2->start(); if (headDown2DockWidget)
{
HDDisplay *hdd = dynamic_cast<HDDisplay*>(headDown2DockWidget->widget());
if (hdd)
{
addDockWidget(Qt::RightDockWidgetArea, headDown2DockWidget);
headDown2DockWidget->show();
hdd->start();
}
}
this->show(); this->show();
} }
...@@ -618,43 +777,68 @@ void MainWindow::loadOperatorView() ...@@ -618,43 +777,68 @@ void MainWindow::loadOperatorView()
clearView(); clearView();
// MAP // MAP
centerStack->setCurrentWidget(map); if (mapWidget)
{
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
centerStack->setCurrentWidget(mapWidget);
}
}
// UAS CONTROL // UAS CONTROL
QDockWidget* container1 = new QDockWidget(tr("Control"), this); if (controlDockWidget)
container1->setWidget(control); {
addDockWidget(Qt::LeftDockWidgetArea, container1); addDockWidget(Qt::LeftDockWidgetArea, controlDockWidget);
controlDockWidget->show();
}
// UAS LIST // UAS LIST
QDockWidget* container4 = new QDockWidget(tr("Unmanned Systems"), this); if (listDockWidget)
container4->setWidget(list); {
addDockWidget(Qt::BottomDockWidgetArea, container4); addDockWidget(Qt::BottomDockWidgetArea, listDockWidget);
listDockWidget->show();
}
// UAS STATUS // UAS STATUS
QDockWidget* container3 = new QDockWidget(tr("Status Details"), this); if (infoDockWidget)
container3->setWidget(info); {
addDockWidget(Qt::LeftDockWidgetArea, container3); addDockWidget(Qt::LeftDockWidgetArea, infoDockWidget);
infoDockWidget->show();
}
// WAYPOINT LIST // WAYPOINT LIST
QDockWidget* container5 = new QDockWidget(tr("Waypoint List"), this); if (waypointsDockWidget)
container5->setWidget(waypoints); {
addDockWidget(Qt::BottomDockWidgetArea, container5); addDockWidget(Qt::BottomDockWidgetArea, waypointsDockWidget);
waypointsDockWidget->show();
}
// HORIZONTAL SITUATION INDICATOR // HORIZONTAL SITUATION INDICATOR
QDockWidget* container7 = new QDockWidget(tr("Horizontal Situation Indicator"), this); if (hsiDockWidget)
container7->setWidget(hsi); {
HSIDisplay* hsi = dynamic_cast<HSIDisplay*>( hsiDockWidget->widget() );
if (hsi)
{
addDockWidget(Qt::BottomDockWidgetArea, hsiDockWidget);
hsiDockWidget->show();
hsi->start(); hsi->start();
addDockWidget(Qt::BottomDockWidgetArea, container7); }
}
// OBJECT DETECTION // OBJECT DETECTION
QDockWidget* container6 = new QDockWidget(tr("Object Recognition"), this); if (detectionDockWidget)
container6->setWidget(detection); {
addDockWidget(Qt::RightDockWidgetArea, container6); addDockWidget(Qt::RightDockWidgetArea, detectionDockWidget);
detectionDockWidget->show();
}
// PROCESS CONTROL // PROCESS CONTROL
QDockWidget* pControl = new QDockWidget(tr("Process Control"), this); if (watchdogControlDockWidget)
pControl->setWidget(watchdogControl); {
addDockWidget(Qt::RightDockWidgetArea, pControl); addDockWidget(Qt::RightDockWidgetArea, watchdogControlDockWidget);
watchdogControlDockWidget->show();
}
this->show(); this->show();
} }
...@@ -663,8 +847,15 @@ void MainWindow::loadSettingsView() ...@@ -663,8 +847,15 @@ void MainWindow::loadSettingsView()
clearView(); clearView();
// LINE CHART // LINE CHART
linechart->setActive(true); if (linechartWidget)
centerStack->setCurrentWidget(linechart); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
linechartWidget->setActive(true);
centerStack->setCurrentWidget(linechartWidget);
}
}
/* /*
// COMM XML // COMM XML
...@@ -673,9 +864,12 @@ void MainWindow::loadSettingsView() ...@@ -673,9 +864,12 @@ void MainWindow::loadSettingsView()
addDockWidget(Qt::LeftDockWidgetArea, container1);*/ addDockWidget(Qt::LeftDockWidgetArea, container1);*/
// ONBOARD PARAMETERS // ONBOARD PARAMETERS
QDockWidget* container6 = new QDockWidget(tr("Onboard Parameters"), this); if (parametersDockWidget)
container6->setWidget(parameters); {
addDockWidget(Qt::RightDockWidgetArea, container6); addDockWidget(Qt::RightDockWidgetArea, parametersDockWidget);
parametersDockWidget->show();
}
this->show(); this->show();
} }
...@@ -685,39 +879,57 @@ void MainWindow::loadEngineerView() ...@@ -685,39 +879,57 @@ void MainWindow::loadEngineerView()
// Engineer view, used in EMAV2009 // Engineer view, used in EMAV2009
// LINE CHART // LINE CHART
linechart->setActive(true); if (linechartWidget)
centerStack->setCurrentWidget(linechart); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
linechartWidget->setActive(true);
centerStack->setCurrentWidget(linechartWidget);
}
}
// UAS CONTROL // UAS CONTROL
QDockWidget* container1 = new QDockWidget(tr("Control"), this); if (controlDockWidget)
container1->setWidget(control); {
addDockWidget(Qt::LeftDockWidgetArea, container1); addDockWidget(Qt::LeftDockWidgetArea, controlDockWidget);
controlDockWidget->show();
}
// UAS LIST // UAS LIST
QDockWidget* container4 = new QDockWidget(tr("Unmanned Systems"), this); if (listDockWidget)
container4->setWidget(list); {
addDockWidget(Qt::BottomDockWidgetArea, container4); addDockWidget(Qt::BottomDockWidgetArea, listDockWidget);
listDockWidget->show();
}
// UAS STATUS // UAS STATUS
QDockWidget* container3 = new QDockWidget(tr("Status Details"), this); if (infoDockWidget)
container3->setWidget(info); {
addDockWidget(Qt::LeftDockWidgetArea, container3); addDockWidget(Qt::LeftDockWidgetArea, infoDockWidget);
infoDockWidget->show();
}
// WAYPOINT LIST // WAYPOINT LIST
QDockWidget* container5 = new QDockWidget(tr("Waypoint List"), this); if (waypointsDockWidget)
container5->setWidget(waypoints); {
addDockWidget(Qt::BottomDockWidgetArea, container5); addDockWidget(Qt::BottomDockWidgetArea, waypointsDockWidget);
waypointsDockWidget->show();
}
// DEBUG CONSOLE // DEBUG CONSOLE
QDockWidget* container7 = new QDockWidget(tr("Communication Console"), this); if (debugConsoleDockWidget)
container7->setWidget(debugConsole); {
addDockWidget(Qt::BottomDockWidgetArea, container7); addDockWidget(Qt::BottomDockWidgetArea, debugConsoleDockWidget);
debugConsoleDockWidget->show();
}
// ONBOARD PARAMETERS // ONBOARD PARAMETERS
QDockWidget* containerParams = new QDockWidget(tr("Onboard Parameters"), this); if (parametersDockWidget)
containerParams->setWidget(parameters); {
addDockWidget(Qt::RightDockWidgetArea, containerParams); addDockWidget(Qt::RightDockWidgetArea, parametersDockWidget);
parametersDockWidget->show();
}
this->show(); this->show();
} }
...@@ -725,7 +937,16 @@ void MainWindow::loadEngineerView() ...@@ -725,7 +937,16 @@ void MainWindow::loadEngineerView()
void MainWindow::loadMAVLinkView() void MainWindow::loadMAVLinkView()
{ {
clearView(); clearView();
centerStack->setCurrentWidget(protocol);
if (protocolWidget)
{
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
centerStack->setCurrentWidget(protocolWidget);
}
}
this->show(); this->show();
} }
...@@ -733,55 +954,87 @@ void MainWindow::loadAllView() ...@@ -733,55 +954,87 @@ void MainWindow::loadAllView()
{ {
clearView(); clearView();
QDockWidget* containerPFD = new QDockWidget(tr("Primary Flight Display"), this); if (headDown1DockWidget)
containerPFD->setWidget(headDown1); {
addDockWidget(Qt::RightDockWidgetArea, containerPFD); HDDisplay *hdd = dynamic_cast<HDDisplay*>(headDown1DockWidget->widget());
if (hdd)
QDockWidget* containerPayload = new QDockWidget(tr("Payload Status"), this); {
containerPayload->setWidget(headDown2); addDockWidget(Qt::RightDockWidgetArea, headDown1DockWidget);
addDockWidget(Qt::RightDockWidgetArea, containerPayload); headDown1DockWidget->show();
hdd->start();
}
headDown1->start(); }
headDown2->start(); if (headDown2DockWidget)
{
HDDisplay *hdd = dynamic_cast<HDDisplay*>(headDown2DockWidget->widget());
if (hdd)
{
addDockWidget(Qt::RightDockWidgetArea, headDown2DockWidget);
headDown2DockWidget->show();
hdd->start();
}
}
// UAS CONTROL // UAS CONTROL
QDockWidget* containerControl = new QDockWidget(tr("Control"), this); if (controlDockWidget)
containerControl->setWidget(control); {
addDockWidget(Qt::LeftDockWidgetArea, containerControl); addDockWidget(Qt::LeftDockWidgetArea, controlDockWidget);
controlDockWidget->show();
}
// UAS LIST // UAS LIST
QDockWidget* containerUASList = new QDockWidget(tr("Unmanned Systems"), this); if (listDockWidget)
containerUASList->setWidget(list); {
addDockWidget(Qt::BottomDockWidgetArea, containerUASList); addDockWidget(Qt::BottomDockWidgetArea, listDockWidget);
listDockWidget->show();
}
// UAS STATUS // UAS STATUS
QDockWidget* containerStatus = new QDockWidget(tr("Status Details"), this); if (infoDockWidget)
containerStatus->setWidget(info); {
addDockWidget(Qt::LeftDockWidgetArea, containerStatus); addDockWidget(Qt::LeftDockWidgetArea, infoDockWidget);
infoDockWidget->show();
}
// WAYPOINT LIST // WAYPOINT LIST
QDockWidget* containerWaypoints = new QDockWidget(tr("Waypoint List"), this); if (waypointsDockWidget)
containerWaypoints->setWidget(waypoints); {
addDockWidget(Qt::BottomDockWidgetArea, containerWaypoints); addDockWidget(Qt::BottomDockWidgetArea, waypointsDockWidget);
waypointsDockWidget->show();
}
// DEBUG CONSOLE // DEBUG CONSOLE
QDockWidget* containerComm = new QDockWidget(tr("Communication Console"), this); if (debugConsoleDockWidget)
containerComm->setWidget(debugConsole); {
addDockWidget(Qt::BottomDockWidgetArea, containerComm); addDockWidget(Qt::BottomDockWidgetArea, debugConsoleDockWidget);
debugConsoleDockWidget->show();
}
// OBJECT DETECTION // OBJECT DETECTION
QDockWidget* containerObjRec = new QDockWidget(tr("Object Recognition"), this); if (detectionDockWidget)
containerObjRec->setWidget(detection); {
addDockWidget(Qt::RightDockWidgetArea, containerObjRec); addDockWidget(Qt::RightDockWidgetArea, detectionDockWidget);
detectionDockWidget->show();
}
// LINE CHART // LINE CHART
linechart->setActive(true); if (linechartWidget)
centerStack->setCurrentWidget(linechart); {
QStackedWidget *centerStack = dynamic_cast<QStackedWidget*>(centralWidget());
if (centerStack)
{
linechartWidget->setActive(true);
centerStack->setCurrentWidget(linechartWidget);
}
}
// ONBOARD PARAMETERS // ONBOARD PARAMETERS
QDockWidget* containerParams = new QDockWidget(tr("Onboard Parameters"), this); if (parametersDockWidget)
containerParams->setWidget(parameters); {
addDockWidget(Qt::RightDockWidgetArea, containerParams); addDockWidget(Qt::RightDockWidgetArea, parametersDockWidget);
parametersDockWidget->show();
}
this->show(); this->show();
} }
......
...@@ -154,24 +154,26 @@ protected: ...@@ -154,24 +154,26 @@ protected:
LinkInterface* udpLink; LinkInterface* udpLink;
QSettings settings; QSettings settings;
UASControlWidget* control; // Center widgets
Linecharts* linechart; QPointer<Linecharts> linechartWidget;
UASInfoWidget* info; QPointer<HUD> hudWidget;
CameraView* camera; QPointer<MapWidget> mapWidget;
UASListWidget* list; QPointer<XMLCommProtocolWidget> protocolWidget;
WaypointList* waypoints; QPointer<QGCDataPlot2D> dataplotWidget;
ObjectDetectionView* detection; // Dock widgets
HUD* hud; QPointer<QDockWidget> controlDockWidget;
DebugConsole* debugConsole; QPointer<QDockWidget> infoDockWidget;
MapWidget* map; QPointer<QDockWidget> cameraDockWidget;
ParameterInterface* parameters; QPointer<QDockWidget> listDockWidget;
XMLCommProtocolWidget* protocol; QPointer<QDockWidget> waypointsDockWidget;
HDDisplay* headDown1; QPointer<QDockWidget> detectionDockWidget;
HDDisplay* headDown2; QPointer<QDockWidget> debugConsoleDockWidget;
WatchdogControl* watchdogControl; QPointer<QDockWidget> parametersDockWidget;
HSIDisplay* hsi; QPointer<QDockWidget> headDown1DockWidget;
QGCDataPlot2D* dataplot; QPointer<QDockWidget> headDown2DockWidget;
QGCRemoteControlView* rcView; QPointer<QDockWidget> watchdogControlDockWidget;
QPointer<QDockWidget> hsiDockWidget;
QPointer<QDockWidget> rcViewDockWidget;
// Popup widgets // Popup widgets
JoystickWidget* joystickWidget; JoystickWidget* joystickWidget;
...@@ -187,9 +189,6 @@ protected: ...@@ -187,9 +189,6 @@ protected:
QAction* killUASAct; QAction* killUASAct;
QAction* simulateUASAct; QAction* simulateUASAct;
QDockWidget* controlDock;
QStackedWidget* centerStack;
LogCompressor* comp; LogCompressor* comp;
QString screenFileName; QString screenFileName;
QTimer* videoTimer; QTimer* videoTimer;
......
...@@ -2,9 +2,7 @@ ...@@ -2,9 +2,7 @@
QGroundControl Open Source Ground Control Station QGroundControl Open Source Ground Control Station
(c) 2009, 2010 QGROUNDCONTROL/PIXHAWK PROJECT (c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
<http://www.qgroundcontrol.org>
<http://pixhawk.ethz.ch>
This file is part of the QGROUNDCONTROL project This file is part of the QGROUNDCONTROL project
...@@ -22,7 +20,6 @@ This file is part of the QGROUNDCONTROL project ...@@ -22,7 +20,6 @@ This file is part of the QGROUNDCONTROL project
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>. along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/ ======================================================================*/
/** /**
* @file * @file
* @brief Implementation of class QGCParamWidget * @brief Implementation of class QGCParamWidget
......
...@@ -52,18 +52,21 @@ QGCRemoteControlView::QGCRemoteControlView(QWidget *parent) : ...@@ -52,18 +52,21 @@ QGCRemoteControlView::QGCRemoteControlView(QWidget *parent) :
nameLabel = new QLabel(this); nameLabel = new QLabel(this);
nameLabel->setText("No MAV selected yet.."); nameLabel->setText("No MAV selected yet..");
layout->addWidget(nameLabel, 0, 0, 1, 2); layout->addWidget(nameLabel, 0, 0, 1, 2);
// Add spacer left of button
layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding), 2, 0); // RSSI bar
// Set stretch to maximize spacer, not button // Create new layout
layout->setColumnStretch(0, 100); QHBoxLayout* rssiLayout = new QHBoxLayout();
layout->setColumnStretch(1, 1); rssiLayout->setSpacing(5);
// Calibrate button // Add content
QPushButton* calibrateButton = new QPushButton(this); rssiLayout->addWidget(new QLabel(tr("Signal"), this));
calibrateButton->setText(tr("Calibrate")); // Append raw label
// Connect to calibration slot // Append progress bar
connect(calibrateButton, SIGNAL(clicked()), this, SLOT(calibrate())); rssiBar = new QProgressBar(this);
// Add button rssiBar->setMinimum(0);
layout->addWidget(calibrateButton, 2, 1); rssiBar->setMaximum(100);
rssiBar->setValue(0);
rssiLayout->addWidget(rssiBar);
layout->addItem(rssiLayout, 2, 0, 1, 2);
setVisible(false); setVisible(false);
connect(UASManager::instance(), SIGNAL(activeUASSet(int)), this, SLOT(setUASId(int))); connect(UASManager::instance(), SIGNAL(activeUASSet(int)), this, SLOT(setUASId(int)));
...@@ -75,11 +78,6 @@ QGCRemoteControlView::~QGCRemoteControlView() ...@@ -75,11 +78,6 @@ QGCRemoteControlView::~QGCRemoteControlView()
delete channelLayout; delete channelLayout;
} }
void QGCRemoteControlView::calibrate()
{
// Run auto-calibration
}
void QGCRemoteControlView::setUASId(int id) void QGCRemoteControlView::setUASId(int id)
{ {
if (uasId != -1) if (uasId != -1)
...@@ -89,6 +87,7 @@ void QGCRemoteControlView::setUASId(int id) ...@@ -89,6 +87,7 @@ void QGCRemoteControlView::setUASId(int id)
{ {
// The UAS exists, disconnect any existing connections // The UAS exists, disconnect any existing connections
disconnect(uas, SIGNAL(remoteControlChannelChanged(int,float,float)), this, SLOT(setChannel(int,float,float))); disconnect(uas, SIGNAL(remoteControlChannelChanged(int,float,float)), this, SLOT(setChannel(int,float,float)));
disconnect(uas, SIGNAL(remoteControlRSSIChanged(float)), this, SLOT(setRemoteRSSI(float)));
} }
} }
...@@ -99,6 +98,7 @@ void QGCRemoteControlView::setUASId(int id) ...@@ -99,6 +98,7 @@ void QGCRemoteControlView::setUASId(int id)
// New UAS exists, connect // New UAS exists, connect
nameLabel->setText(QString("RC Input of %1").arg(newUAS->getUASName())); nameLabel->setText(QString("RC Input of %1").arg(newUAS->getUASName()));
connect(newUAS, SIGNAL(remoteControlChannelChanged(int,float,float)), this, SLOT(setChannel(int,float,float))); connect(newUAS, SIGNAL(remoteControlChannelChanged(int,float,float)), this, SLOT(setChannel(int,float,float)));
connect(newUAS, SIGNAL(remoteControlRSSIChanged(float)), this, SLOT(setRemoteRSSI(float)));
} }
} }
...@@ -132,7 +132,7 @@ void QGCRemoteControlView::setRemoteRSSI(float rssiNormalized) ...@@ -132,7 +132,7 @@ void QGCRemoteControlView::setRemoteRSSI(float rssiNormalized)
void QGCRemoteControlView::appendChannelWidget(int channelId) void QGCRemoteControlView::appendChannelWidget(int channelId)
{ {
// Create new layout // Create new layout
QHBoxLayout* layout = new QHBoxLayout(this); QHBoxLayout* layout = new QHBoxLayout();
// Add content // Add content
layout->addWidget(new QLabel(QString("Channel %1").arg(channelId + 1), this)); layout->addWidget(new QLabel(QString("Channel %1").arg(channelId + 1), this));
QLabel* raw = new QLabel(this); QLabel* raw = new QLabel(this);
......
...@@ -51,7 +51,6 @@ public slots: ...@@ -51,7 +51,6 @@ public slots:
void setUASId(int id); void setUASId(int id);
void setChannel(int channelId, float raw, float normalized); void setChannel(int channelId, float raw, float normalized);
void setRemoteRSSI(float rssiNormalized); void setRemoteRSSI(float rssiNormalized);
void calibrate();
void redraw(); void redraw();
protected slots: protected slots:
...@@ -67,6 +66,7 @@ protected: ...@@ -67,6 +66,7 @@ protected:
QVector<float> normalized; QVector<float> normalized;
QVector<QLabel*> rawLabels; QVector<QLabel*> rawLabels;
QVector<QProgressBar*> progressBars; QVector<QProgressBar*> progressBars;
QProgressBar* rssiBar;
QLabel* nameLabel; QLabel* nameLabel;
private: private:
......
...@@ -46,6 +46,12 @@ QGCSensorSettingsWidget::QGCSensorSettingsWidget(UASInterface* uas, QWidget *par ...@@ -46,6 +46,12 @@ QGCSensorSettingsWidget::QGCSensorSettingsWidget(UASInterface* uas, QWidget *par
connect(ui->sendExtra1CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra1Transmission(bool))); connect(ui->sendExtra1CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra1Transmission(bool)));
connect(ui->sendExtra2CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra2Transmission(bool))); connect(ui->sendExtra2CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra2Transmission(bool)));
connect(ui->sendExtra3CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra3Transmission(bool))); connect(ui->sendExtra3CheckBox, SIGNAL(toggled(bool)), mav, SLOT(enableExtra3Transmission(bool)));
// Calibration
connect(ui->rcCalButton, SIGNAL(clicked()), mav, SLOT(startRadioControlCalibration()));
connect(ui->magCalButton, SIGNAL(clicked()), mav, SLOT(startMagnetometerCalibration()));
connect(ui->pressureCalButton, SIGNAL(clicked()), mav, SLOT(startPressureCalibration()));
connect(ui->gyroCalButton, SIGNAL(clicked()), mav, SLOT(startGyroscopeCalibration()));
} }
QGCSensorSettingsWidget::~QGCSensorSettingsWidget() QGCSensorSettingsWidget::~QGCSensorSettingsWidget()
......
...@@ -90,38 +90,51 @@ ...@@ -90,38 +90,51 @@
<property name="title"> <property name="title">
<string>Calibration Wizards</string> <string>Calibration Wizards</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout" columnstretch="0,50">
<property name="margin"> <property name="margin">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0"> <item row="1" column="0">
<widget class="QPushButton" name="gyroCalButton"> <widget class="QPushButton" name="magCalButton">
<property name="text"> <property name="text">
<string>Start dynamic calibration</string> <string>Start Mag. Calibration</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="4" column="0">
<widget class="QLabel" name="gyroCalDate"> <widget class="QPushButton" name="gyroCalButton">
<property name="text"> <property name="text">
<string>Date unknown</string> <string>Start Gyro Calibration</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="0">
<widget class="QPushButton" name="magCalButton"> <widget class="QPushButton" name="rcCalButton">
<property name="text"> <property name="text">
<string>Start static calibration</string> <string>Start RC Calibration</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="0">
<widget class="QLabel" name="magCalLabel"> <widget class="QPushButton" name="pressureCalButton">
<property name="text"> <property name="text">
<string>Date unknown</string> <string>Start Pressure Calibration</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
......
...@@ -51,13 +51,13 @@ This file is part of the PIXHAWK project ...@@ -51,13 +51,13 @@ This file is part of the PIXHAWK project
#define CONTROL_MODE_TEST2 "MODE TEST2" #define CONTROL_MODE_TEST2 "MODE TEST2"
#define CONTROL_MODE_TEST3 "MODE TEST3" #define CONTROL_MODE_TEST3 "MODE TEST3"
#define CONTROL_MODE_LOCKED_INDEX 2 #define CONTROL_MODE_LOCKED_INDEX 1
#define CONTROL_MODE_MANUAL_INDEX 3 #define CONTROL_MODE_MANUAL_INDEX 2
#define CONTROL_MODE_GUIDED_INDEX 4 #define CONTROL_MODE_GUIDED_INDEX 3
#define CONTROL_MODE_AUTO_INDEX 5 #define CONTROL_MODE_AUTO_INDEX 4
#define CONTROL_MODE_TEST1_INDEX 6 #define CONTROL_MODE_TEST1_INDEX 5
#define CONTROL_MODE_TEST2_INDEX 7 #define CONTROL_MODE_TEST2_INDEX 6
#define CONTROL_MODE_TEST3_INDEX 8 #define CONTROL_MODE_TEST3_INDEX 7
UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent), UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent),
uas(0), uas(0),
......
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