36namespace etsi_its_denm_msgs::access {
39#include <etsi_its_msgs_utils/impl/asn1_primitives/asn1_primitives_setters.h>
49inline void setItsPduHeader(DENM& denm,
const uint32_t station_id,
const uint8_t protocol_version = 0) {
50 setItsPduHeader(denm.header, ItsPduHeader::MESSAGE_ID_DENM, station_id, protocol_version);
61 DENM& denm,
const uint64_t unix_nanosecs,
65 throwIfOutOfRange(t_its.value, TimestampIts::MIN, TimestampIts::MAX,
"TimestampIts");
66 denm.denm.management.reference_time = t_its;
89 const double altitude = AltitudeValue::UNAVAILABLE) {
102 int64_t deg = (int64_t)std::round(value * 1e1);
116inline void setHeading(Heading& heading,
const double value) {
117 heading.heading_confidence.value = HeadingConfidence::UNAVAILABLE;
128 if (denm.denm.location_is_present) {
129 denm.denm.location.event_position_heading_is_present = presence_of_heading;
131 throw std::invalid_argument(
"LocationContainer is not present!");
144inline void setHeading(DENM& denm,
const double heading_val) {
145 if (denm.denm.location_is_present) {
146 setHeading(denm.denm.location.event_position_heading, heading_val);
149 throw std::invalid_argument(
"LocationContainer is not present!");
160 if (denm.denm.location_is_present) {
161 denm.denm.location.event_speed_is_present = presence_of_speed;
163 throw std::invalid_argument(
"LocationContainer is not present!");
173inline void setSpeed(DENM& denm,
const double speed_val) {
174 if (denm.denm.location_is_present) {
175 setSpeed(denm.denm.location.event_speed, speed_val);
178 throw std::invalid_argument(
"LocationContainer is not present!");
194inline void setFromUTMPosition(DENM& denm,
const gm::PointStamped& utm_position,
const int& zone,
const bool& northp) {
204inline void setDrivingLaneStatus(DrivingLaneStatus& driving_lane_status,
const std::vector<bool>& bits) {
205 setBitString(driving_lane_status, bits);
214inline void setLightBarSirenInUse(LightBarSirenInUse& light_bar_siren_in_use,
const std::vector<bool>& bits) {
void setDrivingLaneStatus(DrivingLaneStatus &driving_lane_status, const std::vector< bool > &bits)
Set the Driving Lane Status by a vector of bools.
Setter functions for the ETSI ITS Common Data Dictionary (CDD) v1.3.1.
Sanity-check functions etc.
File containing constants that are used in the context of ETIS ITS Messages.
void throwIfOutOfRange(const T1 &val, const T2 &min, const T2 &max, const std::string val_desc)
Throws an exception if a given value is out of a defined range.
void setSpeed(Speed &speed, const double value)
Set the Speed object.
void setReferencePosition(T &ref_position, const double latitude, const double longitude, const double altitude=AltitudeValue::UNAVAILABLE)
Sets the reference position in the given ReferencePostion object.
void setHeading(Heading &heading, const double value)
Set the Heading object.
void setTimestampITS(TimestampIts ×tamp_its, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
Set the TimestampITS object.
void setIsSpeedPresent(DENM &denm, bool presence_of_speed)
Set the IsSpeedPresent object for DENM.
void setHeadingValue(HeadingValue &heading, const double value)
Set the HeadingValue object.
void setFromUTMPosition(T &reference_position, const gm::PointStamped &utm_position, const int zone, const bool northp)
Set the ReferencePosition from a given UTM-Position.
void setReferenceTime(DENM &denm, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
Set the ReferenceTime-value.
void setIsHeadingPresent(DENM &denm, bool presence_of_heading)
Set the IsHeadingPresent object for DENM.
void setLightBarSirenInUse(LightBarSirenInUse &light_bar_siren_in_use, const std::vector< bool > &bits)
Set the Lightbar Siren In Use by a vector of bools.
void setBitString(T &bitstring, const std::vector< bool > &bits)
Set a Bit String by a vector of bools.
void setItsPduHeader(ItsPduHeader &header, const uint8_t message_id, const uint32_t station_id, const uint8_t protocol_version=0)
Set the Its Pdu Header object.
void setStationType(StationType &station_type, const uint8_t value)
Set the Station Type.
const std::map< uint64_t, uint16_t > LEAP_SECOND_INSERTIONS_SINCE_2004
std::map that stores all leap second insertions since 2004 with the corresponding unix-date of the in...