NMEA: changed type of talker id from 'std::string' to its own type.
[marnav.git] / src / marnav / nmea / mss.hpp
blob19fab8dee4d1815436a764493c18973fec05d394
1 #ifndef __MARNAV__NMEA__MSS__HPP__
2 #define __MARNAV__NMEA__MSS__HPP__
4 #include <marnav/nmea/sentence.hpp>
5 #include <marnav/utils/optional.hpp>
7 namespace marnav
9 namespace nmea
11 MARNAV_NMEA_DECLARE_SENTENCE_PARSE_FUNC(mss)
13 /// @brief MSS - Beacon Receiver Status
14 ///
15 /// @code
16 /// 1 2 3 4 5
17 /// | | | | |
18 /// $--MSS,nn,nn,fff,bbb,xxx*hh<CR><LF>
19 /// @endcode
20 ///
21 /// Field Number:
22 /// 1. Signal strength (dB 1uV)
23 /// 2. Signal to noise ratio (dB)
24 /// 3. Beacon frequency (kHz)
25 /// 4. Beacon data rate (BPS)
26 /// 5. Unknown integer value
27 ///
28 class mss : public sentence
30 MARNAV_NMEA_SENTENCE_FRIENDS(mss)
32 public:
33 constexpr static const sentence_id ID = sentence_id::MSS;
34 constexpr static const char * TAG = "MSS";
36 mss();
37 mss(const mss &) = default;
38 mss & operator=(const mss &) = default;
39 mss(mss &&) = default;
40 mss & operator=(mss &&) = default;
42 protected:
43 mss(talker talk, fields::const_iterator first, fields::const_iterator last);
44 virtual std::vector<std::string> get_data() const override;
46 private:
47 uint32_t signal_strength = 0;
48 uint32_t signal_to_noise_ratio = 0;
49 uint32_t beacon_frequency = 0;
50 uint32_t beacon_datarate = 0;
51 int32_t unknown = 0;
53 public:
54 decltype(signal_strength) get_signal_strength() const { return signal_strength; }
55 decltype(signal_to_noise_ratio) get_signal_to_noise_ratio() const
57 return signal_to_noise_ratio;
59 decltype(beacon_frequency) get_beacon_frequency() const { return beacon_frequency; }
60 decltype(beacon_datarate) get_beacon_datarate() const { return beacon_datarate; }
61 decltype(unknown) get_unknown() const { return unknown; }
63 void set_signal_strength(uint32_t t) noexcept { signal_strength = t; }
64 void set_signal_to_noise_ratio(uint32_t t) noexcept { signal_to_noise_ratio = t; }
65 void set_beacon_frequency(uint32_t t) noexcept { beacon_frequency = t; }
66 void set_beacon_datarate(uint32_t t) noexcept { beacon_datarate = t; }
67 void set_unknown(int32_t t) noexcept { unknown = t; }
72 #endif