ROS2SimulationInterfacesRequestBus.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include "ROS2SimulationInterfacesTypeIds.h"
  10. #include <AzCore/EBus/EBus.h>
  11. #include <AzCore/Interface/Interface.h>
  12. #include <AzCore/std/containers/unordered_set.h>
  13. namespace ROS2SimulationInterfaces
  14. {
  15. using SimulationFeatureType = uint8_t;
  16. class ROS2SimulationInterfacesRequests
  17. {
  18. public:
  19. AZ_RTTI(ROS2SimulationInterfacesRequests, ROS2SimulationInterfacesRequestBusTypeId);
  20. virtual ~ROS2SimulationInterfacesRequests() = default;
  21. //! Returns set of simulation features available in ROS2SimulationInterfaces Gem
  22. //! SimulationFeatureType follows definition available at:
  23. //! @see https://github.com/ros-simulation/simulation_interfaces/blob/main/msg/SimulatorFeatures.msg
  24. virtual AZStd::unordered_set<SimulationFeatureType> GetSimulationFeatures() = 0;
  25. };
  26. class ROS2SimulationInterfacesRequestBusTraits : public AZ::EBusTraits
  27. {
  28. public:
  29. //////////////////////////////////////////////////////////////////////////
  30. // EBusTraits overrides
  31. static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
  32. static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
  33. //////////////////////////////////////////////////////////////////////////
  34. };
  35. using ROS2SimulationInterfacesRequestBus = AZ::EBus<ROS2SimulationInterfacesRequests, ROS2SimulationInterfacesRequestBusTraits>;
  36. using ROS2SimulationInterfacesRequestBusInterface = AZ::Interface<ROS2SimulationInterfacesRequests>;
  37. } // namespace ROS2SimulationInterfaces