00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef GPSINTERFACE_GPSD_H
00029 #define GPSINTERFACE_GPSD_H
00030
00031 #ifdef HAVE_LIBGPS
00032
00033 #include <vector>
00034 #include <wx/datetime.h>
00035
00036 #include "GPSInterface.h"
00037
00038
00039
00040
00041
00042
00043 class GPSInterface_GPSD : public IGPSInterface
00044 {
00045 public:
00046 GPSInterface_GPSD();
00047 virtual ~GPSInterface_GPSD();
00048 virtual wxString Name();
00049 virtual EGPSStatus GetData(wxGPSEvent * pGPSEvent);
00050 virtual wxString GetLastError();
00051 virtual EGPSStatus AutoDetect(wxThread * pThread);
00052
00053 private:
00054 wxString GPSDConnect(wxSocketClient * psockGPSD, wxString strHost, int iPort);
00055 wxString GPSDDisconnect(wxSocketBase * psockGPSD);
00056 wxString GPSDGetProtocolVersion(wxSocketBase * psockGPSD, int * piProtocolVersion, int * piMajorGPSDVersion, int * piMinorGPSDVersion, wxString * pstrCommands);
00057 wxString GPSDGetPosition(wxSocketBase * psockGPSD, int iProtocolVersion, Point * pptGPS);
00058 wxString GPSDGetHeading(wxSocketBase * psockGPSD, int iProtocolVersion, double * pfHeading);
00059 wxString GPSDGetSpeed(wxSocketBase * psockGPSD, int iProtocolVersion, double * pfSpeed);
00060 wxString GPSDGetLastTimestamp(wxSocketBase * psockGPSD, int iProtocolVersion, double * pfLastTimestamp);
00061 wxString GPSDGetLockType(wxSocketBase * psockGPSD, int iProtocolVersion, int * piLockType);
00062 wxString GPSDGetSatelliteInfo(wxSocketBase * psockGPSD, int iProtocolVersion, std::vector<SSatelliteInfo> * pvSatInfo, int * pnSatellitesUsed);
00063 wxString GPSDSetBufferingPolicy(wxSocketBase * psockGPSD, int iProtocolVersion, int iBufferingPolicy);
00064
00065
00066 wxSocketClient * m_sockGPSD;
00067
00068
00069 int m_iGPSDProtocolVersion;
00070
00071
00072 double m_fGPSDLastTimestamp;
00073
00074
00075 wxDateTime m_tLastGPSSentence;
00076
00077
00078 double m_fMinimumSpeedForHeading;
00079
00080
00081 wxString m_strLastError;
00082
00083
00084
00085 double m_fLastHeading;
00086
00087
00088 double m_fLastSpeed;
00089
00090
00091 SSatelliteInfo m_arLastSatellitesVisible[MAX_GPS_SATELLITES];
00092 int m_nLastSatellitesVisible;
00093
00094
00095 long m_nLastSatUsedForLock;
00096
00097
00098 int m_iLastLockType;
00099 };
00100
00101 #endif // #ifdef HAVE_LIBGPS
00102
00103 #endif // #ifndef GPSINTERFACE_GPSD_H