Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: WNCInterface_M2Xdemo ATT_WNCInterface_Info WNCInterface_HTTP_example Public_IoT_M2X_Cellular_Demo
Fork of M2XStreamClient by
Revision 2:7ea7ab05f120, committed 2014-09-07
- Comitter:
- NetArc
- Date:
- Sun Sep 07 05:28:55 2014 +0000
- Parent:
- 0:f479e4f4db0e
- Child:
- 3:2b527486e864
- Commit message:
- fix for parsing numeric stream values
Changed in this revision
--- a/M2XStreamClient.cpp Wed Feb 12 19:43:34 2014 +0000
+++ b/M2XStreamClient.cpp Sun Sep 07 05:28:55 2014 +0000
@@ -7,6 +7,25 @@
const char* M2XStreamClient::kDefaultM2XHost = "api-m2x.att.com";
+// import from jsonlite.c
+typedef uint8_t parse_state;
+struct jsonlite_parser_struct {
+ const uint8_t *cursor;
+ const uint8_t *limit;
+ const uint8_t *token_start;
+ const uint8_t *buffer;
+
+ uint8_t *buffer_own;
+ uint8_t *rest;
+ size_t rest_size;
+
+ parse_state *current;
+ const parse_state *last;
+
+ jsonlite_result result;
+ jsonlite_parser_callbacks callbacks;
+};
+
int print_encoded_string(Print* print, const char* str);
int tolower(int ch);
@@ -287,7 +306,7 @@
int M2XStreamClient::readStreamValue(stream_value_read_callback callback,
void* context) {
- const int BUF_LEN = 32;
+ const int BUF_LEN = 64;
char buf[BUF_LEN];
int length = readContentLength();
@@ -311,6 +330,7 @@
jsonlite_parser_callbacks cbs = jsonlite_default_callbacks;
cbs.key_found = on_stream_key_found;
cbs.string_found = on_stream_string_found;
+ cbs.number_found = on_stream_string_found;
cbs.context.client_state = &state;
jsonlite_parser p = jsonlite_parser_init(jsonlite_parser_estimate_size(5));
@@ -319,7 +339,6 @@
jsonlite_result result = jsonlite_result_unknown;
while (index < length) {
int i = 0;
-
DBG("%s", "Received Data: ");
while ((i < BUF_LEN) && _client->available()) {
buf[i++] = _client->read();
@@ -342,8 +361,8 @@
close();
return E_JSON_INVALID;
}
-
- index += i;
+
+ index += i - p->rest_size;
}
jsonlite_parser_release(p);
--- a/M2XStreamClient.h Wed Feb 12 19:43:34 2014 +0000 +++ b/M2XStreamClient.h Sun Sep 07 05:28:55 2014 +0000 @@ -3,6 +3,7 @@ #define MIN(a, b) (((a) > (b))?(b):(a)) +#define DEBUG #define MBED_PLATFORM #ifdef ARDUINO_PLATFORM
--- a/StreamParseFunctions.h Wed Feb 12 19:43:34 2014 +0000
+++ b/StreamParseFunctions.h Sun Sep 07 05:28:55 2014 +0000
@@ -3,7 +3,7 @@
// Data structures and functions used to parse stream values
-#define STREAM_BUF_LEN 20
+#define STREAM_BUF_LEN 64
typedef struct {
uint8_t state;
@@ -45,7 +45,6 @@
{
stream_parsing_context_state* state =
(stream_parsing_context_state*) context->client_state;
-
if (TEST_IS_AT(state->state)) {
strncpy(state->at_str, (const char*) token->start,
MIN(token->end - token->start, STREAM_BUF_LEN));
