@@ -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 ;
@@ -343,10 +339,9 @@ void RTL::setRtlTypeAndDestination()
343339
344340 // Publish rtl status
345341 rtl_status_s rtl_status{};
346- rtl_status.safe_points_id = mission_route_cache != nullptr ? mission_route_cache->safePointsId () : 0 ;
347- rtl_status.is_evaluation_pending = mission_route_cache != nullptr
348- && (mission_route_cache->safePointUpdatePending ()
349- || mission_route_cache->missionLandItemUpdatePending ());
342+ rtl_status.safe_points_id = mission_route_cache.safePointsId ();
343+ rtl_status.is_evaluation_pending = mission_route_cache.safePointUpdatePending ()
344+ || mission_route_cache.missionLandItemUpdatePending ();
350345 rtl_status.has_vtol_approach = _home_has_land_approach || _one_rally_point_has_land_approach;
351346 rtl_status.rtl_type = static_cast <uint8_t >(_rtl_type);
352347 rtl_status.safe_point_index = safe_point_index;
@@ -358,19 +353,19 @@ PositionYawSetpoint RTL::findClosestSafePoint(float min_dist, uint8_t &safe_poin
358353{
359354 const bool vtol_in_fw_mode = _vehicle_status_sub.get ().is_vtol
360355 && (_vehicle_status_sub.get ().vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING );
361- MissionRouteCache * mission_route_cache = _navigator->get_mission_route_cache ();
356+ const MissionRouteCache & mission_route_cache = _navigator->get_mission_route_cache ();
362357
363358 PositionYawSetpoint safe_point{static_cast <double >(NAN ), static_cast <double >(NAN ), NAN , NAN };
364359 _one_rally_point_has_land_approach = false ;
365360
366- if (mission_route_cache == nullptr || !mission_route_cache-> safePointsReady ()) {
361+ if (!mission_route_cache. safePointsReady ()) {
367362 return safe_point;
368363 }
369364
370- for (int current_seq = 0 ; current_seq < mission_route_cache-> safePointCount (); ++current_seq) {
365+ for (int current_seq = 0 ; current_seq < mission_route_cache. safePointCount (); ++current_seq) {
371366 mission_item_s mission_safe_point;
372367
373- if (!mission_route_cache-> loadSafePointItem (current_seq, mission_safe_point)) {
368+ if (!mission_route_cache. loadSafePointItem (current_seq, mission_safe_point)) {
374369 PX4_ERR (" dm_read failed" );
375370 continue ;
376371 }
@@ -401,7 +396,7 @@ PositionYawSetpoint RTL::findClosestSafePoint(float min_dist, uint8_t &safe_poin
401396 safepoint_position.lat , safepoint_position.lon )};
402397
403398 const bool current_safe_point_has_approaches{
404- mission_route_cache-> hasVtolLandApproachesAtSafePointIndex (current_seq, _home_pos_sub.get ().alt )
399+ mission_route_cache. hasVtolLandApproachesAtSafePointIndex (current_seq, _home_pos_sub.get ().alt )
405400 };
406401
407402 _one_rally_point_has_land_approach |= current_safe_point_has_approaches;
@@ -431,12 +426,11 @@ void RTL::findRtlDestination(DestinationType &destination_type, PositionYawSetpo
431426 const bool vtol_in_fw_mode = _vehicle_status_sub.get ().is_vtol
432427 && (_vehicle_status_sub.get ().vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING );
433428
434- MissionRouteCache * mission_route_cache = _navigator->get_mission_route_cache ();
429+ const MissionRouteCache & mission_route_cache = _navigator->get_mission_route_cache ();
435430 float min_dist = FLT_MAX ;
436431
437432 if (_param_rtl_type.get () != RTL_TYPE_SAFE_POINT_DIRECT ) {
438- _home_has_land_approach = mission_route_cache != nullptr
439- && mission_route_cache->hasVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
433+ _home_has_land_approach = mission_route_cache.hasVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
440434
441435 const bool prioritize_safe_points_over_home = ((_param_rtl_type.get () == 1 ) && !vtol_in_rw_mode);
442436 const bool required_approach_missing_for_home = (vtol_in_fw_mode && (_param_rtl_appr_force.get () == 1 ) && !_home_has_land_approach);
@@ -454,7 +448,7 @@ void RTL::findRtlDestination(DestinationType &destination_type, PositionYawSetpo
454448 || (fabsf (FLT_MAX - min_dist) < FLT_EPSILON )) && hasMissionLandStart ()) {
455449 mission_item_s land_mission_item{};
456450 int32_t land_index = -1 ;
457- const bool success = mission_route_cache != nullptr && mission_route_cache-> getMissionLandItem (land_index, land_mission_item);
451+ const bool success = mission_route_cache. getMissionLandItem (land_index, land_mission_item);
458452
459453 if (!success) {
460454
@@ -629,14 +623,8 @@ loiter_point_s RTL::selectLandingApproach(const PositionYawSetpoint &destination
629623 return landing_approach;
630624 }
631625
632- const MissionRouteCache *mission_route_cache = _navigator->get_mission_route_cache ();
633-
634- if (mission_route_cache == nullptr ) {
635- return landing_approach;
636- }
637-
638626 const land_approaches_s vtol_land_approaches =
639- mission_route_cache-> getVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
627+ _navigator-> get_mission_route_cache (). getVtolLandApproachesNearLocation (destination, _home_pos_sub.get ().alt );
640628
641629 if (vtol_land_approaches.isAnyApproachValid ()) {
642630 landing_approach = chooseBestLandingApproach (vtol_land_approaches);
0 commit comments