// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: t -*- // // Auto-detecting pseudo-GPS driver // #ifndef AP_GPS_Auto_h #define AP_GPS_Auto_h #include "../FastSerial/FastSerial.h" #include "GPS.h" class AP_GPS_Auto : public GPS { public: /// Constructor /// /// @note The stream is expected to be set up and configured for the /// correct bitrate before ::init is called. /// /// @param port Stream connected to the GPS module. /// @param ptr Pointer to a GPS * that will be fixed up by ::init /// when the GPS type has been detected. /// AP_GPS_Auto(FastSerial *s, GPS **gps); /// Dummy init routine, does nothing virtual void init(enum GPS_Engine_Setting nav_setting = GPS_ENGINE_NONE); /// Detect and initialise the attached GPS unit. Updates the /// pointer passed into the constructor when a GPS is detected. /// virtual bool read(void); private: /// Copy of the port, known at construction time to be a real FastSerial port. FastSerial *_fs; /// global GPS driver pointer, updated by auto-detection /// GPS **_gps; /// low-level auto-detect routine /// GPS *_detect(void); static const prog_char _mtk_set_binary[]; static const prog_char _sirf_set_binary[]; enum GPS_Engine_Setting _nav_setting; }; #endif