Skip to content

Commit

Permalink
Merge pull request #1950 from mavlink/pr-mission-import-from-string
Browse files Browse the repository at this point in the history
mission_raw: add method to import plan from string
  • Loading branch information
julianoes authored Dec 24, 2022
2 parents 31b9786 + 870e9b8 commit 2a3032e
Show file tree
Hide file tree
Showing 10 changed files with 1,446 additions and 96 deletions.
2 changes: 1 addition & 1 deletion proto
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ class MissionRaw : public PluginBase {
void unsubscribe_mission_changed(MissionChangedHandle handle);

/**
* @brief Import a QGroundControl missions in JSON .plan format.
* @brief Import a QGroundControl missions in JSON .plan format, from a file.
*
* Supported:
* - Waypoints
Expand All @@ -432,6 +432,22 @@ class MissionRaw : public PluginBase {
std::pair<Result, MissionRaw::MissionImportData>
import_qgroundcontrol_mission(std::string qgc_plan_path) const;

/**
* @brief Import a QGroundControl missions in JSON .plan format, from a string.
*
* Supported:
* - Waypoints
* - Survey
* Not supported:
* - Structure Scan
*
* This function is blocking.
*
* @return Result of request.
*/
std::pair<Result, MissionRaw::MissionImportData>
import_qgroundcontrol_mission_from_string(std::string qgc_plan) const;

/**
* @brief Copy constructor.
*/
Expand Down
6 changes: 6 additions & 0 deletions src/mavsdk/plugins/mission_raw/mission_raw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,12 @@ MissionRaw::import_qgroundcontrol_mission(std::string qgc_plan_path) const
return _impl->import_qgroundcontrol_mission(qgc_plan_path);
}

std::pair<MissionRaw::Result, MissionRaw::MissionImportData>
MissionRaw::import_qgroundcontrol_mission_from_string(std::string qgc_plan) const
{
return _impl->import_qgroundcontrol_mission_from_string(qgc_plan);
}

bool operator==(const MissionRaw::MissionProgress& lhs, const MissionRaw::MissionProgress& rhs)
{
return (rhs.current == lhs.current) && (rhs.total == lhs.total);
Expand Down
6 changes: 6 additions & 0 deletions src/mavsdk/plugins/mission_raw/mission_raw_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,12 @@ MissionRawImpl::import_qgroundcontrol_mission(std::string qgc_plan_path)
return MissionImport::parse_json(buf.str(), _parent->autopilot());
}

std::pair<MissionRaw::Result, MissionRaw::MissionImportData>
MissionRawImpl::import_qgroundcontrol_mission_from_string(const std::string& qgc_plan)
{
return MissionImport::parse_json(qgc_plan, _parent->autopilot());
}

MissionRaw::Result MissionRawImpl::convert_result(MavlinkMissionTransfer::Result result)
{
switch (result) {
Expand Down
3 changes: 3 additions & 0 deletions src/mavsdk/plugins/mission_raw/mission_raw_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ class MissionRawImpl : public PluginImplBase {
std::pair<MissionRaw::Result, MissionRaw::MissionImportData>
import_qgroundcontrol_mission(std::string qgc_plan_path);

std::pair<MissionRaw::Result, MissionRaw::MissionImportData>
import_qgroundcontrol_mission_from_string(const std::string& qgc_plan);

#if 0
void import_qgroundcontrol_mission_async(
std::string qgc_plan_path, const MissionRaw::ImportQgroundcontrolMissionCallback callback);
Expand Down
42 changes: 42 additions & 0 deletions src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.cc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 2a3032e

Please sign in to comment.