@@ -76,11 +76,7 @@ RTL::RTL(Navigator *navigator) :
7676
7777void RTL::updateDatamanCache ()
7878{
79- MissionRouteCache *mission_route_cache = _navigator->get_mission_route_cache ();
80-
81- if (mission_route_cache != nullptr ) {
82- mission_route_cache->update (_mission_sub.get ());
83- }
79+ _navigator->get_mission_route_cache ().update (_mission_sub.get ());
8480}
8581
8682void RTL::on_inactive ()
@@ -265,7 +261,7 @@ void RTL::setRtlTypeAndDestination()
265261{
266262 uint8_t safe_point_index = RTL_STATUS_NO_SAFE_POINT ;
267263 RtlType new_rtl_type{RtlType::RTL_DIRECT };
268- MissionRouteCache * mission_route_cache = _navigator->get_mission_route_cache ();
264+ const MissionRouteCache & mission_route_cache = _navigator->get_mission_route_cache ();
269265
270266 // init destination with Home (used also with Type 2 and 4 as backup)
271267 DestinationType destination_type = DestinationType::DESTINATION_TYPE_HOME ;
@@ -372,10 +368,9 @@ void RTL::setRtlTypeAndDestination()
372368
373369 // Publish rtl status
374370 rtl_status_s rtl_status{};
375- rtl_status.safe_points_id = mission_route_cache != nullptr ? mission_route_cache->safePointsId () : 0 ;
376- rtl_status.is_evaluation_pending = mission_route_cache != nullptr
377- && (mission_route_cache->safePointUpdatePending ()
378- || mission_route_cache->missionLandItemUpdatePending ());
371+ rtl_status.safe_points_id = mission_route_cache.safePointsId ();
372+ rtl_status.is_evaluation_pending = mission_route_cache.safePointUpdatePending ()
373+ || mission_route_cache.missionLandItemUpdatePending ();
379374 rtl_status.has_vtol_approach = _home_has_land_approach || _one_rally_point_has_land_approach;
380375 rtl_status.rtl_type = static_cast <uint8_t >(_rtl_type);
381376 rtl_status.safe_point_index = safe_point_index;
@@ -387,19 +382,19 @@ PositionYawSetpoint RTL::findClosestSafePoint(float min_dist, uint8_t &safe_poin
387382{
388383 const bool vtol_in_fw_mode = _vehicle_status_sub.get ().is_vtol
389384 && (_vehicle_status_sub.get ().vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING );
390- MissionRouteCache * mission_route_cache = _navigator->get_mission_route_cache ();
385+ const MissionRouteCache & mission_route_cache = _navigator->get_mission_route_cache ();
391386
392387 PositionYawSetpoint safe_point{static_cast <double >(NAN ), static_cast <double >(NAN ), NAN , NAN };
393388 _one_rally_point_has_land_approach = false ;
394389
395- if (mission_route_cache == nullptr || !mission_route_cache-> safePointsReady ()) {
390+ if (!mission_route_cache. safePointsReady ()) {
396391 return safe_point;
397392 }
398393
399- for (int current_seq = 0 ; current_seq < mission_route_cache-> safePointCount (); ++current_seq) {
394+ for (int current_seq = 0 ; current_seq < mission_route_cache. safePointCount (); ++current_seq) {
400395 mission_item_s mission_safe_point;
401396
402- if (!mission_route_cache-> loadSafePointItem (current_seq, mission_safe_point)) {
397+ if (!mission_route_cache. loadSafePointItem (current_seq, mission_safe_point)) {
403398 PX4_ERR (" dm_read failed" );
404399 continue ;
405400 }
@@ -430,7 +425,7 @@ PositionYawSetpoint RTL::findClosestSafePoint(float min_dist, uint8_t &safe_poin
430425 safepoint_position.lat , safepoint_position.lon )};
431426
432427 const bool current_safe_point_has_approaches{
433- mission_route_cache-> hasVtolLandApproachesAtSafePointIndex (current_seq, _home_pos_sub.get ().alt )
428+ mission_route_cache. hasVtolLandApproachesAtSafePointIndex (current_seq, _home_pos_sub.get ().alt )
434429 };
435430
436431 _one_rally_point_has_land_approach |= current_safe_point_has_approaches;
@@ -460,12 +455,11 @@ void RTL::findRtlDestination(DestinationType &destination_type, PositionYawSetpo
460455 const bool vtol_in_fw_mode = _vehicle_status_sub.get ().is_vtol
461456 && (_vehicle_status_sub.get ().vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING );
462457
463- MissionRouteCache * mission_route_cache = _navigator->get_mission_route_cache ();
458+ const MissionRouteCache & mission_route_cache = _navigator->get_mission_route_cache ();
464459 float min_dist = FLT_MAX ;
465460
466461 if (_param_rtl_type.get () != RTL_TYPE_SAFE_POINT_DIRECT ) {
467- _home_has_land_approach = mission_route_cache != nullptr
468- && mission_route_cache->hasVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
462+ _home_has_land_approach = mission_route_cache.hasVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
469463
470464 const bool prioritize_safe_points_over_home = ((_param_rtl_type.get () == 1 ) && !vtol_in_rw_mode);
471465 const bool required_approach_missing_for_home = (vtol_in_fw_mode && (_param_rtl_appr_force.get () == 1 ) && !_home_has_land_approach);
@@ -483,7 +477,7 @@ void RTL::findRtlDestination(DestinationType &destination_type, PositionYawSetpo
483477 || (fabsf (FLT_MAX - min_dist) < FLT_EPSILON )) && hasMissionLandStart ()) {
484478 mission_item_s land_mission_item{};
485479 int32_t land_index = -1 ;
486- const bool success = mission_route_cache != nullptr && mission_route_cache-> getMissionLandItem (land_index, land_mission_item);
480+ const bool success = mission_route_cache. getMissionLandItem (land_index, land_mission_item);
487481
488482 if (!success) {
489483
@@ -658,14 +652,8 @@ loiter_point_s RTL::selectLandingApproach(const PositionYawSetpoint &destination
658652 return landing_approach;
659653 }
660654
661- const MissionRouteCache *mission_route_cache = _navigator->get_mission_route_cache ();
662-
663- if (mission_route_cache == nullptr ) {
664- return landing_approach;
665- }
666-
667655 const land_approaches_s vtol_land_approaches =
668- mission_route_cache-> getVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
656+ _navigator-> get_mission_route_cache (). getVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
669657
670658 if (vtol_land_approaches.isAnyApproachValid ()) {
671659 landing_approach = chooseBestLandingApproach (vtol_land_approaches);
0 commit comments