Vanetza
 
Loading...
Searching...
No Matches
common_header.hpp
1#ifndef COMMON_HEADER_HPP_SEFIWCT4
2#define COMMON_HEADER_HPP_SEFIWCT4
3
4#include <vanetza/common/bit_number.hpp>
5#include <vanetza/geonet/header_type.hpp>
6#include <vanetza/geonet/mib.hpp>
7#include <vanetza/geonet/position_vector.hpp>
8#include <vanetza/geonet/serialization.hpp>
9#include <vanetza/geonet/traffic_class.hpp>
10#include <cstdint>
11
12namespace vanetza
13{
14namespace geonet
15{
16
17struct Area;
18struct DataRequest;
19struct ShbDataRequest;
20class LocationTable;
21
22enum class NextHeaderCommon
23{
24 Any = 0, BTP_A = 1, BTP_B = 2, IPv6 = 3
25};
26
28{
29public:
31 CommonHeader(const MIB&);
32 CommonHeader(const DataRequest&, const MIB&);
33 CommonHeader(const ShbDataRequest&, const MIB&);
34
35 static constexpr std::size_t length_bytes = 8;
36
37 NextHeaderCommon next_header; // 4 bit
38 BitNumber<unsigned, 4> reserved1;
39 HeaderType header_type;
40 TrafficClass traffic_class;
41 uint8_t flags; // Bit 0: itsGnIsMobile
42 uint16_t payload; // number of octets following whole GeoNet header
43 uint8_t maximum_hop_limit;
44 uint8_t reserved2;
45};
46
47void serialize(const CommonHeader&, OutputArchive&);
48void deserialize(CommonHeader&, InputArchive&);
49
50} // namespace geonet
51} // namespace vanetza
52
53#endif /* COMMON_HEADER_HPP_SEFIWCT4 */
54