#include "proxy_header.hpp" #include #include namespace vanetza { double get_signal_power(const ProxyHeader& header) { double power = ntoh(header.signal_power); power /= 256.0; return power; } void set_signal_power(ProxyHeader& header, double dbm) { auto power = static_cast(dbm * 256.0); header.signal_power = hton(power); } access::AccessCategory get_access_category(const ProxyHeader& header) { return static_cast(header.access_category & 0x07); } void set_access_category(ProxyHeader& header, access::AccessCategory ac) { header.access_category = static_cast(ac); } boost::iterator_range get_payload(const ProxyHeader& header, std::size_t size) { const auto payload_offset = ntoh(header.payload_offset); const auto payload_size = ntoh(header.payload_size); assert(size >= payload_offset + payload_size); assert(payload_offset >= sizeof(ProxyHeader)); const uint8_t* begin = reinterpret_cast(&header); const uint8_t* end = begin; if (size >= payload_offset + payload_size) { begin += payload_offset; end = begin + payload_size; } return boost::make_iterator_range(begin, end); } void set_payload(ProxyHeader& header, std::size_t size) { header.payload_offset = hton(sizeof(ProxyHeader)); header.payload_size = hton(size); } } // namespace vanetza