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 434 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 475 of file cam_ts_setters.h.

508 {
509
511
513
521inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
522 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
523}
524
534inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
535 // First ensure, that the object has the correct heading by setting its value
536 double orientation = object_heading * 180 / M_PI; // Convert to degrees
537 // Normalize to [0, 360)
538 orientation = std::fmod(orientation + 360, 360);
539 while (orientation < 0) {
540 orientation += 360;
541 }
542 while (orientation >= 360) {
543 orientation -= 360;
544 }
545 setHeading(cam, orientation);
546 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
547 covariance_matrix, object_heading);
548}
549
558inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
559 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
560 covariance_matrix);
561}
562
563
564} // 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 61 of file cam_ts_access.h.

117 {
119}
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 233 of file cam_ts_setters.h.

266 {
267
269
271
279inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
280 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
281}
282
292inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
293 // First ensure, that the object has the correct heading by setting its value
294 double orientation = object_heading * 180 / M_PI; // Convert to degrees
295 // Normalize to [0, 360)
296 orientation = std::fmod(orientation + 360, 360);
297 while (orientation < 0) {
298 orientation += 360;
299 }
300 while (orientation >= 360) {
301 orientation -= 360;
302 }
303 setHeading(cam, orientation);
304 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
305 covariance_matrix, object_heading);
306}
307
316inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
317 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
318 covariance_matrix);
319}
320
321
322} // 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 273 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

◆ 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 220 of file cam_ts_setters.h.

253 {
254
256
258
266inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
267 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
268}
269
279inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
280 // First ensure, that the object has the correct heading by setting its value
281 double orientation = object_heading * 180 / M_PI; // Convert to degrees
282 // Normalize to [0, 360)
283 orientation = std::fmod(orientation + 360, 360);
284 while (orientation < 0) {
285 orientation += 360;
286 }
287 while (orientation >= 360) {
288 orientation -= 360;
289 }
290 setHeading(cam, orientation);
291 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
292 covariance_matrix, object_heading);
293}
294
303inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
304 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
305 covariance_matrix);
306}
307
308
309} // 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 200 of file cam_ts_setters.h.

233 {
234
236
238
246inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
247 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
248}
249
259inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
260 // First ensure, that the object has the correct heading by setting its value
261 double orientation = object_heading * 180 / M_PI; // Convert to degrees
262 // Normalize to [0, 360)
263 orientation = std::fmod(orientation + 360, 360);
264 while (orientation < 0) {
265 orientation += 360;
266 }
267 while (orientation >= 360) {
268 orientation -= 360;
269 }
270 setHeading(cam, orientation);
271 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
272 covariance_matrix, object_heading);
273}
274
283inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
284 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
285 covariance_matrix);
286}
287
288
289} // 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 187 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

◆ 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 133 of file cam_ts_setters.h.

166 {
167
169
171
179inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
180 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
181}
182
192inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
193 // First ensure, that the object has the correct heading by setting its value
194 double orientation = object_heading * 180 / M_PI; // Convert to degrees
195 // Normalize to [0, 360)
196 orientation = std::fmod(orientation + 360, 360);
197 while (orientation < 0) {
198 orientation += 360;
199 }
200 while (orientation >= 360) {
201 orientation -= 360;
202 }
203 setHeading(cam, orientation);
204 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
205 covariance_matrix, object_heading);
206}
207
216inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
217 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
218 covariance_matrix);
219}
220
221
222} // 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 114 of file cam_ts_setters.h.

147 {
148
150
152
160inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
161 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
162}
163
173inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
174 // First ensure, that the object has the correct heading by setting its value
175 double orientation = object_heading * 180 / M_PI; // Convert to degrees
176 // Normalize to [0, 360)
177 orientation = std::fmod(orientation + 360, 360);
178 while (orientation < 0) {
179 orientation += 360;
180 }
181 while (orientation >= 360) {
182 orientation -= 360;
183 }
184 setHeading(cam, orientation);
185 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
186 covariance_matrix, object_heading);
187}
188
197inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
198 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
199 covariance_matrix);
200}
201
202
203} // 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 44 of file cam_ts_setters.h.

47 {
48 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
49}
50
60inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
61 // First ensure, that the object has the correct heading by setting its value
62 double orientation = object_heading * 180 / M_PI; // Convert to degrees
63 // Normalize to [0, 360)
64 orientation = std::fmod(orientation + 360, 360);
65 while (orientation < 0) {
66 orientation += 360;
67 }
68 while (orientation >= 360) {
69 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 283 of file cam_ts_setters.h.

316 {
317
319
321
329inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
330 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
331}
332
342inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
343 // First ensure, that the object has the correct heading by setting its value
344 double orientation = object_heading * 180 / M_PI; // Convert to degrees
345 // Normalize to [0, 360)
346 orientation = std::fmod(orientation + 360, 360);
347 while (orientation < 0) {
348 orientation += 360;
349 }
350 while (orientation >= 360) {
351 orientation -= 360;
352 }
353 setHeading(cam, orientation);
354 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
355 covariance_matrix, object_heading);
356}
357
366inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
367 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
368 covariance_matrix);
369}
370
371
372} // 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 313 of file cam_ts_setters.h.

346 {
347
349
351
359inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
360 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
361}
362
372inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
373 // First ensure, that the object has the correct heading by setting its value
374 double orientation = object_heading * 180 / M_PI; // Convert to degrees
375 // Normalize to [0, 360)
376 orientation = std::fmod(orientation + 360, 360);
377 while (orientation < 0) {
378 orientation += 360;
379 }
380 while (orientation >= 360) {
381 orientation -= 360;
382 }
383 setHeading(cam, orientation);
384 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
385 covariance_matrix, object_heading);
386}
387
396inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
397 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
398 covariance_matrix);
399}
400
401
402} // 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 248 of file cam_ts_setters.h.

281 {
282
284
286
294inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
295 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
296}
297
307inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
308 // First ensure, that the object has the correct heading by setting its value
309 double orientation = object_heading * 180 / M_PI; // Convert to degrees
310 // Normalize to [0, 360)
311 orientation = std::fmod(orientation + 360, 360);
312 while (orientation < 0) {
313 orientation += 360;
314 }
315 while (orientation >= 360) {
316 orientation -= 360;
317 }
318 setHeading(cam, orientation);
319 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
320 covariance_matrix, object_heading);
321}
322
331inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
332 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
333 covariance_matrix);
334}
335
336
337} // 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 238 of file cam_ts_setters.h.

271 {
272
274
276
284inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
285 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
286}
287
297inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
298 // First ensure, that the object has the correct heading by setting its value
299 double orientation = object_heading * 180 / M_PI; // Convert to degrees
300 // Normalize to [0, 360)
301 orientation = std::fmod(orientation + 360, 360);
302 while (orientation < 0) {
303 orientation += 360;
304 }
305 while (orientation >= 360) {
306 orientation -= 360;
307 }
308 setHeading(cam, orientation);
309 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
310 covariance_matrix, object_heading);
311}
312
321inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
322 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
323 covariance_matrix);
324}
325
326
327} // 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 228 of file cam_ts_setters.h.

261 {
262
264
266
274inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
275 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
276}
277
287inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
288 // First ensure, that the object has the correct heading by setting its value
289 double orientation = object_heading * 180 / M_PI; // Convert to degrees
290 // Normalize to [0, 360)
291 orientation = std::fmod(orientation + 360, 360);
292 while (orientation < 0) {
293 orientation += 360;
294 }
295 while (orientation >= 360) {
296 orientation -= 360;
297 }
298 setHeading(cam, orientation);
299 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
300 covariance_matrix, object_heading);
301}
302
311inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
312 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
313 covariance_matrix);
314}
315
316
317} // 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 281 of file cam_ts_setters.h.

314 {
315
317
319
327inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
328 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
329}
330
340inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
341 // First ensure, that the object has the correct heading by setting its value
342 double orientation = object_heading * 180 / M_PI; // Convert to degrees
343 // Normalize to [0, 360)
344 orientation = std::fmod(orientation + 360, 360);
345 while (orientation < 0) {
346 orientation += 360;
347 }
348 while (orientation >= 360) {
349 orientation -= 360;
350 }
351 setHeading(cam, orientation);
352 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
353 covariance_matrix, object_heading);
354}
355
364inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
365 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
366 covariance_matrix);
367}
368
369
370} // 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 63 of file cam_ts_setters.h.

65 {
66 orientation += 360;
67 }

◆ 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 46 of file cam_ts_setters.h.

47 {
48 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
49}
50

◆ 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 89 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 340 of file cam_ts_setters.h.

386inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
387 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
388}
389
399inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
400 // First ensure, that the object has the correct heading by setting its value
401 double orientation = object_heading * 180 / M_PI; // Convert to degrees
402 // Normalize to [0, 360)
403 orientation = std::fmod(orientation + 360, 360);
404 while (orientation < 0) {
405 orientation += 360;
406 }
407 while (orientation >= 360) {
408 orientation -= 360;
409 }
410 setHeading(cam, orientation);
411 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
412 covariance_matrix, object_heading);
413}
414
423inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
424 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
425 covariance_matrix);
426}
427
428
429} // 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 319 of file cam_ts_setters.h.

352 {
353
355
357
365inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
366 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
367}
368
378inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
379 // First ensure, that the object has the correct heading by setting its value
380 double orientation = object_heading * 180 / M_PI; // Convert to degrees
381 // Normalize to [0, 360)
382 orientation = std::fmod(orientation + 360, 360);
383 while (orientation < 0) {
384 orientation += 360;
385 }
386 while (orientation >= 360) {
387 orientation -= 360;
388 }
389 setHeading(cam, orientation);
390 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
391 covariance_matrix, object_heading);
392}
393
402inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
403 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
404 covariance_matrix);
405}
406
407
408} // 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 306 of file cam_ts_setters.h.

339 {
340
342
344
352inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
353 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
354}
355
365inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
366 // First ensure, that the object has the correct heading by setting its value
367 double orientation = object_heading * 180 / M_PI; // Convert to degrees
368 // Normalize to [0, 360)
369 orientation = std::fmod(orientation + 360, 360);
370 while (orientation < 0) {
371 orientation += 360;
372 }
373 while (orientation >= 360) {
374 orientation -= 360;
375 }
376 setHeading(cam, orientation);
377 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
378 covariance_matrix, object_heading);
379}
380
389inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
390 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
391 covariance_matrix);
392}
393
394
395} // 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 47 of file cam_ts_setters.h.

47 {
48 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
49}

◆ 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 48 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 112 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

◆ 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 192 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

◆ 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 93 of file cam_ts_setters.h.

126 {
127
129
131
139inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
140 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
141}
142
152inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
153 // First ensure, that the object has the correct heading by setting its value
154 double orientation = object_heading * 180 / M_PI; // Convert to degrees
155 // Normalize to [0, 360)
156 orientation = std::fmod(orientation + 360, 360);
157 while (orientation < 0) {
158 orientation += 360;
159 }
160 while (orientation >= 360) {
161 orientation -= 360;
162 }
163 setHeading(cam, orientation);
164 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
165 covariance_matrix, object_heading);
166}
167
176inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
177 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
178 covariance_matrix);
179}
180
181
182} // 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 90 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 303 of file cam_ts_setters.h.

336 {
337
339
341
349inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
350 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
351}
352
362inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
363 // First ensure, that the object has the correct heading by setting its value
364 double orientation = object_heading * 180 / M_PI; // Convert to degrees
365 // Normalize to [0, 360)
366 orientation = std::fmod(orientation + 360, 360);
367 while (orientation < 0) {
368 orientation += 360;
369 }
370 while (orientation >= 360) {
371 orientation -= 360;
372 }
373 setHeading(cam, orientation);
374 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
375 covariance_matrix, object_heading);
376}
377
386inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
387 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
388 covariance_matrix);
389}
390
391
392} // 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 102 of file cam_ts_setters.h.

135 {
136
138
140
148inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
149 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
150}
151
161inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
162 // First ensure, that the object has the correct heading by setting its value
163 double orientation = object_heading * 180 / M_PI; // Convert to degrees
164 // Normalize to [0, 360)
165 orientation = std::fmod(orientation + 360, 360);
166 while (orientation < 0) {
167 orientation += 360;
168 }
169 while (orientation >= 360) {
170 orientation -= 360;
171 }
172 setHeading(cam, orientation);
173 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
174 covariance_matrix, object_heading);
175}
176
185inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
186 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
187 covariance_matrix);
188}
189
190
191} // 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 82 of file cam_ts_setters.h.

84 {
85 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 178 of file cam_ts_setters.h.

211 {
212
214
216
224inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
225 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
226}
227
237inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
238 // First ensure, that the object has the correct heading by setting its value
239 double orientation = object_heading * 180 / M_PI; // Convert to degrees
240 // Normalize to [0, 360)
241 orientation = std::fmod(orientation + 360, 360);
242 while (orientation < 0) {
243 orientation += 360;
244 }
245 while (orientation >= 360) {
246 orientation -= 360;
247 }
248 setHeading(cam, orientation);
249 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
250 covariance_matrix, object_heading);
251}
252
261inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
262 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
263 covariance_matrix);
264}
265
266
267} // 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 63 of file cam_ts_setters.h.

65 {
66 orientation += 360;
67 }
68 while (orientation >= 360) {
69 orientation -= 360;
70 }
71 setHeading(cam, orientation);
72 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 418 of file cam_ts_setters.h.

451 {
452
454
456
464inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
465 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
466}
467
477inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
478 // First ensure, that the object has the correct heading by setting its value
479 double orientation = object_heading * 180 / M_PI; // Convert to degrees
480 // Normalize to [0, 360)
481 orientation = std::fmod(orientation + 360, 360);
482 while (orientation < 0) {
483 orientation += 360;
484 }
485 while (orientation >= 360) {
486 orientation -= 360;
487 }
488 setHeading(cam, orientation);
489 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
490 covariance_matrix, object_heading);
491}
492
501inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
502 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
503 covariance_matrix);
504}
505
506
507} // 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 491 of file cam_ts_setters.h.

524 {
525
527
529
537inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
538 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
539}
540
550inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
551 // First ensure, that the object has the correct heading by setting its value
552 double orientation = object_heading * 180 / M_PI; // Convert to degrees
553 // Normalize to [0, 360)
554 orientation = std::fmod(orientation + 360, 360);
555 while (orientation < 0) {
556 orientation += 360;
557 }
558 while (orientation >= 360) {
559 orientation -= 360;
560 }
561 setHeading(cam, orientation);
562 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
563 covariance_matrix, object_heading);
564}
565
574inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
575 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
576 covariance_matrix);
577}
578
579
580} // 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 126 of file cam_ts_setters.h.

159 {
160
162
164
172inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
173 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
174}
175
185inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
186 // First ensure, that the object has the correct heading by setting its value
187 double orientation = object_heading * 180 / M_PI; // Convert to degrees
188 // Normalize to [0, 360)
189 orientation = std::fmod(orientation + 360, 360);
190 while (orientation < 0) {
191 orientation += 360;
192 }
193 while (orientation >= 360) {
194 orientation -= 360;
195 }
196 setHeading(cam, orientation);
197 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
198 covariance_matrix, object_heading);
199}
200
209inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
210 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
211 covariance_matrix);
212}
213
214
215} // 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 143 of file cam_ts_setters.h.

176 {
177
179
181
189inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
190 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
191}
192
202inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
203 // First ensure, that the object has the correct heading by setting its value
204 double orientation = object_heading * 180 / M_PI; // Convert to degrees
205 // Normalize to [0, 360)
206 orientation = std::fmod(orientation + 360, 360);
207 while (orientation < 0) {
208 orientation += 360;
209 }
210 while (orientation >= 360) {
211 orientation -= 360;
212 }
213 setHeading(cam, orientation);
214 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
215 covariance_matrix, object_heading);
216}
217
226inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
227 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
228 covariance_matrix);
229}
230
231
232} // 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 211 of file cam_ts_setters.h.

244 {
245
247
249
257inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
258 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
259}
260
270inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
271 // First ensure, that the object has the correct heading by setting its value
272 double orientation = object_heading * 180 / M_PI; // Convert to degrees
273 // Normalize to [0, 360)
274 orientation = std::fmod(orientation + 360, 360);
275 while (orientation < 0) {
276 orientation += 360;
277 }
278 while (orientation >= 360) {
279 orientation -= 360;
280 }
281 setHeading(cam, orientation);
282 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
283 covariance_matrix, object_heading);
284}
285
294inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
295 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
296 covariance_matrix);
297}
298
299
300} // 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 255 of file cam_ts_setters.h.

288 {
289
291
293
301inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
302 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
303}
304
314inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
315 // First ensure, that the object has the correct heading by setting its value
316 double orientation = object_heading * 180 / M_PI; // Convert to degrees
317 // Normalize to [0, 360)
318 orientation = std::fmod(orientation + 360, 360);
319 while (orientation < 0) {
320 orientation += 360;
321 }
322 while (orientation >= 360) {
323 orientation -= 360;
324 }
325 setHeading(cam, orientation);
326 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
327 covariance_matrix, object_heading);
328}
329
338inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
339 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
340 covariance_matrix);
341}
342
343
344} // 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 60 of file cam_ts_setters.h.

60 {
61 // First ensure, that the object has the correct heading by setting its value
62 double orientation = object_heading * 180 / M_PI; // Convert to degrees
63 // Normalize to [0, 360)
64 orientation = std::fmod(orientation + 360, 360);
65 while (orientation < 0) {
66 orientation += 360;
67 }
68 while (orientation >= 360) {
69 orientation -= 360;
70 }
71 setHeading(cam, orientation);
72 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
73 covariance_matrix, object_heading);
74}

◆ 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 399 of file cam_ts_setters.h.

432 {
433
435
437
445inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
446 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
447}
448
458inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
459 // First ensure, that the object has the correct heading by setting its value
460 double orientation = object_heading * 180 / M_PI; // Convert to degrees
461 // Normalize to [0, 360)
462 orientation = std::fmod(orientation + 360, 360);
463 while (orientation < 0) {
464 orientation += 360;
465 }
466 while (orientation >= 360) {
467 orientation -= 360;
468 }
469 setHeading(cam, orientation);
470 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
471 covariance_matrix, object_heading);
472}
473
482inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
483 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
484 covariance_matrix);
485}
486
487
488} // 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 293 of file cam_ts_setters.h.

326 {
327
329
331
339inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
340 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
341}
342
352inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
353 // First ensure, that the object has the correct heading by setting its value
354 double orientation = object_heading * 180 / M_PI; // Convert to degrees
355 // Normalize to [0, 360)
356 orientation = std::fmod(orientation + 360, 360);
357 while (orientation < 0) {
358 orientation += 360;
359 }
360 while (orientation >= 360) {
361 orientation -= 360;
362 }
363 setHeading(cam, orientation);
364 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
365 covariance_matrix, object_heading);
366}
367
376inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
377 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
378 covariance_matrix);
379}
380
381
382} // 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 166 of file cam_ts_setters.h.

199 {
200
202
204
212inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
213 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
214}
215
225inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
226 // First ensure, that the object has the correct heading by setting its value
227 double orientation = object_heading * 180 / M_PI; // Convert to degrees
228 // Normalize to [0, 360)
229 orientation = std::fmod(orientation + 360, 360);
230 while (orientation < 0) {
231 orientation += 360;
232 }
233 while (orientation >= 360) {
234 orientation -= 360;
235 }
236 setHeading(cam, orientation);
237 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
238 covariance_matrix, object_heading);
239}
240
249inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
250 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
251 covariance_matrix);
252}
253
254
255} // 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 175 of file cam_ts_setters.h.

208 {
209
211
213
221inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
222 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
223}
224
234inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
235 // First ensure, that the object has the correct heading by setting its value
236 double orientation = object_heading * 180 / M_PI; // Convert to degrees
237 // Normalize to [0, 360)
238 orientation = std::fmod(orientation + 360, 360);
239 while (orientation < 0) {
240 orientation += 360;
241 }
242 while (orientation >= 360) {
243 orientation -= 360;
244 }
245 setHeading(cam, orientation);
246 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
247 covariance_matrix, object_heading);
248}
249
258inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
259 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
260 covariance_matrix);
261}
262
263
264} // 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 156 of file cam_ts_setters.h.

189 {
190
192
194
202inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
203 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
204}
205
215inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
216 // First ensure, that the object has the correct heading by setting its value
217 double orientation = object_heading * 180 / M_PI; // Convert to degrees
218 // Normalize to [0, 360)
219 orientation = std::fmod(orientation + 360, 360);
220 while (orientation < 0) {
221 orientation += 360;
222 }
223 while (orientation >= 360) {
224 orientation -= 360;
225 }
226 setHeading(cam, orientation);
227 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
228 covariance_matrix, object_heading);
229}
230
239inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
240 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
241 covariance_matrix);
242}
243
244
245} // 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 144 of file cam_ts_setters.h.

177 {
178
180
182
190inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
191 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
192}
193
203inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
204 // First ensure, that the object has the correct heading by setting its value
205 double orientation = object_heading * 180 / M_PI; // Convert to degrees
206 // Normalize to [0, 360)
207 orientation = std::fmod(orientation + 360, 360);
208 while (orientation < 0) {
209 orientation += 360;
210 }
211 while (orientation >= 360) {
212 orientation -= 360;
213 }
214 setHeading(cam, orientation);
215 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
216 covariance_matrix, object_heading);
217}
218
227inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
228 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
229 covariance_matrix);
230}
231
232
233} // 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 51 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 75 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 63 of file cam_ts_setters.h.

65 {
66 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 76 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 152 of file cam_ts_setters.h.

185 {
186
188
190
198inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
199 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
200}
201
211inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
212 // First ensure, that the object has the correct heading by setting its value
213 double orientation = object_heading * 180 / M_PI; // Convert to degrees
214 // Normalize to [0, 360)
215 orientation = std::fmod(orientation + 360, 360);
216 while (orientation < 0) {
217 orientation += 360;
218 }
219 while (orientation >= 360) {
220 orientation -= 360;
221 }
222 setHeading(cam, orientation);
223 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
224 covariance_matrix, object_heading);
225}
226
235inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
236 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
237 covariance_matrix);
238}
239
240
241} // 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 140 of file cam_ts_setters.h.

173 {
174
176
178
186inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
187 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
188}
189
199inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
200 // First ensure, that the object has the correct heading by setting its value
201 double orientation = object_heading * 180 / M_PI; // Convert to degrees
202 // Normalize to [0, 360)
203 orientation = std::fmod(orientation + 360, 360);
204 while (orientation < 0) {
205 orientation += 360;
206 }
207 while (orientation >= 360) {
208 orientation -= 360;
209 }
210 setHeading(cam, orientation);
211 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
212 covariance_matrix, object_heading);
213}
214
223inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
224 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
225 covariance_matrix);
226}
227
228
229} // 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 126 of file cam_ts_setters.h.

159 {
160
162
164
172inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
173 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
174}
175
185inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
186 // First ensure, that the object has the correct heading by setting its value
187 double orientation = object_heading * 180 / M_PI; // Convert to degrees
188 // Normalize to [0, 360)
189 orientation = std::fmod(orientation + 360, 360);
190 while (orientation < 0) {
191 orientation += 360;
192 }
193 while (orientation >= 360) {
194 orientation -= 360;
195 }
196 setHeading(cam, orientation);
197 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
198 covariance_matrix, object_heading);
199}
200
209inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
210 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
211 covariance_matrix);
212}
213
214
215} // 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 114 of file cam_ts_setters.h.

147 {
148
150
152
160inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
161 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
162}
163
173inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
174 // First ensure, that the object has the correct heading by setting its value
175 double orientation = object_heading * 180 / M_PI; // Convert to degrees
176 // Normalize to [0, 360)
177 orientation = std::fmod(orientation + 360, 360);
178 while (orientation < 0) {
179 orientation += 360;
180 }
181 while (orientation >= 360) {
182 orientation -= 360;
183 }
184 setHeading(cam, orientation);
185 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
186 covariance_matrix, object_heading);
187}
188
197inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
198 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
199 covariance_matrix);
200}
201
202
203} // 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 506 of file cam_ts_setters.h.

539 {
540
542
544
552inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
553 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
554}
555
565inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
566 // First ensure, that the object has the correct heading by setting its value
567 double orientation = object_heading * 180 / M_PI; // Convert to degrees
568 // Normalize to [0, 360)
569 orientation = std::fmod(orientation + 360, 360);
570 while (orientation < 0) {
571 orientation += 360;
572 }
573 while (orientation >= 360) {
574 orientation -= 360;
575 }
576 setHeading(cam, orientation);
577 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
578 covariance_matrix, object_heading);
579}
580
589inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
590 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
591 covariance_matrix);
592}
593
594
595} // 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 158 of file cam_ts_setters.h.

191 {
192
194
196
204inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
205 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
206}
207
217inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
218 // First ensure, that the object has the correct heading by setting its value
219 double orientation = object_heading * 180 / M_PI; // Convert to degrees
220 // Normalize to [0, 360)
221 orientation = std::fmod(orientation + 360, 360);
222 while (orientation < 0) {
223 orientation += 360;
224 }
225 while (orientation >= 360) {
226 orientation -= 360;
227 }
228 setHeading(cam, orientation);
229 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
230 covariance_matrix, object_heading);
231}
232
241inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
242 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
243 covariance_matrix);
244}
245
246
247} // 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 84 of file cam_ts_setters.h.

84 {
85 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
86 covariance_matrix);
87}

◆ 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 102 of file cam_ts_setters.h.

135 {
136
138
140
148inline void setItsPduHeader(CAM& cam, const uint32_t station_id, const uint8_t protocol_version = 0) {
149 setItsPduHeader(cam.header, MessageId::CAM, station_id, protocol_version);
150}
151
161inline void setRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix, const double object_heading) {
162 // First ensure, that the object has the correct heading by setting its value
163 double orientation = object_heading * 180 / M_PI; // Convert to degrees
164 // Normalize to [0, 360)
165 orientation = std::fmod(orientation + 360, 360);
166 while (orientation < 0) {
167 orientation += 360;
168 }
169 while (orientation >= 360) {
170 orientation -= 360;
171 }
172 setHeading(cam, orientation);
173 setPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
174 covariance_matrix, object_heading);
175}
176
185inline void setWGSRefPosConfidence(CAM& cam, const std::array<double, 4>& covariance_matrix) {
186 setWGSPositionConfidenceEllipse(cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse,
187 covariance_matrix);
188}
189
190
191} // 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 353 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

◆ 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 58 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 47 of file cam_ts_access.h.