32 #ifndef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H
33 #define ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H
37 #include <GeographicLib/UTMUPS.hpp>
46 inline void setStationId(StationId& station_id,
const uint32_t id_value) {
48 station_id.value = id_value;
59 inline void setItsPduHeader(ItsPduHeader& header,
const uint8_t message_id,
const uint32_t station_id,
60 const uint8_t protocol_version = 0) {
63 header.message_id.value = message_id;
64 throwIfOutOfRange(protocol_version, OrdinalNumber1B::MIN, OrdinalNumber1B::MAX,
"ProtocolVersion");
65 header.protocol_version.value = protocol_version;
74 inline void setStationType(TrafficParticipantType& station_type,
const uint8_t value) {
75 throwIfOutOfRange(value, TrafficParticipantType::MIN, TrafficParticipantType::MAX,
"StationType");
76 station_type.value = value;
86 int64_t accel_val = (int64_t)std::round(value * 1e1);
87 if (accel_val >= AccelerationValue::MIN && accel_val <= AccelerationValue::MAX) {
88 accel.value = accel_val;
89 }
else if (accel_val < AccelerationValue::MIN) {
90 accel.value = AccelerationValue::MIN;
91 }
else if (accel_val > AccelerationValue::MAX) {
92 accel.value = AccelerationValue::MAX - 1;
116 int64_t accel_val = (int64_t)std::round(value * 1e1);
117 if (accel_val >= AccelerationValue::MIN && accel_val <= AccelerationValue::MAX) {
118 accel.value = accel_val;
119 }
else if (accel_val < AccelerationValue::MIN) {
120 accel.value = AccelerationValue::MIN;
121 }
else if (accel_val > AccelerationValue::MAX) {
122 accel.value = AccelerationValue::MAX - 1;
147 template <
typename PositionConf
idenceEllipse,
typename Wgs84AngleValue = decltype(PositionConf
idenceEllipse::semi_major_axis_orientation)>
149 const double semi_minor_axis,
const double orientation) {
150 setSemiAxis(position_confidence_ellipse.semi_major_axis_length, semi_major_axis);
151 setSemiAxis(position_confidence_ellipse.semi_minor_axis_length, semi_minor_axis);
152 setHeadingValue(position_confidence_ellipse.semi_major_axis_orientation, orientation);
164 template <
typename PositionConf
idenceEllipse>
165 inline void setPositionConfidenceEllipse(PositionConfidenceEllipse& position_confidence_ellipse,
const std::array<double, 4>& covariance_matrix,
const double object_heading){
179 template <
typename PositionConf
idenceEllipse>
185 #endif // ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H