etsi_its_messages v3.3.0
 
Loading...
Searching...
No Matches
cam_getters_common.h
Go to the documentation of this file.
1/*
2=============================================================================
3MIT License
4
5Copyright (c) 2023-2025 Institute for Automotive Engineering (ika), RWTH Aachen University
6
7Permission is hereby granted, free of charge, to any person obtaining a copy
8of this software and associated documentation files (the "Software"), to deal
9in the Software without restriction, including without limitation the rights
10to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11copies of the Software, and to permit persons to whom the Software is
12furnished to do so, subject to the following conditions:
13
14The above copyright notice and this permission notice shall be included in all
15copies or substantial portions of the Software.
16
17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23SOFTWARE.
24=============================================================================
25*/
26
31
32#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
33#define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
34
35#include <etsi_its_msgs_utils/impl/asn1_primitives/asn1_primitives_getters.h>
36
43inline uint32_t getStationID(const CAM& cam) { return getStationID(cam.header); }
44
51inline GenerationDeltaTime getGenerationDeltaTime(const CAM& cam) { return cam.cam.generation_delta_time; }
52
59inline uint16_t getGenerationDeltaTimeValue(const CAM& cam) { return getGenerationDeltaTime(cam).value; }
60
67inline uint8_t getStationType(const CAM& cam) { return cam.cam.cam_parameters.basic_container.station_type.value; }
68
75inline double getLatitude(const CAM& cam) {
76 return getLatitude(cam.cam.cam_parameters.basic_container.reference_position.latitude);
77}
78
85inline double getLongitude(const CAM& cam) {
86 return getLongitude(cam.cam.cam_parameters.basic_container.reference_position.longitude);
87}
88
95inline double getAltitude(const CAM& cam) {
96 return getAltitude(cam.cam.cam_parameters.basic_container.reference_position.altitude);
97}
98
107inline double getHeading(const CAM& cam) {
108 return getHeadingCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
109}
110
118inline double getHeadingConfidence(const CAM& cam) {
119 return getHeadingConfidenceCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
120}
121
128inline double getYawRate(const CAM& cam) {
129 return getYawRateCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.yaw_rate);
130}
131
138inline double getYawRateConfidence(const CAM& cam) {
139 return getYawRateConfidenceCDD(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.yaw_rate);
140}
141
148inline double getVehicleLength(const VehicleLength& vehicle_length) {
149 return ((double)vehicle_length.vehicle_length_value.value) * 1e-1;
150}
151
158inline double getVehicleLength(const CAM& cam) {
159 return getVehicleLength(
160 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length);
161}
162
169inline double getVehicleWidth(const VehicleWidth& vehicle_width) { return ((double)vehicle_width.value) * 1e-1; }
170
177inline double getVehicleWidth(const CAM& cam) {
178 return getVehicleWidth(
179 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width);
180}
181
188inline double getSpeed(const CAM& cam) {
189 return getSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
190}
191
198inline double getSpeedConfidence(const CAM& cam) {
199 return getSpeedConfidence(
200 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
201}
202
209inline double getLongitudinalAcceleration(const CAM& cam) {
211 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
212}
213
220inline double getLongitudinalAccelerationConfidence(const CAM& cam) {
222 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
223}
224
231inline double getLateralAcceleration(const CAM& cam) {
232 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
233 .lateral_acceleration_is_present) {
235 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
236 } else {
237 throw std::invalid_argument("LateralAcceleration is not present!");
238 }
239}
240
247inline double getLateralAccelerationConfidence(const CAM& cam) {
248 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
249 .lateral_acceleration_is_present) {
251 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
252 } else {
253 throw std::invalid_argument("LateralAccelerationConfidence is not present!");
254 }
255}
256
268inline gm::PointStamped getUTMPosition(const CAM& cam, int& zone, bool& northp) {
269 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
270}
271
281inline gm::PointStamped getUTMPosition(const CAM& cam) {
282 int zone;
283 bool northp;
284 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
285}
286
293inline std::vector<bool> getExteriorLights(const ExteriorLights& exterior_lights) {
294 return getBitString(exterior_lights.value, exterior_lights.bits_unused);
295}
296
303inline std::vector<bool> getExteriorLights(const CAM& cam) {
304 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
305 if (cam.cam.cam_parameters.low_frequency_container.choice ==
306 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
307 return getExteriorLights(
308 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights);
309 } else {
310 throw std::invalid_argument("LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
311 }
312 } else {
313 throw std::invalid_argument("LowFrequencyContainer is not present!");
314 }
315}
316
323inline std::vector<bool> getAccelerationControl(const AccelerationControl& acceleration_control) {
324 return getBitString(acceleration_control.value, acceleration_control.bits_unused);
325}
326
333inline std::vector<bool> getDrivingLaneStatus(const DrivingLaneStatus& driving_lane_status) {
334 return getBitString(driving_lane_status.value, driving_lane_status.bits_unused);
335}
336
343inline std::vector<bool> getSpecialTransportType(const SpecialTransportType& special_transport_type) {
344 return getBitString(special_transport_type.value, special_transport_type.bits_unused);
345}
346
353inline std::vector<bool> getLightBarSirenInUse(const LightBarSirenInUse& light_bar_siren_in_use) {
354 return getBitString(light_bar_siren_in_use.value, light_bar_siren_in_use.bits_unused);
355}
356
363inline std::vector<bool> getEmergencyPriority(const EmergencyPriority& emergency_priority) {
364 return getBitString(emergency_priority.value, emergency_priority.bits_unused);
365}
366
367#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.