1#include "proxy_header.hpp"
2#include <vanetza/common/byte_order.hpp>
8double get_signal_power(
const ProxyHeader& header)
10 double power = ntoh(header.signal_power);
15void set_signal_power(ProxyHeader& header,
double dbm)
17 auto power =
static_cast<decltype(ProxyHeader::signal_power)
>(dbm * 256.0);
18 header.signal_power = hton(power);
21access::AccessCategory get_access_category(
const ProxyHeader& header)
23 return static_cast<access::AccessCategory
>(header.access_category & 0x07);
26void set_access_category(ProxyHeader& header, access::AccessCategory ac)
28 header.access_category =
static_cast<uint8_t
>(ac);
31boost::iterator_range<const uint8_t*> get_payload(
const ProxyHeader& header, std::size_t size)
33 const auto payload_offset = ntoh(header.payload_offset);
34 const auto payload_size = ntoh(header.payload_size);
36 assert(size >= payload_offset + payload_size);
37 assert(payload_offset >=
sizeof(ProxyHeader));
39 const uint8_t* begin =
reinterpret_cast<const uint8_t*
>(&header);
40 const uint8_t* end = begin;
42 if (size >= payload_offset + payload_size) {
43 begin += payload_offset;
44 end = begin + payload_size;
47 return boost::make_iterator_range(begin, end);
50void set_payload(ProxyHeader& header, std::size_t size)
52 header.payload_offset = hton<
decltype(header.payload_offset)>(
sizeof(ProxyHeader));
53 header.payload_size = hton<
decltype(header.payload_size)>(size);