nmeadump: added capability to read from serial port.
[marnav.git] / src / marnav / io / nmea_reader.hpp
blob8660af15765955104e6bf84c78edcaab9af46550
1 #ifndef __IO__NMEA_READER__HPP__
2 #define __IO__NMEA_READER__HPP__
4 #include <marnav/io/device.hpp>
5 #include <marnav/nmea/sentence.hpp>
7 namespace marnav
9 namespace io
11 /// This class reads NMEA sentences from a device. Normally this would
12 /// be a serial character device (e.g. \c /dev/ttyS0 or \c /dev/ttyUSB0).
13 ///
14 /// In order to use this NMEA reader, it must be subclassed.
15 ///
16 /// This reader opens the device upon construction.
17 ///
18 class nmea_reader
20 public:
21 virtual ~nmea_reader();
23 nmea_reader(std::unique_ptr<device> && d);
24 nmea_reader(const nmea_reader &) = delete;
25 nmea_reader(nmea_reader &&) = default;
27 nmea_reader & operator=(const nmea_reader &) = delete;
28 nmea_reader & operator=(nmea_reader &&) = default;
30 void close();
31 bool read();
33 protected:
34 virtual void process_sentence(const std::string &) = 0;
36 private:
37 void process_nmea();
38 bool read_data();
40 char raw;
41 std::string sentence;
42 std::unique_ptr<device> dev; ///< Device to read data from.
47 #endif