7 |
|
#ifndef _GPS_hpp_ |
8 |
|
#define _GPS_hpp_ |
9 |
|
|
10 |
+ |
#include <cmath> |
11 |
+ |
#include <string> |
12 |
+ |
|
13 |
+ |
#include <truck.hpp> |
14 |
+ |
|
15 |
+ |
#include <gps.h> |
16 |
+ |
|
17 |
+ |
namespace GPS |
18 |
+ |
{ |
19 |
+ |
|
20 |
+ |
class Error : public std::exception |
21 |
+ |
{ |
22 |
+ |
std::string message; |
23 |
+ |
public: |
24 |
+ |
Error(); |
25 |
+ |
virtual ~Error() throw() {} |
26 |
+ |
virtual const char *what() const throw() { return message.c_str(); } |
27 |
+ |
}; |
28 |
+ |
|
29 |
+ |
class GPS |
30 |
+ |
{ |
31 |
+ |
gps_data_t *gps; |
32 |
+ |
public: |
33 |
+ |
GPS(const std::string &host = _B("localhost"), const std::string &port = _B(DEFAULT_GPSD_PORT)); |
34 |
+ |
~GPS() { ::gps_close(gps); } |
35 |
+ |
void Poll(); |
36 |
+ |
void Query(const std::string &query); |
37 |
+ |
double GetLatitude() { return gps->fix.latitude; } |
38 |
+ |
double GetLongitude() { return gps->fix.longitude; } |
39 |
+ |
double GetAltitude() { return gps->fix.altitude; } |
40 |
+ |
double GetAltitudeFeet() { return GetAltitude() * METERS_TO_FEET; } |
41 |
+ |
double GetTrack() { return gps->fix.track; } |
42 |
+ |
double GetSpeed() { return gps->fix.speed; } |
43 |
+ |
double GetSpeedMPH() { return GetSpeed() * MPS_TO_MPH; } |
44 |
+ |
double GetSpeedKMH() { return GetSpeed() * MPS_TO_KPH; } |
45 |
+ |
double GetSpeedKnots() { return GetSpeed() * MPS_TO_KNOTS; } |
46 |
+ |
double GetClimb() { return gps->fix.climb; } |
47 |
+ |
}; |
48 |
+ |
|
49 |
+ |
} |
50 |
+ |
|
51 |
|
#endif//_GPS_hpp_ |