gnssApi.h
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include <boost/function.hpp>
8 #include <boost/system/error_code.hpp>
9 #include <boost/shared_ptr.hpp>
10 #include "gnssPosition.h"
11 #include <vector>
12 
13 class GnssClient;
14 
15 //To avoid redefinition in client and app
16 #ifndef GNSS_TYPES
17 #define GNSS_TYPES
18 
24 namespace dpyGnss {
25 
32 };
33 
36 {
40 };
41 
44 {
48 };
49 
50 
62 {
67 };
68 
71 {
76 };
77 
79 struct GnssStatus
80 {
85 };
86 
88 {
89  int distance;
90  int accuracy;
92 };
93 
98 typedef boost::function<void(const bool &available)> service_availability_handler;
99 typedef boost::function<void(boost::system::error_code error_code, GnssPosition& last_position)> get_position_handler_function;
100 typedef boost::function<void(boost::system::error_code error_code, GnssPosition& next_position)> get_periodic_position_handler_function;
101 typedef boost::function<void(boost::system::error_code error_code, GnssStatus& current_status)> get_gnss_status_handler_function;
102 typedef boost::function<void(boost::system::error_code error_code, tm date)> get_time_date_handler_function;
103 typedef boost::function<void(boost::system::error_code error_code, GnssInfo type, const std::string& value)> get_info_handler_function;
104 typedef boost::function<void(boost::system::error_code error_code, GnssPowerStatus pwr_stat)> power_status_handler_function;
105 typedef boost::function<void(boost::system::error_code error_code, OdometerData& odometer_data)> get_odometer_data_handler_function;
106 typedef boost::function<void(boost::system::error_code error_code)> result_handler_function;
107 } //dpyGnss
108 #endif //GNSS_TYPES
109 
110 
116 {
117 public:
122  virtual void NewPosition(const GnssPosition& position) = 0;
126  virtual ~GnssObserver()
127  {
128  }
129 };
130 
135 class Gnss
136 {
137 
138 private:
142  boost::shared_ptr<GnssClient> mClient;
143 public:
144 
145  explicit Gnss(std::string ip = "127.0.0.1");
146  virtual ~Gnss();
147 
149 #ifndef TESTING
150  bool isAlive();
151  void monitorServiceAvailability_S(dpyGnss::service_availability_handler handler);
152  void monitorServiceAvailability_U();
153 
154  //Asynchronous operations
155  //From Deepsy 18.03
156  void getPeriodicPosition_S(dpyGnss::get_periodic_position_handler_function handler);
157  void getPeriodicPosition_U();
158  void asyncSetPowerStatus(dpyGnss::GnssPowerStatus power_stat, dpyGnss::result_handler_function handler);
159  void asyncGetPowerStatus(dpyGnss::power_status_handler_function handler);
160  void asyncGetLastPosition(dpyGnss::get_position_handler_function handler);
161  void asyncGetStoredTimeDate(dpyGnss::get_time_date_handler_function handler);
162  void asyncGetModuleInfo(dpyGnss::GnssInfo info, dpyGnss::get_info_handler_function handler);
163  void asyncPerformSoftwareReset(dpyGnss::SwResetType reset_type, dpyGnss::result_handler_function handler);
164  void asyncPerformHardwareReset(dpyGnss::result_handler_function handler);
165 
166  //From Deepsy 18.10
167  void asyncGetStatus(dpyGnss::get_gnss_status_handler_function handler);
168  void getPeriodicStatus_S(dpyGnss::get_gnss_status_handler_function handler);
169  void getPeriodicStatus_U();
170  // void getStatus(dpyGnss::get_gnss_status_handler_function handler);
171 
172  //Observer
173  boost::system::error_code subscribe(GnssObserver *observer);
174  boost::system::error_code unsubscribe(GnssObserver *observer);
175 
176  //Synchronous operations
177  boost::system::error_code setPowerStatus(dpyGnss::GnssPowerStatus &power_stat);
178  boost::system::error_code getPowerStatus(dpyGnss::GnssPowerStatus &pwr_stat);
179  boost::system::error_code getLastPosition(GnssPosition &last_position);
180  boost::system::error_code getStoredTimeDate(tm &gnssdatetime);
181  boost::system::error_code getModuleInfo(dpyGnss::GnssInfo info, std::string& value);
182  boost::system::error_code performSoftwareReset(dpyGnss::SwResetType reset_type);
183  boost::system::error_code performHardwareReset();
184 
185  //From Deepsy 19.04
186  void asyncStartSimulationMode(dpyGnss::SimulationMode simulation_type, std::string file_path,dpyGnss::result_handler_function handler);
187  void asyncStopSimulationMode(dpyGnss::result_handler_function handler);
188 
189  //From Deepsy 22.20
190  void asyncGetOdometerData(dpyGnss::get_odometer_data_handler_function handler);
191 
192 #else
193  virtual bool isAlive();
194  virtual void monitorServiceAvailability_S(dpyGnss::service_availability_handler handler);
195  virtual void monitorServiceAvailability_U();
196 
197  virtual void getPeriodicPosition_S(dpyGnss::get_periodic_position_handler_function handler);
198  virtual void getPeriodicPosition_U();
199  virtual void asyncSetPowerStatus(dpyGnss::GnssPowerStatus power_stat, dpyGnss::result_handler_function handler);
200  virtual void asyncGetPowerStatus(dpyGnss::power_status_handler_function handler);
201  virtual void asyncGetLastPosition(dpyGnss::get_position_handler_function handler);
202  virtual void asyncGetStoredTimeDate(dpyGnss::get_time_date_handler_function handler);
203  virtual void asyncGetModuleInfo(dpyGnss::GnssInfo info, dpyGnss::get_info_handler_function handler);
204  virtual void asyncPerformSoftwareReset(dpyGnss::SwResetType reset_type, dpyGnss::result_handler_function handler);
205  virtual void asyncPerformHardwareReset(dpyGnss::result_handler_function handler);
206  //From Deepsy 18.10
207  virtual void asyncGetStatus(dpyGnss::get_gnss_status_handler_function handler);
208  virtual void getPeriodicStatus_S(dpyGnss::get_gnss_status_handler_function handler);
209  virtual void getPeriodicStatus_U();
210 
211  // void getStatus(dpyGnss::get_gnss_status_handler_function handler);
212 
213  //Observer
214  virtual boost::system::error_code subscribe(GnssObserver *observer);
215  virtual boost::system::error_code unsubscribe(GnssObserver *observer);
216 
217  //Synchronous operations
218  virtual boost::system::error_code setPowerStatus(dpyGnss::GnssPowerStatus &power_stat);
219  virtual boost::system::error_code getPowerStatus(dpyGnss::GnssPowerStatus &pwr_stat);
220  virtual boost::system::error_code getLastPosition(GnssPosition &last_position);
221  virtual boost::system::error_code getStoredTimeDate(tm &gnssdatetime);
222  virtual boost::system::error_code getModuleInfo(dpyGnss::GnssInfo info, std::string& value);
223  virtual boost::system::error_code performSoftwareReset(dpyGnss::SwResetType reset_type);
224  virtual boost::system::error_code performHardwareReset();
225 
226  //From Deepsy 19.04
227  virtual void asyncStartSimulationMode(dpyGnss::SimulationMode simulation_type, std::string file_path,dpyGnss::result_handler_function handler);
228  virtual void asyncStopSimulationMode(dpyGnss::result_handler_function handler);
229 
230  //From Deepsy 22.20
231  virtual void asyncGetOdometerData(dpyGnss::get_odometer_data_handler_function handler);
232 #endif
233 };
Gnss firmware version.
Definition: gnssApi.h:74
int distance
Ground distance since last reset in meters.
Definition: gnssApi.h:89
AntenaStatus antenna_stat
Current AntenaStatus, please check dpyGnss::AntenaStatus documentation to be able to interpret this v...
Definition: gnssApi.h:82
boost::function< void(boost::system::error_code error_code, GnssStatus &current_status)> get_gnss_status_handler_function
Prototype of the handler function for setPositionSubscriberHandler method.
Definition: gnssApi.h:101
Plain position text will be used to simulate positions.
Definition: gnssApi.h:30
int accuracy
Ground distance accuracy (1-sigma) in meters.
Definition: gnssApi.h:90
NMEA format text will be used to simulate positions.
Definition: gnssApi.h:31
Gnss low power consumption mode.
Definition: gnssApi.h:38
dpyGnssPosition::QualityIndicator fix_quality
Current FIX status. Module is FIXED if different from NO_FIX.
Definition: gnssApi.h:83
Class that defines a position.
Definition: gnssPosition.h:37
boost::function< void(boost::system::error_code error_code, GnssPowerStatus pwr_stat)> power_status_handler_function
Prototype of the handler function for generateEventMsg method.
Definition: gnssApi.h:104
Warm start reset.
Definition: gnssApi.h:46
Gnss Manufacturer.
Definition: gnssApi.h:72
SwResetType
Defines the possible ways of performing a GNSS Reset.
Definition: gnssApi.h:43
Defines the status information structure that is obtained within a GNSS STATUS.
Definition: gnssApi.h:79
Deepsy Gnss namespace that includes the different enums, structs or method signatures that should be ...
boost::function< void(boost::system::error_code error_code, GnssInfo type, const std::string &value)> get_info_handler_function
Prototype of the handler function for getModemInfo method.
Definition: gnssApi.h:103
Antenna problem detected : short circuit.
Definition: gnssApi.h:64
boost::function< void(const bool &available)> service_availability_handler
Prototype of the handler function used to monitor service availability.
Definition: gnssApi.h:98
boost::function< void(boost::system::error_code error_code)> result_handler_function
Prototype of the handler function for obtaining result of the different operations.
Definition: gnssApi.h:106
Client class.
Definition: gnssClient.h:14
Gnss full functionality mode.
Definition: gnssApi.h:39
SimulationMode
Possible simulation modes.
Definition: gnssApi.h:29
GnssPowerStatus pwr_status
Current GnssPowerStatus.
Definition: gnssApi.h:81
Definition: gnssApi.h:87
AntenaStatus
Defines the possible status in which the antenna can be.
Definition: gnssApi.h:61
Antenna has been enabled and has voltage supply. Check interpretation of this value in the documentat...
Definition: gnssApi.h:66
Gnss Model.
Definition: gnssApi.h:73
boost::function< void(boost::system::error_code error_code, GnssPosition &next_position)> get_periodic_position_handler_function
Prototype of the handler function for setPositionSubscriberHandler method.
Definition: gnssApi.h:100
virtual ~GnssObserver()
Destructor.
Definition: gnssApi.h:126
GnssInfo
Defines the possible information that can be queried.
Definition: gnssApi.h:70
boost::function< void(boost::system::error_code error_code, tm date)> get_time_date_handler_function
Prototype of the handler function for getStoredTimeDate method.
Definition: gnssApi.h:102
Gnss Observer class.
Definition: gnssApi.h:115
boost::function< void(boost::system::error_code error_code, GnssPosition &last_position)> get_position_handler_function
Prototype of the handler function for getLastPosition method.
Definition: gnssApi.h:99
GnssPowerStatus
Defines the possible GNSS POWER states that the gnss can be in.
Definition: gnssApi.h:35
Gnss functions are not available.
Definition: gnssApi.h:37
No antenna has been detected.
Definition: gnssApi.h:65
Gnss protocol version used by the receiver.
Definition: gnssApi.h:75
Hot start reset.
Definition: gnssApi.h:45
Antenna voltage supply is disabled.
Definition: gnssApi.h:63
boost::function< void(boost::system::error_code error_code, OdometerData &odometer_data)> get_odometer_data_handler_function
Prototype of the handler function for getOdometerData method.
Definition: gnssApi.h:105
Main application.
Definition: gnssApi.h:135
QualityIndicator
Defines the posible FIX quality indicators.
Definition: gnssPosition.h:20
Cold start reset.
Definition: gnssApi.h:47
int total_distance
Total cumulative ground distance in meters.
Definition: gnssApi.h:91
bool simulation_mode_active
Information about the status of the GNSS in terms of operation mode (real/simulation). If active, the positions received are not real , but simulated from a file.
Definition: gnssApi.h:84