1#ifndef CAM_FUNCTIONS_HPP_PUFKBEM8
2#define CAM_FUNCTIONS_HPP_PUFKBEM8
4#include <vanetza/asn1/its/AltitudeConfidence.h>
5#include <vanetza/asn1/its/AltitudeValue.h>
6#include <vanetza/common/position_fix.hpp>
7#include <vanetza/security/cam_ssp.hpp>
8#include <vanetza/units/angle.hpp>
9#include <vanetza/units/length.hpp>
12struct BasicVehicleContainerLowFrequency;
15struct ReferencePosition;
16struct Vanetza_ITS2_BasicVehicleContainerLowFrequency;
17struct Vanetza_ITS2_Heading;
18struct Vanetza_ITS2_Path;
19struct Vanetza_ITS2_PathHistory;
20struct Vanetza_ITS2_ReferencePosition;
27 namespace r1 {
class Cam; }
28 namespace r2 {
class Cam; }
42void copy(
const PathHistory&, BasicVehicleContainerLowFrequency&);
43void copy(
const PathHistory&, Vanetza_ITS2_BasicVehicleContainerLowFrequency&);
52void copy(
const PathHistory& src, Vanetza_ITS2_PathHistory&);
53void copy(
const PathHistory& src, Vanetza_ITS2_Path&);
62bool similar_heading(
const Heading& a,
const Heading& b, units::Angle limit);
63bool similar_heading(
const Heading& a, units::Angle b, units::Angle limit);
64bool similar_heading(
const Vanetza_ITS2_Heading& a,
const Vanetza_ITS2_Heading&b, units::Angle limit);
65bool similar_heading(
const Vanetza_ITS2_Heading& a, units::Angle b, units::Angle limit);
66bool similar_heading(units::Angle a, units::Angle b, units::Angle limit);
74units::Length distance(
const ReferencePosition& a,
const ReferencePosition& b);
75units::Length distance(
const ReferencePosition& a, units::GeoAngle lat, units::GeoAngle lon);
76units::Length distance(
const Vanetza_ITS2_ReferencePosition& a,
const Vanetza_ITS2_ReferencePosition& b);
77units::Length distance(
const Vanetza_ITS2_ReferencePosition& a, units::GeoAngle lat, units::GeoAngle lon);
83bool is_available(
const Heading&);
84bool is_available(
const Vanetza_ITS2_Heading&);
85bool is_available(
const ReferencePosition&);
86bool is_available(
const Vanetza_ITS2_ReferencePosition&);
91void copy(
const PositionFix&, ReferencePosition&);
92void copy(
const PositionFix&, Vanetza_ITS2_ReferencePosition&);
99AltitudeValue_t to_altitude_value(units::Length);
106AltitudeConfidence_t to_altitude_confidence(units::Length);
114bool check_service_specific_permissions(
const asn1::r1::Cam& cam, security::CamPermissions ssp);
115bool check_service_specific_permissions(
const asn1::r2::Cam& cam, security::CamPermissions ssp);
127void print_indented(std::ostream& os,
const asn1::r1::Cam& cam,
const std::string& indent =
"\t",
unsigned start = 0);
128void print_indented(std::ostream& os,
const asn1::r2::Cam& cam,
const std::string& indent =
"\t",
unsigned start = 0);