etsi_its_messages 1.0.0
Loading...
Searching...
No Matches
cam_setters_common.h File Reference

Common setter functions for the ETSI ITS CAM (EN and TS) More...

Go to the source code of this file.

Functions

void setGenerationDeltaTime (GenerationDeltaTime &generation_delta_time, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
 Set the GenerationDeltaTime-Value.
 
void setGenerationDeltaTime (CAM &cam, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
 Set the Generation Delta Time object.
 
void setStationType (CAM &cam, const uint8_t value)
 Set the StationType for a CAM.
 
void setHeadingValue (HeadingValue &heading, const double value)
 Set the HeadingValue object.
 
void setHeading (Heading &heading, const double value)
 Set the Heading object.
 
void setHeading (CAM &cam, const double heading_val)
 Set the Heading for a CAM.
 
void setVehicleWidth (VehicleWidth &vehicle_width, const double value)
 Set the VehicleWidth object.
 
void setVehicleLengthValue (VehicleLengthValue &vehicle_length, const double value)
 Set the VehicleLengthValue object.
 
void setVehicleLength (VehicleLength &vehicle_length, const double value)
 Set the VehicleLength object.
 
void setVehicleDimensions (CAM &cam, const double vehicle_length, const double vehicle_width)
 Set the vehicle dimensions.
 
void setSpeed (CAM &cam, const double speed_val)
 Set the vehicle speed.
 
void setLongitudinalAcceleration (CAM &cam, const double lon_accel)
 Set the longitudinal acceleration.
 
void setLateralAcceleration (CAM &cam, const double lat_accel)
 Set the lateral acceleration.
 
void setReferencePosition (CAM &cam, const double latitude, const double longitude, const double altitude=AltitudeValue::UNAVAILABLE)
 Set the ReferencePosition for a CAM.
 
void setFromUTMPosition (CAM &cam, const gm::PointStamped &utm_position, const int &zone, const bool &northp)
 Set the ReferencePosition of a CAM from a given UTM-Position.
 
void setExteriorLights (ExteriorLights &exterior_lights, const std::vector< bool > &bits)
 Set the Exterior Lights by a vector of bools.
 
void setExteriorLights (CAM &cam, const std::vector< bool > &exterior_lights)
 Set the Exterior Lights by using a vector of bools.
 
void setAccelerationControl (AccelerationControl &acceleration_control, const std::vector< bool > &bits)
 Set the Acceleration Control by a vector of bools.
 
void setDrivingLaneStatus (DrivingLaneStatus &driving_lane_status, const std::vector< bool > &bits)
 Set the Driving Lane Status by a vector of bools.
 
void setSpecialTransportType (SpecialTransportType &special_transport_type, const std::vector< bool > &bits)
 Set the Special Transport Type by a vector of bools.
 
void setLightBarSirenInUse (LightBarSirenInUse &light_bar_siren_in_use, const std::vector< bool > &bits)
 Set the Lightbar Siren In Use by a vector of bools.
 
void setEmergencyPriority (EmergencyPriority &emergency_priority, const std::vector< bool > &bits)
 Set the Emergency Priority by a vector of bools.
 

Detailed Description

Common setter functions for the ETSI ITS CAM (EN and TS)

Definition in file cam_setters_common.h.

Function Documentation

◆ setAccelerationControl()

void setAccelerationControl ( AccelerationControl & acceleration_control,
const std::vector< bool > & bits )
inline

Set the Acceleration Control by a vector of bools.

Parameters
acceleration_control
bits

Definition at line 280 of file cam_setters_common.h.

280 {
281 setBitString(acceleration_control, bits);
282}
void setBitString(T &bitstring, const std::vector< bool > &bits)
Set a Bit String by a vector of bools.

◆ setDrivingLaneStatus()

void setDrivingLaneStatus ( DrivingLaneStatus & driving_lane_status,
const std::vector< bool > & bits )
inline

Set the Driving Lane Status by a vector of bools.

Parameters
driving_lane_status
bits

Definition at line 290 of file cam_setters_common.h.

290 {
291 setBitString(driving_lane_status, bits);
292}

◆ setEmergencyPriority()

void setEmergencyPriority ( EmergencyPriority & emergency_priority,
const std::vector< bool > & bits )
inline

Set the Emergency Priority by a vector of bools.

Parameters
emergency_priority
bits

Definition at line 320 of file cam_setters_common.h.

320 {
321 setBitString(emergency_priority, bits);
322}

◆ setExteriorLights() [1/2]

void setExteriorLights ( CAM & cam,
const std::vector< bool > & exterior_lights )
inline

Set the Exterior Lights by using a vector of bools.

Parameters
camCAM to set the exterior lights
exterior_lightsvector of bools to set the exterior lights

Definition at line 255 of file cam_setters_common.h.

255 {
256 if (ExteriorLights::SIZE_BITS != exterior_lights.size()) {
257 throw std::invalid_argument("Vector has wrong size. (" + std::to_string(exterior_lights.size()) +
258 " != " + std::to_string(ExteriorLights::SIZE_BITS) + ")");
259 }
260 if (cam.cam.cam_parameters.low_frequency_container_is_present) {
261 if (cam.cam.cam_parameters.low_frequency_container.choice ==
262 LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY) {
264 cam.cam.cam_parameters.low_frequency_container.basic_vehicle_container_low_frequency.exterior_lights,
265 exterior_lights);
266 } else {
267 throw std::invalid_argument("LowFrequencyContainer is not BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY!");
268 }
269 } else {
270 throw std::invalid_argument("LowFrequencyContainer is not present!");
271 }
272}
void setExteriorLights(ExteriorLights &exterior_lights, const std::vector< bool > &bits)
Set the Exterior Lights by a vector of bools.

◆ setExteriorLights() [2/2]

void setExteriorLights ( ExteriorLights & exterior_lights,
const std::vector< bool > & bits )
inline

Set the Exterior Lights by a vector of bools.

Parameters
exterior_lights
bits

Definition at line 245 of file cam_setters_common.h.

245 {
246 setBitString(exterior_lights, bits);
247}

◆ setFromUTMPosition()

void setFromUTMPosition ( CAM & cam,
const gm::PointStamped & utm_position,
const int & zone,
const bool & northp )
inline

Set the ReferencePosition of a CAM from a given UTM-Position.

The position is transformed to latitude and longitude by using GeographicLib::UTMUPS The z-Coordinate is directly used as altitude value The frame_id of the given utm_position must be set to 'utm_<zone><N/S>'

Parameters
[out]camCAM for which to set the ReferencePosition
[in]utm_positiongeometry_msgs::PointStamped describing the given utm position
[in]zonethe UTM zone (zero means UPS) of the given position
[in]northphemisphere (true means north, false means south)

Definition at line 235 of file cam_setters_common.h.

235 {
236 setFromUTMPosition(cam.cam.cam_parameters.basic_container.reference_position, utm_position, zone, northp);
237}
void setFromUTMPosition(CAM &cam, const gm::PointStamped &utm_position, const int &zone, const bool &northp)
Set the ReferencePosition of a CAM from a given UTM-Position.

◆ setGenerationDeltaTime() [1/2]

void setGenerationDeltaTime ( CAM & cam,
const uint64_t unix_nanosecs,
const uint16_t n_leap_seconds = etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end()->second )
inline

Set the Generation Delta Time object.

Parameters
camCAM to set the GenerationDeltaTime-Value for
unix_nanosecsTimestamp in unix-nanoseconds to set the GenerationDeltaTime-Value from
n_leap_secondsNumber of leap seconds since 2004 for the given timestamp (Default: etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end()->second)

Definition at line 61 of file cam_setters_common.h.

63 {
64 setGenerationDeltaTime(cam.cam.generation_delta_time, unix_nanosecs, n_leap_seconds);
65}
void setGenerationDeltaTime(GenerationDeltaTime &generation_delta_time, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
Set the GenerationDeltaTime-Value.

◆ setGenerationDeltaTime() [2/2]

void setGenerationDeltaTime ( GenerationDeltaTime & generation_delta_time,
const uint64_t unix_nanosecs,
const uint16_t n_leap_seconds = etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end()->second )
inline

Set the GenerationDeltaTime-Value.

Parameters
generation_delta_timeGenerationDeltaTime to set the GenerationDeltaTime-Value for
unix_nanosecsTimestamp in unix-nanoseconds to set the GenerationDeltaTime-Value from
n_leap_secondsNumber of leap seconds since 2004 for the given timestamp (Default: etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end()->second)

Definition at line 44 of file cam_setters_common.h.

46 {
47 TimestampIts t_its;
48 setTimestampITS(t_its, unix_nanosecs, n_leap_seconds);
49 uint16_t gdt_value = t_its.value % 65536;
50 throwIfOutOfRange(gdt_value, GenerationDeltaTime::MIN, GenerationDeltaTime::MAX, "GenerationDeltaTime");
51 generation_delta_time.value = gdt_value;
52}
void setTimestampITS(TimestampIts &timestamp_its, const uint64_t unix_nanosecs, const uint16_t n_leap_seconds=etsi_its_msgs::LEAP_SECOND_INSERTIONS_SINCE_2004.end() ->second)
Set the TimestampITS object.

◆ setHeading() [1/2]

void setHeading ( CAM & cam,
const double heading_val )
inline

Set the Heading for a CAM.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West HeadingConfidence is set to UNAVAILABLE

Parameters
camCAM to set the ReferencePosition
valueHeading value in degree as decimal number

Definition at line 114 of file cam_setters_common.h.

114 {
115 setHeading(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.heading,
116 heading_val);
117}
void setHeading(Heading &heading, const double value)
Set the Heading object.

◆ setHeading() [2/2]

void setHeading ( Heading & heading,
const double value )
inline

Set the Heading object.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West HeadingConfidence is set to UNAVAILABLE

Parameters
headingobject to set
valueHeading value in degree as decimal number

Definition at line 100 of file cam_setters_common.h.

100 {
101 heading.heading_confidence.value = HeadingConfidence::UNAVAILABLE;
102 setHeadingValue(heading.heading_value, value);
103}
void setHeadingValue(HeadingValue &heading, const double value)
Set the HeadingValue object.

◆ setHeadingValue()

void setHeadingValue ( HeadingValue & heading,
const double value )
inline

Set the HeadingValue object.

0.0° equals WGS84 North, 90.0° equals WGS84 East, 180.0° equals WGS84 South and 270.0° equals WGS84 West

Parameters
headingobject to set
valueHeading value in degree as decimal number

Definition at line 85 of file cam_setters_common.h.

85 {
86 int64_t deg = (int64_t)std::round(value * 1e1);
87 throwIfOutOfRange(deg, HeadingValue::MIN, HeadingValue::MAX, "HeadingValue");
88 heading.value = deg;
89}

◆ setLateralAcceleration()

void setLateralAcceleration ( CAM & cam,
const double lat_accel )
inline

Set the lateral acceleration.

Parameters
camCAM to set the acceleration value s
lat_accellateral acceleration to set in m/s^2 as decimal number (left is positiv), if not available use 16.1 m/s^2

Definition at line 199 of file cam_setters_common.h.

199 {
201 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.lateral_acceleration,
202 lat_accel);
203 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency
204 .lateral_acceleration_is_present = true;
205}
void setLateralAcceleration(CAM &cam, const double lat_accel)
Set the lateral acceleration.

◆ setLightBarSirenInUse()

void setLightBarSirenInUse ( LightBarSirenInUse & light_bar_siren_in_use,
const std::vector< bool > & bits )
inline

Set the Lightbar Siren In Use by a vector of bools.

Parameters
light_bar_siren_in_use
bits

Definition at line 310 of file cam_setters_common.h.

310 {
311 setBitString(light_bar_siren_in_use, bits);
312}

◆ setLongitudinalAcceleration()

void setLongitudinalAcceleration ( CAM & cam,
const double lon_accel )
inline

Set the longitudinal acceleration.

Parameters
camCAM to set the acceleration value s
lon_accellongitudinal acceleration to set in m/s^2 as decimal number (braking is negative), if not available use 16.1 m/s^2

Definition at line 187 of file cam_setters_common.h.

187 {
189 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.longitudinal_acceleration,
190 lon_accel);
191}
void setLongitudinalAcceleration(CAM &cam, const double lon_accel)
Set the longitudinal acceleration.

◆ setReferencePosition()

void setReferencePosition ( CAM & cam,
const double latitude,
const double longitude,
const double altitude = AltitudeValue::UNAVAILABLE )
inline

Set the ReferencePosition for a CAM.

This function sets the latitude, longitude, and altitude of the CAMs reference position. If the altitude is not provided, it is set to AltitudeValue::UNAVAILABLE.

Parameters
camCAM to set the ReferencePosition
latitudeThe latitude value position in degree as decimal number.
longitudeThe longitude value in degree as decimal number.
altitudeThe altitude value (above the reference ellipsoid surface) in meter as decimal number (optional).

Definition at line 218 of file cam_setters_common.h.

219 {
220 setReferencePosition(cam.cam.cam_parameters.basic_container.reference_position, latitude, longitude, altitude);
221}
void setReferencePosition(CAM &cam, const double latitude, const double longitude, const double altitude=AltitudeValue::UNAVAILABLE)
Set the ReferencePosition for a CAM.

◆ setSpecialTransportType()

void setSpecialTransportType ( SpecialTransportType & special_transport_type,
const std::vector< bool > & bits )
inline

Set the Special Transport Type by a vector of bools.

Parameters
special_transport_type
bits

Definition at line 300 of file cam_setters_common.h.

300 {
301 setBitString(special_transport_type, bits);
302}

◆ setSpeed()

void setSpeed ( CAM & cam,
const double speed_val )
inline

Set the vehicle speed.

Parameters
camCAM to set the speed value
speed_valspeed value to set in m/s as decimal number

Definition at line 177 of file cam_setters_common.h.

177 {
178 setSpeed(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.speed, speed_val);
179}
void setSpeed(CAM &cam, const double speed_val)
Set the vehicle speed.

◆ setStationType()

void setStationType ( CAM & cam,
const uint8_t value )
inline

Set the StationType for a CAM.

Parameters
camCAM-Message to set the station_type value
valuestation_type value to set

Definition at line 73 of file cam_setters_common.h.

73 {
74 setStationType(cam.cam.cam_parameters.basic_container.station_type, value);
75}
void setStationType(CAM &cam, const uint8_t value)
Set the StationType for a CAM.

◆ setVehicleDimensions()

void setVehicleDimensions ( CAM & cam,
const double vehicle_length,
const double vehicle_width )
inline

Set the vehicle dimensions.

Parameters
camCAM to set the vehicle dimensions
vehicle_lengthvehicle length in meter as decimal number
vehicle_widthvehicle width in meter as decimal number

Definition at line 163 of file cam_setters_common.h.

163 {
165 cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_length,
166 vehicle_length);
167 setVehicleWidth(cam.cam.cam_parameters.high_frequency_container.basic_vehicle_container_high_frequency.vehicle_width,
168 vehicle_width);
169}
void setVehicleLength(VehicleLength &vehicle_length, const double value)
Set the VehicleLength object.
void setVehicleWidth(VehicleWidth &vehicle_width, const double value)
Set the VehicleWidth object.

◆ setVehicleLength()

void setVehicleLength ( VehicleLength & vehicle_length,
const double value )
inline

Set the VehicleLength object.

VehicleLengthConfidenceIndication is set to UNAVAILABLE

Parameters
vehicle_lengthobject to set
valueVehicleLengthValue in meter as decimal number

Definition at line 151 of file cam_setters_common.h.

151 {
152 vehicle_length.vehicle_length_confidence_indication.value = VehicleLengthConfidenceIndication::UNAVAILABLE;
153 setVehicleLengthValue(vehicle_length.vehicle_length_value, value);
154}
void setVehicleLengthValue(VehicleLengthValue &vehicle_length, const double value)
Set the VehicleLengthValue object.

◆ setVehicleLengthValue()

void setVehicleLengthValue ( VehicleLengthValue & vehicle_length,
const double value )
inline

Set the VehicleLengthValue object.

Parameters
vehicle_lengthobject to set
valueVehicleLengthValue in meter as decimal number

Definition at line 137 of file cam_setters_common.h.

137 {
138 int64_t length = (int64_t)std::round(value * 1e1);
139 throwIfOutOfRange(length, VehicleLengthValue::MIN, VehicleLengthValue::MAX, "VehicleLengthValue");
140 vehicle_length.value = length;
141}

◆ setVehicleWidth()

void setVehicleWidth ( VehicleWidth & vehicle_width,
const double value )
inline

Set the VehicleWidth object.

Parameters
vehicle_widthobject to set
valueVehicleWidth in meter as decimal number

Definition at line 125 of file cam_setters_common.h.

125 {
126 int64_t width = (int64_t)std::round(value * 1e1);
127 throwIfOutOfRange(width, VehicleWidth::MIN, VehicleWidth::MAX, "VehicleWidthValue");
128 vehicle_width.value = width;
129}