Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of VodafoneUSBModem by
Diff: VodafoneK3770.cpp
- Revision:
- 12:66dc2c8eba2d
- Parent:
- 11:565b2ec40dea
- Child:
- 18:1789a11d1892
--- a/VodafoneK3770.cpp	Wed Jul 11 12:47:53 2012 +0000
+++ b/VodafoneK3770.cpp	Wed Jul 11 21:25:03 2012 +0000
@@ -21,7 +21,7 @@
 SOFTWARE.
 */
 
-#define __DEBUG__ 4
+#define __DEBUG__ 0
 #ifndef __MODULE__
 #define __MODULE__ "VodafoneK3770.cpp"
 #endif
@@ -32,8 +32,8 @@
 
 VodafoneK3770::VodafoneK3770() : m_dongle(),
 m_atStream(m_dongle.getSerial(1)), m_pppStream(m_dongle.getSerial(0)), m_at(&m_atStream),
-m_sms(&m_at), m_ussd(&m_at), m_ppp(&m_pppStream), 
-m_dongleConnected(false), m_ipInit(false), m_smsInit(false), m_atOpen(false)
+m_sms(&m_at), m_ussd(&m_at), m_linkMonitor(&m_at), m_ppp(&m_pppStream), 
+m_dongleConnected(false), m_ipInit(false), m_smsInit(false), m_ussdInit(false), m_linkMonitorInit(false), m_atOpen(false)
 {
 
 }
@@ -81,6 +81,7 @@
   volatile REGISTERING_STATUS status;
 };
 
+#if 0
 class COPSProcessor : public IATCommandsProcessor
 {
 public:
@@ -159,7 +160,7 @@
   char apn[24];
   volatile bool valid;
 };
-
+#endif
 
 int VodafoneK3770::connect(const char* apn, const char* user, const char* password)
 {
@@ -179,6 +180,7 @@
   #if USE_ONE_PORT
   m_smsInit = false; //SMS status reset
   m_ussdInit = false; //USSD status reset
+  m_linkMonitorInit = false; //Link monitor status reset
   #endif
 
   ATCommandsInterface::ATResult result;
@@ -241,7 +243,7 @@
   #endif
   DBG("Connecting PPP");
 
-  ret = m_ppp.connect("*99#");
+  ret = m_ppp.connect();
   DBG("Result of connect: Err code=%d", ret);
   return ret;
 }
@@ -414,6 +416,34 @@
   return OK;
 }
 
+int VodafoneK3770::getLinkState(int* pRssi, LinkMonitor::REGISTRATION_STATE* pRegistrationState, LinkMonitor::BEARER* pBearer)
+{
+  int ret = init();
+  if(ret)
+  {
+    return ret;
+  }
+  
+  if(!m_linkMonitorInit)
+  {
+    ret = m_linkMonitor.init();
+    if(ret)
+    {
+      return ret;
+    }
+    m_linkMonitorInit = true;
+  }
+
+  ret = m_linkMonitor.getState(pRssi, pRegistrationState, pBearer);
+  if(ret)
+  {
+    return ret;
+  }
+
+  return OK;
+}
+
+
 ATCommandsInterface* VodafoneK3770::getATCommandsInterface()
 {
   return &m_at;
@@ -452,12 +482,19 @@
 
   #if USE_ONE_PORT
   DBG("Configuring unsolicited result codes support properly");
-  //Configuring port
+  //Configuring port to enable 3GPP-compliant unsollicited response codes but disable Huawei-specific unsollicited response codes
   ret = m_at.executeSimple("AT^CURC=0;^PORTSEL=1", NULL); //Huawei-specific, not 3GPP-compliant
   if(ret != OK)
   {
     return NET_PROTOCOL;
   }
+  #else
+  //Configuring port to disable Huawei-specific unsollicited response codes
+  ret = m_at.executeSimple("AT^CURC=0", NULL); //Huawei-specific, not 3GPP-compliant
+  if(ret != OK)
+  {
+    return NET_PROTOCOL;
+  }  
   #endif
 
   ATCommandsInterface::ATResult result;
    