Skip to content
UASWaypointManager.cc 34.9 KiB
Newer Older
    mavlink_message_t message;
lm's avatar
lm committed
    mavlink_mission_request_t wpr;
    wpr.target_system = uasid;
lm's avatar
lm committed
    wpr.target_component = MAV_COMP_ID_MISSIONPLANNER;
    emit updateStatusString(QString("Retrieving waypoint ID %1 of %2 total").arg(wpr.seq).arg(current_count));
lm's avatar
lm committed
    mavlink_msg_mission_request_encode(uas->mavlink->getSystemId(), uas->mavlink->getComponentId(), &message, &wpr);
    uas->sendMessage(message);
lm's avatar
lm committed
    QGC::SLEEP::msleep(PROTOCOL_DELAY_MS);
pixhawk's avatar
pixhawk committed
}
pixhawk's avatar
pixhawk committed

pixhawk's avatar
pixhawk committed
void UASWaypointManager::sendWaypoint(quint16 seq)
{
lm's avatar
lm committed
    if (!uas) return;
pixhawk's avatar
pixhawk committed
    mavlink_message_t message;
    if (seq < waypoint_buffer.count()) {
lm's avatar
lm committed
        mavlink_mission_item_t *wp;
pixhawk's avatar
pixhawk committed

        wp = waypoint_buffer.at(seq);
        wp->target_system = uasid;
lm's avatar
lm committed
        wp->target_component = MAV_COMP_ID_MISSIONPLANNER;
        emit updateStatusString(QString("Sending waypoint ID %1 of %2 total").arg(wp->seq).arg(current_count));
lm's avatar
lm committed
        mavlink_msg_mission_item_encode(uas->mavlink->getSystemId(), uas->mavlink->getComponentId(), &message, wp);
        uas->sendMessage(message);
lm's avatar
lm committed
        QGC::SLEEP::msleep(PROTOCOL_DELAY_MS);
pixhawk's avatar
pixhawk committed
    }
pixhawk's avatar
pixhawk committed
}

void UASWaypointManager::sendWaypointAck(quint8 type)
{
lm's avatar
lm committed
    if (!uas) return;
    mavlink_message_t message;
lm's avatar
lm committed
    mavlink_mission_ack_t wpa;
    wpa.target_system = uasid;
lm's avatar
lm committed
    wpa.target_component = MAV_COMP_ID_MISSIONPLANNER;
lm's avatar
lm committed
    mavlink_msg_mission_ack_encode(uas->mavlink->getSystemId(), uas->mavlink->getComponentId(), &message, &wpa);
    uas->sendMessage(message);
lm's avatar
lm committed
    QGC::SLEEP::msleep(PROTOCOL_DELAY_MS);

UAS* UASWaypointManager::getUAS() {
    return this->uas;    ///< Returns the owning UAS
}

float UASWaypointManager::getAltitudeRecommendation()
{
    if (waypointsEditable.count() > 0) {
        return waypointsEditable.last()->getAltitude();
    } else {
        return UASManager::instance()->getHomeAltitude() + getHomeAltitudeOffsetDefault();
    }
}

int UASWaypointManager::getFrameRecommendation()
{
    if (waypointsEditable.count() > 0) {
        return static_cast<int>(waypointsEditable.last()->getFrame());
    } else {
        return MAV_FRAME_GLOBAL;
    }
}

float UASWaypointManager::getAcceptanceRadiusRecommendation()
{
        return waypointsEditable.last()->getAcceptanceRadius();
    }
Thomas Gubler's avatar
Thomas Gubler committed
            return UASInterface::WAYPOINT_RADIUS_DEFAULT_ROTARY_WING;
        }
        else if (uas->isFixedWing())
        {
            return UASInterface::WAYPOINT_RADIUS_DEFAULT_FIXED_WING;
        }
}

float UASWaypointManager::getHomeAltitudeOffsetDefault()
{
    return defaultAltitudeHomeOffset;
}