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; }
37
38
39
40
41
42void copy(
const PathHistory&, BasicVehicleContainerLowFrequency&);
43void copy(
const PathHistory&, Vanetza_ITS2_BasicVehicleContainerLowFrequency&);
46
47
48
49
50
52void copy(
const PathHistory& src, Vanetza_ITS2_PathHistory&);
53void copy(
const PathHistory& src, Vanetza_ITS2_Path&);
56
57
58
59
60
61
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);
69
70
71
72
73
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);
80
81
82
83bool is_available(
const Heading&);
84bool is_available(
const Vanetza_ITS2_Heading&);
85bool is_available(
const ReferencePosition&);
86bool is_available(
const Vanetza_ITS2_ReferencePosition&);
89
90
92void copy(
const PositionFix&, Vanetza_ITS2_ReferencePosition&);
95
96
97
98
99AltitudeValue_t to_altitude_value(units::Length);
102
103
104
105
106AltitudeConfidence_t to_altitude_confidence(units::Length);
109
110
111
112
113
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);
118
119
120
121
122
123
124
125
126
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);
#define ASN1_RELEASE1_PREFIX
#define ASN1_RELEASE2_PREFIX