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:
30 CommonHeader();
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 */
ChunckPacket is a packet consisting of several memory chunks.
std::size_t size(OsiLayer from, OsiLayer to) const
virtual void cancel(const void *scope)=0
virtual Clock::time_point now() const =0
std::size_t counter(const Identifier &packet) const
boost::optional< CbfPacket > fetch(const Identifier &id)
void remove_timer(typename timer_bimap::left_map::iterator)
bool remove(const Identifier &id)
CbfPacketBuffer(Runtime &rt, TimerCallback cb, std::unique_ptr< CbfCounter > cnt, std::size_t bytes)
void update(const Identifier &id, Clock::duration timeout)
void add(CbfPacket &&packet, Clock::duration timeout)
const CbfPacket * find(const Identifier &id) const
bool reduce_lifetime(const Timer &, CbfPacket &) const
Clock::duration reduce_lifetime(Clock::duration d)
const MacAddress & sender() const
SequenceNumber sequence_number() const
const Address & source() const
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.