34namespace etsi_its_cam_msgs::access {
45inline void setItsPduHeader(CAM &cam,
const uint32_t station_id,
const uint8_t protocol_version = 0) {
46 setItsPduHeader(cam.header, ItsPduHeader::MESSAGE_ID_CAM, station_id, protocol_version);
56 auto accel_val = std::round(value * 1e1);
57 if (accel_val >= LongitudinalAccelerationValue::MIN && accel_val <= LongitudinalAccelerationValue::MAX) {
58 accel.value =
static_cast<int16_t
>(accel_val);
59 }
else if (accel_val < LongitudinalAccelerationValue::MIN) {
60 accel.value = LongitudinalAccelerationValue::MIN;
61 }
else if (accel_val > LongitudinalAccelerationValue::MAX) {
62 accel.value = LongitudinalAccelerationValue::MAX - 1;
76inline void setLongitudinalAcceleration(LongitudinalAcceleration& accel,
const double value,
const double confidence = std::numeric_limits<double>::infinity()) {
88 int64_t accel_val = (int64_t)std::round(value * 1e1);
89 if (accel_val >= LateralAccelerationValue::MIN && accel_val <= LateralAccelerationValue::MAX) {
90 accel.value = accel_val;
91 }
else if (accel_val < LateralAccelerationValue::MIN) {
92 accel.value = LateralAccelerationValue::MIN;
93 }
else if (accel_val > LateralAccelerationValue::MAX) {
94 accel.value = LateralAccelerationValue::MAX - 1;
108inline void setLateralAcceleration(LateralAcceleration& accel,
const double value,
const double confidence = std::numeric_limits<double>::infinity()) {
124inline void setRefPosConfidence(CAM& cam,
const std::array<double, 4>& covariance_matrix,
const double object_heading) {
126 double orientation = object_heading * 180 / M_PI;
128 orientation = std::fmod(orientation + 360, 360);
129 while (orientation < 0) {
132 while (orientation >= 360) {
137 covariance_matrix, object_heading);
void setLateralAcceleration(LateralAcceleration &accel, const double value, const double confidence=std::numeric_limits< double >::infinity())
Set the LateralAcceleration object.
void setLongitudinalAccelerationValue(LongitudinalAccelerationValue &accel, const double value)
Set the LongitudinalAccelerationValue object.
void setPosConfidenceEllipse(PosConfidenceEllipse &position_confidence_ellipse, const double semi_major_axis, const double semi_minor_axis, const double orientation)
Set the Pos 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.
void setRefPosConfidence(CAM &cam, const std::array< double, 4 > &covariance_matrix, const double object_heading)
Set the confidence of the reference position.
void setLongitudinalAcceleration(LongitudinalAcceleration &accel, const double value, const double confidence=std::numeric_limits< double >::infinity())
Set the LongitudinalAcceleration object.
void setLateralAccelerationValue(LateralAccelerationValue &accel, const double value)
Set the LateralAccelerationValue object.
void setWGSPosConfidenceEllipse(PosConfidenceEllipse &position_confidence_ellipse, const std::array< double, 4 > &covariance_matrix)
Set the Pos Confidence Ellipse object.
void setAccelerationConfidence(AccelerationConfidence &accel_confidence, const double value)
Set the Acceleration Confidence object.
void setHeading(CAM &cam, const double heading_val, const double confidence=std::numeric_limits< double >::infinity())
Set the Heading for a CAM.
void setWGSRefPosConfidence(CAM &cam, const std::array< double, 4 > &covariance_matrix)
Set the confidence of the reference position.
Common setter functions for the ETSI ITS CAM (EN and TS)
Setter functions for the ETSI ITS Common Data Dictionary (CDD) v1.3.1.
void setLongitudinalAccelerationValue(AccelerationValue &accel, const double value)
Set the LongitudinalAccelerationValue object.