The Hiking Pal tracking device firmware. See full description on the detail page: https://www.hackster.io/bowenfeng/hiking-pal-v1-07c02d

Dependencies:   FXOS8700CQ MODSERIAL mbed

Fork of Avnet_ATT_Cellular_IOT by Avnet

Revision:
87:ca75c5e785a7
Parent:
86:5ff234988f53
--- a/main.cpp	Thu Dec 22 06:59:20 2016 +0000
+++ b/main.cpp	Thu Dec 22 09:32:33 2016 +0000
@@ -107,6 +107,15 @@
     sprintf(v, "%lld", value);
 }
 
+long long find_longlong(const char* s, const char* token, const char** end) {
+    const char* tokenBegin = strstr(s, token);
+    if (tokenBegin != 0) {
+        *end = tokenBegin + strlen(token);
+        return strtoll(tokenBegin + strlen(token), NULL, 0);
+    }
+    return 0;
+}
+
 void find_longlong(const char* s, const char* token, char v[]) {
     const char* tokenBegin = strstr(s, token);
     if (tokenBegin != 0) {
@@ -114,6 +123,7 @@
     }
 }
 
+
 int send_receive(char* request, char* response) {
     int result = cell_modem_Sendreceive(request, response);
     SetLedColor(result ? OK_COLOR : ERROR_COLOR);
@@ -125,12 +135,32 @@
     return send_receive(request, response);
 }
 
-void find_first_hiking(char hikingId[]) {
+void find_latest_hiking(char hikingId[]) {
     char request[512];
     char response[512];
     sprintf(request, "GET %s/hikings HTTP/1.1\r\nHost: %s\r\n\r\n", FLOW_BASE_URL, MY_SERVER_URL);
     if (send_receive(&request[0], &response[0])) {
-        find_longlong(response, "\"id\":", hikingId);
+        long long llv;
+        long long latestId = 0;
+        const char* begin = response;
+        PRINTF("%s\n\n", begin);
+        
+        char token[] = "\"id\":";
+        for (;;) {
+            llv = find_longlong(begin, token, &begin);
+            
+            PRINTF("---> %lld\n", llv);
+            PRINTF("%s\n", begin);
+            
+            if (llv == 0) {
+                break;
+            }
+            if (llv > latestId) {
+                latestId = llv;
+            }
+        }
+        sprintf(hikingId, "%lld", latestId);
+        PRINTF("LATEST HIKING ID: %lld", latestId);
     }
 }
 
@@ -189,7 +219,7 @@
     
     sprintf(sessionName, "IoT-kit-%d", rand() % 1000);
     
-    find_first_hiking(hid);
+    find_latest_hiking(hid);
     PRINTF("Found Hiking ID: ");
     PRINTF(hid);
     PRINTF("\r\n");