|
|
|
@ -14,15 +14,33 @@
@@ -14,15 +14,33 @@
|
|
|
|
|
|
|
|
|
|
#include <GPS.h> |
|
|
|
|
|
|
|
|
|
class AP_GPS_Shim : public GPS
{ |
|
|
|
|
class AP_GPS_Shim : public GPS |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
|
AP_GPS_Shim() : GPS(NULL) {} |
|
|
|
|
AP_GPS_Shim() : GPS(NULL) {} |
|
|
|
|
|
|
|
|
|
virtual void init(void) {}; |
|
|
|
|
virtual bool read(void) {
bool updated = _updated;
_updated = false;
return _updated;
} |
|
|
|
|
virtual bool read(void) { |
|
|
|
|
bool updated = _updated; |
|
|
|
|
_updated = false; |
|
|
|
|
return _updated; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// Set-and-mark-updated macro for the public member variables; each instance
|
|
|
|
|
/// defines a member function set_<variable>(<type>)
|
|
|
|
|
///
#define __GPS_SHIM_SET(__type, __name) void set_##__name(__type v) { __name = v; _updated = true; }
__GPS_SHIM_SET(long, time);
__GPS_SHIM_SET(long, latitude);
__GPS_SHIM_SET(long, longitude);
__GPS_SHIM_SET(long, altitude);
__GPS_SHIM_SET(long, ground_speed);
__GPS_SHIM_SET(long, ground_course);
__GPS_SHIM_SET(long, speed_3d);
__GPS_SHIM_SET(int, hdop);
#undef __GPS_SHIM_SET
private: |
|
|
|
|
///
|
|
|
|
|
#define __GPS_SHIM_SET(__type, __name) void set_##__name(__type v) { __name = v; _updated = true; } |
|
|
|
|
__GPS_SHIM_SET(long, time); |
|
|
|
|
__GPS_SHIM_SET(long, latitude); |
|
|
|
|
__GPS_SHIM_SET(long, longitude); |
|
|
|
|
__GPS_SHIM_SET(long, altitude); |
|
|
|
|
__GPS_SHIM_SET(long, ground_speed); |
|
|
|
|
__GPS_SHIM_SET(long, ground_course); |
|
|
|
|
__GPS_SHIM_SET(long, speed_3d); |
|
|
|
|
__GPS_SHIM_SET(int, hdop); |
|
|
|
|
#undef __GPS_SHIM_SET |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
bool _updated; ///< set anytime a member is updated, cleared when read() returns true
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|