From 3b5fc081c8d22fac73db0fbe63eb2058595d43f6 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 29 Jun 2014 17:32:54 +0200 Subject: initial import --- nmeasource.h | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 nmeasource.h (limited to 'nmeasource.h') diff --git a/nmeasource.h b/nmeasource.h new file mode 100644 index 0000000..b874b7b --- /dev/null +++ b/nmeasource.h @@ -0,0 +1,86 @@ +#ifndef NMEASOURCE_H +#define NMEASOURCE_H + +#include +#include + +#include +#include +#include + +class NmeaSource : public QObject +{ + Q_OBJECT +public: + explicit NmeaSource(QObject *parent = 0); + ~NmeaSource(); + +signals: + void dataReady(const QString& data); + +public slots: + void start(); + void stop(); + +protected: + static const double H_UERE = 15.0; + static const double V_UERE = 23.0; + static const double P_UERE = 19.0; + + enum PositionAccuracyDirection { + Spherical, + Horizontal, + Vertical + }; + + static QString formatFixMode(const QGeoCoordinate& coord); + static QString formatTimestamp(const QTime& time); + static QString formatDatestamp(const QDate& date); + static QString formatLatitude(const QGeoCoordinate& coord); + static QString formatLatitudeNS(const QGeoCoordinate& coord); + static QString formatLongitude(const QGeoCoordinate& coord); + static QString formatLongitudeEW(const QGeoCoordinate& coord); + static QString formatAltitude(const QGeoCoordinate& coord); + static QString formatAltitudeUnits(const QGeoCoordinate& coord); + static QString formatSpeedKnots(const QGeoPositionInfo& pos); + static QString formatSpeedKmH(const QGeoPositionInfo& pos); + static QString formatTrueCourse(const QGeoPositionInfo& pos); + static QString formatMagCourse(const QGeoPositionInfo& pos); + static QString formatMagVariation(const QGeoPositionInfo& pos); + static QString formatMagVariationEW(const QGeoPositionInfo& pos); + static QString formatHDOP(const QGeoPositionInfo& pos); + static QString formatVDOP(const QGeoPositionInfo& pos); + static QString formatPDOP(const QGeoPositionInfo& pos); + static QString formatError(const QGeoPositionInfo& pos, + PositionAccuracyDirection which = Spherical); + static QString formatErrorUnits(const QGeoPositionInfo& pos, + PositionAccuracyDirection which = Spherical); + static QString formatSatPrn(const QGeoSatelliteInfo& sat); + static QString formatSatElev(const QGeoSatelliteInfo& sat); + static QString formatSatAz(const QGeoSatelliteInfo& sat); + static QString formatSatSnr(const QGeoSatelliteInfo& sat); + + void emitSentence(const QString& sentence); + + void generateGPRMC(const QGeoPositionInfo& pos); + void generateGPGGA(const QGeoPositionInfo& pos); + void generateGPGLL(const QGeoPositionInfo& pos); + void generateGPVTG(const QGeoPositionInfo& pos); + void generatePGRME(const QGeoPositionInfo& pos); + + void generateGPGSA(const QGeoPositionInfo& pos, const QList& info); + void generateGPGSV(const QGeoPositionInfo& pos, const QList& info); + +protected slots: + void handlePosition(const QGeoPositionInfo& pos); + void handleSatsInUse(const QList& info); + void handleSatsInView(const QList& info); + +private: + QGeoPositionInfoSource *m_possrc; + QGeoSatelliteInfoSource *m_satsrc; + QGeoPositionInfo m_last_pos; + int m_last_satsinview; +}; + +#endif // NMEASOURCE_H -- cgit v1.2.3