source: flair-src/trunk/lib/FlairSensorActuator/src/Gps.h @ 42

Last change on this file since 42 was 15, checked in by Bayard Gildas, 6 years ago

sources reformatted with flair-format-dir script

File size: 4.1 KB
RevLine 
[3]1// %flair:license{
[15]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[3]4// %flair:license}
5/*!
6 * \file Gps.h
7 * \brief Base class for GPS
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2013/08/23
10 * \version 4.0
11 */
12
13#ifndef GPS_H
14#define GPS_H
15
16#include <IODevice.h>
17#include <nmea/nmea.h>
18
[15]19namespace flair {
20namespace core {
21class cvmatrix;
22class FrameworkManager;
23class GeoCoordinate;
24class Vector3D;
[3]25}
[15]26namespace gui {
27class Layout;
28class DataPlot1D;
29class Tab;
30class TabWidget;
31class PushButton;
32class Map;
33class Label;
34}
35}
[3]36
[15]37namespace flair {
38namespace sensor {
39/*! \class Gps
40*
41* \brief Base class for GPS
42*/
43class Gps : public core::IODevice {
44public:
45  /*!
46  \enum FixQuality_t
47  \brief Fix qualty indicators
48  */
49  enum class FixQuality_t {
50    Invalid = 0,    /*!< invalid */
51    Gps = 1,        /*!< Gps */
52    DGps = 2,       /*!< Differential Gps */
53    Pps = 3,        /*!< Pps */
54    Rtk = 4,        /*!< RTK */
55    RtkFloat = 5,   /*!< RTK float */
56    Estimated = 6,  /*!< Estimated */
57    Manual = 7,     /*!< Manual */
58    Simulation = 8, /*!< Simulation */
59  };
[3]60
[15]61  /*!
62  \enum NMEAFlags_t
63  \brief NMEA flags
64  */
65  enum NMEAFlags_t {
66    GGA = 0x01, /*!< GGA */
67    VTG = 0x02, /*!< VTG */
68    GST = 0x04, /*!< GST */
69  };
[3]70
[15]71  /*!
72  * \brief Constructor
73  *
74  * Construct a Gps.
75  *
76  * \param parent parent
77  * \param name name
78  * \param NMEAFlags NMEA sentances to enable
79  */
80  Gps(const core::FrameworkManager *parent, std::string name,
81      NMEAFlags_t NMEAFlags);
[3]82
[15]83  /*!
84  * \brief Destructor
85  *
86  */
87  ~Gps();
[3]88
[15]89  /*!
90  * \brief Use default plot
91  *
92  */
93  void UseDefaultPlot(void);
[3]94
[15]95  /*!
96  * \brief East plot
97  *
98  * \return east plot
99  */
100  gui::DataPlot1D *EPlot(void) const;
[3]101
[15]102  /*!
103  * \brief North plot
104  *
105  * \return north plot
106  */
107  gui::DataPlot1D *NPlot(void) const;
[3]108
[15]109  /*!
110  * \brief Up plot
111  *
112  * \return up plot
113  */
114  gui::DataPlot1D *UPlot(void) const;
[3]115
[15]116  /*!
117  * \brief East velocity plot
118  *
119  * \return east velocity plot
120  */
121  gui::DataPlot1D *VEPlot(void) const;
[3]122
[15]123  /*!
124  * \brief North velocity plot
125  *
126  * \return north velocity plot
127  */
128  gui::DataPlot1D *VNPlot(void) const;
[3]129
[15]130  /*!
131  * \brief Main tab
132  *
133  * \return main tab
134  */
135  gui::TabWidget *GetTab(void) const;
[3]136
[15]137  /*!
138  * \brief Setup Layout
139  *
140  * \return setup Layout
141  */
142  gui::Layout *GetLayout(void) const;
[3]143
[15]144  /*!
145  * \brief Plot tab
146  *
147  * \return plot Tab
148  */
149  gui::Tab *GetPlotTab(void) const;
[3]150
[15]151  /*!
152  * \brief Number of used satellites
153  *
154  * \return number of used satellites
155  */
156  uint16_t NbSat(void) const;
[3]157
[15]158  /*!
159  * \brief Fix Quality
160  *
161  * \return fix quality
162  */
163  FixQuality_t FixQuality(void) const;
[3]164
[15]165  /*!
166  * \brief Set reference for ENU coordinates
167  *
168  * The actual position is used as reference to calculate
169  * ENU coordinates.
170  *
171  * \return fix quality
172  */
173  void SetRef(void);
[3]174
[15]175  /*!
176  * \brief Get ENU position
177  *
178  * \param point to store position
179  */
180  void GetENUPosition(core::Vector3D *point);
[3]181
[15]182protected:
183  /*!
184  * \brief Parse a NMEA frame
185  *
186  * This function must be called by the reimplemented class. \n
187  * When a frame is parsed, GPS datas are filled.
188  *
189  * \param frame NMEA frame
190  * \param frame_size frame size
191  *
192  */
193  void parseFrame(const char *frame, int frame_size);
[3]194
[15]195  NMEAFlags_t NMEAFlags;
[3]196
[15]197protected:
198  core::GeoCoordinate *position;
[3]199
[15]200private:
201  /*!
202  * \brief Update using provided datas
203  *
204  * Reimplemented from IODevice.
205  *
206  * \param data data from the parent to process
207  */
208  void UpdateFrom(const core::io_data *data){};
[3]209
[15]210  gui::Tab *main_tab, *sensor_tab;
211  gui::TabWidget *tab;
212  gui::PushButton *button_ref;
213  gui::DataPlot1D *e_plot;
214  gui::DataPlot1D *n_plot;
215  gui::DataPlot1D *u_plot;
216  gui::DataPlot1D *ve_plot;
217  gui::DataPlot1D *vn_plot;
218  gui::Tab *plot_tab;
219  gui::Map *map;
220  gui::Label *nb_sat_label, *fix_label;
221  uint16_t nb_sat;
222  FixQuality_t fix;
223  bool take_ref;
224  nmeaINFO info;
225  nmeaPARSER parser;
226  nmeaGPGGA pack;
227  nmeaPOS pos;
228  double lat_ref, long_ref, alt_ref;
[3]229
[15]230  // matrix
231  core::cvmatrix *output;
232};
[3]233} // end namespace sensor
234} // end namespace framewor
235#endif // GPS_H
Note: See TracBrowser for help on using the repository browser.