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
Diff: main.cpp
- 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");