45 inline 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;
76 inline 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;
108 inline void setLateralAcceleration(LateralAcceleration& accel,
const double value,
const double confidence = std::numeric_limits<double>::infinity()) {
124 inline 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);