Board support library for C027

Dependents:   IoTWorkshopLCD IoTWorkshopBuzzer IoTWorkshopSensors C027_USSDTest ... more

Fork of C027 by u-blox

/media/uploads/ublox/c027_pinout_new.png

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
    }
}