C027_Support library test

Dependencies:   C027_Support

Dependents:   C027_SupportTest_xively_location software_test_v1

Fork of Seeed_GPRS_Library_HelloWorld by wei zou

When running this example make sure you have:

  • edited the SIM PIN, APN, USER and PASSWORD for you network operator
  • have inserted a SIM card with enough credits
  • the antennas connected
  • have good reception (especially for GPS)
  • installed the mbed CDC drivers if you run windows
  • connected a terminal program, such as teraterm

The example will connect the modem to the network and attach it. I will place a post request to download a file from mbed website. It will do a USSD request and finally wait for incoming SMS. It will try to answer your SMS (try asking "where are you").

You should see a similar output in your preferred console program:

C027 Support Example
Device Init
Device Status:
  Device:       SARA-G350
  Power Save:   Active
  SIM:          Ready
  CCID:         xxxxxxxxxxxxxxxxxxxxxxxxxxx
  IMEI:         xxxxxxxxxxxxxxxxxxx
  IMSI:         xxxxxxxxxxxxxxxxxxx
  Manufacturer: u-blox
  Model:        SARA-G350
  Version:      08.49
Network Check
Network Status:
  Registration:       Home
  Signal Strength:    -87 dBm
  Operator:           Swisscom
  Phone Number:       +41xxxxxxxxxxx
Network Join
  IP Address: xx.xx.xx.xx
Socket Create
Socket Connect
Make a Http Post Request
Socket Send
Socket Recving
Socket 0: 337 bytes pending
Socket 0: 145 bytes pending
Socket 0: closed by remote host
Socket Recv "HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Thu, 10 Apr 2014 13:09:02 GMT
Content-Type: text/plain
Connection: close
Last-Modified: Fri, 27 Jul 2012 13:30:34 GMT
Cache-Control: max-age=36000
Expires: Thu, 10 Apr 2014 20:43:53 GMT
Vary: Accept-Encoding
X-Mystery-Header: 260358892
X-be: web0_prod_sjc
Age: 8709

Hello world!
"
Socket Close
Socket Free
Network Disconnect
Send Ussd Command *#134#
Got Ussd Answer: "UNKNOWN APPLICATION"
Checking SMS and GPS
GPS Location: 47.28xxx 8.56xxx
GPS Location: 47.28xxx 8.56xxx
...
GPS Location: 47.28xxx 8.56xxx
GPS Location: 47.28xxx 8.56xxx
Network Status:
  Registration:       Home
  Signal Strength:    -89 dBm
  Operator:           Swisscom
  Phone Number:       +41xxxxxxxxx
GPS Location: 47.28xxx 8.56xxx
GPS Location: 47.28xxx 8.56xxx
...
Revision:
29:16f1037626e3
Parent:
28:334263983fcd
Child:
31:a07d0f76dc81
--- a/main.cpp	Fri Dec 12 07:54:19 2014 +0000
+++ b/main.cpp	Wed Nov 18 16:07:01 2015 +0000
@@ -31,6 +31,8 @@
 #define PASSWORD    NULL 
 //------------------------------------------------------------------------------------
 
+//#define CELLOCATE
+
 int main(void)
 {
     int ret;
@@ -184,9 +186,25 @@
     unsigned int i = 0xFFFFFFFF;
     const int wait = 100;
     bool abort = false;
+#ifdef CELLOCATE    
+    const int sensorMask = 3;  // Hybrid: GNSS + CellLocate       
+    const int timeoutMargin = 5; // seconds
+    const int submitPeriod = 60; // 1 minutes in seconds
+    const int targetAccuracy = 1; // meters
+    unsigned int j = submitPeriod * 1000/wait;
+    bool cellLocWait = false;
+    MDMParser::CellLocData loc;
+    
+    //Token can be released from u-blox site, when you got one replace "TOKEN" below 
+    if (!mdm.cellLocSrvHttp("TOKEN"))
+            mdm.cellLocSrvUdp();        
+    mdm.cellLocConfigSensor(1);   // Deep scan mode
+    //mdm.cellUnsolIndication(1);
+#endif
     //DigitalOut led(LED1);
     while (!abort) {
     //    led = !led;
+#ifndef CELLOCATE
         while ((ret = gps.getMessage(buf, sizeof(buf))) > 0)
         {
             int len = LENGTH(ret);
@@ -219,6 +237,27 @@
                 }
             }
         }
+#endif        
+#ifdef CELLOCATE
+        if (mdmOk && (j++ == submitPeriod * 1000/wait)) {   
+            j=0;
+            printf("CellLocate Request\r\n");
+            mdm.cellLocRequest(sensorMask, submitPeriod-timeoutMargin, targetAccuracy);
+            cellLocWait = true;
+        }
+        if (cellLocWait && mdm.cellLocGet(&loc)){           
+            cellLocWait = false;     
+            printf("CellLocate position received, sensor_used: %d,  \r\n", loc.sensorUsed );           
+            printf("  latitude: %0.5f, longitude: %0.5f, altitute: %d\r\n", loc.latitue, loc.longitude, loc.altitutude);
+            if (loc.sensorUsed == 1)
+                printf("  uncertainty: %d, speed: %d, direction: %d, vertical_acc: %d, satellite used: %d \r\n", loc.uncertainty,loc.speed,loc.direction,loc.verticalAcc,loc.svUsed);        
+            if (loc.sensorUsed == 1 || loc.sensorUsed == 2)
+            sprintf(link, "I am here!\n"
+                        "https://maps.google.com/?q=%.5f,%.5f", loc.latitue, loc.longitude);       
+        }
+        if (cellLocWait && (j%100 == 0 ))
+            printf("Waiting for CellLocate...\r\n");                
+#endif        
         if (mdmOk && (i++ == 5000/wait)) {
             i = 0;
             // check the network status