ad_rss_map_integration
ParallelRouteUpdater.hpp
1 // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 //
3 // Copyright (C) 2019-2021 Intel Corporation
4 //
5 // SPDX-License-Identifier: LGPL-2.1-only
6 //
7 // ----------------- END LICENSE BLOCK -----------------------------------
8 
9 #include "ad/rss/map/Logging.hpp"
11 
12 namespace ad {
13 namespace rss {
14 namespace map {
15 
16 template <class OBJECT_INSTANCE_TYPE> class ParallelRouteUpdater
17 {
18 public:
19  ParallelRouteUpdater(::ad::physics::Distance const routePreviewDistance,
20  ::ad::map::lane::LaneIdSet const &mapAreaLanes,
22  : mRoutePreviewDistance(routePreviewDistance)
23  , mMapAreaLanes(mapAreaLanes)
24  , mRouteExtensionMode(routeExtensionMode)
25  {
26  }
27 
28  ParallelRouteUpdater(const ParallelRouteUpdater &other) = delete;
29  ParallelRouteUpdater &operator=(const ParallelRouteUpdater &other) = delete;
30 
31  void operator()(typename RssRouteCheckerVehicleDataMap<OBJECT_INSTANCE_TYPE>::value_type &vehicleToUpdate) const
32  {
33  if (vehicleToUpdate.second.mActive
34  && (::ad::rss::world::ObjectType::OtherObject != vehicleToUpdate.second.mRssObjectData.type)
35  && (mRouteExtensionMode
37  {
38  // update other vehicle routes only if not allow only single route mode; otherwhise other vehicles don't need
39  // route processing
40  vehicleToUpdate.second.updateRoutes(mRoutePreviewDistance, mMapAreaLanes, mRouteExtensionMode);
41  vehicleToUpdate.second.normalizeAndOrderRoutes();
42  }
43  }
44 
45  void operator()(typename RssRouteCheckerEgoVehicleDataMap<OBJECT_INSTANCE_TYPE>::value_type &egoVehicleToUpdate) const
46  {
47  if (egoVehicleToUpdate.second.mActive)
48  {
49  egoVehicleToUpdate.second.updateRoutes(mRoutePreviewDistance, mMapAreaLanes, mRouteExtensionMode);
50  egoVehicleToUpdate.second.updateVehicleDynamicsOnRoutes();
51  egoVehicleToUpdate.second.evaluateRoutes();
52  egoVehicleToUpdate.second.normalizeAndOrderRoutes();
53  }
54  }
55 
56 private:
57  ::ad::physics::Distance const mRoutePreviewDistance;
58  ::ad::map::lane::LaneIdSet const &mMapAreaLanes;
60 };
61 
62 } // namespace map
63 } // namespace rss
64 } // namespace ad
Definition: ParallelRouteUpdater.hpp:17
Class to store data of RssVehicleAdapter.
Definition: RssRouteCheckerData.hpp:124
RouteExtensionMode
enumeration defining the mode on route extension
Definition: RssRouteCheckerData.hpp:165
std::map<::ad::rss::world::ObjectId, RssRouteCheckerEgoVehicleData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerEgoVehicleDataMap
Definition: RssRouteCheckerData.hpp:387
std::map<::ad::rss::world::ObjectId, RssRouteCheckerVehicleData< OBJECT_INSTANCE_TYPE > > RssRouteCheckerVehicleDataMap
Definition: RssRouteCheckerData.hpp:381
namespace ad
Definition: RouteAccelerations.hpp:33