scenario_simulator_v2 C++ API
traffic_signal_state.hpp
Go to the documentation of this file.
1 // Copyright 2015 TIER IV, Inc. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef OPENSCENARIO_INTERPRETER__SYNTAX__TRAFFIC_SIGNAL_STATE_HPP_
16 #define OPENSCENARIO_INTERPRETER__SYNTAX__TRAFFIC_SIGNAL_STATE_HPP_
17 
21 #include <pugixml.hpp>
22 
24 {
25 inline namespace syntax
26 {
27 /*
28  TrafficSignalState (OpenSCENARIO XML 1.3.1)
29 
30  State of a traffic signal for this phase. One state per phase and traffic signal.
31 
32  <xsd:complexType name="TrafficSignalState">
33  <xsd:attribute name="state" type="String" use="required"/>
34  <xsd:attribute name="trafficSignalId" type="String" use="required"/>
35  </xsd:complexType>
36 */
38 {
39  /*
40  NOTE:
41  ID of the referenced signal in a road network. The signal ID must be
42  listed in TrafficSignal list of the RoadNetwork.
43 
44  In the TIER IV OpenSCENARIO implementation, it is the Lanelet ID (positive
45  integer) of the traffic light, optionally followed by:
46  - Signal type: "v2i" (default is "conventional" if omitted)
47  - Detected suffix: "_detected" to indicate detected traffic light
48 
49  Format: "<lanelet_id> [<type>]" or "<lanelet_id> [<type>_detected]"
50  Examples: "34802", "34802 v2i", "34802 conventional_detected", "34802 v2i_detected"
51  */
53 
54  /*
55  NOTE:
56  State of the signal. The available states are listed in the TrafficSignal
57  list of the RoadNetwork.
58  */
59  const String state;
60 
61  explicit TrafficSignalState(const pugi::xml_node &, Scope &);
62 
63  auto clear() const -> void;
64 
65  auto evaluate() const -> Object;
66 
68  {
69  enum value_type { conventional, v2i } value;
70 
71  explicit TrafficSignalChannelType(const std::string &);
72 
73  constexpr TrafficSignalChannelType(value_type value) : value(value) {}
74 
75  constexpr operator value_type() const noexcept { return value; }
76  };
77 
79  {
80  explicit TargetTrafficSignalChannel(const std::string &);
81 
82  lanelet::Id id;
83 
85 
86  bool detected;
87  };
88 
89  auto id() const -> lanelet::Id { return target.id; }
90 
91  auto channelType() const -> TrafficSignalChannelType { return target.channel; }
92 
93  auto isDetected() const -> bool { return target.detected; }
94 
95 private:
96  const TargetTrafficSignalChannel target;
97 };
98 } // namespace syntax
99 } // namespace openscenario_interpreter
100 
101 #endif // OPENSCENARIO_INTERPRETER__SYNTAX__TRAFFIC_SIGNAL_STATE_HPP_
Definition: scope.hpp:158
std::string String
Definition: string.hpp:24
Definition: hypot.hpp:22
std::string string
Definition: junit5.hpp:26
TrafficSignalChannelType channel
Definition: traffic_signal_state.hpp:84
TargetTrafficSignalChannel(const std::string &)
Definition: traffic_signal_state.cpp:98
constexpr TrafficSignalChannelType(value_type value)
Definition: traffic_signal_state.hpp:73
Definition: traffic_signal_state.hpp:38
TrafficSignalState(const pugi::xml_node &, Scope &)
Definition: traffic_signal_state.cpp:40
const String state
Definition: traffic_signal_state.hpp:59
auto id() const -> lanelet::Id
Definition: traffic_signal_state.hpp:89
const String traffic_signal_id
Definition: traffic_signal_state.hpp:52
auto channelType() const -> TrafficSignalChannelType
Definition: traffic_signal_state.hpp:91
auto isDetected() const -> bool
Definition: traffic_signal_state.hpp:93
auto clear() const -> void
Definition: traffic_signal_state.cpp:53
auto evaluate() const -> Object
Definition: traffic_signal_state.cpp:75
TrafficSignalState::TrafficSignalChannelType TrafficSignalChannelType
Definition: test_target_traffic_signal_channel.cpp:20
TrafficSignalState::TargetTrafficSignalChannel TargetTrafficSignalChannel
Definition: test_target_traffic_signal_channel.cpp:21