Dev: consistent formatting with clang-format-3.9
[marnav.git] / src / marnav / seatalk / message_52.cpp
blob9f49eab47fb16dd94a61f7aa32ee2a1e2bf6f44c
1 #include "message_52.hpp"
2 #include <cmath>
4 namespace marnav
6 namespace seatalk
9 message_52::message_52()
10 : message(ID)
11 , sog(0)
15 std::unique_ptr<message> message_52::parse(const raw & data)
17 check_size(data, SIZE);
19 std::unique_ptr<message> result = utils::make_unique<message_52>();
20 message_52 & msg = static_cast<message_52 &>(*result);
22 // 52 01 XX XX
23 // raw 1 2 3
25 msg.sog = 0;
26 msg.sog += data[2];
27 msg.sog <<= 8;
28 msg.sog += data[3];
30 return result;
33 raw message_52::get_data() const
35 return raw{static_cast<uint8_t>(ID), 0x01, static_cast<uint8_t>((sog >> 8) & 0xff),
36 static_cast<uint8_t>((sog >> 0) & 0xff)};
39 /// Returns the speed over ground in knots.
40 double message_52::get_sog() const noexcept
42 return 0.1 * sog;
45 /// Sets the speed over ground in knots.
46 void message_52::set_sog(double t) noexcept
48 sog = std::floor(t * 10.0);