1#ifndef VALIDITY_RESTRICTION_HPP_LMCUHYLJ
2#define VALIDITY_RESTRICTION_HPP_LMCUHYLJ
4#include <vanetza/common/bit_number.hpp>
5#include <vanetza/security/v2/region.hpp>
6#include <vanetza/security/v2/serialization.hpp>
7#include <boost/variant/variant.hpp>
17using Time32 = uint32_t;
18using Time64 = uint64_t;
28 Sixty_Hour_Blocks = 0x3,
47 return static_cast<Units
>(m_raw >> 13);
56 return m_raw & 0x1FFF;
72enum class ValidityRestrictionType : uint8_t
75 Time_Start_And_End = 1,
76 Time_Start_And_Duration = 2,
85 Time32 start_validity;
94 Time32 start_validity;
98using EndValidity = Time32;
100typedef boost::variant<EndValidity, StartAndEndValidity, StartAndDurationValidity, GeographicRegion> ValidityRestriction;
106ValidityRestrictionType get_type(
const ValidityRestriction&);
115size_t get_size(
const ValidityRestriction&);
116size_t get_size(
const Time32&);
117size_t get_size(
const Time64&);
138template<Val
idityRestrictionType>
144 using type = EndValidity;
172template<Val
idityRestrictionType T>
std::chrono::seconds to_seconds() const