Board support library for C027
Dependents: IoTWorkshopLCD IoTWorkshopBuzzer IoTWorkshopSensors C027_USSDTest ... more
Fork of C027 by
Diff: C027.cpp
- 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 + } +}