Board support library for C027
Dependents: IoTWorkshopLCD IoTWorkshopBuzzer IoTWorkshopSensors C027_USSDTest ... more
Fork of C027 by
Diff: C027.cpp
- Revision:
- 13:fb30e9923a7b
- Parent:
- 12:31fb5ff9fef5
- Child:
- 14:e30f90b5447e
--- a/C027.cpp Sun Nov 10 18:46:43 2013 +0000 +++ b/C027.cpp Tue Nov 19 12:26:01 2013 +0000 @@ -26,19 +26,21 @@ } C027::C027() : - mdmEn(MDMEN), mdmRst(MDMRST), mdmPwrOn(MDMPWRON), // MDM CTRL - mdmRts(MDMRTS), mdmLvlOe(MDMLVLOE), mdmUsbDet(MDMUSBDET), // MDM IF - gpsEn(GPSEN), gpsRst(GPSRST) // GPS CTRL + mdmEn(MDMEN), mdmRst(MDMRST), mdmPwrOn(MDMPWRON), // MDM CTRL + mdmLvlOe(MDMLVLOE), mdmILvlOe(MDMILVLOE), mdmUsbDet(MDMUSBDET), // MDM IF + gpsEn(GPSEN), gpsRst(GPSRST) // GPS CTRL { + DigitalOut mdmRts(MDMRTS); + mdmRts = 0; // RTS. 0=ready to send // we start with the gps disabled gpsEn = 0; // LDOEN: 1=on,0=off gpsRst = 0; // RESET: 0=reset,1=operating gpsIsEnabled = false; // we start with the modem disabled - mdmLvlOe = 1; // LVLEN: 1=disabled + mdmLvlOe = 1; // LVLEN: 1=disabled (uart/gpio) + mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) mdmUsbDet = 0; // USBDET: 0=disabled 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; @@ -56,13 +58,13 @@ mdmEn = 0; // LDOEN: 0=off mdmRst = 0; // RESET: 0=reset mdmLvlOe = 1; // LVLEN: 1=disabled + mdmILvlOe = 0; // ILVLEN: 0=disabled mdmUsbDet = 0; // USBDET: 0=disabled wait_ms( 10); // wait until supply switched off mdmEn = 1; // LDOEN: 0=off -> 1=on wait_ms( 10); // wait until supply stable and on wait_ms(300); // power on sequence is triggered by keeping reset 50ms-300ms low mdmRst = 1; // RESET: 0=reset -> 1=operating - mdmLvlOe = 0; // LVLEN: 0=enabled mdmUsbDet = 1; // USBDET: 1=enabled mdmIsEnabled = true; // the interfaces of the modem should be fully ready after a certain period @@ -70,12 +72,16 @@ // SARA-G350 3000ms // LISA-C200 wait_ms(1000); + mdmLvlOe = 0; // LVLEN: 0=enabled (uart/gpio) + if (gpsIsEnabled) + mdmILvlOe = 1; // ILVLEN: 1=enabled (i2c) } else if (mdmIsEnabled && !enable) // disable modem { mdmIsEnabled = false; // initiate power off sequence by setting PwnOn low for >1s - mdmLvlOe = 1; // LVLEN: 1=disabled + mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) + mdmLvlOe = 1; // LVLEN: 1=disabled (uart/gpio) mdmUsbDet = 0; // USBDET: 0=disabled mdmPwrOn = 0; // PWRON: 0=active wait_ms(1000); // send to sleep @@ -90,6 +96,7 @@ gpsEn = 0; // LDOEN(gps): 1=on -> 0=off #endif } + } void C027::mdmReset(void) @@ -144,17 +151,20 @@ gpsRst = 1; // RESET: 0=reset -> 1=operating gpsIsEnabled = true; // the gps schould be fully ready after 50ms + if (mdmIsEnabled) + mdmILvlOe = 1; // ILVLEN: 0=enabled (i2c) } else if (gpsIsEnabled && !enable) // diasble gps { gpsIsEnabled = false; - gpsRst = 0; // RESET: 1=operating -> 0=reset + mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) + gpsRst = 0; // RESET: 1=operating -> 0=reset #ifdef C027_REVA // the gps ldo may have to remain enabled for the level shifters of the modem if (!mdmIsEnabled) - gpsEn = 0; // LDOEN: 1=on -> 0=off + gpsEn = 0; // LDOEN: 1=on -> 0=off #else - gpsEn = 0; // LDOEN: 1=on -> 0=off + gpsEn = 0; // LDOEN: 1=on -> 0=off #endif } }