32 #ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H
33 #define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H
47 GenerationDeltaTime& generation_delta_time,
const uint64_t unix_nanosecs,
51 uint16_t gdt_value = t_its.value % 65536;
52 throwIfOutOfRange(gdt_value, GenerationDeltaTime::MIN, GenerationDeltaTime::MAX,
"GenerationDeltaTime");
53 generation_delta_time.value = gdt_value;
64 CAM& cam,
const uint64_t unix_nanosecs,
76 setStationType(cam.cam.cam_parameters.basic_container.station_type, value);
89 inline void setHeading(CAM& cam,
const double heading_val,
const double confidence = std::numeric_limits<double>::infinity()) {
90 setHeadingCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading,
91 heading_val, confidence);
101 int64_t width = (int64_t)std::round(value * 1e1);
102 throwIfOutOfRange(width, VehicleWidth::MIN, VehicleWidth::MAX,
"VehicleWidthValue");
103 vehicle_width.value = width;
113 int64_t
length = (int64_t)std::round(value * 1e1);
115 vehicle_length.value =
length;
127 vehicle_length.vehicle_length_confidence_indication.value = VehicleLengthConfidenceIndication::UNAVAILABLE;
140 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length,
142 setVehicleWidth(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width,
152 inline void setSpeed(CAM& cam,
const double speed_val,
const double confidence = SpeedConfidence::UNAVAILABLE) {
153 setSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed, speed_val, confidence);
166 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration,
167 lon_accel, confidence);
178 inline void setLateralAcceleration(CAM& cam,
const double lat_accel,
const double confidence = std::numeric_limits<double>::infinity()) {
180 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration,
181 lat_accel, confidence);
182 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
183 .lateral_acceleration_is_present =
true;
198 const double altitude = AltitudeValue::UNAVAILABLE) {
199 setReferencePosition(cam.cam.cam_parameters.basic_container.reference_position, latitude, longitude, altitude);
214 inline void setFromUTMPosition(CAM& cam,
const gm::PointStamped& utm_position,
const int& zone,
const bool& northp) {
215 setFromUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, utm_position, zone, northp);
235 if (ExteriorLights::SIZE_BITS != exterior_lights.size()) {
236 throw std::invalid_argument(
"Vector has wrong size. (" + std::to_string(exterior_lights.size()) +
237 " != " + std::to_string(ExteriorLights::SIZE_BITS) +
")");
239 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
240 if (cam.cam.cam_parameters.low_frequency_container.choice ==
241 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
243 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights,
246 throw std::invalid_argument(
"LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
249 throw std::invalid_argument(
"LowFrequencyContainer is not present!");
303 #endif // ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H