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, const std::string& key, const std::string& value)> get_configuration_parameter_handler_function;
107 typedef boost::function<void(boost::system::error_code error_code)> result_handler_function;
108 } //dpyGnss
109 #endif //GNSS_TYPES
110 
111 
117 {
118 public:
123  virtual void NewPosition(const GnssPosition& position) = 0;
127  virtual ~GnssObserver()
128  {
129  }
130 };
131 
136 class Gnss
137 {
138 
139 private:
143  boost::shared_ptr<GnssClient> mClient;
144 public:
145 
146  explicit Gnss(std::string ip = "127.0.0.1");
147  virtual ~Gnss();
148 
150 #ifndef TESTING
151  bool isAlive();
152  void monitorServiceAvailability_S(dpyGnss::service_availability_handler handler);
153  void monitorServiceAvailability_U();
154 
155  //Asynchronous operations
156  //From Deepsy 18.03
157  void getPeriodicPosition_S(dpyGnss::get_periodic_position_handler_function handler);
158  void getPeriodicPosition_U();
159  void asyncSetPowerStatus(dpyGnss::GnssPowerStatus power_stat, dpyGnss::result_handler_function handler);
160  void asyncGetPowerStatus(dpyGnss::power_status_handler_function handler);
161  void asyncGetLastPosition(dpyGnss::get_position_handler_function handler);
162  void asyncGetStoredTimeDate(dpyGnss::get_time_date_handler_function handler);
163  void asyncGetModuleInfo(dpyGnss::GnssInfo info, dpyGnss::get_info_handler_function handler);
164  void asyncPerformSoftwareReset(dpyGnss::SwResetType reset_type, dpyGnss::result_handler_function handler);
165  void asyncPerformHardwareReset(dpyGnss::result_handler_function handler);
166 
167  //From Deepsy 18.10
168  void asyncGetStatus(dpyGnss::get_gnss_status_handler_function handler);
169  void getPeriodicStatus_S(dpyGnss::get_gnss_status_handler_function handler);
170  void getPeriodicStatus_U();
171  // void getStatus(dpyGnss::get_gnss_status_handler_function handler);
172 
173  //Observer
174  boost::system::error_code subscribe(GnssObserver *observer);
175  boost::system::error_code unsubscribe(GnssObserver *observer);
176 
177  //Synchronous operations
178  boost::system::error_code setPowerStatus(dpyGnss::GnssPowerStatus &power_stat);
179  boost::system::error_code getPowerStatus(dpyGnss::GnssPowerStatus &pwr_stat);
180  boost::system::error_code getLastPosition(GnssPosition &last_position);
181  boost::system::error_code getStoredTimeDate(tm &gnssdatetime);
182  boost::system::error_code getModuleInfo(dpyGnss::GnssInfo info, std::string& value);
183  boost::system::error_code performSoftwareReset(dpyGnss::SwResetType reset_type);
184  boost::system::error_code performHardwareReset();
185 
186  //From Deepsy 19.04
187  void asyncStartSimulationMode(dpyGnss::SimulationMode simulation_type, std::string file_path,dpyGnss::result_handler_function handler);
188  void asyncStopSimulationMode(dpyGnss::result_handler_function handler);
189 
190  //From Deepsy 22.20
191  void asyncGetOdometerData(dpyGnss::get_odometer_data_handler_function handler);
192 
193  //From Deepsy 23.05
194  void asyncSetConfigurationParameter(const std::string& key, const std::string& value, dpyGnss::result_handler_function handler);
195  void asyncGetConfigurationParameter(const std::string& key, dpyGnss::get_configuration_parameter_handler_function handler);
196  boost::system::error_code setConfigurationParameter(const std::string& key, const std::string& value);
197  boost::system::error_code getConfigurationParameter(const std::string& key, std::string& value);
198 
199 #else
200  virtual bool isAlive();
201  virtual void monitorServiceAvailability_S(dpyGnss::service_availability_handler handler);
202  virtual void monitorServiceAvailability_U();
203 
204  virtual void getPeriodicPosition_S(dpyGnss::get_periodic_position_handler_function handler);
205  virtual void getPeriodicPosition_U();
206  virtual void asyncSetPowerStatus(dpyGnss::GnssPowerStatus power_stat, dpyGnss::result_handler_function handler);
207  virtual void asyncGetPowerStatus(dpyGnss::power_status_handler_function handler);
208  virtual void asyncGetLastPosition(dpyGnss::get_position_handler_function handler);
209  virtual void asyncGetStoredTimeDate(dpyGnss::get_time_date_handler_function handler);
210  virtual void asyncGetModuleInfo(dpyGnss::GnssInfo info, dpyGnss::get_info_handler_function handler);
211  virtual void asyncPerformSoftwareReset(dpyGnss::SwResetType reset_type, dpyGnss::result_handler_function handler);
212  virtual void asyncPerformHardwareReset(dpyGnss::result_handler_function handler);
213  //From Deepsy 18.10
214  virtual void asyncGetStatus(dpyGnss::get_gnss_status_handler_function handler);
215  virtual void getPeriodicStatus_S(dpyGnss::get_gnss_status_handler_function handler);
216  virtual void getPeriodicStatus_U();
217 
218  // void getStatus(dpyGnss::get_gnss_status_handler_function handler);
219 
220  //Observer
221  virtual boost::system::error_code subscribe(GnssObserver *observer);
222  virtual boost::system::error_code unsubscribe(GnssObserver *observer);
223 
224  //Synchronous operations
225  virtual boost::system::error_code setPowerStatus(dpyGnss::GnssPowerStatus &power_stat);
226  virtual boost::system::error_code getPowerStatus(dpyGnss::GnssPowerStatus &pwr_stat);
227  virtual boost::system::error_code getLastPosition(GnssPosition &last_position);
228  virtual boost::system::error_code getStoredTimeDate(tm &gnssdatetime);
229  virtual boost::system::error_code getModuleInfo(dpyGnss::GnssInfo info, std::string& value);
230  virtual boost::system::error_code performSoftwareReset(dpyGnss::SwResetType reset_type);
231  virtual boost::system::error_code performHardwareReset();
232 
233  //From Deepsy 19.04
234  virtual void asyncStartSimulationMode(dpyGnss::SimulationMode simulation_type, std::string file_path,dpyGnss::result_handler_function handler);
235  virtual void asyncStopSimulationMode(dpyGnss::result_handler_function handler);
236 
237  //From Deepsy 22.20
238  virtual void asyncGetOdometerData(dpyGnss::get_odometer_data_handler_function handler);
239 
240  //From Deepsy 23.05
241  virtual void asyncSetConfigurationParameter(const std::string& key, const std::string& value, dpyGnss::result_handler_function handler);
242  virtual void asyncGetConfigurationParameter(const std::string& key, dpyGnss::get_configuration_parameter_handler_function handler);
243  virtual boost::system::error_code setConfigurationParameter(const std::string& key, const std::string& value);
244  virtual boost::system::error_code getConfigurationParameter(const std::string& key, std::string& value);
245 #endif
246 };
int accuracy
Ground distance accuracy (1-sigma) in meters.
Definition: gnssApi.h:90
Definition: gnssApi.h:87
@ NMEA_SIMULATION
NMEA format text will be used to simulate positions.
Definition: gnssApi.h:31
QualityIndicator
Defines the posible FIX quality indicators.
Definition: gnssPosition.h:20
bool isAlive()
virtual ~GnssObserver()
Destructor.
Definition: gnssApi.h:127
Main application.
Definition: gnssApi.h:136
Gnss Observer class.
Definition: gnssApi.h:116
virtual void NewPosition(const GnssPosition &position)=0
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
@ WARMSTART
Warm start reset.
Definition: gnssApi.h:46
@ GNSS_ON
Gnss full functionality mode.
Definition: gnssApi.h:39
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
Deepsy Gnss namespace that includes the different enums, structs or method signatures that should be ...
@ MANUFACTURER
Gnss Manufacturer.
Definition: gnssApi.h:72
Class that defines a position.
Definition: gnssPosition.h:37
boost::function< void(const bool &available)> service_availability_handler
Prototype of the handler function used to monitor service availability.
Definition: gnssApi.h:98
SwResetType
Defines the possible ways of performing a GNSS Reset.
Definition: gnssApi.h:43
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:107
Client class.
Definition: gnssClient.h:14
@ FW_VERSION
Gnss firmware version.
Definition: gnssApi.h:74
SimulationMode
Possible simulation modes.
Definition: gnssApi.h:29
dpyGnssPosition::QualityIndicator fix_quality
Current FIX status. Module is FIXED if different from NO_FIX.
Definition: gnssApi.h:83
@ MODEL
Gnss Model.
Definition: gnssApi.h:73
@ PROTOCOL_VERSION
Gnss protocol version used by the receiver.
Definition: gnssApi.h:75
GnssInfo
Defines the possible information that can be queried.
Definition: gnssApi.h:70
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
@ ANTENNA_OFF
Antenna voltage supply is disabled.
Definition: gnssApi.h:63
GnssPowerStatus pwr_status
Current GnssPowerStatus.
Definition: gnssApi.h:81
AntenaStatus
Defines the possible status in which the antenna can be.
Definition: gnssApi.h:61
GnssPowerStatus
Defines the possible GNSS POWER states that the gnss can be in.
Definition: gnssApi.h:35
int total_distance
Total cumulative ground distance in meters.
Definition: gnssApi.h:91
@ GNSS_POWER_SAVE
Gnss low power consumption mode.
Definition: gnssApi.h:38
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
@ ANTENNA_OK
Antenna has been enabled and has voltage supply. Check interpretation of this value in the documentat...
Definition: gnssApi.h:66
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
@ ANTENNA_SHORT_CIRCUIT
Antenna problem detected : short circuit.
Definition: gnssApi.h:64
Defines the status information structure that is obtained within a GNSS STATUS.
Definition: gnssApi.h:79
AntenaStatus antenna_stat
Current AntenaStatus, please check dpyGnss::AntenaStatus documentation to be able to interpret this v...
Definition: gnssApi.h:82
@ PLAIN_TEXT_SIMULATION
Plain position text will be used to simulate positions.
Definition: gnssApi.h:30
@ ANTENNA_NOT_DETECTED
No antenna has been detected.
Definition: gnssApi.h:65
int distance
Ground distance since last reset in meters.
Definition: gnssApi.h:89
boost::function< void(boost::system::error_code error_code, const std::string &key, const std::string &value)> get_configuration_parameter_handler_function
Prototype of the handler function for getConfigurationParameter method.
Definition: gnssApi.h:106
@ GNSS_DISABLED
Gnss functions are not available.
Definition: gnssApi.h:37
@ COLDSTART
Cold start reset.
Definition: gnssApi.h:47
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
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
bool simulation_mode_active
Information about the status of the GNSS in terms of operation mode (real/simulation)....
Definition: gnssApi.h:84
@ HOTSTART
Hot start reset.
Definition: gnssApi.h:45