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.
Dependencies: C12832 MMA7660 mbed-http
Fork of http-example by
Diff: source/Core.cpp
- Revision:
- 15:8965fc128e7b
diff -r 3c173847e681 -r 8965fc128e7b source/Core.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/source/Core.cpp Wed May 03 12:06:22 2017 +0000
@@ -0,0 +1,151 @@
+#include "Core.h"
+
+// Speaker
+PwmOut spkr(D6);
+
+// Using Arduino pin notation
+C12832 lcd(D11, D13, D12, D7, D10);
+
+// Orientation
+MMA7660 MMA(D14,D15);
+
+// Led color
+DigitalOut r(D5);
+DigitalOut b(D8);
+DigitalOut g(D9);
+
+// Used for USB connection
+Serial host(USBTX, USBRX);
+
+Core::Core() {
+ r = 1.0;
+ b = 1.0;
+ g = 1.0;
+ _message = "Searching..";
+ _quiet = true;
+ host.baud(38400);
+
+ _network = easy_connect(true);
+ if (!_network) {
+ printf("Cannot connect to the network, see serial output");
+ return;
+ }
+}
+
+bool Core::doorIsOpening() {
+ if (MMA.x() > 0.2 || MMA.x() < -0.2) {
+ return true;
+ }
+ return false;
+}
+
+void Core::displayMessageOnScreen() {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("%s", _message); // Around 60max
+ printf("%s\n", _message);
+}
+
+void Core::triggerAlarm() {
+ static bool state = true;
+
+ if (state) {
+ r = 0;
+ g = 1;
+ b = 1;
+ spkr.period(1.0/1000);
+ spkr=0.5;
+
+ } else {
+ r = 1;
+ g = 1;
+ b = 0;
+ spkr.period(1.0/500);
+ spkr=0.5;
+ }
+ state = !state;
+}
+
+void Core::dumpResponseGet(HttpResponse* res) {
+ char *pch;
+ char *cstr = new char[res->get_body_as_string().length() + 1];
+
+ strcpy(cstr, res->get_body_as_string().c_str());
+ pch = strtok (cstr,"{}:,");
+ int i = 0;
+ while (pch != NULL) {
+ pch = strtok (NULL, "{}:,");
+ if (i == 2) {
+ _message = pch;
+ } else if (i == 4) {
+ if (strcmp(pch, "false") == 0) {
+ _quiet = false;
+ } else {
+ _quiet = true;
+ }
+
+ }
+ i++;
+ }
+}
+
+void Core::getRequest() {
+ HttpRequest* get_req = new HttpRequest(_network, HTTP_GET, "http://10.0.0.91:8080/api/alarms/room1");
+ HttpResponse* get_res = get_req->send();
+
+ if (!get_res) {
+ printf("HttpRequest get failed (error code %d)\n", get_req->get_error());
+ return;
+ }
+
+ dumpResponseGet(get_res);
+
+ printf("\n end response get\n");
+ delete get_req;
+}
+
+void Core::putRequest() {
+ HttpRequest* put_req = new HttpRequest(_network, HTTP_PUT, "http://10.0.0.91:8080/api/alarms/room1");
+ put_req->set_header("Content-Type", "application/json");
+
+ const char body[] = "{\"message\":\"Warning - Intruder !\", \"quiet\":\"false\"}";
+
+ HttpResponse* put_res = put_req->send(body, strlen(body));
+ if (!put_res) {
+ printf("HttpRequest put failed (error code %d)\n", put_req->get_error());
+ return;
+ }
+ delete put_req;
+}
+
+void Core::shutDownAlarm(void) {
+ r = 1;
+ g = 1;
+ b = 1;
+ spkr=0;
+}
+
+void Core::guard(void) {
+ // Inifinte loop
+ while (1) {
+ if (doorIsOpening()) {
+ putRequest(); // Update infos from local to API
+ }
+ getRequest(); // Update infos from API to local
+ if (_quiet == false) {
+ triggerAlarm();
+ } else {
+ shutDownAlarm();
+ }
+ displayMessageOnScreen();
+ wait(0.5);
+ }
+}
+
+int main()
+{
+ Core *core = new Core();
+
+ core->guard();
+ delete core;
+}
\ No newline at end of file
