etsi_its_messages v3.4.0
Loading...
Searching...
No Matches
cam_ts_setters.h File Reference

Setter functions for the ETSI ITS CAM (TS). More...

Go to the source code of this file.

Classes

struct  etsi_its_cam_ts_msgs::access::etsi_its_msgs::OneCentimeterHelper< SemiAxisLength, typename >
struct  etsi_its_cam_ts_msgs::access::etsi_its_msgs::OneCentimeterHelper< SemiAxisLength, std::void_t< decltype(SemiAxisLength::ONE_CENTIMETER)> >

Functions

template<typename T1, typename T2>
void etsi_its_cam_ts_msgs::access::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 etsi_its_cam_ts_msgs::access::throwIfNotPresent (const bool is_present, const std::string val_desc)
 Throws an exception if the given value is not present.
uint16_t etsi_its_cam_ts_msgs::access::etsi_its_msgs::getLeapSecondInsertionsSince2004 (const uint64_t unix_seconds)
 Get the leap second insertions since 2004 for given unix seconds.
template<typename StationId>
void etsi_its_cam_ts_msgs::access::setStationId (StationId &station_id, const uint32_t id_value)
 Set the Station Id object.
template<typename StationType>
void etsi_its_cam_ts_msgs::access::setStationType (StationType &station_type, const uint8_t value)
 Set the Station Type.
void etsi_its_cam_ts_msgs::access::setTimestampITS (TimestampIts &timestamp_its, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin() ->second)
 Set the TimestampITS object.
void etsi_its_cam_ts_msgs::access::setLatitude (Latitude &latitude, const double deg)
 Set the Latitude object.
void etsi_its_cam_ts_msgs::access::setLongitude (Longitude &longitude, const double deg)
 Set the Longitude object.
void etsi_its_cam_ts_msgs::access::setAltitudeValue (AltitudeValue &altitude, const double value)
 Set the AltitudeValue object.
void etsi_its_cam_ts_msgs::access::setAltitude (Altitude &altitude, const double value)
 Set the Altitude object.
void etsi_its_cam_ts_msgs::access::setSpeedValue (SpeedValue &speed, const double value)
 Set the SpeedValue object.
void etsi_its_cam_ts_msgs::access::setSpeedConfidence (SpeedConfidence &speed_confidence, const double value)
 Set the Speed Confidence object.
void etsi_its_cam_ts_msgs::access::setSpeed (Speed &speed, const double value, const double confidence=std::numeric_limits< double >::infinity())
 Set the Speed object.
template<typename AccelerationMagnitudeValue>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitudeValue (AccelerationMagnitudeValue &accel_mag_value, const double value)
 Set the Acceleration Magnitude Value object.
template<typename AccelerationConfidence>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitudeConfidence (AccelerationConfidence &accel_mag_confidence, const double value)
 Set the AccelerationMagnitude Confidence object.
template<typename AccelerationMagnitude>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitude (AccelerationMagnitude &accel_mag, const double value, const double confidence=std::numeric_limits< double >::infinity())
 Set the AccelerationMagnitude object.
template<typename AccelerationConfidence>
void etsi_its_cam_ts_msgs::access::setAccelerationConfidence (AccelerationConfidence &accel_confidence, const double value)
 Set the Acceleration Confidence object.
template<typename T>
void etsi_its_cam_ts_msgs::access::setReferencePosition (T &ref_position, const double latitude, const double longitude, const double altitude=AltitudeValue::UNAVAILABLE)
 Sets the reference position in the given ReferencePostion object.
template<typename T>
void etsi_its_cam_ts_msgs::access::setFromUTMPosition (T &reference_position, const gm::PointStamped &utm_position, const int zone, const bool northp)
 Set the ReferencePosition from a given UTM-Position.
template<typename HeadingValue>
void etsi_its_cam_ts_msgs::access::setHeadingValue (HeadingValue &heading, const double value)
 Set the HeadingValue object.
template<typename HeadingConfidence>
void etsi_its_cam_ts_msgs::access::setHeadingConfidence (HeadingConfidence &heading_confidence, const double value)
 Set the Heading Confidence object.
template<typename Heading, typename HeadingConfidence = decltype(Heading::heading_confidence)>
void etsi_its_cam_ts_msgs::access::setHeadingCDD (Heading &heading, const double value, double confidence=std::numeric_limits< double >::infinity())
 Set the Heading object.
template<typename YawRate, typename YawRateValue = decltype(YawRate::yaw_rate_value), typename YawRateConfidence = decltype(YawRate::yaw_rate_confidence)>
void etsi_its_cam_ts_msgs::access::setYawRateCDD (YawRate &yaw_rate, const double value, double confidence=std::numeric_limits< double >::infinity())
 Set the Yaw Rate object.
template<typename SemiAxisLength>
void etsi_its_cam_ts_msgs::access::setSemiAxis (SemiAxisLength &semi_axis_length, const double length)
 Set the Semi Axis length.
template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPosConfidenceEllipse (PosConfidenceEllipse &position_confidence_ellipse, const double semi_major_axis, const double semi_minor_axis, const double orientation)
 Set the Pos Confidence Ellipse object.
std::tuple< double, double, double > etsi_its_cam_ts_msgs::access::confidenceEllipseFromCovMatrix (const std::array< double, 4 > &covariance_matrix, const double object_heading)
 Gets the values needed to set a confidence ellipse from a covariance matrix.
std::tuple< double, double, double > etsi_its_cam_ts_msgs::access::confidenceEllipseFromWGSCovMatrix (const std::array< double, 4 > &covariance_matrix)
 Gets the values needed to set a confidence ellipse from a covariance matrix.
template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPosConfidenceEllipse (PosConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix, const double object_heading)
 Set the Pos Confidence Ellipse object.
template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setWGSPosConfidenceEllipse (PosConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix)
 Set the Pos Confidence Ellipse object.
void etsi_its_cam_ts_msgs::access::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 etsi_its_cam_ts_msgs::access::setLongitudinalAccelerationValue (AccelerationValue &accel, const double value)
 Set the LongitudinalAccelerationValue object.
void etsi_its_cam_ts_msgs::access::setLongitudinalAcceleration (AccelerationComponent &accel, const double value, const double confidence)
 Set the LongitudinalAcceleration object.
void etsi_its_cam_ts_msgs::access::setLateralAccelerationValue (AccelerationValue &accel, const double value)
 Set the LateralAccelerationValue object.
void etsi_its_cam_ts_msgs::access::setLateralAcceleration (AccelerationComponent &accel, const double value, const double confidence)
 Set the LateralAcceleration object.
template<typename PositionConfidenceEllipse, typename Wgs84AngleValue = decltype(PositionConfidenceEllipse::semi_major_axis_orientation)>
void etsi_its_cam_ts_msgs::access::setPositionConfidenceEllipse (PositionConfidenceEllipse &position_confidence_ellipse, const double semi_major_axis, const double semi_minor_axis, const double orientation)
 Set the Position Confidence Ellipse object.
template<typename PositionConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPositionConfidenceEllipse (PositionConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix, const double object_heading)
 Set the Position Confidence Ellipse object.
template<typename PositionConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setWGSPositionConfidenceEllipse (PositionConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix)
 Set the Position Confidence Ellipse object.
template<typename T>
void etsi_its_cam_ts_msgs::access::setBitString (T &bitstring, const std::vector< bool > &bits)
 Set a Bit String by a vector of bools.
void etsi_its_cam_ts_msgs::access::setGenerationDeltaTime (GenerationDeltaTime &generation_delta_time, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin() ->second)
 Set the GenerationDeltaTime-Value.
void etsi_its_cam_ts_msgs::access::setGenerationDeltaTime (CAM &cam, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin() ->second)
 Set the Generation Delta Time object.
void etsi_its_cam_ts_msgs::access::setStationType (CAM &cam, const uint8_t value)
 Set the StationType for a CAM.
void etsi_its_cam_ts_msgs::access::setHeading (CAM &cam, const double heading_val, const double confidence=std::numeric_limits< double >::infinity())
 Set the Heading for a CAM.
void etsi_its_cam_ts_msgs::access::setYawRate (CAM &cam, const double yaw_rate_val, const double confidence=std::numeric_limits< double >::infinity())
 Set the Yaw Rate for a CAM.
void etsi_its_cam_ts_msgs::access::setVehicleWidth (VehicleWidth &vehicle_width, const double value)
 Set the VehicleWidth object.
void etsi_its_cam_ts_msgs::access::setVehicleLengthValue (VehicleLengthValue &vehicle_length, const double value)
 Set the VehicleLengthValue object.
void etsi_its_cam_ts_msgs::access::setVehicleLength (VehicleLength &vehicle_length, const double value)
 Set the VehicleLength object.
void etsi_its_cam_ts_msgs::access::setVehicleDimensions (CAM &cam, const double vehicle_length, const double vehicle_width)
 Set the vehicle dimensions.
void etsi_its_cam_ts_msgs::access::setSpeed (CAM &cam, const double speed_val, const double confidence=SpeedConfidence::UNAVAILABLE)
 Set the vehicle speed.
void etsi_its_cam_ts_msgs::access::setLongitudinalAcceleration (CAM &cam, const double lon_accel, const double confidence=std::numeric_limits< double >::infinity())
 Set the longitudinal acceleration.
void etsi_its_cam_ts_msgs::access::setLateralAcceleration (CAM &cam, const double lat_accel, const double confidence=std::numeric_limits< double >::infinity())
 Set the lateral acceleration.
void etsi_its_cam_ts_msgs::access::setReferencePosition (CAM &cam, const double latitude, const double longitude, const double altitude=AltitudeValue::UNAVAILABLE)
 Set the ReferencePosition for a CAM.
void etsi_its_cam_ts_msgs::access::setFromUTMPosition (CAM &cam, const gm::PointStamped &utm_position, const int &zone, const bool &northp)
 Set the ReferencePosition of a CAM from a given UTM-Position.
void etsi_its_cam_ts_msgs::access::setExteriorLights (ExteriorLights &exterior_lights, const std::vector< bool > &bits)
 Set the Exterior Lights by a vector of bools.
void etsi_its_cam_ts_msgs::access::setExteriorLights (CAM &cam, const std::vector< bool > &exterior_lights)
 Set the Exterior Lights by using a vector of bools.
void etsi_its_cam_ts_msgs::access::setAccelerationControl (AccelerationControl &acceleration_control, const std::vector< bool > &bits)
 Set the Acceleration Control by a vector of bools.
void etsi_its_cam_ts_msgs::access::setDrivingLaneStatus (DrivingLaneStatus &driving_lane_status, const std::vector< bool > &bits)
 Set the Driving Lane Status by a vector of bools.
void etsi_its_cam_ts_msgs::access::setSpecialTransportType (SpecialTransportType &special_transport_type, const std::vector< bool > &bits)
 Set the Special Transport Type by a vector of bools.
void etsi_its_cam_ts_msgs::access::setLightBarSirenInUse (LightBarSirenInUse &light_bar_siren_in_use, const std::vector< bool > &bits)
 Set the Lightbar Siren In Use by a vector of bools.
void etsi_its_cam_ts_msgs::access::setEmergencyPriority (EmergencyPriority &emergency_priority, const std::vector< bool > &bits)
 Set the Emergency Priority by a vector of bools.
void etsi_its_cam_ts_msgs::access::setItsPduHeader (CAM &cam, const uint32_t station_id, const uint8_t protocol_version=0)
 Set the ItsPduHeader-object for a CAM.
void etsi_its_cam_ts_msgs::access::setRefPosConfidence (CAM &cam, const std::array< double, 4 > &covariance_matrix, const double object_heading)
 Set the confidence of the reference position.
void etsi_its_cam_ts_msgs::access::setWGSRefPosConfidence (CAM &cam, const std::array< double, 4 > &covariance_matrix)
 Set the confidence of the reference position.

Detailed Description

Setter functions for the ETSI ITS CAM (TS).

Definition in file cam_ts_setters.h.

Function Documentation

◆ confidenceEllipseFromCovMatrix()

std::tuple< double, double, double > etsi_its_cam_ts_msgs::access::confidenceEllipseFromCovMatrix ( const std::array< double, 4 > & covariance_matrix,
const double object_heading )
inline

Gets the values needed to set a confidence ellipse from a covariance matrix.

Parameters
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the object (x = longitudinal, y = lateral)
object_headingThe heading of the object in rad, with respect to WGS84
Returns
std::tuple<double, double, double> semi_major_axis [m], semi_minor_axis [m], orientation [deg], with respect to WGS84

Definition at line 411 of file cam_ts_setters.h.

◆ confidenceEllipseFromWGSCovMatrix()

std::tuple< double, double, double > etsi_its_cam_ts_msgs::access::confidenceEllipseFromWGSCovMatrix ( const std::array< double, 4 > & covariance_matrix)
inline

Gets the values needed to set a confidence ellipse from a covariance matrix.

Parameters
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the WGS axes (x = North, y = East)
object_headingThe heading of the object in rad, with respect to WGS84
Returns
std::tuple<double, double, double> semi_major_axis [m], semi_minor_axis [m], orientation [deg], with respect to WGS84

Definition at line 452 of file cam_ts_setters.h.

462 {
463
465
467
475inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
476 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
477}
478
488inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
489 // First ensure, that the object has the correct heading by setting its value
490 double orientation = object_heading * 180 / M_PI; // Convert to degrees
491 // Normalize to [0, 360)
492 orientation = std::fmod(orientation + 360, 360);
493 while (orientation < 0) {
494 orientation += 360;
495 }
496 while (orientation >= 360) {
497 orientation -= 360;
498 }
499 setHeading(cam, orientation);
500 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
501 covariance_matrix, object_heading);
502}
503
512inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
513 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
514 covariance_matrix);
515}
516
517
518} // namespace etsi_its_cam_ts_msgs::access
Common setter functions for the ETSI ITS CAM (EN and TS).
void setWGSRefPosConfidence(CAM &cam, const std::array< double, 4 > &covariance_matrix)
Set the confidence of the reference position.
void setPositionConfidenceEllipse(PositionConfidenceEllipse &position_confidence_ellipse, const double semi_major_axis, const double semi_minor_axis, const double orientation)
Set the Position Confidence Ellipse object.
void setHeading(CAM &cam, const double heading_val, const double confidence=std::numeric_limits< double >::infinity())
Set the Heading for a CAM.
void setWGSPositionConfidenceEllipse(PositionConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix)
Set the Position Confidence Ellipse object.
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.
Setter functions for the ETSI ITS Common Data Dictionary (CDD) v2.1.1.

◆ getLeapSecondInsertionsSince2004()

uint16_t etsi_its_cam_ts_msgs::access::etsi_its_msgs::getLeapSecondInsertionsSince2004 ( const uint64_t unix_seconds)
inline

Get the leap second insertions since 2004 for given unix seconds.

Parameters
unix_secondsthe current unix seconds for that the leap second insertions since 2004 shall be provided
Returns
uint16_t the number of leap second insertions since 2004 for unix_seconds

Definition at line 38 of file cam_ts_access.h.

71 {
73}
Utility functions for the ETSI ITS CAM (EN and TS).

◆ setAccelerationConfidence()

template<typename AccelerationConfidence>
void etsi_its_cam_ts_msgs::access::setAccelerationConfidence ( AccelerationConfidence & accel_confidence,
const double value )
inline

Set the Acceleration Confidence object.

Parameters
accel_confidenceobject to set
valuestandard deviation in m/s^2 as decimal number

Definition at line 210 of file cam_ts_setters.h.

220 {
221
223
225
233inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
234 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
235}
236
246inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
247 // First ensure, that the object has the correct heading by setting its value
248 double orientation = object_heading * 180 / M_PI; // Convert to degrees
249 // Normalize to [0, 360)
250 orientation = std::fmod(orientation + 360, 360);
251 while (orientation < 0) {
252 orientation += 360;
253 }
254 while (orientation >= 360) {
255 orientation -= 360;
256 }
257 setHeading(cam, orientation);
258 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
259 covariance_matrix, object_heading);
260}
261
270inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
271 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
272 covariance_matrix);
273}
274
275
276} // namespace etsi_its_cam_ts_msgs::access

◆ setAccelerationControl()

void etsi_its_cam_ts_msgs::access::setAccelerationControl ( AccelerationControl & acceleration_control,
const std::vector< bool > & bits )
inline

Set the Acceleration Control by a vector of bools.

Parameters
acceleration_control
bits

Definition at line 250 of file cam_ts_setters.h.

260 {
261
263
265
273inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
274 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
275}
276
286inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
287 // First ensure, that the object has the correct heading by setting its value
288 double orientation = object_heading * 180 / M_PI; // Convert to degrees
289 // Normalize to [0, 360)
290 orientation = std::fmod(orientation + 360, 360);
291 while (orientation < 0) {
292 orientation += 360;
293 }
294 while (orientation >= 360) {
295 orientation -= 360;
296 }
297 setHeading(cam, orientation);
298 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
299 covariance_matrix, object_heading);
300}
301
310inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
311 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
312 covariance_matrix);
313}
314
315
316} // namespace etsi_its_cam_ts_msgs::access

◆ setAccelerationMagnitude()

template<typename AccelerationMagnitude>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitude ( AccelerationMagnitude & accel_mag,
const double value,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the AccelerationMagnitude object.

AccelerationConfidence is set to UNAVAILABLE

Parameters
accel_magobject to set
valueAccelerationMagnitudeValue in m/s^2 as decimal number
confidencestandard deviation in m/s^2 as decimal number (default: infinity, mapping to AccelerationConfidence::UNAVAILABLE)

Definition at line 197 of file cam_ts_setters.h.

207 {
208
210
212
220inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
221 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
222}
223
233inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
234 // First ensure, that the object has the correct heading by setting its value
235 double orientation = object_heading * 180 / M_PI; // Convert to degrees
236 // Normalize to [0, 360)
237 orientation = std::fmod(orientation + 360, 360);
238 while (orientation < 0) {
239 orientation += 360;
240 }
241 while (orientation >= 360) {
242 orientation -= 360;
243 }
244 setHeading(cam, orientation);
245 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
246 covariance_matrix, object_heading);
247}
248
257inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
258 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
259 covariance_matrix);
260}
261
262
263} // namespace etsi_its_cam_ts_msgs::access

◆ setAccelerationMagnitudeConfidence()

template<typename AccelerationConfidence>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitudeConfidence ( AccelerationConfidence & accel_mag_confidence,
const double value )
inline

Set the AccelerationMagnitude Confidence object.

Parameters
accel_mag_confidenceobject to set
valuestandard deviation in m/s^2 as decimal number

Definition at line 177 of file cam_ts_setters.h.

187 {
188
190
192
200inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
201 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
202}
203
213inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
214 // First ensure, that the object has the correct heading by setting its value
215 double orientation = object_heading * 180 / M_PI; // Convert to degrees
216 // Normalize to [0, 360)
217 orientation = std::fmod(orientation + 360, 360);
218 while (orientation < 0) {
219 orientation += 360;
220 }
221 while (orientation >= 360) {
222 orientation -= 360;
223 }
224 setHeading(cam, orientation);
225 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
226 covariance_matrix, object_heading);
227}
228
237inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
238 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
239 covariance_matrix);
240}
241
242
243} // namespace etsi_its_cam_ts_msgs::access

◆ setAccelerationMagnitudeValue()

template<typename AccelerationMagnitudeValue>
void etsi_its_cam_ts_msgs::access::setAccelerationMagnitudeValue ( AccelerationMagnitudeValue & accel_mag_value,
const double value )
inline

Set the Acceleration Magnitude Value object.

Parameters
accel_mag_valueobject to set
valueAccelerationMagnitudeValue in m/s^2 as decimal number

Definition at line 164 of file cam_ts_setters.h.

174 {
175
177
179
187inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
188 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
189}
190
200inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
201 // First ensure, that the object has the correct heading by setting its value
202 double orientation = object_heading * 180 / M_PI; // Convert to degrees
203 // Normalize to [0, 360)
204 orientation = std::fmod(orientation + 360, 360);
205 while (orientation < 0) {
206 orientation += 360;
207 }
208 while (orientation >= 360) {
209 orientation -= 360;
210 }
211 setHeading(cam, orientation);
212 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
213 covariance_matrix, object_heading);
214}
215
224inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
225 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
226 covariance_matrix);
227}
228
229
230} // namespace etsi_its_cam_ts_msgs::access

◆ setAltitude()

void etsi_its_cam_ts_msgs::access::setAltitude ( Altitude & altitude,
const double value )
inline

Set the Altitude object.

AltitudeConfidence is set to UNAVAILABLE

Parameters
altitudeobject to set
valueAltitude value (above the reference ellipsoid surface) in meter as decimal number

Definition at line 110 of file cam_ts_setters.h.

120 {
121
123
125
133inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
134 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
135}
136
146inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
147 // First ensure, that the object has the correct heading by setting its value
148 double orientation = object_heading * 180 / M_PI; // Convert to degrees
149 // Normalize to [0, 360)
150 orientation = std::fmod(orientation + 360, 360);
151 while (orientation < 0) {
152 orientation += 360;
153 }
154 while (orientation >= 360) {
155 orientation -= 360;
156 }
157 setHeading(cam, orientation);
158 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
159 covariance_matrix, object_heading);
160}
161
170inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
171 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
172 covariance_matrix);
173}
174
175
176} // namespace etsi_its_cam_ts_msgs::access

◆ setAltitudeValue()

void etsi_its_cam_ts_msgs::access::setAltitudeValue ( AltitudeValue & altitude,
const double value )
inline

Set the AltitudeValue object.

Parameters
altitudeobject to set
valueAltitudeValue value (above the reference ellipsoid surface) in meter as decimal number

Definition at line 91 of file cam_ts_setters.h.

101 {
102
104
106
114inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
115 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
116}
117
127inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
128 // First ensure, that the object has the correct heading by setting its value
129 double orientation = object_heading * 180 / M_PI; // Convert to degrees
130 // Normalize to [0, 360)
131 orientation = std::fmod(orientation + 360, 360);
132 while (orientation < 0) {
133 orientation += 360;
134 }
135 while (orientation >= 360) {
136 orientation -= 360;
137 }
138 setHeading(cam, orientation);
139 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
140 covariance_matrix, object_heading);
141}
142
151inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
152 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
153 covariance_matrix);
154}
155
156
157} // namespace etsi_its_cam_ts_msgs::access

◆ setBitString()

template<typename T>
void etsi_its_cam_ts_msgs::access::setBitString ( T & bitstring,
const std::vector< bool > & bits )
inline

Set a Bit String by a vector of bools.

Template Parameters
T
Parameters
bitstringBitString to set
bitsvector of bools

Definition at line 21 of file cam_ts_setters.h.

24 {
25 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
26}
27
37inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
38 // First ensure, that the object has the correct heading by setting its value
39 double orientation = object_heading * 180 / M_PI; // Convert to degrees
40 // Normalize to [0, 360)
41 orientation = std::fmod(orientation + 360, 360);
42 while (orientation < 0) {
43 orientation += 360;
44 }
45 while (orientation >= 360) {
46 orientation -= 360;

◆ setDrivingLaneStatus()

void etsi_its_cam_ts_msgs::access::setDrivingLaneStatus ( DrivingLaneStatus & driving_lane_status,
const std::vector< bool > & bits )
inline

Set the Driving Lane Status by a vector of bools.

Parameters
driving_lane_status
bits

Definition at line 260 of file cam_ts_setters.h.

270 {
271
273
275
283inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
284 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
285}
286
296inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
297 // First ensure, that the object has the correct heading by setting its value
298 double orientation = object_heading * 180 / M_PI; // Convert to degrees
299 // Normalize to [0, 360)
300 orientation = std::fmod(orientation + 360, 360);
301 while (orientation < 0) {
302 orientation += 360;
303 }
304 while (orientation >= 360) {
305 orientation -= 360;
306 }
307 setHeading(cam, orientation);
308 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
309 covariance_matrix, object_heading);
310}
311
320inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
321 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
322 covariance_matrix);
323}
324
325
326} // namespace etsi_its_cam_ts_msgs::access

◆ setEmergencyPriority()

void etsi_its_cam_ts_msgs::access::setEmergencyPriority ( EmergencyPriority & emergency_priority,
const std::vector< bool > & bits )
inline

Set the Emergency Priority by a vector of bools.

Parameters
emergency_priority
bits

Definition at line 290 of file cam_ts_setters.h.

300 {
301
303
305
313inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
314 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
315}
316
326inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
327 // First ensure, that the object has the correct heading by setting its value
328 double orientation = object_heading * 180 / M_PI; // Convert to degrees
329 // Normalize to [0, 360)
330 orientation = std::fmod(orientation + 360, 360);
331 while (orientation < 0) {
332 orientation += 360;
333 }
334 while (orientation >= 360) {
335 orientation -= 360;
336 }
337 setHeading(cam, orientation);
338 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
339 covariance_matrix, object_heading);
340}
341
350inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
351 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
352 covariance_matrix);
353}
354
355
356} // namespace etsi_its_cam_ts_msgs::access

◆ setExteriorLights() [1/2]

void etsi_its_cam_ts_msgs::access::setExteriorLights ( CAM & cam,
const std::vector< bool > & exterior_lights )
inline

Set the Exterior Lights by using a vector of bools.

Parameters
camCAM to set the exterior lights
exterior_lightsvector of bools to set the exterior lights

Definition at line 225 of file cam_ts_setters.h.

235 {
236
238
240
248inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
249 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
250}
251
261inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
262 // First ensure, that the object has the correct heading by setting its value
263 double orientation = object_heading * 180 / M_PI; // Convert to degrees
264 // Normalize to [0, 360)
265 orientation = std::fmod(orientation + 360, 360);
266 while (orientation < 0) {
267 orientation += 360;
268 }
269 while (orientation >= 360) {
270 orientation -= 360;
271 }
272 setHeading(cam, orientation);
273 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
274 covariance_matrix, object_heading);
275}
276
285inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
286 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
287 covariance_matrix);
288}
289
290
291} // namespace etsi_its_cam_ts_msgs::access

◆ setExteriorLights() [2/2]

void etsi_its_cam_ts_msgs::access::setExteriorLights ( ExteriorLights & exterior_lights,
const std::vector< bool > & bits )
inline

Set the Exterior Lights by a vector of bools.

Parameters
exterior_lights
bits

Definition at line 215 of file cam_ts_setters.h.

225 {
226
228
230
238inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
239 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
240}
241
251inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
252 // First ensure, that the object has the correct heading by setting its value
253 double orientation = object_heading * 180 / M_PI; // Convert to degrees
254 // Normalize to [0, 360)
255 orientation = std::fmod(orientation + 360, 360);
256 while (orientation < 0) {
257 orientation += 360;
258 }
259 while (orientation >= 360) {
260 orientation -= 360;
261 }
262 setHeading(cam, orientation);
263 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
264 covariance_matrix, object_heading);
265}
266
275inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
276 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
277 covariance_matrix);
278}
279
280
281} // namespace etsi_its_cam_ts_msgs::access

◆ setFromUTMPosition() [1/2]

void etsi_its_cam_ts_msgs::access::setFromUTMPosition ( CAM & cam,
const gm::PointStamped & utm_position,
const int & zone,
const bool & northp )
inline

Set the ReferencePosition of a CAM from a given UTM-Position.

The position is transformed to latitude and longitude by using GeographicLib::UTMUPS The z-Coordinate is directly used as altitude value The frame_id of the given utm_position must be set to 'utm_<zone><N/S>'

Parameters
[out]camCAM for which to set the ReferencePosition
[in]utm_positiongeometry_msgs::PointStamped describing the given utm position
[in]zonethe UTM zone (zero means UPS) of the given position
[in]northphemisphere (true means north, false means south)

Definition at line 205 of file cam_ts_setters.h.

215 {
216
218
220
228inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
229 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
230}
231
241inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
242 // First ensure, that the object has the correct heading by setting its value
243 double orientation = object_heading * 180 / M_PI; // Convert to degrees
244 // Normalize to [0, 360)
245 orientation = std::fmod(orientation + 360, 360);
246 while (orientation < 0) {
247 orientation += 360;
248 }
249 while (orientation >= 360) {
250 orientation -= 360;
251 }
252 setHeading(cam, orientation);
253 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
254 covariance_matrix, object_heading);
255}
256
265inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
266 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
267 covariance_matrix);
268}
269
270
271} // namespace etsi_its_cam_ts_msgs::access

◆ setFromUTMPosition() [2/2]

template<typename T>
void etsi_its_cam_ts_msgs::access::setFromUTMPosition ( T & reference_position,
const gm::PointStamped & utm_position,
const int zone,
const bool northp )
inline

Set the ReferencePosition from a given UTM-Position.

The position is transformed to latitude and longitude by using GeographicLib::UTMUPS The z-Coordinate is directly used as altitude value The frame_id of the given utm_position must be set to 'utm_<zone><N/S>'

Parameters
[out]reference_positionReferencePostion or ReferencePositionWithConfidence to set
[in]utm_positiongeometry_msgs::PointStamped describing the given utm position
[in]zonethe UTM zone (zero means UPS) of the given position
[in]northphemisphere (true means north, false means south)

Definition at line 258 of file cam_ts_setters.h.

268 {
269
271
273
281inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
282 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
283}
284
294inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
295 // First ensure, that the object has the correct heading by setting its value
296 double orientation = object_heading * 180 / M_PI; // Convert to degrees
297 // Normalize to [0, 360)
298 orientation = std::fmod(orientation + 360, 360);
299 while (orientation < 0) {
300 orientation += 360;
301 }
302 while (orientation >= 360) {
303 orientation -= 360;
304 }
305 setHeading(cam, orientation);
306 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
307 covariance_matrix, object_heading);
308}
309
318inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
319 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
320 covariance_matrix);
321}
322
323
324} // namespace etsi_its_cam_ts_msgs::access

◆ setGenerationDeltaTime() [1/2]

void etsi_its_cam_ts_msgs::access::setGenerationDeltaTime ( CAM & cam,
const uint64_t unix_nanosecs,
const uint16_t n_leap_seconds = etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin()->second )
inline

Set the Generation Delta Time object.

Parameters
camCAM to set the GenerationDeltaTime-Value for
unix_nanosecsTimestamp in unix-nanoseconds to set the GenerationDeltaTime-Value from
n_leap_secondsNumber of leap seconds since 2004 for the given timestamp (Defaults to the todays number of leap seconds since 2004.)

Definition at line 40 of file cam_ts_setters.h.

42 {
43 orientation += 360;
44 }

◆ setGenerationDeltaTime() [2/2]

void etsi_its_cam_ts_msgs::access::setGenerationDeltaTime ( GenerationDeltaTime & generation_delta_time,
const uint64_t unix_nanosecs,
const uint16_t n_leap_seconds = etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin()->second )
inline

Set the GenerationDeltaTime-Value.

Parameters
generation_delta_timeGenerationDeltaTime to set the GenerationDeltaTime-Value for
unix_nanosecsTimestamp in unix-nanoseconds to set the GenerationDeltaTime-Value from
n_leap_secondsNumber of leap seconds since 2004 for the given timestamp (Defaults to the todays number of leap seconds since 2004.)

Definition at line 23 of file cam_ts_setters.h.

24 {
25 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
26}
27

◆ setHeading()

void etsi_its_cam_ts_msgs::access::setHeading ( CAM & cam,
const double heading_val,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the Heading for a CAM.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West HeadingConfidence is set to UNAVAILABLE

Parameters
camCAM to set the ReferencePosition
valueHeading value in degree as decimal number
confidencestandard deviation of heading in degree as decimal number (default: infinity, mapping to HeadingConfidence::UNAVAILABLE)

Definition at line 66 of file cam_ts_setters.h.

◆ setHeadingCDD()

template<typename Heading, typename HeadingConfidence = decltype(Heading::heading_confidence)>
void etsi_its_cam_ts_msgs::access::setHeadingCDD ( Heading & heading,
const double value,
double confidence = std::numeric_limits<double>::infinity() )

Set the Heading object.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West HeadingConfidence is set to UNAVAILABLE

Parameters
headingobject to set
valueHeading value in degree as decimal number
confidencestandard deviation of heading in degree as decimal number (default: infinity, mapping to HeadingConfidence::UNAVAILABLE)

Definition at line 317 of file cam_ts_setters.h.

340inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
341 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
342}
343
353inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
354 // First ensure, that the object has the correct heading by setting its value
355 double orientation = object_heading * 180 / M_PI; // Convert to degrees
356 // Normalize to [0, 360)
357 orientation = std::fmod(orientation + 360, 360);
358 while (orientation < 0) {
359 orientation += 360;
360 }
361 while (orientation >= 360) {
362 orientation -= 360;
363 }
364 setHeading(cam, orientation);
365 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
366 covariance_matrix, object_heading);
367}
368
377inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
378 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
379 covariance_matrix);
380}
381
382
383} // namespace etsi_its_cam_ts_msgs::access

◆ setHeadingConfidence()

template<typename HeadingConfidence>
void etsi_its_cam_ts_msgs::access::setHeadingConfidence ( HeadingConfidence & heading_confidence,
const double value )
inline

Set the Heading Confidence object.

Parameters
heading_confidenceobject to set
valuestandard deviation of heading in degree as decimal number

Definition at line 296 of file cam_ts_setters.h.

306 {
307
309
311
319inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
320 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
321}
322
332inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
333 // First ensure, that the object has the correct heading by setting its value
334 double orientation = object_heading * 180 / M_PI; // Convert to degrees
335 // Normalize to [0, 360)
336 orientation = std::fmod(orientation + 360, 360);
337 while (orientation < 0) {
338 orientation += 360;
339 }
340 while (orientation >= 360) {
341 orientation -= 360;
342 }
343 setHeading(cam, orientation);
344 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
345 covariance_matrix, object_heading);
346}
347
356inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
357 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
358 covariance_matrix);
359}
360
361
362} // namespace etsi_its_cam_ts_msgs::access

◆ setHeadingValue()

template<typename HeadingValue>
void etsi_its_cam_ts_msgs::access::setHeadingValue ( HeadingValue & heading,
const double value )
inline

Set the HeadingValue object.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West

Parameters
headingobject to set
valueHeading value in degree as decimal number

Definition at line 283 of file cam_ts_setters.h.

293 {
294
296
298
306inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
307 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
308}
309
319inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
320 // First ensure, that the object has the correct heading by setting its value
321 double orientation = object_heading * 180 / M_PI; // Convert to degrees
322 // Normalize to [0, 360)
323 orientation = std::fmod(orientation + 360, 360);
324 while (orientation < 0) {
325 orientation += 360;
326 }
327 while (orientation >= 360) {
328 orientation -= 360;
329 }
330 setHeading(cam, orientation);
331 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
332 covariance_matrix, object_heading);
333}
334
343inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
344 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
345 covariance_matrix);
346}
347
348
349} // namespace etsi_its_cam_ts_msgs::access

◆ setItsPduHeader() [1/2]

void etsi_its_cam_ts_msgs::access::setItsPduHeader ( CAM & cam,
const uint32_t station_id,
const uint8_t protocol_version = 0 )
inline

Set the ItsPduHeader-object for a CAM.

Parameters
camCAM-Message to set the ItsPduHeader
station_id
protocol_version

Definition at line 24 of file cam_ts_setters.h.

24 {
25 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
26}

◆ setItsPduHeader() [2/2]

void etsi_its_cam_ts_msgs::access::setItsPduHeader ( ItsPduHeader & header,
const uint8_t message_id,
const uint32_t station_id,
const uint8_t protocol_version = 0 )
inline

Set the Its Pdu Header object.

Parameters
headerItsPduHeader to be set
message_idID of the message
station_id
protocol_version

Definition at line 25 of file cam_ts_setters.h.

◆ setLateralAcceleration() [1/2]

void etsi_its_cam_ts_msgs::access::setLateralAcceleration ( AccelerationComponent & accel,
const double value,
const double confidence )
inline

Set the LateralAcceleration object.

AccelerationConfidence is set to UNAVAILABLE

Parameters
accelobject to set
valueLaterallAccelerationValue in m/s^2 as decimal number (left is positive)

Definition at line 89 of file cam_ts_setters.h.

99 {
100
102
104
112inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
113 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
114}
115
125inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
126 // First ensure, that the object has the correct heading by setting its value
127 double orientation = object_heading * 180 / M_PI; // Convert to degrees
128 // Normalize to [0, 360)
129 orientation = std::fmod(orientation + 360, 360);
130 while (orientation < 0) {
131 orientation += 360;
132 }
133 while (orientation >= 360) {
134 orientation -= 360;
135 }
136 setHeading(cam, orientation);
137 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
138 covariance_matrix, object_heading);
139}
140
149inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
150 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
151 covariance_matrix);
152}
153
154
155} // namespace etsi_its_cam_ts_msgs::access

◆ setLateralAcceleration() [2/2]

void etsi_its_cam_ts_msgs::access::setLateralAcceleration ( CAM & cam,
const double lat_accel,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the lateral acceleration.

Parameters
camCAM to set the acceleration value s
lat_accellateral acceleration to set in m/s^2 as decimal number (left is positiv), if not available use 16.1 m/s^2
confidencestandard deviation of the lateral acceleration in m/s^2 as decimal number Default is infinity, mapping to AccelerationConfidence::UNAVAILABLE

Definition at line 169 of file cam_ts_setters.h.

179 {
180
182
184
192inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
193 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
194}
195
205inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
206 // First ensure, that the object has the correct heading by setting its value
207 double orientation = object_heading * 180 / M_PI; // Convert to degrees
208 // Normalize to [0, 360)
209 orientation = std::fmod(orientation + 360, 360);
210 while (orientation < 0) {
211 orientation += 360;
212 }
213 while (orientation >= 360) {
214 orientation -= 360;
215 }
216 setHeading(cam, orientation);
217 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
218 covariance_matrix, object_heading);
219}
220
229inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
230 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
231 covariance_matrix);
232}
233
234
235} // namespace etsi_its_cam_ts_msgs::access

◆ setLateralAccelerationValue()

void etsi_its_cam_ts_msgs::access::setLateralAccelerationValue ( AccelerationValue & accel,
const double value )
inline

Set the LateralAccelerationValue object.

Parameters
accelobject to set
valueLateralAccelerationValue in m/s^2 as decimal number (left is positive)

Definition at line 70 of file cam_ts_setters.h.

80 {
81
83
85
93inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
94 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
95}
96
106inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
107 // First ensure, that the object has the correct heading by setting its value
108 double orientation = object_heading * 180 / M_PI; // Convert to degrees
109 // Normalize to [0, 360)
110 orientation = std::fmod(orientation + 360, 360);
111 while (orientation < 0) {
112 orientation += 360;
113 }
114 while (orientation >= 360) {
115 orientation -= 360;
116 }
117 setHeading(cam, orientation);
118 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
119 covariance_matrix, object_heading);
120}
121
130inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
131 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
132 covariance_matrix);
133}
134
135
136} // namespace etsi_its_cam_ts_msgs::access

◆ setLatitude()

void etsi_its_cam_ts_msgs::access::setLatitude ( Latitude & latitude,
const double deg )
inline

Set the Latitude object.

Parameters
latitudeobject to set
degLatitude value in degree as decimal number

Definition at line 67 of file cam_ts_setters.h.

◆ setLightBarSirenInUse()

void etsi_its_cam_ts_msgs::access::setLightBarSirenInUse ( LightBarSirenInUse & light_bar_siren_in_use,
const std::vector< bool > & bits )
inline

Set the Lightbar Siren In Use by a vector of bools.

Parameters
light_bar_siren_in_use
bits

Definition at line 280 of file cam_ts_setters.h.

290 {
291
293
295
303inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
304 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
305}
306
316inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
317 // First ensure, that the object has the correct heading by setting its value
318 double orientation = object_heading * 180 / M_PI; // Convert to degrees
319 // Normalize to [0, 360)
320 orientation = std::fmod(orientation + 360, 360);
321 while (orientation < 0) {
322 orientation += 360;
323 }
324 while (orientation >= 360) {
325 orientation -= 360;
326 }
327 setHeading(cam, orientation);
328 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
329 covariance_matrix, object_heading);
330}
331
340inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
341 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
342 covariance_matrix);
343}
344
345
346} // namespace etsi_its_cam_ts_msgs::access

◆ setLongitude()

void etsi_its_cam_ts_msgs::access::setLongitude ( Longitude & longitude,
const double deg )
inline

Set the Longitude object.

Parameters
longitudeobject to set
degLongitude value in degree as decimal number

Definition at line 79 of file cam_ts_setters.h.

89 {
90
92
94
102inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
103 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
104}
105
115inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
116 // First ensure, that the object has the correct heading by setting its value
117 double orientation = object_heading * 180 / M_PI; // Convert to degrees
118 // Normalize to [0, 360)
119 orientation = std::fmod(orientation + 360, 360);
120 while (orientation < 0) {
121 orientation += 360;
122 }
123 while (orientation >= 360) {
124 orientation -= 360;
125 }
126 setHeading(cam, orientation);
127 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
128 covariance_matrix, object_heading);
129}
130
139inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
140 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
141 covariance_matrix);
142}
143
144
145} // namespace etsi_its_cam_ts_msgs::access

◆ setLongitudinalAcceleration() [1/2]

void etsi_its_cam_ts_msgs::access::setLongitudinalAcceleration ( AccelerationComponent & accel,
const double value,
const double confidence )
inline

Set the LongitudinalAcceleration object.

AccelerationConfidence is set to UNAVAILABLE

Parameters
accelobject to set
valueLongitudinalAccelerationValue in m/s^2 as decimal number (braking is negative)

Definition at line 59 of file cam_ts_setters.h.

61 {
62 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,

◆ setLongitudinalAcceleration() [2/2]

void etsi_its_cam_ts_msgs::access::setLongitudinalAcceleration ( CAM & cam,
const double lon_accel,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the longitudinal acceleration.

Parameters
camCAM to set the acceleration value s
lon_accellongitudinal acceleration to set in m/s^2 as decimal number (braking is negative), if not available use 16.1 m/s^2
confidencestandard deviation of the longitudinal acceleration in m/s^2 as decimal number Default is infinity, mapping to AccelerationConfidence::UNAVAILABLE

Definition at line 155 of file cam_ts_setters.h.

165 {
166
168
170
178inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
179 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
180}
181
191inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
192 // First ensure, that the object has the correct heading by setting its value
193 double orientation = object_heading * 180 / M_PI; // Convert to degrees
194 // Normalize to [0, 360)
195 orientation = std::fmod(orientation + 360, 360);
196 while (orientation < 0) {
197 orientation += 360;
198 }
199 while (orientation >= 360) {
200 orientation -= 360;
201 }
202 setHeading(cam, orientation);
203 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
204 covariance_matrix, object_heading);
205}
206
215inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
216 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
217 covariance_matrix);
218}
219
220
221} // namespace etsi_its_cam_ts_msgs::access

◆ setLongitudinalAccelerationValue()

void etsi_its_cam_ts_msgs::access::setLongitudinalAccelerationValue ( AccelerationValue & accel,
const double value )
inline

Set the LongitudinalAccelerationValue object.

Parameters
accelobject to set
valueLongitudinalAccelerationValue in m/s^2 as decimal number (braking is negative)

Definition at line 40 of file cam_ts_setters.h.

42 {
43 orientation += 360;
44 }
45 while (orientation >= 360) {
46 orientation -= 360;
47 }
48 setHeading(cam, orientation);
49 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
void setHeading(CAM &cam, const double heading_val, const double confidence=std::numeric_limits< double >::infinity())
Set the Heading for a CAM.
void setPositionConfidenceEllipse(PositionConfidenceEllipse &position_confidence_ellipse, const double semi_major_axis, const double semi_minor_axis, const double orientation)
Set the Position Confidence Ellipse object.

◆ setPosConfidenceEllipse() [1/2]

template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPosConfidenceEllipse ( PosConfidenceEllipse & position_confidence_ellipse,
const double semi_major_axis,
const double semi_minor_axis,
const double orientation )
inline

Set the Pos Confidence Ellipse object.

Parameters
[out]position_confidence_ellipseThe PosConfidenceEllipse to set
[in]semi_major_axislength of the semi-major axis in meters
[in]semi_minor_axislength of the semi-minor axis in meters
[in]orientationof the semi-major axis in degrees, with respect to WGS84

Definition at line 395 of file cam_ts_setters.h.

405 {
406
408
410
418inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
419 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
420}
421
431inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
432 // First ensure, that the object has the correct heading by setting its value
433 double orientation = object_heading * 180 / M_PI; // Convert to degrees
434 // Normalize to [0, 360)
435 orientation = std::fmod(orientation + 360, 360);
436 while (orientation < 0) {
437 orientation += 360;
438 }
439 while (orientation >= 360) {
440 orientation -= 360;
441 }
442 setHeading(cam, orientation);
443 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
444 covariance_matrix, object_heading);
445}
446
455inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
456 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
457 covariance_matrix);
458}
459
460
461} // namespace etsi_its_cam_ts_msgs::access

◆ setPosConfidenceEllipse() [2/2]

template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPosConfidenceEllipse ( PosConfidenceEllipse & position_confidence_ellipse,
const std::array< double, 4 > & covariance_matrix,
const double object_heading )
inline

Set the Pos Confidence Ellipse object.

Parameters
position_confidence_ellipse
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the object (x = longitudinal, y = lateral)
object_headingThe heading of the object in rad, with respect to WGS84

Definition at line 468 of file cam_ts_setters.h.

478 {
479
481
483
491inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
492 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
493}
494
504inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
505 // First ensure, that the object has the correct heading by setting its value
506 double orientation = object_heading * 180 / M_PI; // Convert to degrees
507 // Normalize to [0, 360)
508 orientation = std::fmod(orientation + 360, 360);
509 while (orientation < 0) {
510 orientation += 360;
511 }
512 while (orientation >= 360) {
513 orientation -= 360;
514 }
515 setHeading(cam, orientation);
516 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
517 covariance_matrix, object_heading);
518}
519
528inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
529 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
530 covariance_matrix);
531}
532
533
534} // namespace etsi_its_cam_ts_msgs::access

◆ setPositionConfidenceEllipse() [1/2]

template<typename PositionConfidenceEllipse, typename Wgs84AngleValue = decltype(PositionConfidenceEllipse::semi_major_axis_orientation)>
void etsi_its_cam_ts_msgs::access::setPositionConfidenceEllipse ( PositionConfidenceEllipse & position_confidence_ellipse,
const double semi_major_axis,
const double semi_minor_axis,
const double orientation )
inline

Set the Position Confidence Ellipse object.

Parameters
position_confidence_ellipseThe position confidence ellipse to set
semi_major_axisThe length of the semi-major axis in meters
semi_minor_axisThe length of the semi-minor axis in meters
orientationThe orientation of the semi-major axis in degrees, relative to WGS84

Definition at line 103 of file cam_ts_setters.h.

113 {
114
116
118
126inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
127 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
128}
129
139inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
140 // First ensure, that the object has the correct heading by setting its value
141 double orientation = object_heading * 180 / M_PI; // Convert to degrees
142 // Normalize to [0, 360)
143 orientation = std::fmod(orientation + 360, 360);
144 while (orientation < 0) {
145 orientation += 360;
146 }
147 while (orientation >= 360) {
148 orientation -= 360;
149 }
150 setHeading(cam, orientation);
151 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
152 covariance_matrix, object_heading);
153}
154
163inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
164 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
165 covariance_matrix);
166}
167
168
169} // namespace etsi_its_cam_ts_msgs::access

◆ setPositionConfidenceEllipse() [2/2]

template<typename PositionConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setPositionConfidenceEllipse ( PositionConfidenceEllipse & position_confidence_ellipse,
const std::array< double, 4 > & covariance_matrix,
const double object_heading )
inline

Set the Position Confidence Ellipse object.

Parameters
position_confidence_ellipse
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the object (x = longitudinal, y = lateral)
object_headingThe heading of the object in rad, with respect to WGS84

Definition at line 120 of file cam_ts_setters.h.

130 {
131
133
135
143inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
144 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
145}
146
156inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
157 // First ensure, that the object has the correct heading by setting its value
158 double orientation = object_heading * 180 / M_PI; // Convert to degrees
159 // Normalize to [0, 360)
160 orientation = std::fmod(orientation + 360, 360);
161 while (orientation < 0) {
162 orientation += 360;
163 }
164 while (orientation >= 360) {
165 orientation -= 360;
166 }
167 setHeading(cam, orientation);
168 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
169 covariance_matrix, object_heading);
170}
171
180inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
181 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
182 covariance_matrix);
183}
184
185
186} // namespace etsi_its_cam_ts_msgs::access

◆ setReferencePosition() [1/2]

void etsi_its_cam_ts_msgs::access::setReferencePosition ( CAM & cam,
const double latitude,
const double longitude,
const double altitude = AltitudeValue::UNAVAILABLE )
inline

Set the ReferencePosition for a CAM.

This function sets the latitude, longitude, and altitude of the CAMs reference position. If the altitude is not provided, it is set to AltitudeValue::UNAVAILABLE.

Parameters
camCAM to set the ReferencePosition
latitudeThe latitude value position in degree as decimal number.
longitudeThe longitude value in degree as decimal number.
altitudeThe altitude value (above the reference ellipsoid surface) in meter as decimal number (optional).

Definition at line 188 of file cam_ts_setters.h.

198 {
199
201
203
211inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
212 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
213}
214
224inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
225 // First ensure, that the object has the correct heading by setting its value
226 double orientation = object_heading * 180 / M_PI; // Convert to degrees
227 // Normalize to [0, 360)
228 orientation = std::fmod(orientation + 360, 360);
229 while (orientation < 0) {
230 orientation += 360;
231 }
232 while (orientation >= 360) {
233 orientation -= 360;
234 }
235 setHeading(cam, orientation);
236 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
237 covariance_matrix, object_heading);
238}
239
248inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
249 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
250 covariance_matrix);
251}
252
253
254} // namespace etsi_its_cam_ts_msgs::access

◆ setReferencePosition() [2/2]

template<typename T>
void etsi_its_cam_ts_msgs::access::setReferencePosition ( T & ref_position,
const double latitude,
const double longitude,
const double altitude = AltitudeValue::UNAVAILABLE )
inline

Sets the reference position in the given ReferencePostion object.

This function sets the latitude, longitude, and altitude of the reference position. If the altitude is not provided, it is set to AltitudeValue::UNAVAILABLE.

Parameters
ref_positionReferencePostion or ReferencePositionWithConfidence object to set the reference position in.
latitudeThe latitude value position in degree as decimal number.
longitudeThe longitude value in degree as decimal number.
altitudeThe altitude value (above the reference ellipsoid surface) in meter as decimal number (optional).

Definition at line 232 of file cam_ts_setters.h.

242 {
243
245
247
255inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
256 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
257}
258
268inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
269 // First ensure, that the object has the correct heading by setting its value
270 double orientation = object_heading * 180 / M_PI; // Convert to degrees
271 // Normalize to [0, 360)
272 orientation = std::fmod(orientation + 360, 360);
273 while (orientation < 0) {
274 orientation += 360;
275 }
276 while (orientation >= 360) {
277 orientation -= 360;
278 }
279 setHeading(cam, orientation);
280 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
281 covariance_matrix, object_heading);
282}
283
292inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
293 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
294 covariance_matrix);
295}
296
297
298} // namespace etsi_its_cam_ts_msgs::access

◆ setRefPosConfidence()

void etsi_its_cam_ts_msgs::access::setRefPosConfidence ( CAM & cam,
const std::array< double, 4 > & covariance_matrix,
const double object_heading )
inline

Set the confidence of the reference position.

Parameters
camCAM-Message to set the confidence
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the object (x = longitudinal, y = lateral)
object_headingheading of the object in rad, with respect to WGS84

Definition at line 37 of file cam_ts_setters.h.

37 {
38 // First ensure, that the object has the correct heading by setting its value
39 double orientation = object_heading * 180 / M_PI; // Convert to degrees
40 // Normalize to [0, 360)
41 orientation = std::fmod(orientation + 360, 360);
42 while (orientation < 0) {
43 orientation += 360;
44 }
45 while (orientation >= 360) {
46 orientation -= 360;
47 }
48 setHeading(cam, orientation);
49 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
50 covariance_matrix, object_heading);
51}

◆ setSemiAxis()

template<typename SemiAxisLength>
void etsi_its_cam_ts_msgs::access::setSemiAxis ( SemiAxisLength & semi_axis_length,
const double length )
inline

Set the Semi Axis length.

// See https://godbolt.org/z/Eceavfo99 on how the OneCentimeterHelper works with this template

Parameters
semi_axis_lengthThe SemiAxisLength to set
lengththe desired length in meters

Definition at line 376 of file cam_ts_setters.h.

386 {
387
389
391
399inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
400 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
401}
402
412inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
413 // First ensure, that the object has the correct heading by setting its value
414 double orientation = object_heading * 180 / M_PI; // Convert to degrees
415 // Normalize to [0, 360)
416 orientation = std::fmod(orientation + 360, 360);
417 while (orientation < 0) {
418 orientation += 360;
419 }
420 while (orientation >= 360) {
421 orientation -= 360;
422 }
423 setHeading(cam, orientation);
424 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
425 covariance_matrix, object_heading);
426}
427
436inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
437 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
438 covariance_matrix);
439}
440
441
442} // namespace etsi_its_cam_ts_msgs::access

◆ setSpecialTransportType()

void etsi_its_cam_ts_msgs::access::setSpecialTransportType ( SpecialTransportType & special_transport_type,
const std::vector< bool > & bits )
inline

Set the Special Transport Type by a vector of bools.

Parameters
special_transport_type
bits

Definition at line 270 of file cam_ts_setters.h.

280 {
281
283
285
293inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
294 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
295}
296
306inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
307 // First ensure, that the object has the correct heading by setting its value
308 double orientation = object_heading * 180 / M_PI; // Convert to degrees
309 // Normalize to [0, 360)
310 orientation = std::fmod(orientation + 360, 360);
311 while (orientation < 0) {
312 orientation += 360;
313 }
314 while (orientation >= 360) {
315 orientation -= 360;
316 }
317 setHeading(cam, orientation);
318 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
319 covariance_matrix, object_heading);
320}
321
330inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
331 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
332 covariance_matrix);
333}
334
335
336} // namespace etsi_its_cam_ts_msgs::access

◆ setSpeed() [1/2]

void etsi_its_cam_ts_msgs::access::setSpeed ( CAM & cam,
const double speed_val,
const double confidence = SpeedConfidence::UNAVAILABLE )
inline

Set the vehicle speed.

Parameters
camCAM to set the speed value
speed_valspeed value to set in m/s as decimal number

Definition at line 143 of file cam_ts_setters.h.

153 {
154
156
158
166inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
167 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
168}
169
179inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
180 // First ensure, that the object has the correct heading by setting its value
181 double orientation = object_heading * 180 / M_PI; // Convert to degrees
182 // Normalize to [0, 360)
183 orientation = std::fmod(orientation + 360, 360);
184 while (orientation < 0) {
185 orientation += 360;
186 }
187 while (orientation >= 360) {
188 orientation -= 360;
189 }
190 setHeading(cam, orientation);
191 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
192 covariance_matrix, object_heading);
193}
194
203inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
204 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
205 covariance_matrix);
206}
207
208
209} // namespace etsi_its_cam_ts_msgs::access

◆ setSpeed() [2/2]

void etsi_its_cam_ts_msgs::access::setSpeed ( Speed & speed,
const double value,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the Speed object.

SpeedConfidence is set to UNAVAILABLE

Parameters
speedobject to set
valueSpeed in in m/s as decimal number
confidencestandard deviation in m/s as decimal number (Optional. Default is std::numeric_limits<double>::infinity(), mapping to SpeedConfidence::UNAVAILABLE)

Definition at line 152 of file cam_ts_setters.h.

162 {
163
165
167
175inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
176 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
177}
178
188inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
189 // First ensure, that the object has the correct heading by setting its value
190 double orientation = object_heading * 180 / M_PI; // Convert to degrees
191 // Normalize to [0, 360)
192 orientation = std::fmod(orientation + 360, 360);
193 while (orientation < 0) {
194 orientation += 360;
195 }
196 while (orientation >= 360) {
197 orientation -= 360;
198 }
199 setHeading(cam, orientation);
200 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
201 covariance_matrix, object_heading);
202}
203
212inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
213 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
214 covariance_matrix);
215}
216
217
218} // namespace etsi_its_cam_ts_msgs::access

◆ setSpeedConfidence()

void etsi_its_cam_ts_msgs::access::setSpeedConfidence ( SpeedConfidence & speed_confidence,
const double value )
inline

Set the Speed Confidence object.

Parameters
speed_confidenceobject to set
valuestandard deviation in m/s as decimal number

Definition at line 133 of file cam_ts_setters.h.

143 {
144
146
148
156inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
157 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
158}
159
169inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
170 // First ensure, that the object has the correct heading by setting its value
171 double orientation = object_heading * 180 / M_PI; // Convert to degrees
172 // Normalize to [0, 360)
173 orientation = std::fmod(orientation + 360, 360);
174 while (orientation < 0) {
175 orientation += 360;
176 }
177 while (orientation >= 360) {
178 orientation -= 360;
179 }
180 setHeading(cam, orientation);
181 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
182 covariance_matrix, object_heading);
183}
184
193inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
194 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
195 covariance_matrix);
196}
197
198
199} // namespace etsi_its_cam_ts_msgs::access

◆ setSpeedValue()

void etsi_its_cam_ts_msgs::access::setSpeedValue ( SpeedValue & speed,
const double value )
inline

Set the SpeedValue object.

Parameters
speedobject to set
valueSpeedValue in m/s as decimal number

Definition at line 121 of file cam_ts_setters.h.

131 {
132
134
136
144inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
145 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
146}
147
157inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
158 // First ensure, that the object has the correct heading by setting its value
159 double orientation = object_heading * 180 / M_PI; // Convert to degrees
160 // Normalize to [0, 360)
161 orientation = std::fmod(orientation + 360, 360);
162 while (orientation < 0) {
163 orientation += 360;
164 }
165 while (orientation >= 360) {
166 orientation -= 360;
167 }
168 setHeading(cam, orientation);
169 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
170 covariance_matrix, object_heading);
171}
172
181inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
182 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
183 covariance_matrix);
184}
185
186
187} // namespace etsi_its_cam_ts_msgs::access

◆ setStationId()

template<typename StationId>
void etsi_its_cam_ts_msgs::access::setStationId ( StationId & station_id,
const uint32_t id_value )
inline

Set the Station Id object.

Parameters
station_id
id_value

Definition at line 28 of file cam_ts_setters.h.

◆ setStationType() [1/2]

void etsi_its_cam_ts_msgs::access::setStationType ( CAM & cam,
const uint8_t value )
inline

Set the StationType for a CAM.

Parameters
camCAM-Message to set the station_type value
valuestation_type value to set

Definition at line 52 of file cam_ts_setters.h.

◆ setStationType() [2/2]

template<typename StationType>
void etsi_its_cam_ts_msgs::access::setStationType ( StationType & station_type,
const uint8_t value )
inline

Set the Station Type.

Parameters
station_type
value

Definition at line 40 of file cam_ts_setters.h.

42 {
43 orientation += 360;

◆ setTimestampITS()

void etsi_its_cam_ts_msgs::access::setTimestampITS ( TimestampIts & timestamp_its,
const uint64_t unix_nanosecs,
const uint16_t n_leap_seconds = etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.rbegin()->second )
inline

Set the TimestampITS object.

Parameters
[in]timestamp_itsTimestampITS object to set the timestamp
[in]unix_nanosecsUnix-Nanoseconds to set the timestamp for
[in]n_leap_secondsNumber of leap-seconds since 2004. (Defaults to the todays number of leap seconds since 2004.)
[in]epoch_offsetUnix-Timestamp in seconds for the 01.01.2004 at 00:00:00

Definition at line 53 of file cam_ts_setters.h.

◆ setVehicleDimensions()

void etsi_its_cam_ts_msgs::access::setVehicleDimensions ( CAM & cam,
const double vehicle_length,
const double vehicle_width )
inline

Set the vehicle dimensions.

Parameters
camCAM to set the vehicle dimensions
vehicle_lengthvehicle length in meter as decimal number
vehicle_widthvehicle width in meter as decimal number

Definition at line 129 of file cam_ts_setters.h.

139 {
140
142
144
152inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
153 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
154}
155
165inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
166 // First ensure, that the object has the correct heading by setting its value
167 double orientation = object_heading * 180 / M_PI; // Convert to degrees
168 // Normalize to [0, 360)
169 orientation = std::fmod(orientation + 360, 360);
170 while (orientation < 0) {
171 orientation += 360;
172 }
173 while (orientation >= 360) {
174 orientation -= 360;
175 }
176 setHeading(cam, orientation);
177 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
178 covariance_matrix, object_heading);
179}
180
189inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
190 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
191 covariance_matrix);
192}
193
194
195} // namespace etsi_its_cam_ts_msgs::access

◆ setVehicleLength()

void etsi_its_cam_ts_msgs::access::setVehicleLength ( VehicleLength & vehicle_length,
const double value )
inline

Set the VehicleLength object.

VehicleLengthConfidenceIndication is set to UNAVAILABLE

Parameters
vehicle_lengthobject to set
valueVehicleLengthValue in meter as decimal number

Definition at line 117 of file cam_ts_setters.h.

127 {
128
130
132
140inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
141 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
142}
143
153inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
154 // First ensure, that the object has the correct heading by setting its value
155 double orientation = object_heading * 180 / M_PI; // Convert to degrees
156 // Normalize to [0, 360)
157 orientation = std::fmod(orientation + 360, 360);
158 while (orientation < 0) {
159 orientation += 360;
160 }
161 while (orientation >= 360) {
162 orientation -= 360;
163 }
164 setHeading(cam, orientation);
165 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
166 covariance_matrix, object_heading);
167}
168
177inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
178 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
179 covariance_matrix);
180}
181
182
183} // namespace etsi_its_cam_ts_msgs::access

◆ setVehicleLengthValue()

void etsi_its_cam_ts_msgs::access::setVehicleLengthValue ( VehicleLengthValue & vehicle_length,
const double value )
inline

Set the VehicleLengthValue object.

Parameters
vehicle_lengthobject to set
valueVehicleLengthValue in meter as decimal number

Definition at line 103 of file cam_ts_setters.h.

113 {
114
116
118
126inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
127 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
128}
129
139inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
140 // First ensure, that the object has the correct heading by setting its value
141 double orientation = object_heading * 180 / M_PI; // Convert to degrees
142 // Normalize to [0, 360)
143 orientation = std::fmod(orientation + 360, 360);
144 while (orientation < 0) {
145 orientation += 360;
146 }
147 while (orientation >= 360) {
148 orientation -= 360;
149 }
150 setHeading(cam, orientation);
151 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
152 covariance_matrix, object_heading);
153}
154
163inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
164 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
165 covariance_matrix);
166}
167
168
169} // namespace etsi_its_cam_ts_msgs::access

◆ setVehicleWidth()

void etsi_its_cam_ts_msgs::access::setVehicleWidth ( VehicleWidth & vehicle_width,
const double value )
inline

Set the VehicleWidth object.

Parameters
vehicle_widthobject to set
valueVehicleWidth in meter as decimal number

Definition at line 91 of file cam_ts_setters.h.

101 {
102
104
106
114inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
115 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
116}
117
127inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
128 // First ensure, that the object has the correct heading by setting its value
129 double orientation = object_heading * 180 / M_PI; // Convert to degrees
130 // Normalize to [0, 360)
131 orientation = std::fmod(orientation + 360, 360);
132 while (orientation < 0) {
133 orientation += 360;
134 }
135 while (orientation >= 360) {
136 orientation -= 360;
137 }
138 setHeading(cam, orientation);
139 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
140 covariance_matrix, object_heading);
141}
142
151inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
152 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
153 covariance_matrix);
154}
155
156
157} // namespace etsi_its_cam_ts_msgs::access

◆ setWGSPosConfidenceEllipse()

template<typename PosConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setWGSPosConfidenceEllipse ( PosConfidenceEllipse & position_confidence_ellipse,
const std::array< double, 4 > & covariance_matrix )
inline

Set the Pos Confidence Ellipse object.

Parameters
position_confidence_ellipse
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the WGS axes (x = North, y = East)
object_headingThe heading of the object in rad, with respect to WGS84

Definition at line 483 of file cam_ts_setters.h.

493 {
494
496
498
506inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
507 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
508}
509
519inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
520 // First ensure, that the object has the correct heading by setting its value
521 double orientation = object_heading * 180 / M_PI; // Convert to degrees
522 // Normalize to [0, 360)
523 orientation = std::fmod(orientation + 360, 360);
524 while (orientation < 0) {
525 orientation += 360;
526 }
527 while (orientation >= 360) {
528 orientation -= 360;
529 }
530 setHeading(cam, orientation);
531 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
532 covariance_matrix, object_heading);
533}
534
543inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
544 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
545 covariance_matrix);
546}
547
548
549} // namespace etsi_its_cam_ts_msgs::access

◆ setWGSPositionConfidenceEllipse()

template<typename PositionConfidenceEllipse>
void etsi_its_cam_ts_msgs::access::setWGSPositionConfidenceEllipse ( PositionConfidenceEllipse & position_confidence_ellipse,
const std::array< double, 4 > & covariance_matrix )
inline

Set the Position Confidence Ellipse object.

Parameters
position_confidence_ellipse
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is aligned with the WGS axes (x = North, y = East)
object_headingThe heading of the object in rad, with respect to WGS84

Definition at line 135 of file cam_ts_setters.h.

145 {
146
148
150
158inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
159 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
160}
161
171inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
172 // First ensure, that the object has the correct heading by setting its value
173 double orientation = object_heading * 180 / M_PI; // Convert to degrees
174 // Normalize to [0, 360)
175 orientation = std::fmod(orientation + 360, 360);
176 while (orientation < 0) {
177 orientation += 360;
178 }
179 while (orientation >= 360) {
180 orientation -= 360;
181 }
182 setHeading(cam, orientation);
183 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
184 covariance_matrix, object_heading);
185}
186
195inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
196 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
197 covariance_matrix);
198}
199
200
201} // namespace etsi_its_cam_ts_msgs::access

◆ setWGSRefPosConfidence()

void etsi_its_cam_ts_msgs::access::setWGSRefPosConfidence ( CAM & cam,
const std::array< double, 4 > & covariance_matrix )
inline

Set the confidence of the reference position.

Parameters
camCAM-Message to set the confidence
covariance_matrixThe four values of the covariance matrix in the order: cov_xx, cov_xy, cov_yx, cov_yy The matrix has to be SPD, otherwise a std::invalid_argument exception is thrown. Its coordinate system is WGS84 (x = North, y = East)

Definition at line 61 of file cam_ts_setters.h.

61 {
62 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
63 covariance_matrix);
64}

◆ setYawRate()

void etsi_its_cam_ts_msgs::access::setYawRate ( CAM & cam,
const double yaw_rate_val,
const double confidence = std::numeric_limits<double>::infinity() )
inline

Set the Yaw Rate for a CAM.

Parameters
camCAM to set the YawRate
yaw_rate_valYaw rate value in degrees per second as decimal number
confidencestandard deviation of yaw rate in degrees per second as decimal number (default: infinity, mapping to YawRateConfidence::UNAVAILABLE)

Definition at line 79 of file cam_ts_setters.h.

89 {
90
92
94
102inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
103 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
104}
105
115inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
116 // First ensure, that the object has the correct heading by setting its value
117 double orientation = object_heading * 180 / M_PI; // Convert to degrees
118 // Normalize to [0, 360)
119 orientation = std::fmod(orientation + 360, 360);
120 while (orientation < 0) {
121 orientation += 360;
122 }
123 while (orientation >= 360) {
124 orientation -= 360;
125 }
126 setHeading(cam, orientation);
127 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
128 covariance_matrix, object_heading);
129}
130
139inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
140 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
141 covariance_matrix);
142}
143
144
145} // namespace etsi_its_cam_ts_msgs::access

◆ setYawRateCDD()

template<typename YawRate, typename YawRateValue = decltype(YawRate::yaw_rate_value), typename YawRateConfidence = decltype(YawRate::yaw_rate_confidence)>
void etsi_its_cam_ts_msgs::access::setYawRateCDD ( YawRate & yaw_rate,
const double value,
double confidence = std::numeric_limits<double>::infinity() )
inline

Set the Yaw Rate object.

Parameters
yaw_rateobject to set
valueYaw rate in degrees per second as decimal number
confidencestandard deviation of yaw rate in degrees per second as decimal number (default: infinity, mapping to YawRateConfidence::UNAVAILABLE)

Definition at line 330 of file cam_ts_setters.h.

340 {
341
343
345
353inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
354 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
355}
356
366inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
367 // First ensure, that the object has the correct heading by setting its value
368 double orientation = object_heading * 180 / M_PI; // Convert to degrees
369 // Normalize to [0, 360)
370 orientation = std::fmod(orientation + 360, 360);
371 while (orientation < 0) {
372 orientation += 360;
373 }
374 while (orientation >= 360) {
375 orientation -= 360;
376 }
377 setHeading(cam, orientation);
378 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
379 covariance_matrix, object_heading);
380}
381
390inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
391 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
392 covariance_matrix);
393}
394
395
396} // namespace etsi_its_cam_ts_msgs::access

◆ throwIfNotPresent()

void etsi_its_cam_ts_msgs::access::throwIfNotPresent ( const bool is_present,
const std::string val_desc )
inline

Throws an exception if the given value is not present.

Parameters
is_presentWhether the value is present.
val_descDescription of the value for the exception message.

Definition at line 35 of file cam_ts_access.h.

◆ throwIfOutOfRange()

template<typename T1, typename T2>
void etsi_its_cam_ts_msgs::access::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.

Template Parameters
T1
T2
Parameters
valThe value to check if it is in the range.
minThe minimum value of the range.
maxThe maximum value of the range.
val_descDescription of the value for the exception message.

Definition at line 24 of file cam_ts_access.h.