11namespace etsi_its_cam_msgs::access {
22inline void setItsPduHeader(CAM &cam,
const uint32_t station_id,
const uint8_t protocol_version = 0) {
23 setItsPduHeader(cam.header, ItsPduHeader::MESSAGE_ID_CAM, station_id, protocol_version);
33 auto accel_val = std::round(value * 1e1);
34 if (accel_val >= LongitudinalAccelerationValue::MIN && accel_val <= LongitudinalAccelerationValue::MAX) {
35 accel.value =
static_cast<int16_t
>(accel_val);
36 }
else if (accel_val < LongitudinalAccelerationValue::MIN) {
37 accel.value = LongitudinalAccelerationValue::MIN;
38 }
else if (accel_val > LongitudinalAccelerationValue::MAX) {
39 accel.value = LongitudinalAccelerationValue::MAX - 1;
53inline void setLongitudinalAcceleration(LongitudinalAcceleration& accel,
const double value,
const double confidence = std::numeric_limits<double>::infinity()) {
65 int64_t accel_val = (int64_t)std::round(value * 1e1);
66 if (accel_val >= LateralAccelerationValue::MIN && accel_val <= LateralAccelerationValue::MAX) {
67 accel.value = accel_val;
68 }
else if (accel_val < LateralAccelerationValue::MIN) {
69 accel.value = LateralAccelerationValue::MIN;
70 }
else if (accel_val > LateralAccelerationValue::MAX) {
71 accel.value = LateralAccelerationValue::MAX - 1;
85inline void setLateralAcceleration(LateralAcceleration& accel,
const double value,
const double confidence = std::numeric_limits<double>::infinity()) {
101inline void setRefPosConfidence(CAM& cam,
const std::array<double, 4>& covariance_matrix,
const double object_heading) {
103 double orientation = object_heading * 180 / M_PI;
105 orientation = std::fmod(orientation + 360, 360);
106 while (orientation < 0) {
109 while (orientation >= 360) {
114 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 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 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).
void setHeading(CAM &cam, const double heading_val, const double confidence=std::numeric_limits< double >::infinity())
Set the Heading for a CAM.
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.
Setter functions for the ETSI ITS Common Data Dictionary (CDD) v1.3.1.