C027 updated to work with latest mBed libraries

Dependents:   Cellular_HelloMQTT UBLOXModemDriver UBLOXMQTTDriver

Fork of C027_Support by u-blox

Revision:
74:208e3e32d263
Parent:
51:e7b81c31baec
Child:
75:ce6e12067d0c
diff -r 2b32e0a21df2 -r 208e3e32d263 GPS.h
--- a/GPS.h	Thu May 15 08:25:45 2014 +0000
+++ b/GPS.h	Thu May 15 22:20:42 2014 +0000
@@ -5,12 +5,9 @@
 #include "SerialPipe.h"
 
 #ifdef TARGET_UBLOX_C027
- // if we detect the C027 platform we will assign the 
- // default pinname and baudrate in the constructor 
- // this helper macro will be used. 
- #define _C027DEFAULT(name) = name
+ #define _IF(onboard, shield) onboard
 #else
- #define _C027DEFAULT(name)
+ #define _IF(onboard, shield) shield
 #endif
 
 /** basic gps parser class 
@@ -18,6 +15,14 @@
 class GPSParser
 {
 public:
+
+    //! Constructor
+    ~GPSParser(void);
+   
+    /** Power on / Wake up the gps 
+    */
+    virtual bool init(void) = 0;
+    
     enum { 
         // getLine Responses
         WAIT      = -1, //!< wait for more incoming data (the start of a message was found, or no data available)
@@ -66,7 +71,7 @@
     */
     virtual int sendUbx(unsigned char cls, unsigned char id, 
                         const void* buf = NULL, int len = 0);
-          
+    
     /** Power off the gps, it can be again woken up by an 
         edge on the serial port on the external interrupt pin. 
     */
@@ -155,6 +160,9 @@
     virtual int _send(const void* buf, int len) = 0;
     
     static const char toHex[16]; //!< num to hex conversion
+#ifdef TARGET_UBLOX_C027
+    bool _onboard;
+#endif
 };
 
 /** gps class which uses a serial port 
@@ -170,12 +178,14 @@
         \param rxSize the size of the serial rx buffer
         \param txSize the size of the serial tx buffer
     */
-    GPSSerial(PinName tx    _C027DEFAULT( GPSTXD ), 
-              PinName rx    _C027DEFAULT( GPSRXD ), 
-              int baudrate  _C027DEFAULT( GPSBAUD ),
+    GPSSerial(PinName tx    _IF( = GPSTXD, /* = D8 */), // resistor on shield not populated 
+              PinName rx    _IF( = GPSRXD, /* = D9 */), // resistor on shield not populated 
+              int baudrate  _IF( = GPSBAUD, = 9600 ),
               int rxSize    = 256 , 
               int txSize    = 128 );
               
+    virtual bool init(void);
+    
     /** Get a line from the physical interface. 
         \param buf the buffer to store it
         \param len size of the buffer
@@ -205,15 +215,15 @@
         \param adr the I2C address of the GPS set to (66<<1)
         \param rxSize the size of the serial rx buffer
     */
-    GPSI2C(PinName sda          _C027DEFAULT( GPSSDA ), 
-           PinName scl          _C027DEFAULT( GPSSCL ),
-           unsigned char i2cAdr _C027DEFAULT( GPSADR ), 
+    GPSI2C(PinName sda          _IF( = GPSSDA, = D14 ), 
+           PinName scl          _IF( = GPSSCL, = D15 ),
+           unsigned char i2cAdr _IF( = GPSADR, = (66<<1) ), 
            int rxSize           = 256 );
-
+    
     /** helper function to probe the i2c device
         \return true if successfully detected the gps. 
     */ 
-    bool detect(void);
+    virtual bool init(void);
     
     /** Get a line from the physical interface. 
         \param buf the buffer to store it
@@ -277,7 +287,6 @@
     int _get(char* buf, int len);
     
     Pipe<char> _pipe;           //!< the rx pipe
-    bool found;                 //!< flag if device is detected.
     unsigned char _i2cAdr;      //!< the i2c address
     static const char REGLEN;   //!< the length i2c register address
     static const char REGSTREAM;//!< the stream i2c register address