Fork to support REVB hardware.

Dependents:   C027_BootTest_revb C027_EthernetSniffTest C027_M3_SerialEcho C027_HelloWorld_revb ... more

Fork of C027 by u-blox

Files at this revision

API Documentation at this revision

Comitter:
mazgch
Date:
Mon Oct 21 19:45:55 2013 +0000
Parent:
5:ff17f16cf70a
Child:
7:e3eab86f1de9
Commit message:
adding helpers

Changed in this revision

C027.cpp Show annotated file Show diff for this revision Revisions of this file
C027.h Show annotated file Show diff for this revision Revisions of this file
--- 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
+    }
+}
--- a/C027.h	Mon Oct 21 15:39:20 2013 +0000
+++ b/C027.h	Mon Oct 21 19:45:55 2013 +0000
@@ -6,8 +6,31 @@
 
 #pragma once
 
+#include "mbed.h"
 #include "C027_PinNames.h"
 
 // Override the weak mbed die function that flashes the leds. 
 // We do not have fancy leds that can be flashed on the C027.
 void mbed_die(void);
+
+class C027
+{
+public:
+    C027();
+
+    void gpsPower(bool enable);
+    void mdmPower(bool enable);
+    void mdmReset(void);
+    void gpsReset(void);
+
+private:
+    DigitalOut mdmEn;
+    DigitalOut mdmRst;
+    DigitalOut mdmPwrOn;
+    DigitalOut mdmRts;
+    bool mdmIsEnabled;
+    DigitalOut gpsEn;
+    DigitalOut gpsRst;
+    bool gpsIsEnabled;
+};
+