Board support library for C027 - updated with thread-safe wait()
Fork of C027 by
C027.cpp
- Committer:
- mazgch
- Date:
- 2013-10-21
- Revision:
- 6:e11bf54dd344
- Parent:
- 3:b54777b90da1
- Child:
- 7:e3eab86f1de9
File content as of revision 6:e11bf54dd344:
/* Platform source file, for the u-blox C27-C20/U20/G35 * mbed Internet of Things Starter Kit * http://mbed.org/platforms/u-blox-C027/ * */ #include "C027.h" void mbed_die(void) { for (;;) { // nothing to do here // we do not have fancy leds that // can be flashed on the C027 } } 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 } }