Assert updated with the returned status code instead of URL

Dependencies:   ublox-at-cellular-interface

Revision:
1:26a67ab07275
Parent:
0:0b75e22c9231
Child:
4:39acbc0111eb
--- a/UbloxATCellularInterfaceExt.cpp	Mon Jun 05 12:58:04 2017 +0000
+++ b/UbloxATCellularInterfaceExt.cpp	Wed Jun 07 23:52:33 2017 +0100
@@ -280,6 +280,7 @@
 
     // +UHTTPCR: <profile_id>,<op_code>,<param_val>
     if (read_at_to_char(urcBuf, sizeof (urcBuf), '\n') > 0) {
+        // Response type 1
         // +UULOC: <date>,<time>,<lat>,<long>,<alt>,<uncertainty>,<speed>, <direction>,<vertical_acc>,<sensor_used>,<SV_used>,<antenna_status>, <jamming_status>
         if (sscanf(urcBuf, ": %d/%d/%d,%d:%d:%d.%*d,%f,%f,%d,%d,%d,%d,%d,%d,%d,%*d,%*d",
                    &_loc[0].time.tm_mday, &_loc[0].time.tm_mon,
@@ -292,12 +293,14 @@
             debug_if(_debug_trace_on, "Position found at index 0\n");
             _loc[0].sensor = (b == 0) ? CELL_LAST : (b == 1) ? CELL_GNSS :
                              (b == 2) ? CELL_LOCATE : (b == 3) ? CELL_HYBRID : CELL_LAST;
+            _loc[0].time.tm_year -= 1900;
             _loc[0].time.tm_mon -= 1;
             _loc[0].time.tm_wday = 0;
             _loc[0].time.tm_yday = 0;
             _loc[0].validData = true;
             _locExpPos=1;
             _locRcvPos++;
+        // Response type 2, sensor used 1
         // +UULOC: <sol>,<num>,<sensor_used>,<date>,<time>,<lat>,<long>,<alt>,<uncertainty>,<speed>, <direction>,<vertical_acc>,,<SV_used>,<antenna_status>, <jamming_status>
         } else if (sscanf(urcBuf, ": %d,%d,%d,%d/%d/%d,%d:%d:%d.%*d,%f,%f,%d,%d,%d,%d,%d,%d,%*d,%*d",
                    &a, &_locExpPos, &b,
@@ -322,12 +325,14 @@
 
                 _loc[a].sensor = (b == 0) ? CELL_LAST : (b == 1) ? CELL_GNSS :
                                  (b == 2) ? CELL_LOCATE : (b == 3) ? CELL_HYBRID : CELL_LAST;
+                _loc[a].time.tm_year -= 1900;
                 _loc[a].time.tm_mon -= 1;
                 _loc[a].time.tm_wday = 0;
                 _loc[a].time.tm_yday = 0;
                 _loc[a].validData = true;
                 _locRcvPos++;
             }
+        // Response type 2, sensor used 2
         //+UULOC: <sol>,<num>,<sensor_used>,<date>,<time>,<lat>,<long>,<alt>,<lat50>,<long50>,<major50>,<minor50>,<orientation50>,<confidence50>[,<lat95>,<long95>,<major95>,<minor95>,<orientation95>,<confidence95>]
         } else if (sscanf(urcBuf, ": %d,%d,%d,%d/%d/%d,%d:%d:%d.%*d,%f,%f,%d,%*f,%*f,%d,%*d,%*d,%*d",
                    &a, &_locExpPos, &b,
@@ -349,9 +354,47 @@
 
                 _loc[a].sensor = (b == 0) ? CELL_LAST : (b == 1) ? CELL_GNSS :
                                  (b == 2) ? CELL_LOCATE : (b == 3) ? CELL_HYBRID : CELL_LAST;
+                _loc[a].time.tm_year -= 1900;
                 _loc[a].time.tm_mon -= 1;
                 _loc[a].time.tm_wday = 0;
                 _loc[a].time.tm_yday = 0;
+                _loc[a].speed = 0;
+                _loc[a].direction = 0;
+                _loc[a].verticalAcc = 0;
+                _loc[a].svUsed = 0;
+                _loc[a].validData = true;
+                _locRcvPos++;
+            }
+        // Response type 2, sensor used 0
+        //+UULOC: <sol>,<num>,<sensor_used>,<date>,<time>,<lat>,<long>,<alt>,<uncertainty>
+        } else if (sscanf(urcBuf, ": %d,%d,%d,%d/%d/%d,%d:%d:%d.%*d,%f,%f,%d,%d",
+                   &a, &_locExpPos, &b,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_mday,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_mon,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_year,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_hour,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_min,
+                   &_loc[CELL_MAX_HYP - 1].time.tm_sec,
+                   &_loc[CELL_MAX_HYP - 1].latitude,
+                   &_loc[CELL_MAX_HYP - 1].longitude,
+                   &_loc[CELL_MAX_HYP - 1].altitude,
+                   &_loc[CELL_MAX_HYP - 1].uncertainty) == 13) {
+            if (--a >= 0) {
+
+                debug_if(_debug_trace_on, "Position found at index %d\n", a);
+
+                memcpy(&_loc[a], &_loc[CELL_MAX_HYP - 1], sizeof(*_loc));
+
+                _loc[a].sensor = (b == 0) ? CELL_LAST : (b == 1) ? CELL_GNSS :
+                                 (b == 2) ? CELL_LOCATE : (b == 3) ? CELL_HYBRID : CELL_LAST;
+                _loc[a].time.tm_year -= 1900;
+                _loc[a].time.tm_mon -= 1;
+                _loc[a].time.tm_wday = 0;
+                _loc[a].time.tm_yday = 0;
+                _loc[a].speed = 0;
+                _loc[a].direction = 0;
+                _loc[a].verticalAcc = 0;
+                _loc[a].svUsed = 0;
                 _loc[a].validData = true;
                 _locRcvPos++;
             }