etsi_its_messages v3.5.0
Loading...
Searching...
No Matches
cam_getters_common.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
3
8
9#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
10#define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
11
12#include <etsi_its_msgs_utils/impl/asn1_primitives/asn1_primitives_getters.h>
13
20inline uint32_t getStationID(const CAM& cam) { return getStationID(cam.header); }
21
28inline GenerationDeltaTime getGenerationDeltaTime(const CAM& cam) { return cam.cam.generation_delta_time; }
29
36inline uint16_t getGenerationDeltaTimeValue(const CAM& cam) { return getGenerationDeltaTime(cam).value; }
37
44inline uint8_t getStationType(const CAM& cam) { return cam.cam.cam_parameters.basic_container.station_type.value; }
45
52inline double getLatitude(const CAM& cam) {
53 return getLatitude(cam.cam.cam_parameters.basic_container.reference_position.latitude);
54}
55
62inline double getLongitude(const CAM& cam) {
63 return getLongitude(cam.cam.cam_parameters.basic_container.reference_position.longitude);
64}
65
72inline double getAltitude(const CAM& cam) {
73 return getAltitude(cam.cam.cam_parameters.basic_container.reference_position.altitude);
74}
75
84inline double getHeading(const CAM& cam) {
85 return getHeadingCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
86}
87
95inline double getHeadingConfidence(const CAM& cam) {
96 return getHeadingConfidenceCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
97}
98
105inline double getYawRate(const CAM& cam) {
106 return getYawRateCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.yaw_rate);
107}
108
115inline double getYawRateConfidence(const CAM& cam) {
116 return getYawRateConfidenceCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.yaw_rate);
117}
118
125inline double getVehicleLength(const VehicleLength& vehicle_length) {
126 return ((double)vehicle_length.vehicle_length_value.value) * 1e-1;
127}
128
135inline double getVehicleLength(const CAM& cam) {
136 return getVehicleLength(
137 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length);
138}
139
146inline double getVehicleWidth(const VehicleWidth& vehicle_width) { return ((double)vehicle_width.value) * 1e-1; }
147
154inline double getVehicleWidth(const CAM& cam) {
155 return getVehicleWidth(
156 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width);
157}
158
165inline double getSpeed(const CAM& cam) {
166 return getSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
167}
168
175inline double getSpeedConfidence(const CAM& cam) {
176 return getSpeedConfidence(
177 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
178}
179
186inline double getLongitudinalAcceleration(const CAM& cam) {
188 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
189}
190
197inline double getLongitudinalAccelerationConfidence(const CAM& cam) {
199 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
200}
201
208inline double getLateralAcceleration(const CAM& cam) {
209 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
210 .lateral_acceleration_is_present) {
212 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
213 } else {
214 throw std::invalid_argument("LateralAcceleration is not present!");
215 }
216}
217
224inline double getLateralAccelerationConfidence(const CAM& cam) {
225 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
226 .lateral_acceleration_is_present) {
228 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
229 } else {
230 throw std::invalid_argument("LateralAccelerationConfidence is not present!");
231 }
232}
233
245inline gm::PointStamped getUTMPosition(const CAM& cam, int& zone, bool& northp) {
246 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
247}
248
258inline gm::PointStamped getUTMPosition(const CAM& cam) {
259 int zone;
260 bool northp;
261 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
262}
263
270inline std::vector<bool> getExteriorLights(const ExteriorLights& exterior_lights) {
271 return getBitString(exterior_lights.value, exterior_lights.bits_unused);
272}
273
280inline std::vector<bool> getExteriorLights(const CAM& cam) {
281 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
282 if (cam.cam.cam_parameters.low_frequency_container.choice ==
283 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
284 return getExteriorLights(
285 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights);
286 } else {
287 throw std::invalid_argument("LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
288 }
289 } else {
290 throw std::invalid_argument("LowFrequencyContainer is not present!");
291 }
292}
293
300inline std::vector<bool> getAccelerationControl(const AccelerationControl& acceleration_control) {
301 return getBitString(acceleration_control.value, acceleration_control.bits_unused);
302}
303
310inline std::vector<bool> getDrivingLaneStatus(const DrivingLaneStatus& driving_lane_status) {
311 return getBitString(driving_lane_status.value, driving_lane_status.bits_unused);
312}
313
320inline std::vector<bool> getSpecialTransportType(const SpecialTransportType& special_transport_type) {
321 return getBitString(special_transport_type.value, special_transport_type.bits_unused);
322}
323
330inline std::vector<bool> getLightBarSirenInUse(const LightBarSirenInUse& light_bar_siren_in_use) {
331 return getBitString(light_bar_siren_in_use.value, light_bar_siren_in_use.bits_unused);
332}
333
340inline std::vector<bool> getEmergencyPriority(const EmergencyPriority& emergency_priority) {
341 return getBitString(emergency_priority.value, emergency_priority.bits_unused);
342}
343
344#endif // ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
double getLongitude(const CAM &cam)
Get the Longitude value of CAM.
std::vector< bool > getAccelerationControl(const AccelerationControl &acceleration_control)
Get Acceleration Control in form of bool vector.
std::vector< bool > getSpecialTransportType(const SpecialTransportType &special_transport_type)
Get the Special Transport Type in form of bool vector.
double getVehicleWidth(const VehicleWidth &vehicle_width)
Get the Vehicle Width.
double getHeadingConfidence(const CAM &cam)
Get the Heading confidence of CAM.
std::vector< bool > getLightBarSirenInUse(const LightBarSirenInUse &light_bar_siren_in_use)
Get the Lightbar Siren In Use in form of bool vector.
gm::PointStamped getUTMPosition(const CAM &cam, int &zone, bool &northp)
Get the UTM Position defined within the BasicContainer of the CAM.
uint8_t getStationType(const CAM &cam)
Get the stationType object.
double getLateralAccelerationConfidence(const CAM &cam)
Get the Lateral Acceleration Confidence.
double getLongitudinalAcceleration(const CAM &cam)
Get the longitudinal acceleration.
uint32_t getStationID(const CAM &cam)
Get the Station ID object.
std::vector< bool > getEmergencyPriority(const EmergencyPriority &emergency_priority)
Get the Vehicle Role in form of bool vector.
double getLongitudinalAccelerationConfidence(const CAM &cam)
Get the Longitudinal Acceleration Confidence.
double getLateralAcceleration(const CAM &cam)
Get the lateral acceleration.
double getLatitude(const CAM &cam)
Get the Latitude value of CAM.
uint16_t getGenerationDeltaTimeValue(const CAM &cam)
Get the GenerationDeltaTime-Value.
double getSpeed(const CAM &cam)
Get the vehicle speed.
double getAltitude(const CAM &cam)
Get the Altitude value of CAM.
double getYawRateConfidence(const CAM &cam)
Get the Yaw Rate Confidence of CAM.
std::vector< bool > getExteriorLights(const ExteriorLights &exterior_lights)
Get the Exterior Lights in form of bool vector.
double getHeading(const CAM &cam)
Get the Heading value of CAM.
std::vector< bool > getDrivingLaneStatus(const DrivingLaneStatus &driving_lane_status)
Get the Driving Lane Status in form of bool vector.
double getSpeedConfidence(const CAM &cam)
Get the Speed Confidence.
double getVehicleLength(const VehicleLength &vehicle_length)
Get the Vehicle Length.
GenerationDeltaTime getGenerationDeltaTime(const CAM &cam)
Get the GenerationDeltaTime.
double getYawRate(const CAM &cam)
Get the Yaw Rate of CAM.
double getHeadingCDD(const Heading &heading)
Get the Heading value.
double getHeadingConfidenceCDD(const Heading &heading)
Get the Heading value.
double getYawRateConfidenceCDD(const YawRate &yaw_rate)
Get the Yaw Rate Confidence.
double getYawRateCDD(const YawRate &yaw_rate)
Get the Yaw Rate value.