Senses an earthquake with MPU6050 and gets time, coordenates and other details of the event with an Adafruit GPS. All the info is sent to an HTTP server
Dependencies: MPU6050 mbed-http MBed_Adafruit-GPS-Library
Revision 5:42f713b19337, committed 2017-02-23
- Comitter:
- Jan Jongboom
- Date:
- Thu Feb 23 13:58:24 2017 +0100
- Parent:
- 4:27fd8efb5bab
- Child:
- 6:4a3ed1515bed
- Commit message:
- Rely on Content-Length, allocate body on the heap
Changed in this revision
--- a/mbed-http.lib Thu Feb 23 12:36:59 2017 +0100 +++ b/mbed-http.lib Thu Feb 23 13:58:24 2017 +0100 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/sandbox/code/mbed-http/#959baaa89148 +https://developer.mbed.org/teams/sandbox/code/mbed-http/#2456c90f02e9
--- a/mbed_app.json Thu Feb 23 12:36:59 2017 +0100
+++ b/mbed_app.json Thu Feb 23 13:58:24 2017 +0100
@@ -33,7 +33,7 @@
"mbed-mesh-api.6lowpan-nd-channel-page": 0,
"mbed-mesh-api.6lowpan-nd-channel": 12,
"mbed-trace.enable": 0,
- "mbed-http.http-buffer-size": 8192
+ "mbed-http.http-buffer-size": 2048
},
"HEXIWEAR": {
"esp8266-tx": "PTD3",
--- a/source/main-http.cpp Thu Feb 23 12:36:59 2017 +0100
+++ b/source/main-http.cpp Thu Feb 23 13:58:24 2017 +0100
@@ -15,7 +15,7 @@
for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
printf("\t%s: %s\n", res->get_headers_fields()[ix].c_str(), res->get_headers_values()[ix].c_str());
}
- printf("\nBody:\n\n%s\n", res->get_body().c_str());
+ printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
}
int main() {
@@ -28,38 +28,42 @@
}
// Do a GET request to httpbin.org
- HttpRequest get_req(network, HTTP_GET, "http://httpbin.org/status/418");
+ {
+ HttpRequest* get_req = new HttpRequest(network, HTTP_GET, "http://httpbin.org/status/418");
- // By default the body is automatically parsed and stored in a string, this is memory heavy.
- // To receive chunked response, pass in a callback as third parameter to 'send'.
- HttpResponse* get_res = get_req.send();
- if (!get_res) {
- printf("HttpRequest failed (error code %d)\n", get_req.get_error());
- return 1;
+ // By default the body is automatically parsed and stored in a string, this is memory heavy.
+ // To receive chunked response, pass in a callback as third parameter to 'send'.
+ HttpResponse* get_res = get_req->send();
+ if (!get_res) {
+ printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+ return 1;
+ }
+
+ printf("\n----- HTTP GET response -----\n");
+ dump_response(get_res);
+
+ delete get_req;
}
- printf("\n----- HTTP GET response -----\n");
- dump_response(get_res);
-
- delete get_res;
-
// POST request to httpbin.org
- HttpRequest post_req(network, HTTP_POST, "http://httpbin.org/post");
- post_req.set_header("Content-Type", "application/json");
+ {
+ HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://httpbin.org/post");
+ post_req->set_header("Content-Type", "application/json");
- const char body[] = "{\"hello\":\"world\"}";
+ const char body[] = "{\"hello\":\"world\"}";
- HttpResponse* post_res = post_req.send(body, strlen(body));
- if (!post_res) {
- printf("HttpRequest failed (error code %d)\n", post_req.get_error());
- return 1;
+ HttpResponse* post_res = post_req->send(body, strlen(body));
+ if (!post_res) {
+ printf("HttpRequest failed (error code %d)\n", post_req->get_error());
+ return 1;
+ }
+
+ printf("\n----- HTTP POST response -----\n");
+ dump_response(post_res);
+
+ delete post_req;
}
- printf("\n----- HTTP POST response -----\n");
- dump_response(post_res);
-
- delete post_res;
-
Thread::wait(osWaitForever);
}
--- a/source/main-https.cpp Thu Feb 23 12:36:59 2017 +0100
+++ b/source/main-https.cpp Thu Feb 23 13:58:24 2017 +0100
@@ -67,7 +67,7 @@
for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
mbedtls_printf("\t%s: %s\n", res->get_headers_fields()[ix].c_str(), res->get_headers_values()[ix].c_str());
}
- mbedtls_printf("\nBody:\n\n%s\n", res->get_body().c_str());
+ mbedtls_printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
}
int main() {
@@ -78,42 +78,46 @@
return 1;
}
- printf("\n----- HTTPS GET request -----\n");
+ // GET request to developer.mbed.org
+ {
+ printf("\n----- HTTPS GET request -----\n");
- // @todo: when I declare this on the stack we hard fault (run out of memory??)
- HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, "https://developer.mbed.org/media/uploads/mbed_official/hello.txt");
- get_req->set_debug(true);
+ HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, "https://developer.mbed.org/media/uploads/mbed_official/hello.txt");
+ get_req->set_debug(true);
- HttpResponse* get_res = get_req->send();
- if (!get_res) {
- printf("HttpRequest failed (error code %d)\n", get_req->get_error());
- return 1;
+ HttpResponse* get_res = get_req->send();
+ if (!get_res) {
+ printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+ return 1;
+ }
+ printf("\n----- HTTPS GET response -----\n");
+ dump_response(get_res);
+
+ delete get_req;
}
- printf("\n----- HTTPS GET response -----\n");
- dump_response(get_res);
-
- delete get_req;
// POST request to httpbin.org
- printf("\n----- HTTPS POST request -----\n");
+ {
+ printf("\n----- HTTPS POST request -----\n");
- HttpsRequest* post_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_POST, "https://httpbin.org/post");
- post_req->set_debug(true);
- post_req->set_header("Content-Type", "application/json");
+ HttpsRequest* post_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_POST, "https://httpbin.org/post");
+ post_req->set_debug(true);
+ post_req->set_header("Content-Type", "application/json");
- const char body[] = "{\"hello\":\"world\"}";
+ const char body[] = "{\"hello\":\"world\"}";
- HttpResponse* post_res = post_req->send(body, strlen(body));
- if (!post_res) {
- printf("HttpRequest failed (error code %d)\n", post_req->get_error());
- return 1;
+ HttpResponse* post_res = post_req->send(body, strlen(body));
+ if (!post_res) {
+ printf("HttpRequest failed (error code %d)\n", post_req->get_error());
+ return 1;
+ }
+
+ printf("\n----- HTTPS POST response -----\n");
+ dump_response(post_res);
+
+ delete post_req;
}
- printf("\n----- HTTP POST response -----\n");
- dump_response(post_res);
-
- delete post_req;
-
Thread::wait(osWaitForever);
}
