etsi_its_messages v3.0.0
 
Loading...
Searching...
No Matches
cam_getters_common.h
Go to the documentation of this file.
1/*
2=============================================================================
3MIT License
4
5Copyright (c) 2023-2024 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 Heading& heading) { return ((double)heading.heading_value.value) * 1e-1; }
108
117inline double getHeading(const CAM& cam) {
118 return getHeading(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading);
119}
120
127inline double getVehicleLength(const VehicleLength& vehicle_length) {
128 return ((double)vehicle_length.vehicle_length_value.value) * 1e-1;
129}
130
137inline double getVehicleLength(const CAM& cam) {
138 return getVehicleLength(
139 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length);
140}
141
148inline double getVehicleWidth(const VehicleWidth& vehicle_width) { return ((double)vehicle_width.value) * 1e-1; }
149
156inline double getVehicleWidth(const CAM& cam) {
157 return getVehicleWidth(
158 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width);
159}
160
167inline double getSpeed(const CAM& cam) {
168 return getSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed);
169}
170
177inline double getLongitudinalAcceleration(const CAM& cam) {
179 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration);
180}
181
188inline double getLateralAcceleration(const CAM& cam) {
189 if (cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
190 .lateral_acceleration_is_present) {
192 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration);
193 } else {
194 throw std::invalid_argument("LateralAcceleration is not present!");
195 }
196}
197
209inline gm::PointStamped getUTMPosition(const CAM& cam, int& zone, bool& northp) {
210 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
211}
212
222inline gm::PointStamped getUTMPosition(const CAM& cam) {
223 int zone;
224 bool northp;
225 return getUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, zone, northp);
226}
227
234inline std::vector<bool> getExteriorLights(const ExteriorLights& exterior_lights) {
235 return getBitString(exterior_lights.value, exterior_lights.bits_unused);
236}
237
244inline std::vector<bool> getExteriorLights(const CAM& cam) {
245 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
246 if (cam.cam.cam_parameters.low_frequency_container.choice ==
247 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
248 return getExteriorLights(
249 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights);
250 } else {
251 throw std::invalid_argument("LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
252 }
253 } else {
254 throw std::invalid_argument("LowFrequencyContainer is not present!");
255 }
256}
257
264inline std::vector<bool> getAccelerationControl(const AccelerationControl& acceleration_control) {
265 return getBitString(acceleration_control.value, acceleration_control.bits_unused);
266}
267
274inline std::vector<bool> getDrivingLaneStatus(const DrivingLaneStatus& driving_lane_status) {
275 return getBitString(driving_lane_status.value, driving_lane_status.bits_unused);
276}
277
284inline std::vector<bool> getSpecialTransportType(const SpecialTransportType& special_transport_type) {
285 return getBitString(special_transport_type.value, special_transport_type.bits_unused);
286}
287
294inline std::vector<bool> getLightBarSirenInUse(const LightBarSirenInUse& light_bar_siren_in_use) {
295 return getBitString(light_bar_siren_in_use.value, light_bar_siren_in_use.bits_unused);
296}
297
304inline std::vector<bool> getEmergencyPriority(const EmergencyPriority& emergency_priority) {
305 return getBitString(emergency_priority.value, emergency_priority.bits_unused);
306}
307
308#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.
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 getHeading(const Heading &heading)
Get the Heading value.
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 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.
std::vector< bool > getExteriorLights(const ExteriorLights &exterior_lights)
Get the Exterior Lights in form of bool vector.
std::vector< bool > getDrivingLaneStatus(const DrivingLaneStatus &driving_lane_status)
Get the Driving Lane Status in form of bool vector.
double getVehicleLength(const VehicleLength &vehicle_length)
Get the Vehicle Length.
GenerationDeltaTime getGenerationDeltaTime(const CAM &cam)
Get the GenerationDeltaTime.