diff --git a/qgroundcontrol.pri b/qgroundcontrol.pri index b7d6a33..04fb7a4 100644 --- a/qgroundcontrol.pri +++ b/qgroundcontrol.pri @@ -37,16 +37,17 @@ message(Qt version $$[QT_VERSION]) macx { HARDWARE_PLATFORM = $$system(uname -a) - contains( HARDWARE_PLATFORM, 9.8.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 ) + { # x86 Mac OS X Leopard 10.5 and earlier CONFIG += x86 cocoa phonon message(Building for Mac OS X 32bit/Leopard 10.5 and earlier) - # Enable function-profiling with the OS X saturn tool - debug { + # Enable function-profiling with the OS X saturn tool + debug { #QMAKE_CXXFLAGS += -finstrument-functions #LIBS += -lSaturn - } + } } else { # x64 Mac OS X Snow Leopard 10.6 and later CONFIG += x86_64 cocoa diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index ee19485..cc0f235 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -437,6 +437,17 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) } break; + case MAVLINK_MSG_ID_WAYPOINT_ACK: + { + mavlink_waypoint_ack_t wpa; + mavlink_msg_waypoint_ack_decode(&message, &wpa); + if(wpa.target_system == mavlink->getSystemId() && wpa.target_component == mavlink->getComponentId()) + { + waypointManager.handleWaypointAck(message.sysid, message.compid, &wpa); + } + } + break; + case MAVLINK_MSG_ID_WAYPOINT_REQUEST: { mavlink_waypoint_request_t wpr; @@ -456,11 +467,11 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) } break; - case MAVLINK_MSG_ID_WAYPOINT_SET_CURRENT: + case MAVLINK_MSG_ID_WAYPOINT_CURRENT: { - mavlink_waypoint_set_current_t wpsc; - mavlink_msg_waypoint_set_current_decode(&message, &wpsc); - waypointManager.handleWaypointSetCurrent(message.sysid, message.compid, &wpsc); + mavlink_waypoint_current_t wpc; + mavlink_msg_waypoint_current_decode(&message, &wpc); + waypointManager.handleWaypointCurrent(message.sysid, message.compid, &wpc); } break; diff --git a/src/uas/UASWaypointManager.cc b/src/uas/UASWaypointManager.cc index c15601b..5e7a3d6 100644 --- a/src/uas/UASWaypointManager.cc +++ b/src/uas/UASWaypointManager.cc @@ -32,10 +32,13 @@ This file is part of the PIXHAWK project #include "UASWaypointManager.h" #include "UAS.h" -#define PROTOCOL_TIMEOUT_MS 2000 +#define PROTOCOL_TIMEOUT_MS 2000 ///< maximum time to wait for pending messages until timeout +#define PROTOCOL_DELAY_MS 40 ///< minimum delay between sent messages +#define PROTOCOL_MAX_RETRIES 3 ///< maximum number of send retries (after timeout) UASWaypointManager::UASWaypointManager(UAS &_uas) : uas(_uas), + current_retries(0), current_wp_id(0), current_count(0), current_state(WP_IDLE), @@ -48,25 +51,59 @@ UASWaypointManager::UASWaypointManager(UAS &_uas) void UASWaypointManager::timeout() { - protocol_timer.stop(); + if (current_retries > 0) + { + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries--; + qDebug() << "Timeout, retrying (retries left:" << current_retries << ")"; + if (current_state == WP_GETLIST) + { + sendWaypointRequestList(); + } + else if (current_state == WP_GETLIST_GETWPS) + { + sendWaypointRequest(current_wp_id); + } + else if (current_state == WP_SENDLIST) + { + sendWaypointCount(); + } + else if (current_state == WP_SENDLIST_SENDWPS) + { + sendWaypoint(current_wp_id); + } + else if (current_state == WP_CLEARLIST) + { + sendWaypointClearAll(); + } + else if (current_state == WP_SETCURRENT) + { + sendWaypointSetCurrent(current_wp_id); + } + } + else + { + protocol_timer.stop(); - qDebug() << "Waypoint transaction (state=" << current_state << ") timed out going to state WP_IDLE"; + qDebug() << "Waypoint transaction (state=" << current_state << ") timed out going to state WP_IDLE"; - emit updateStatusString("Operation timed out."); + emit updateStatusString("Operation timed out."); - current_state = WP_IDLE; - current_count = 0; - current_wp_id = 0; - current_partner_systemid = 0; - current_partner_compid = 0; + current_state = WP_IDLE; + current_count = 0; + current_wp_id = 0; + current_partner_systemid = 0; + current_partner_compid = 0; + } } void UASWaypointManager::handleWaypointCount(quint8 systemId, quint8 compId, quint16 count) { - protocol_timer.start(PROTOCOL_TIMEOUT_MS); - if (current_state == WP_GETLIST && systemId == current_partner_systemid && compId == current_partner_compid) { + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; + qDebug() << "got waypoint count (" << count << ") from ID " << systemId; if (count > 0) @@ -87,10 +124,11 @@ void UASWaypointManager::handleWaypointCount(quint8 systemId, quint8 compId, qui void UASWaypointManager::handleWaypoint(quint8 systemId, quint8 compId, mavlink_waypoint_t *wp) { - protocol_timer.start(PROTOCOL_TIMEOUT_MS); - if (systemId == current_partner_systemid && compId == current_partner_compid && current_state == WP_GETLIST_GETWPS && wp->seq == current_wp_id) { + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; + if(wp->seq == current_wp_id) { //update the UI FIXME @@ -105,6 +143,8 @@ void UASWaypointManager::handleWaypoint(quint8 systemId, quint8 compId, mavlink_ } else { + sendWaypointAck(0); + // all waypoints retrieved, change state to idle current_state = WP_IDLE; current_count = 0; @@ -125,30 +165,40 @@ void UASWaypointManager::handleWaypoint(quint8 systemId, quint8 compId, mavlink_ } } -void UASWaypointManager::handleWaypointRequest(quint8 systemId, quint8 compId, mavlink_waypoint_request_t *wpr) +void UASWaypointManager::handleWaypointAck(quint8 systemId, quint8 compId, mavlink_waypoint_ack_t *wpa) { - protocol_timer.start(PROTOCOL_TIMEOUT_MS); + if (systemId == current_partner_systemid && compId == current_partner_compid) + { + if((current_state == WP_SENDLIST || current_state == WP_SENDLIST_SENDWPS) && (current_wp_id == waypoint_buffer.count()-1 && wpa->type == 0)) + { + //all waypoints sent and ack received + protocol_timer.stop(); + current_state = WP_IDLE; + emit updateStatusString("done."); + qDebug() << "sent all waypoints to ID " << systemId; + } + else if(current_state == WP_CLEARLIST) + { + protocol_timer.stop(); + current_state = WP_IDLE; + emit updateStatusString("done."); + qDebug() << "cleared waypoint list of ID " << systemId; + } + } +} - if (systemId == current_partner_systemid && compId == current_partner_compid && ((current_state == WP_SENDLIST && wpr->seq == 0) || (current_state == WP_SENDLIST_SENDWPS && (wpr->seq == current_wp_id || wpr->seq == current_wp_id + 1)) || (current_state == WP_IDLE && wpr->seq == current_count-1))) +void UASWaypointManager::handleWaypointRequest(quint8 systemId, quint8 compId, mavlink_waypoint_request_t *wpr) +{ + if (systemId == current_partner_systemid && compId == current_partner_compid && ((current_state == WP_SENDLIST && wpr->seq == 0) || (current_state == WP_SENDLIST_SENDWPS && (wpr->seq == current_wp_id || wpr->seq == current_wp_id + 1)))) { - qDebug() << "handleWaypointRequest"; + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; if (wpr->seq < waypoint_buffer.count()) { current_state = WP_SENDLIST_SENDWPS; current_wp_id = wpr->seq; sendWaypoint(current_wp_id); - - if(current_wp_id == waypoint_buffer.count()-1) - { - //all waypoints sent, but we still have to wait for a possible rerequest of the last waypoint - current_state = WP_IDLE; - - protocol_timer.stop(); - emit updateStatusString("done."); - - qDebug() << "send all waypoints to ID " << systemId; - } } else { @@ -165,54 +215,77 @@ void UASWaypointManager::handleWaypointReached(quint8 systemId, quint8 compId, m } } -void UASWaypointManager::handleWaypointSetCurrent(quint8 systemId, quint8 compId, mavlink_waypoint_set_current_t *wpr) +void UASWaypointManager::handleWaypointCurrent(quint8 systemId, quint8 compId, mavlink_waypoint_current_t *wpc) { if (systemId == uas.getUASID() && compId == MAV_COMP_ID_WAYPOINTPLANNER) { - qDebug() << "new current waypoint" << wpr->seq; - emit currentWaypointChanged(wpr->seq); + if (current_state == WP_SETCURRENT) + { + protocol_timer.stop(); + current_state = WP_IDLE; + emit updateStatusString(QString("New current waypoint %1").arg(wpc->seq)); + } + qDebug() << "new current waypoint" << wpc->seq; + emit currentWaypointChanged(wpc->seq); } } void UASWaypointManager::clearWaypointList() { + if(current_state == WP_IDLE) + { + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; + current_state = WP_CLEARLIST; + current_wp_id = 0; + current_partner_systemid = uas.getUASID(); + current_partner_compid = MAV_COMP_ID_WAYPOINTPLANNER; + + sendWaypointClearAll(); + } } -void UASWaypointManager::requestWaypoints() +void UASWaypointManager::setCurrent(quint16 seq) { if(current_state == WP_IDLE) { protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; + + current_state = WP_SETCURRENT; + current_wp_id = seq; + current_partner_systemid = uas.getUASID(); + current_partner_compid = MAV_COMP_ID_WAYPOINTPLANNER; - mavlink_message_t message; - mavlink_waypoint_request_list_t wprl; + sendWaypointSetCurrent(current_wp_id); + } +} - wprl.target_system = uas.getUASID(); - wprl.target_component = MAV_COMP_ID_WAYPOINTPLANNER; +void UASWaypointManager::readWaypoints() +{ + if(current_state == WP_IDLE) + { + protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; current_state = WP_GETLIST; current_wp_id = 0; current_partner_systemid = uas.getUASID(); current_partner_compid = MAV_COMP_ID_WAYPOINTPLANNER; - const QString str = QString("requesting waypoint list..."); - emit updateStatusString(str); - - mavlink_msg_waypoint_request_list_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wprl); - uas.sendMessage(message); - - qDebug() << "sent waypoint list request to ID " << wprl.target_system; + sendWaypointRequestList(); } } -void UASWaypointManager::sendWaypoints() +void UASWaypointManager::writeWaypoints() { if (current_state == WP_IDLE) { if (waypoints.count() > 0) { protocol_timer.start(PROTOCOL_TIMEOUT_MS); + current_retries = PROTOCOL_MAX_RETRIES; current_count = waypoints.count(); current_state = WP_SENDLIST; @@ -250,20 +323,7 @@ void UASWaypointManager::sendWaypoints() } //send the waypoint count to UAS (this starts the send transaction) - mavlink_message_t message; - mavlink_waypoint_count_t wpc; - - wpc.target_system = uas.getUASID(); - wpc.target_component = MAV_COMP_ID_WAYPOINTPLANNER; - wpc.count = current_count; - - const QString str = QString("start transmitting waypoints..."); - emit updateStatusString(str); - - mavlink_msg_waypoint_count_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpc); - uas.sendMessage(message); - - qDebug() << "sent waypoint count (" << wpc.count << ") to ID " << wpc.target_system; + sendWaypointCount(); } } else @@ -273,6 +333,80 @@ void UASWaypointManager::sendWaypoints() } } +void UASWaypointManager::sendWaypointClearAll() +{ + mavlink_message_t message; + mavlink_waypoint_clear_all_t wpca; + + wpca.target_system = uas.getUASID(); + wpca.target_component = MAV_COMP_ID_WAYPOINTPLANNER; + + const QString str = QString("clearing waypoint list..."); + emit updateStatusString(str); + + mavlink_msg_waypoint_clear_all_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpca); + uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); + + qDebug() << "sent waypoint clear all to ID " << wpca.target_system; +} + +void UASWaypointManager::sendWaypointSetCurrent(quint16 seq) +{ + mavlink_message_t message; + mavlink_waypoint_set_current_t wpsc; + + wpsc.target_system = uas.getUASID(); + wpsc.target_component = MAV_COMP_ID_WAYPOINTPLANNER; + wpsc.seq = seq; + + const QString str = QString("Updating target waypoint..."); + emit updateStatusString(str); + + mavlink_msg_waypoint_set_current_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpsc); + uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); + + qDebug() << "sent waypoint set current (" << wpsc.seq << ") to ID " << wpsc.target_system; +} + +void UASWaypointManager::sendWaypointCount() +{ + mavlink_message_t message; + mavlink_waypoint_count_t wpc; + + wpc.target_system = uas.getUASID(); + wpc.target_component = MAV_COMP_ID_WAYPOINTPLANNER; + wpc.count = current_count; + + const QString str = QString("start transmitting waypoints..."); + emit updateStatusString(str); + + mavlink_msg_waypoint_count_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpc); + uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); + + qDebug() << "sent waypoint count (" << wpc.count << ") to ID " << wpc.target_system; +} + +void UASWaypointManager::sendWaypointRequestList() +{ + mavlink_message_t message; + mavlink_waypoint_request_list_t wprl; + + wprl.target_system = uas.getUASID(); + wprl.target_component = MAV_COMP_ID_WAYPOINTPLANNER; + + const QString str = QString("requesting waypoint list..."); + emit updateStatusString(str); + + mavlink_msg_waypoint_request_list_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wprl); + uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); + + qDebug() << "sent waypoint list request to ID " << wprl.target_system; +} + void UASWaypointManager::sendWaypointRequest(quint16 seq) { mavlink_message_t message; @@ -287,6 +421,7 @@ void UASWaypointManager::sendWaypointRequest(quint16 seq) mavlink_msg_waypoint_request_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpr); uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); qDebug() << "sent waypoint request (" << wpr.seq << ") to ID " << wpr.target_system; } @@ -308,7 +443,24 @@ void UASWaypointManager::sendWaypoint(quint16 seq) mavlink_msg_waypoint_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, wp); uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); qDebug() << "sent waypoint (" << wp->seq << ") to ID " << wp->target_system; } } + +void UASWaypointManager::sendWaypointAck(quint8 type) +{ + mavlink_message_t message; + mavlink_waypoint_ack_t wpa; + + wpa.target_system = uas.getUASID(); + wpa.target_component = MAV_COMP_ID_WAYPOINTPLANNER; + wpa.type = type; + + mavlink_msg_waypoint_ack_encode(uas.mavlink->getSystemId(), uas.mavlink->getComponentId(), &message, &wpa); + uas.sendMessage(message); + usleep(PROTOCOL_DELAY_MS * 1000); + + qDebug() << "sent waypoint ack (" << wpa.type << ") to ID " << wpa.target_system; +} diff --git a/src/uas/UASWaypointManager.h b/src/uas/UASWaypointManager.h index f8432d3..4ccd724 100644 --- a/src/uas/UASWaypointManager.h +++ b/src/uas/UASWaypointManager.h @@ -39,38 +39,59 @@ This file is part of the PIXHAWK project #include <mavlink.h> class UAS; +/** + * @brief Implementation of the MAVLINK waypoint protocol + * + * This class handles the communication with a waypoint manager on the MAV. + * All waypoints are stored in the QVector waypoints, modifications can be done with the WaypointList widget. + * Notice that currently the access to the internal waypoint storage is not guarded nor thread-safe. This works as long as no other widget alters the data. + * + * See http://qgroundcontrol.org/waypoint_protocol for more information about the protocol and the states. + */ class UASWaypointManager : public QObject { Q_OBJECT private: enum WaypointState { - WP_IDLE = 0, - WP_SENDLIST, - WP_SENDLIST_SENDWPS, - WP_GETLIST, - WP_GETLIST_GETWPS + WP_IDLE = 0, ///< Waiting for commands + WP_SENDLIST, ///< Initial state for sending waypoints to the MAV + WP_SENDLIST_SENDWPS,///< Sending waypoints + WP_GETLIST, ///< Initial state for retrieving wayppoints from the MAV + WP_GETLIST_GETWPS, ///< Receiving waypoints + WP_CLEARLIST, ///< Clearing waypoint list on the MAV + WP_SETCURRENT ///< Setting new current waypoint on the MAV }; ///< The possible states for the waypoint protocol public: - UASWaypointManager(UAS&); + UASWaypointManager(UAS&); ///< Standard constructor. - void handleWaypointCount(quint8 systemId, quint8 compId, quint16 count); - void handleWaypoint(quint8 systemId, quint8 compId, mavlink_waypoint_t *wp); - void handleWaypointRequest(quint8 systemId, quint8 compId, mavlink_waypoint_request_t *wpr); - void handleWaypointReached(quint8 systemId, quint8 compId, mavlink_waypoint_reached_t *wpr); - void handleWaypointSetCurrent(quint8 systemId, quint8 compId, mavlink_waypoint_set_current_t *wpr); + /** @name Protocol handlers */ + /*@{*/ + void handleWaypointCount(quint8 systemId, quint8 compId, quint16 count); ///< Handles received waypoint count messages + void handleWaypoint(quint8 systemId, quint8 compId, mavlink_waypoint_t *wp); ///< Handles received waypoint messages + void handleWaypointAck(quint8 systemId, quint8 compId, mavlink_waypoint_ack_t *wpa); ///< Handles received waypoint ack messages + void handleWaypointRequest(quint8 systemId, quint8 compId, mavlink_waypoint_request_t *wpr); ///< Handles received waypoint request messages + void handleWaypointReached(quint8 systemId, quint8 compId, mavlink_waypoint_reached_t *wpr); ///< Handles received waypoint reached messages + void handleWaypointCurrent(quint8 systemId, quint8 compId, mavlink_waypoint_current_t *wpc); ///< Handles received set current waypoint messages + /*@}*/ - QVector<Waypoint *> &getWaypointList(void) { return waypoints; } + QVector<Waypoint *> &getWaypointList(void) { return waypoints; } ///< Returns a reference to the local waypoint list. Gives full access to the internal data structure - Subject to change: Public const access and friend access for the waypoint list widget. private: - void sendWaypointRequest(quint16 seq); - void sendWaypoint(quint16 seq); + void sendWaypointClearAll(); + void sendWaypointSetCurrent(quint16 seq); + void sendWaypointCount(); + void sendWaypointRequestList(); + void sendWaypointRequest(quint16 seq); ///< Requests a waypoint with sequence number seq + void sendWaypoint(quint16 seq); ///< Sends a waypoint with sequence number seq + void sendWaypointAck(quint8 type); ///< Sends a waypoint ack public slots: - void timeout(); - void clearWaypointList(); - void requestWaypoints(); - void sendWaypoints(); + void timeout(); ///< Called by the timer if a response times out. Handles send retries. + void setCurrent(quint16 seq); ///< Sends the sequence number of the waypoint that should get the new target waypoint + void clearWaypointList(); ///< Sends the waypoint clear all message to the MAV + void readWaypoints(); ///< Requests the MAV's current waypoint list + void writeWaypoints(); ///< Sends the local waypoint list to the MAV signals: void waypointUpdated(quint16,double,double,double,double,bool,bool,double,int); ///< Adds a waypoint to the waypoint list widget @@ -79,6 +100,7 @@ signals: private: UAS &uas; ///< Reference to the corresponding UAS + quint32 current_retries; ///< The current number of retries left quint16 current_wp_id; ///< The last used waypoint ID in the current protocol transaction quint16 current_count; ///< The number of waypoints in the current protocol transaction WaypointState current_state; ///< The current protocol state diff --git a/src/ui/WaypointList.cc b/src/ui/WaypointList.cc index 74da7f1..6c3828f 100644 --- a/src/ui/WaypointList.cc +++ b/src/ui/WaypointList.cc @@ -126,9 +126,10 @@ void WaypointList::setUAS(UASInterface* uas) connect(uas, SIGNAL(localPositionChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updateLocalPosition(UASInterface*,double,double,double,quint64))); connect(uas, SIGNAL(attitudeChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updateAttitude(UASInterface*,double,double,double,quint64))); - connect(this, SIGNAL(sendWaypoints()), &uas->getWaypointManager(), SLOT(sendWaypoints())); - connect(this, SIGNAL(requestWaypoints()), &uas->getWaypointManager(), SLOT(requestWaypoints())); + connect(this, SIGNAL(sendWaypoints()), &uas->getWaypointManager(), SLOT(writeWaypoints())); + connect(this, SIGNAL(requestWaypoints()), &uas->getWaypointManager(), SLOT(readWaypoints())); connect(this, SIGNAL(clearWaypointList()), &uas->getWaypointManager(), SLOT(clearWaypointList())); + connect(this, SIGNAL(setCurrent(quint16)), &uas->getWaypointManager(), SLOT(setCurrent(quint16))); } } @@ -149,6 +150,35 @@ void WaypointList::waypointReached(quint16 waypointId) } } +void WaypointList::changeCurrentWaypoint(quint16 seq) +{ + if (this->uas) + { + QVector<Waypoint *> &waypoints = uas->getWaypointManager().getWaypointList(); + + if (seq < waypoints.size()) + { + for(int i = 0; i < waypoints.size(); i++) + { + WaypointView* widget = wpViews.find(waypoints[i]).value(); + + if (waypoints[i]->getId() == seq) + { + waypoints[i]->setCurrent(true); + widget->setCurrent(true); + emit setCurrent(seq); + } + else + { + waypoints[i]->setCurrent(false); + widget->setCurrent(false); + } + } + redrawList(); + } + } +} + void WaypointList::currentWaypointChanged(quint16 seq) { if (this->uas) @@ -250,6 +280,7 @@ void WaypointList::addWaypoint(Waypoint* wp) connect(wpview, SIGNAL(moveUpWaypoint(Waypoint*)), this, SLOT(moveUp(Waypoint*))); connect(wpview, SIGNAL(removeWaypoint(Waypoint*)), this, SLOT(removeWaypoint(Waypoint*))); connect(wpview, SIGNAL(currentWaypointChanged(quint16)), this, SLOT(currentWaypointChanged(quint16))); + connect(wpview, SIGNAL(changeCurrentWaypoint(quint16)), this, SLOT(changeCurrentWaypoint(quint16))); } } } diff --git a/src/ui/WaypointList.h b/src/ui/WaypointList.h index 111f7a8..4b1236f 100644 --- a/src/ui/WaypointList.h +++ b/src/ui/WaypointList.h @@ -72,7 +72,8 @@ public slots: /** @brief sets statusLabel string */ void updateStatusLabel(const QString &string); - void currentWaypointChanged(quint16 seq); + void changeCurrentWaypoint(quint16 seq); ///< The user wants to change the current waypoint + void currentWaypointChanged(quint16 seq); ///< The waypointplanner changed the current waypoint void setWaypoint(quint16 id, double x, double y, double z, double yaw, bool autocontinue, bool current, double orbit, int holdTime); void addWaypoint(Waypoint* wp); void removeWaypoint(Waypoint* wp); @@ -84,6 +85,7 @@ signals: void sendWaypoints(); void requestWaypoints(); void clearWaypointList(); + void setCurrent(quint16); protected: virtual void changeEvent(QEvent *e); diff --git a/src/ui/WaypointView.cc b/src/ui/WaypointView.cc index bb79f74..a9ec214 100644 --- a/src/ui/WaypointView.cc +++ b/src/ui/WaypointView.cc @@ -115,7 +115,7 @@ void WaypointView::changedCurrent(int state) else { wp->setCurrent(true); - emit currentWaypointChanged(wp->getId()); //the slot currentWayppointChanged() in WaypointList sets all other current flags to false + emit changeCurrentWaypoint(wp->getId()); //the slot changeCurrentWaypoint() in WaypointList sets all other current flags to false } } diff --git a/src/ui/WaypointView.h b/src/ui/WaypointView.h index bf4fb1b..bee5e18 100644 --- a/src/ui/WaypointView.h +++ b/src/ui/WaypointView.h @@ -72,6 +72,7 @@ signals: void moveDownWaypoint(Waypoint*); void removeWaypoint(Waypoint*); void currentWaypointChanged(quint16); + void changeCurrentWaypoint(quint16); void setYaw(double); }; diff --git a/src/ui/linechart/LinechartWidget.cc b/src/ui/linechart/LinechartWidget.cc index b23175e..c02f64f 100644 --- a/src/ui/linechart/LinechartWidget.cc +++ b/src/ui/linechart/LinechartWidget.cc @@ -415,6 +415,7 @@ QWidget* LinechartWidget::createCurveItem(QString curve) **/ void LinechartWidget::removeCurve(QString curve) { + Q_UNUSED(curve) //TODO @todo Ensure that the button for a curve gets deleted when the original curve is deleted // Remove name }