Vanetza
 
Loading...
Searching...
No Matches
basic_header.hpp
1#ifndef BASIC_HEADER_HPP_8QS7WLG3
2#define BASIC_HEADER_HPP_8QS7WLG3
3
4#include <vanetza/common/bit_number.hpp>
5#include <vanetza/geonet/lifetime.hpp>
6#include <vanetza/geonet/mib.hpp>
7#include <vanetza/geonet/serialization.hpp>
8
9namespace vanetza
10{
11namespace geonet
12{
13
14struct DataRequest;
15struct ShbDataRequest;
16
17/// NextHeaderBasic specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.3
18enum class NextHeaderBasic : uint8_t
19{
20 Any = 0,
21 Common = 1,
22 Secured = 2,
23};
24
25/// BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6
27{
29 BasicHeader(const MIB&);
30 BasicHeader(const DataRequest&, const MIB&);
31 BasicHeader(const ShbDataRequest&, const MIB&);
32
33 static constexpr std::size_t length_bytes = 3 + sizeof(Lifetime);
34
36 NextHeaderBasic next_header; // 4 bit
37 uint8_t reserved;
38 Lifetime lifetime;
39 uint8_t hop_limit;
40};
41
42/**
43 * \brief Serializes a BasicHeader into a binary archive
44 * \param basic to serialize
45 * \param ar to serialize in
46 */
47void serialize(const BasicHeader&, OutputArchive&);
48
49/**
50 * \brief Deserializes a BasicHeader from a binary archive
51 * \param basic to deserialize
52 * \param ar with a serialized BasicHeader at the beginning
53 */
54void deserialize(BasicHeader&, InputArchive&);
55
56} // namespace geonet
57} // namespace vanetza
58
59#endif /* BASIC_HEADER_HPP_8QS7WLG3 */
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.