Build: add GCC-13, Clang-14, Clang-15, Clang-16, Clang-17
[marnav.git] / src / marnav / nmea / rsa.cpp
blobe0bd5ba840033a19d72547d4ccea6aadc2346d7f
1 #include <marnav/nmea/rsa.hpp>
2 #include <marnav/nmea/io.hpp>
3 #include <stdexcept>
5 namespace marnav::nmea
7 constexpr sentence_id rsa::ID;
8 constexpr const char * rsa::TAG;
10 rsa::rsa()
11 : sentence(ID, TAG, talker::integrated_instrumentation)
15 rsa::rsa(talker talk, fields::const_iterator first, fields::const_iterator last)
16 : sentence(ID, TAG, talk)
18 if (std::distance(first, last) != 4)
19 throw std::invalid_argument{"invalid number of fields in rsa"};
21 read(*(first + 0), rudder1_);
22 read(*(first + 1), rudder1_valid_);
23 read(*(first + 2), rudder2_);
24 read(*(first + 3), rudder2_valid_);
27 void rsa::set_rudder1(double t) noexcept
29 rudder1_ = t;
30 rudder1_valid_ = status::ok;
33 void rsa::set_rudder2(double t) noexcept
35 rudder2_ = t;
36 rudder2_valid_ = status::ok;
39 void rsa::append_data_to(std::string & s, const version &) const
41 append(s, format(rudder1_, 1));
42 append(s, to_string(rudder1_valid_));
43 append(s, format(rudder2_, 1));
44 append(s, to_string(rudder2_valid_));