Fork to support REVB hardware.

Dependents:   C027_BootTest_revb C027_EthernetSniffTest C027_M3_SerialEcho C027_HelloWorld_revb ... more

Fork of C027 by u-blox

Revision:
6:e11bf54dd344
Parent:
3:b54777b90da1
Child:
7:e3eab86f1de9
--- a/C027.cpp	Mon Oct 21 15:39:20 2013 +0000
+++ b/C027.cpp	Mon Oct 21 19:45:55 2013 +0000
@@ -1,3 +1,4 @@
+
 /*  Platform source file, for the u-blox C27-C20/U20/G35 
 *   mbed Internet of Things Starter Kit
 *   http://mbed.org/platforms/u-blox-C027/
@@ -17,3 +18,74 @@
     }
 }
 
+C027::C027() :
+    mdmEn(MDMEN), mdmRst(MDMRST), mdmPwrOn(MDMPWRON), mdmRts(MDMRTS),
+    gpsEn(GPSEN), gpsRst(GPSRST)
+{
+#define REVA
+    gpsEn    = 0; // LDOEN: 1=on,0=off
+    gpsRst   = 0; // RESET: 0=reset,1=operating
+    gpsIsEnabled = false;
+
+    mdmPwrOn = 1; // PWRON: 1=idle,0=action
+    mdmRts   = 0; // RTS.   0=ready to send 
+    mdmEn    = 0; // LDOEN: 1=on,0=off
+    mdmRst   = 0; // RESET: 0=reset,1=operating
+    mdmIsEnabled = false;
+}
+
+void C027::gpsPower(bool enable)
+{
+    if (gpsIsEnabled != enable)
+    {
+#ifdef REVA
+        gpsEn = mdmIsEnabled || enable;
+#else
+        gpsEn = enable;  // LDOEN: 1=on,0=off
+#endif
+        wait_ms(10);
+        gpsIsEnabled = enable;
+        if (enable)
+            gpsReset();
+        else
+            gpsRst = 0;         // RESET: 0=reset,1=operating
+    }
+}
+    
+void C027::mdmPower(bool enable)
+{
+    if (mdmIsEnabled != enable)
+    {
+#ifdef REVA
+        gpsEn = enable || gpsIsEnabled;
+#endif
+        mdmEn = enable; // LDOEN: 1=on,0=off
+        mdmRst = 1;
+        wait_ms(10);
+        mdmIsEnabled = enable;
+        if (enable)
+            mdmReset();
+        else
+            mdmRst = 0;         // RESET: 0=reset,1=operating
+    }
+}
+
+void C027::mdmReset(void)
+{
+    if (mdmIsEnabled)
+    {
+        mdmRst   = 0;    // RESET: 0=reset,1=operating
+        wait_ms(50);     //        power on sequence is triggered by 50ms reset low
+        mdmRst   = 1;    // RESET: 1=operating,0=reset
+    }
+}
+
+void C027::gpsReset(void)
+{
+    if (gpsIsEnabled)
+    {
+        gpsRst   = 0;    // RESET: 0=reset,1=operating
+        wait_ms(1);
+        gpsRst   = 1;    // RESET: 1=operating,0=reset
+    }
+}