Fork to support REVB hardware.
Dependents: C027_BootTest_revb C027_EthernetSniffTest C027_M3_SerialEcho C027_HelloWorld_revb ... more
Fork of C027 by
Revision 6:e11bf54dd344, committed 2013-10-21
- 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; +}; +