NMEA: remove deprecated type talker_id
[marnav.git] / src / marnav / nmea / tpt.cpp
blob4a467a126d94b15b274a9f7f5ebf38a9fa1bba85
1 #include <marnav/nmea/tpt.hpp>
2 #include <marnav/nmea/io.hpp>
3 #include "checks.hpp"
5 namespace marnav
7 namespace nmea
9 constexpr sentence_id tpt::ID;
10 constexpr const char * tpt::TAG;
12 tpt::tpt()
13 : sentence(ID, TAG, talker::global_positioning_system)
17 tpt::tpt(talker talk, fields::const_iterator first, fields::const_iterator last)
18 : sentence(ID, TAG, talk)
20 if (std::distance(first, last) != 6)
21 throw std::invalid_argument{"invalid number of fields in tpt"};
23 unit::distance range_unit;
24 unit::distance depth_unit;
26 read(*(first + 0), range_);
27 read(*(first + 1), range_unit);
28 read(*(first + 2), bearing_);
29 // separator omitted intentionally
30 read(*(first + 4), depth_);
31 read(*(first + 5), depth_unit);
33 check_value(range_unit, {unit::distance::meter}, "range_unit");
34 check_value(depth_unit, {unit::distance::meter}, "depth_unit");
37 void tpt::append_data_to(std::string & s) const
39 append(s, to_string(range_));
40 append(s, to_string(unit::distance::meter));
41 append(s, to_string(bearing_));
42 append(s, 'P');
43 append(s, to_string(depth_));
44 append(s, to_string(unit::distance::meter));