Fork to support REVB hardware.

Dependents:   C027_BootTest_revb C027_EthernetSniffTest C027_M3_SerialEcho C027_HelloWorld_revb ... more

Fork of C027 by u-blox

Revision:
14:e30f90b5447e
Parent:
13:fb30e9923a7b
Child:
15:971186932592
--- a/C027.cpp	Tue Nov 19 12:26:01 2013 +0000
+++ b/C027.cpp	Fri Dec 06 09:27:49 2013 +0000
@@ -30,8 +30,10 @@
     mdmLvlOe(MDMLVLOE), mdmILvlOe(MDMILVLOE),   mdmUsbDet(MDMUSBDET), // MDM IF
     gpsEn(GPSEN),       gpsRst(GPSRST)                                // GPS CTRL
 {
+    DigitalOut led(LED);
     DigitalOut mdmRts(MDMRTS);
-    mdmRts    = 0;  // RTS.    0=ready to send 
+    led       = 0;  // LED1:   0=off
+    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
@@ -44,6 +46,7 @@
     mdmEn     = 0;  // LDOEN:  1=on, 0=off
     mdmRst    = 0;  // RESET:  0=reset, 1=operating
     mdmIsEnabled = false;
+    mdmUseUsb = false;
 }
 
 void C027::mdmPower(bool enable)
@@ -54,18 +57,19 @@
         // we need the gps ldo for the level shifters of the modem
         gpsEn     = 1;  // LDOEN(gps): 0=off -> 1=on 
 #endif
-        mdmPwrOn  = 1;  // PWRON:  1=idle
+        mdmPwrOn  = 0;  // PWRON:  0=turn on
         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
+        mdmUsbDet = mdmUseUsb ? 1 : 0;  // USBDET: 0=disabled, 1=enabled
         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
-        mdmUsbDet = 1;  // USBDET: 1=enabled
+        wait_ms(150);   //         LISA-C requires 150ms low to turn on
+        mdmPwrOn  = 1;  // PWRON:  0=turn on -> 1=idle
         mdmIsEnabled = true;
         // the interfaces of the modem should be fully ready after a certain period
         // LISA-U200  5000ms
@@ -99,6 +103,13 @@
         
 }
 
+void C027::mdmUsbEnable(bool enable)
+{
+    mdmUseUsb = enable;
+    if (mdmIsEnabled)
+        mdmUsbDet = mdmUseUsb ? 1 : 0;
+}
+
 void C027::mdmReset(void)
 {
     if (mdmIsEnabled)