Connection Manager library for u-blox cellular modules. It manages the modem for keeping data connection always active.

Dependents:   C027_demo_ConnMan

Revision:
1:29ad1d1ac1f9
Parent:
0:86284a262735
--- a/CNReg.cpp	Tue Jan 12 09:08:15 2016 +0000
+++ b/CNReg.cpp	Thu Jan 21 14:00:25 2016 +0000
@@ -28,14 +28,19 @@
     statePS = MDMParser::REG_UNKNOWN;
 }
 
-CNResp cnRegLoop(CNLib* cnLib, RegStatus* status){
+CNResp cnRegLoop(CNLib* cnLib, RegStatus* regStatus){
     MDMParser::Reg newStateCS = cnLib->getNet()->csd;
     MDMParser::Reg newStatePS = cnLib->getNet()->psd;
     bool isRoamingRegister, isCSRegistered, hasCsRegister, hasCsDeRegister, isPSRegistered, hasPsRegister, hasPsDeRegister;
+    *regStatus = REG_NO_CHANGES;
+    int res;
     
+    TRACE("%s enter \r\n", __FUNCTION__); 
     //read and set COPS if necessary
-    if (cnLib->getNet()->regStatus == MDMParser::COPS_UNKOWN)
-        cnLib->getNetworkInfo();
+    if (cnLib->getNet()->regStatus == MDMParser::COPS_UNKOWN){
+        res = cnLib->getNetworkInfo();
+        if (!RESPOK(res)) return RES_ERROR;
+    }
     if (cnLib->getNet()->regStatus != MDMParser::COPS_AUTOMATIC_REG)
         cnLib->setNetAutoReg();    
     // poll registration info when timer expires
@@ -64,15 +69,15 @@
         if ((isCSRegistered && hasPsRegister) || (isPSRegistered &&  hasCsRegister) || \
                 (hasPsRegister && hasCsRegister) ){
             TRACE("%s CS and PS have just registered\r\n", __FUNCTION__);
-            *status = REG_REGISTERED;
+            *regStatus = REG_REGISTERED;
         }
         else if (hasPsDeRegister || hasCsDeRegister){
             TRACE("%s CS or PS are not registered\r\n", __FUNCTION__);
-            *status = REG_NOT_REGISTERED;
+            *regStatus = REG_NOT_REGISTERED;
         }
     }else{
         INFO("%s Roaming not allowed\r\n", __FUNCTION__);
-        *status = REG_NOT_REGISTERED;
+        *regStatus = REG_NOT_REGISTERED;
     }
     //Perform action in base of registration status
     if (hasCsRegister){
@@ -83,18 +88,18 @@
     }
     //Dump info
     if (getUtilDebugLevel() > 1 && (newStatePS != statePS || newStateCS != stateCS )){
-        const char* txtStatus[] = { "unchanged", "registered", "NOT anymore registered"};
+        const char* txtStatus[] = { "unchanged", "registered", "NOT registered"};
         INFO("cn registration Dump\r\n");
-        if (*status < sizeof(txtStatus)/sizeof(*txtStatus))
-                INFO("  Status is now %s\r\n", txtStatus[*status]);
+        if (*regStatus < sizeof(txtStatus)/sizeof(*txtStatus))
+                INFO("  Status is now %s\r\n", txtStatus[*regStatus]);
         INFO("  has CS Registered = %s, has CS DeRegistered = %s\r\n", BOOLTOSTR(hasCsRegister), BOOLTOSTR(hasCsDeRegister));
         INFO("  is Roaming active = %s, polling Timer %d\r\n", \
                 BOOLTOSTR(isRoamingRegister), tmStatusPull.read());
-        cnLib->dumpNetStatus(cnLib->getNet());
+        //cnLib->dumpNetStatus(cnLib->getNet());
     }
     //update status
     stateCS = newStateCS;
     statePS = newStatePS;
-
+    
     return RES_OK;    
 }
\ No newline at end of file