Sample code for connecting u-blox c027 to AerCloud

Dependencies:   C027_Support_AerCloud HTTPClient_AerCloud mbed

Fork of HTTPClient_Cellular_HelloWorld by u-blox

Revision:
14:fcdfdd37affe
Parent:
12:955439e7166f
--- a/main.cpp	Mon Nov 10 23:03:32 2014 +0000
+++ b/main.cpp	Fri Nov 14 01:29:08 2014 +0000
@@ -50,7 +50,7 @@
 
 //! The APN of your Aeris SIM
 //    You can find the APN for your SIM at https://aerport.aeris.com
-#define APN         NULL
+#define APN         "_INSERT_YOUR_APN_HERE_"
 
 //! User name and password are not required to use Aeris APN
 #define USERNAME    NULL
@@ -67,8 +67,8 @@
 #define AC_BASE     "http://api.aercloud.aeris.com/v1"
 
 //! AerCloud API Key
-//   You can find your api key at https://aerport.aeris.com
-#define AC_APIKEY   NULL
+//   You can find your api key at https://aerport.aeris.com"
+#define AC_APIKEY "_INSERT_YOUR_AERCLOUD_API_KEY_HERE_"
 
 //! Aercloud Account Id
 //   You can find your account id at https://aerport.aeris.com
@@ -76,7 +76,7 @@
 
 // AerCloud Container
 //  The name of the AerCloud Container to write data into
-#define AC_CONTAINER "VStatus"  // Example Container
+#define AC_CONTAINER "C027_Sample"  // Example Container
 
 //------------------------------------------------------------------------------------
 // AerCloud SCL (Device) Data Model
@@ -98,6 +98,34 @@
 char str[512];
 char simImei[16];
 
+const char* HttpResultToString(HTTPResult r) {
+    switch(r) {
+        case HTTP_PROCESSING:
+            return "HTTP_PROCESSING";
+        case HTTP_PARSE:
+            return "HTTP_PARSE";
+        case HTTP_DNS:
+            return "HTTP_DNS";
+        case HTTP_PRTCL:
+            return "HTTP_PRTCL";
+        case HTTP_NOTFOUND:
+            return "HTTP_NOTFOUND - 404";
+        case HTTP_REFUSED:
+            return "HTTP_REFUSED - 403";
+        case HTTP_ERROR:
+            return "HTTP_ERROR";
+        case HTTP_TIMEOUT:
+            return "HTTP_TIMEOUT";
+        case HTTP_CONN:
+            return "HTTP_CONN";
+        case HTTP_CLOSED:
+            return "HTTP_CLOSED";
+//        case HTTP_OK:
+//            return "HTTP_OK";
+    }
+    
+    return "UNKNOWN ERROR CODE";
+} 
 
 int main() 
 {
@@ -111,36 +139,38 @@
     
     GPSI2C gps;
 
-    printf("GPS object created\n");
+    printf("GPS object created\r\n");
     // turn on the supplies of the Modem
     MDMSerial mdm;
-    printf("Modem object created\n");
+    printf("Modem object created\r\n");
     //mdm.setDebug(4); // enable this for debugging issues 
     if (!mdm.connect(SIMPIN, APN,USERNAME,PASSWORD)) {
-        printf("Unabled to connect to the network.\n");
+        printf("Unabled to connect to the network.\r\n");
         return -1;
     }
     HTTPClient http;
   
     //get SIM IMEI
     mdm.getIMEI(simImei);
-    printf("Requesting provision info for IMEI %s\n",simImei);
+    printf("Requesting provision info for IMEI %s\r\n",simImei);
     
     // Check if SIM is provisioned in AerCloud
-    printf("\nIs the SIM provisioned?\n");
+    printf("\r\nIs the SIM provisioned?  ");
     char url[512];
     snprintf(url, sizeof(url), "%s/%d/scls/%s?apiKey=%s", AC_BASE, acId, simImei, AC_APIKEY);
     ret = http.get(url, str, 128);
-    if (!ret)
+    if (ret == HTTP_OK)
     {
       // We're already provisioned
-      printf("Page fetched successfully - read %d characters\n", strlen(str));
-      printf("Result: %s\n", str);
+      printf("Yes\r\n");
+      printf("Page fetched successfully - read %d characters\r\n", strlen(str));
+      printf("Result: %s\r\n", str);
       simProvisioned = true;
     }
     else
     {
-        printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
+        printf("No\r\n");
+        printf("Error - ret = %d - HTTP return code = %d\r\n", ret, http.getHTTPResponseCode());
         //SIM is not provisioned. trying to provision it...
         char url[512];
         snprintf(url, sizeof(url), "%s/%d/scls?apiKey=%s", AC_BASE, acId, AC_APIKEY);
@@ -151,15 +181,15 @@
         ret = http.post(url, outText, &inText);
         if (!ret)
         {
-          printf("Executed POST successfully - read %d characters\n", strlen(str));
-          printf("Result: %s\n", str);
+          printf("Executed POST successfully - read %d characters\r\n", strlen(str));
+          printf("Result: %s\r\n", str);
           simProvisioned = true;
         }
         else
         {
           if(http.getHTTPResponseCode() == 200)
             simProvisioned = true;
-          printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
+          printf("Error - ret = %d - HTTP return code = %d\r\n", ret, http.getHTTPResponseCode());
         }      
     }
     
@@ -235,23 +265,23 @@
                 sprintf(str,"{\"VSLat\": %.5f, \"VSLong\":  %.5f, \"Altitude\": %.5f, \"Speed\":%.5f, \"GPSTime\":%.5f, \"GPSDate\":%.5f, \"SCLID\":\"%s\"}", lastLat, lastLong, lastAlt, lastSpeed, lastTime, lastDate, simImei);
                 HTTPText outText(str);
                 HTTPText inText(str, 512);
-                printf("\nPost acquired data...\n");
+                printf("\r\nPost acquired data...\r\n");
                 ret = http.post(url, outText, &inText);
-                if (!ret)
+                if (ret == HTTP_OK)
                 {
-                  printf("Executed POST successfully - read %d characters\n", strlen(str));
-                  printf("Result: %s\n", str);
+                  printf("Executed POST successfully - read %d characters\r\n", strlen(str));
+                  printf("Result: %s\r\n", str);
                 }
                 else
                 {
-                  printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
+                  printf("Error - ret = %d (%s), - HTTP return code = %d\r\n", ret, HttpResultToString((HTTPResult)ret), http.getHTTPResponseCode());
                 }
                 itn = 0;
             }        
         }
         gps.powerOff();        
     } else {
-        printf("SIM is not provisioned.\n");
+        printf("SIM is not provisioned.\r\n");
     }