mb500
/build/rock-master-18.09-drivers-mb500-0.20170523/mb500.hh
Go to the documentation of this file.
1 #ifndef MAGELLAN_MB500_H
2 #define MAGELLAN_MB500_H
3 
4 #include <map>
5 #include <string>
6 #include <iosfwd>
7 #include <sys/types.h>
8 #include <iodrivers_base/Driver.hpp>
9 #include <vector>
10 
11 #include "gps_types.hh"
12 #include "mb500_types.hh"
13 
14 namespace gps {
16  class MB500 : public iodrivers_base::Driver {
17  public:
18  MB500();
19  ~MB500();
20 
21  bool openSerial(std::string const& device_name);
22  bool open(const std::string& device_name);
23  bool openBase(const std::string& device_name);
24  bool openRover(const std::string& device_name);
25 
26  void close();
27 
29  bool setRTKBase(std::string port_name);
31  void stopRTKBase();
33  bool setFastRTK(bool enable);
35  bool setRTKReset();
38  bool setRTKInputPort(std::string const& port);
39 
43  };
46 
50  void reset(bool cold_start);
51 
56  void dumpAlmanac();
57 
62  void dumpStatus();
63 
64  void dumpSatellites();
65 
68 
72  bool setUserDynamics(int h_vel, int h_acc, int v_vec, int v_acc);
73 
78  bool setKnownPointInit(double, std::string, double, std::string, double, double, double, double, std::string);
79 
80  bool setProcessingRate(int rate);
81 
84  bool resetStoredPosition();
86  bool setPosition(double latitude, double longitude, double height);
89 
94 
95  void disableAllOutputs();
96 
98  bool setGLONASSTracking(bool);
100  bool setSBASTracking(bool);
102  bool setGNSSMode(MB500_GNSS_MODE mode);
103 
104  enum Special {
105  NONE = -1
106  };
107  bool setCodeMeasurementSmoothing(int, int, int);
108  bool setNMEA(std::string, std::string, bool, double = 1);
109  bool setNMEALL(std::string, bool);
110  bool verifyAcknowledge(std::string const& cmd = "");
111 
112  std::string getBoardID();
113 
117  gps::Errors getGST(std::string msg);
121  gps::Position getGGA(std::string msg);
125  gps::SatelliteInfo getGSV(std::string msg);
126 
135  bool setPeriodicData(std::string const& port, double rate);
141  void collectPeriodicData();
143  bool stopPeriodicData();
144 
149 
150  base::Time cpu_time;
151  base::Time real_time;
153 
154  void writeCorrectionData(char const* data, size_t size, int timeout);
155 
164  bool enableNtpdShm(int unit);
165 
166  protected:
167  float m_period;
169 
171  void *ntp_shm;
172 
173  // GSV and GSA information are multi-message, so we accumulate
174  // information in these temp attributes, and copy them to the
175  // real ones whenever the message cycle is finished.
178 
179  bool waitForBoardReset();
180  bool interpretQuality(std::string const& message);
181  static std::pair<base::Time, base::Time> interpretDateTime(std::string const& msg);
182  static gps::Errors interpretErrors(std::string const& msg);
183  static gps::Position interpretInfo(std::string const& msg);
184  static double interpretLatency(std::string const& message);
185  static bool interpretSatelliteInfo(gps::SatelliteInfo& data, std::string const& msg);
186  static double interpretAngle(std::string const& value, bool positive);
187  static base::Time interpretTime(std::string const& time);
188 
189  void updateNtpdShm();
190 
191  std::string read(int timeout);
192  void write(const std::string&, int timeout);
193  int extractPacket(uint8_t const* buffer, size_t buffer_size) const;
194 
195  public:
196  static std::ostream& displayHeader(std::ostream& io);
197  static std::ostream& display(std::ostream& io, gps::Position const& pos, gps::Errors const& errors, gps::SatelliteInfo const& info, gps::SolutionQuality const& quality);
198  static std::ostream& display(std::ostream& io, MB500 const& driver);
199  };
200 }
201 
202 
203 #endif
CORRELATOR_MODE
Definition: mb500.hh:40
bool verifyAcknowledge(std::string const &cmd="")
Definition: mb500.cc:626
bool setCodeMeasurementSmoothing(int, int, int)
Definition: mb500.cc:453
bool setFastRTK(bool enable)
Definition: mb500.cc:307
double processing_latency
Definition: mb500.hh:152
gps::Errors errors
Definition: mb500.hh:146
MB500()
Definition: mb500.cc:57
void write(const std::string &, int timeout)
Definition: mb500.cc:260
bool setGNSSMode(MB500_GNSS_MODE mode)
Definition: mb500.cc:433
bool openBase(const std::string &device_name)
Definition: mb500.cc:90
static bool interpretSatelliteInfo(gps::SatelliteInfo &data, std::string const &msg)
Definition: mb500.cc:768
void writeCorrectionData(char const *data, size_t size, int timeout)
Definition: mb500.cc:251
int m_acq_timeout
Definition: mb500.hh:168
Definition: gps_types.hh:106
bool resetStoredPosition()
Definition: mb500.cc:394
void dumpSatellites()
Definition: mb500.cc:240
bool enableNtpdShm(int unit)
Definition: mb500.cc:541
bool interpretQuality(std::string const &message)
Definition: mb500.cc:715
gps::SolutionQuality tempSolutionQuality
Definition: mb500.hh:177
gps::Position getGGA(std::string msg)
Definition: mb500.cc:664
static std::ostream & display(std::ostream &io, gps::Position const &pos, gps::Errors const &errors, gps::SatelliteInfo const &info, gps::SolutionQuality const &quality)
Definition: mb500.cc:903
static gps::Position interpretInfo(std::string const &msg)
Definition: mb500.cc:807
MB500_GNSS_MODE
Definition: mb500_types.hh:46
static double interpretLatency(std::string const &message)
Definition: mb500.cc:839
bool setFixThreshold(MB500_AMBIGUITY_THRESHOLD threshold)
Definition: mb500.cc:510
bool waitForBoardReset()
Definition: mb500.cc:104
Definition: mb500.hh:42
static std::pair< base::Time, base::Time > interpretDateTime(std::string const &msg)
Definition: mb500.cc:701
bool setProcessingRate(int rate)
Definition: mb500.cc:195
bool setPeriodicData(std::string const &port, double rate)
Definition: mb500.cc:524
bool setRTKReset()
Definition: mb500.cc:368
bool openSerial(std::string const &device_name)
Definition: mb500.cc:68
bool stopPeriodicData()
Definition: mb500.cc:167
bool setKnownPointInit(double, std::string, double, std::string, double, double, double, double, std::string)
Definition: mb500.cc:425
float m_period
Definition: mb500.hh:167
bool setSBASTracking(bool)
Definition: mb500.cc:446
static std::ostream & displayHeader(std::ostream &io)
Definition: mb500.cc:897
void disableAllOutputs()
Definition: mb500.cc:98
gps::SatelliteInfo satellites
Definition: mb500.hh:147
bool openRover(const std::string &device_name)
Definition: mb500.cc:138
MB500_AMBIGUITY_THRESHOLD
Definition: mb500_types.hh:38
gps::Position position
Definition: mb500.hh:145
Definition: gps_types.hh:69
void collectPeriodicData()
Definition: mb500.cc:580
int extractPacket(uint8_t const *buffer, size_t buffer_size) const
Definition: mb500.cc:271
bool setRTKInputPort(std::string const &port)
Definition: mb500.cc:180
bool setCodeCorrelatorMode(CORRELATOR_MODE mode)
Definition: mb500.cc:374
base::Time real_time
Definition: mb500.hh:151
void * ntp_shm
Definition: mb500.hh:171
MB500_DYNAMICS_MODEL
Definition: mb500_types.hh:25
bool setRTKBase(std::string port_name)
Definition: mb500.cc:339
std::string read(int timeout)
Definition: mb500.cc:188
base::Time cpu_time
Definition: mb500.hh:150
void dumpAlmanac()
Definition: mb500.cc:227
Special
Definition: mb500.hh:104
int ntp_shmid
Definition: mb500.hh:170
static base::Time interpretTime(std::string const &time)
Definition: mb500.cc:859
bool setPosition(double latitude, double longitude, double height)
Definition: mb500.cc:413
void updateNtpdShm()
Definition: mb500.cc:557
bool setUserDynamics(int h_vel, int h_acc, int v_vec, int v_acc)
Definition: mb500.cc:146
Definition: gps_types.hh:62
bool setPositionFromCurrent()
Definition: mb500.cc:400
void close()
Definition: mb500.cc:175
Definition: mb500.hh:105
std::string getBoardID()
Definition: mb500.cc:123
gps::SatelliteInfo tempSatellites
Definition: mb500.hh:176
Definition: mb500.hh:41
Definition: mb500.hh:16
void stopRTKBase()
Definition: mb500.cc:352
bool setReceiverDynamics(MB500_DYNAMICS_MODEL mode)
Definition: mb500.cc:386
bool setGLONASSTracking(bool)
Definition: mb500.cc:439
gps::SolutionQuality solutionQuality
Definition: mb500.hh:148
gps::SatelliteInfo getGSV(std::string msg)
Definition: mb500.cc:679
void dumpStatus()
Definition: mb500.cc:212
bool setNMEALL(std::string, bool)
Definition: mb500.cc:617
static gps::Errors interpretErrors(std::string const &msg)
Definition: mb500.cc:752
~MB500()
Definition: mb500.cc:62
Definition: gps_types.hh:47
gps::Errors getGST(std::string msg)
Definition: mb500.cc:651
void reset(bool cold_start)
Definition: mb500.cc:156
bool setNMEA(std::string, std::string, bool, double=1)
Definition: mb500.cc:490
static double interpretAngle(std::string const &value, bool positive)
Definition: mb500.cc:849
bool open(const std::string &device_name)
Definition: mb500.cc:81