32 #ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
33 #define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
67 inline uint8_t
getStationType(
const CAM& cam) {
return cam.cam.cam_parameters.basic_container.station_type.value; }
76 return getLatitude(cam.cam.cam_parameters.basic_container.reference_position.latitude);
86 return getLongitude(cam.cam.cam_parameters.basic_container.reference_position.longitude);
96 return getAltitude(cam.cam.cam_parameters.basic_container.reference_position.altitude);
108 return getHeadingCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
119 return getHeadingConfidenceCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
129 return ((
double)vehicle_length.vehicle_length_value.value) * 1e-1;
140 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length);
149 inline double getVehicleWidth(
const VehicleWidth& vehicle_width) {
return ((
double)vehicle_width.value) * 1e-1; }
159 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width);
169 return getSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
180 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
191 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
202 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
212 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
213 .lateral_acceleration_is_present) {
215 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
217 throw std::invalid_argument(
"LateralAcceleration is not present!");
228 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
229 .lateral_acceleration_is_present) {
231 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
233 throw std::invalid_argument(
"LateralAccelerationConfidence is not present!");
248 inline gm::PointStamped
getUTMPosition(
const CAM& cam,
int& zone,
bool& northp) {
249 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
264 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
274 return getBitString(exterior_lights.value, exterior_lights.bits_unused);
284 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
285 if (cam.cam.cam_parameters.low_frequency_container.choice ==
286 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
288 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights);
290 throw std::invalid_argument(
"LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
293 throw std::invalid_argument(
"LowFrequencyContainer is not present!");
304 return getBitString(acceleration_control.value, acceleration_control.bits_unused);
314 return getBitString(driving_lane_status.value, driving_lane_status.bits_unused);
324 return getBitString(special_transport_type.value, special_transport_type.bits_unused);
334 return getBitString(light_bar_siren_in_use.value, light_bar_siren_in_use.bits_unused);
344 return getBitString(emergency_priority.value, emergency_priority.bits_unused);
347 #endif // ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H