still need some modification
Dependencies: mbed-http DebounceIn PinDetect OneButton
Revision 1:1a06bde4e0db, committed 2019-04-03
- Comitter:
- nadaanas1985
- Date:
- Wed Apr 03 11:55:23 2019 +0000
- Parent:
- 0:454abaa26f3c
- Child:
- 2:1d2a43e66b41
- Commit message:
- ECH_last version
Changed in this revision
--- a/ECH_V003.cpp Mon Mar 25 19:49:24 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-#include "select-demo.h"
-
-#if DEMO == DEMO_HTTP
-
-#include "rtos.h"
-#include "mbed.h"
-#include "http_request.h"
-#include "network-helper.h"
-#include "mbed_mem_trace.h"
-#include "PinDetect.h"
-
-
-
-
-//FINITE STATE MACHINE EVENTS
-#define NO_EVENT 0
-#define TIME_OUT 1
-#define BUTTON_PRESS_1 2
-#define BUTTON_PRESS_2 3
-#define TILT 3
-#define PUSH 4
-
-//STATES
-#define STATE_0 0
-#define STATE_1 1
-#define STATE_2 2
-
-
-//pass event via message queue
-typedef struct {
- int event; /* AD result of measured voltage */
-} message_t;
-
-MemoryPool<message_t, 16> mpool;
-Queue<message_t, 16> queue;
-
-//Digital input
-//DigitalIn coin(p14);
-PinDetect button_1(p23);
-PinDetect button_2(p24);
-
-//Global varible
-int button_press_1=0;
-int button_press_2=0;
-int button_press_Wait=0;
-
-
-//leds for debug
-DigitalOut led4(LED4); //LED
-DigitalOut led3(LED3); //LED
-DigitalOut led2(LED2); //LED
-DigitalOut myled(LED1);
-
-//Relays:
-
-DigitalOut Relay_1(p11);
-DigitalOut Relay_2(p12);
-
-
-
-//Mutex
-Mutex flag_mutex;
-
-
-void button_1_event_thread(void const *argument)
-{
-
-
- while (true)
- {
- //Thread::wait(10);
- if (button_press_1 == 1 && button_press_2 == 0 && button_press_Wait==0) {
-
- //event via a message queue
- button_press_Wait=1;
- message_t *message = mpool.alloc();
- message->event = BUTTON_PRESS_1;
- queue.put(message);
-
- led3 = !led3;
- Thread::wait(5000);
- }
-
- }
-}
-
-
-void button_2_event_thread(void const *argument)
-{
-
-
- while (true)
- {
- //Thread::wait(10);
- if (button_press_2 == 1 && button_press_1 == 0 && button_press_Wait==0) {
-
- //event via a message queue
- button_press_Wait = 1;
- message_t *message = mpool.alloc();
- message->event = BUTTON_PRESS_2;
- queue.put(message);
-
- led2 = !led2;
- Thread::wait(5000);
-
- }
-
- }
-}
-
-
-void timeout_event(void const *n)
-{
-
- //event via a message queue
- message_t *message = mpool.alloc();
- message->event = TIME_OUT;
- queue.put(message);
-
- led4 = !led4;
-
-}
-
-
-void button_1_hit_callback()
-{
-//Flash_LED_Thread.signal_set(0x1);
-
- button_press_1=1;
-
-}
-
-void button_2_hit_callback()
-{
-//Flash_LED_Thread.signal_set(0x1);
-
- button_press_2=1;
-
-}
-
-
-
-
-
-void dump_response_1(HttpResponse* res)
-{
-
- Relay_1=0;
- Relay_2=1;
-
-
- printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
- printf("Headers:\n");
- 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 (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-
- Thread::wait(5000);
- Relay_1=1;
-
- Thread::wait(5000);
- button_press_2 = 0;
- button_press_1 = 0;
- button_press_Wait = 0;
-
-}
-
-
-void dump_response_2(HttpResponse* res)
-{
- Relay_1=1;
- Relay_2=0;
-
- printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
- printf("Headers:\n");
- 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 (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-
-
- Thread::wait(5000);
- Relay_2=1;
-
- Thread::wait(5000);
- button_press_2 = 0;
- button_press_1 = 0;
-
- button_press_Wait = 0;
-
-
-}
-
-
-int main()
-{
-
-
- Relay_1=1;
-
- Relay_2=1;
- //Thread fsm(fsm_thread);
- Thread button_1_event(button_1_event_thread);
- Thread button_2_event(button_2_event_thread);
-
-
-
- RtosTimer timer(timeout_event, osTimerPeriodic, (void *)0);
-
-
- button_1.mode(PullUp);
- button_2.mode(PullUp);
-
- //Interrupts
- /* button_1.fall(&Button_1_Inter);
- button_2.fall(&Button_2_Inter);*/
-
- // Setup Interrupt callback function for a pb hit
- button_1.attach_deasserted(& button_1_hit_callback);
- // Start sampling pb input using interrupts
- button_1.setSampleFrequency();
-
- // Setup Interrupt callback function for a pb hit
- button_2.attach_deasserted(& button_2_hit_callback);
- // Start sampling pb input using interrupts
- button_2.setSampleFrequency();
-
-
-
-
- int state = STATE_0;
-
- //network setup
- NetworkInterface* network = connect_to_default_network_interface();
- if (!network)
- {
- printf("Cannot connect to the network, see serial output\n");
- //return 1;
- }
- if(network)
- myled=1;
-
- while (true) {
-
-
- switch(state) {
- case STATE_0:
- osEvent evt = queue.get();
- if (evt.status == osEventMessage)
- {
- message_t *message = (message_t*)evt.value.p;
-
-
- if(message->event == BUTTON_PRESS_1)
- {
-
- HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://192.168.0.57:5500/mch/kick");
-
- post_req->set_header("Content-Type", "application/json");
-
-
- const char body[] = "{\"hello\":\"Nada\"}";
-
- 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;
-
- button_press_2 = 0;
- button_press_1 = 0;
- }
- else
- {
-
- printf("\n----- HTTP POST response 1-----\n");
-
- dump_response_1(post_res);
-
- //Thread::wait(5000);
-
-
-
- delete post_req;
- }
-
- state = STATE_0;
- }
- else if(message->event == BUTTON_PRESS_2)
- {
-
- HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://192.168.0.57:5500/mch/call");
-
- post_req->set_header("Content-Type", "application/json");
-
-
- 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;
-
- button_press_2 = 0;
- button_press_1 = 0;
- }
- else
- {
-
- printf("\n----- HTTP POST response 2-----\n");
-
- dump_response_2(post_res);
-
- delete post_req;
- //Thread::wait(5000);
-
-
-
-
- }
- state = STATE_0;
- }
-
- mpool.free(message);
- }
-
- timer.start(15000);
-
- break;
-
- case STATE_1:
-
- evt = queue.get();
- if (evt.status == osEventMessage)
- {
- message_t *message = (message_t*)evt.value.p;
-
-
- if(message->event == BUTTON_PRESS_1)
- {
-
- state = STATE_0;
- }
-
- mpool.free(message);
- }
-
- timer.start(10000);
-
- break;
-
-
- }//End of switch
-
- //toggle led for local testing
- //led2= !led2;
-
- }//end of while(1)
-
-}
-
-#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ECH_V004.cpp Wed Apr 03 11:55:23 2019 +0000
@@ -0,0 +1,368 @@
+#include "select-demo.h"
+
+#if DEMO == DEMO_HTTP
+
+#include "rtos.h"
+#include "mbed.h"
+#include "http_request.h"
+#include "network-helper.h"
+#include "mbed_mem_trace.h"
+#include "PinDetect.h"
+
+
+
+
+//FINITE STATE MACHINE EVENTS
+#define NO_EVENT 0
+#define TIME_OUT 1
+#define BUTTON_PRESS_1 2
+#define BUTTON_PRESS_2 3
+#define TILT 3
+#define PUSH 4
+
+//STATES
+#define STATE_0 0
+#define STATE_1 1
+#define STATE_2 2
+
+
+//pass event via message queue
+typedef struct {
+ int event; /* AD result of measured voltage */
+} message_t;
+
+MemoryPool<message_t, 16> mpool;
+Queue<message_t, 16> queue;
+
+//Digital input
+//DigitalIn coin(p14);
+PinDetect button_1(p23);
+PinDetect button_2(p24);
+
+//Global varible
+int button_press_1=0;
+int button_press_2=0;
+int button_press_Wait=0;
+
+
+//leds for debug
+DigitalOut led4(LED4); //LED
+DigitalOut led3(LED3); //LED
+DigitalOut led2(LED2); //LED
+DigitalOut myled(LED1);
+
+//Relays:
+
+DigitalOut Relay_1(p11);
+DigitalOut Relay_2(p12);
+
+
+
+//Mutex
+Mutex flag_mutex;
+
+
+void button_1_event_thread(void const *argument)
+{
+
+
+ while (true)
+ {
+ //Thread::wait(10);
+ if (button_press_1 == 1 && button_press_2 == 0 && button_press_Wait==0) {
+
+ //event via a message queue
+ button_press_Wait=1;
+ message_t *message = mpool.alloc();
+ message->event = BUTTON_PRESS_1;
+ queue.put(message);
+
+ led3 = !led3;
+ Thread::wait(5000);
+ }
+
+ }
+}
+
+
+void button_2_event_thread(void const *argument)
+{
+
+
+ while (true)
+ {
+ //Thread::wait(10);
+ if (button_press_2 == 1 && button_press_1 == 0 && button_press_Wait==0) {
+
+ //event via a message queue
+ button_press_Wait = 1;
+ message_t *message = mpool.alloc();
+ message->event = BUTTON_PRESS_2;
+ queue.put(message);
+
+ led2 = !led2;
+ Thread::wait(5000);
+
+ }
+
+ }
+}
+
+
+void timeout_event(void const *n)
+{
+
+ //event via a message queue
+ message_t *message = mpool.alloc();
+ message->event = TIME_OUT;
+ queue.put(message);
+
+ led4 = !led4;
+
+}
+
+
+void button_1_hit_callback()
+{
+//Flash_LED_Thread.signal_set(0x1);
+
+ button_press_1=1;
+
+}
+
+void button_2_hit_callback()
+{
+//Flash_LED_Thread.signal_set(0x1);
+
+ button_press_2=1;
+
+}
+
+
+
+
+
+void dump_response_1(HttpResponse* res)
+{
+
+ Relay_1=0;
+ Relay_2=1;
+
+
+ printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
+
+ printf("Headers:\n");
+ 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 (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
+
+ Thread::wait(5000);
+ Relay_1=1;
+
+ Thread::wait(5000);
+ button_press_2 = 0;
+ button_press_1 = 0;
+ button_press_Wait = 0;
+
+}
+
+
+void dump_response_2(HttpResponse* res)
+{
+ Relay_1=1;
+ Relay_2=0;
+
+ printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
+
+ printf("Headers:\n");
+ 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 (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
+
+
+ Thread::wait(5000);
+ Relay_2=1;
+
+ Thread::wait(5000);
+ button_press_2 = 0;
+ button_press_1 = 0;
+
+ button_press_Wait = 0;
+
+
+}
+
+
+int main()
+{
+
+
+ Relay_1=1;
+
+ Relay_2=1;
+ //Thread fsm(fsm_thread);
+ Thread button_1_event(button_1_event_thread);
+ Thread button_2_event(button_2_event_thread);
+
+
+
+ RtosTimer timer(timeout_event, osTimerPeriodic, (void *)0);
+
+
+ button_1.mode(PullUp);
+ button_2.mode(PullUp);
+
+ //Interrupts
+ /* button_1.fall(&Button_1_Inter);
+ button_2.fall(&Button_2_Inter);*/
+
+ // Setup Interrupt callback function for a pb hit
+ button_1.attach_deasserted(& button_1_hit_callback);
+ // Start sampling pb input using interrupts
+ button_1.setSampleFrequency();
+
+ // Setup Interrupt callback function for a pb hit
+ button_2.attach_deasserted(& button_2_hit_callback);
+ // Start sampling pb input using interrupts
+ button_2.setSampleFrequency();
+
+
+
+
+ int state = STATE_0;
+
+ //network setup
+ NetworkInterface* network = connect_to_default_network_interface();
+ if (!network)
+ {
+ printf("Cannot connect to the network, see serial output\n");
+ //return 1;
+ }
+ if(network)
+ myled=1;
+
+ while (true) {
+
+
+ switch(state) {
+ case STATE_0:
+ osEvent evt = queue.get();
+ if (evt.status == osEventMessage)
+ {
+ message_t *message = (message_t*)evt.value.p;
+
+
+ if(message->event == BUTTON_PRESS_1)
+ {
+ printf("HttpRequest Sending");
+ printf(network->get_gateway);
+ HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://192.168.0.57:5500/mch/kick");
+
+ post_req->set_header("Content-Type", "application/json");
+
+
+ const char body[] = "{\"hello\":\"Nada\"}";
+
+ 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;
+
+ button_press_2 = 0;
+ button_press_1 = 0;
+ }
+ else
+ {
+
+ printf("\n----- HTTP POST response 1-----\n");
+
+ dump_response_1(post_res);
+
+ //Thread::wait(5000);
+
+
+
+ delete post_req;
+ }
+
+ state = STATE_0;
+ }
+ else if(message->event == BUTTON_PRESS_2)
+ {
+
+ HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://192.168.0.57:5500/mch/call");
+
+ post_req->set_header("Content-Type", "application/json");
+
+
+ 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;
+
+ button_press_2 = 0;
+ button_press_1 = 0;
+ }
+ else
+ {
+
+ printf("\n----- HTTP POST response 2-----\n");
+
+ dump_response_2(post_res);
+
+ delete post_req;
+ //Thread::wait(5000);
+
+
+
+
+ }
+ state = STATE_0;
+ }
+
+ mpool.free(message);
+ }
+
+ timer.start(15000);
+
+ break;
+
+ case STATE_1:
+
+ evt = queue.get();
+ if (evt.status == osEventMessage)
+ {
+ message_t *message = (message_t*)evt.value.p;
+
+
+ if(message->event == BUTTON_PRESS_1)
+ {
+
+ state = STATE_0;
+ }
+
+ mpool.free(message);
+ }
+
+ timer.start(10000);
+
+ break;
+
+
+ }//End of switch
+
+ //toggle led for local testing
+ //led2= !led2;
+
+ }//end of while(1)
+
+}
+
+#endif
--- a/mbed-os.lib Mon Mar 25 19:49:24 2019 +0000 +++ b/mbed-os.lib Wed Apr 03 11:55:23 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#c966348d3f9ca80843be7cdc9b748f06ea73ced0 +https://github.com/ARMmbed/mbed-os/#51d55508e8400b60af467005646c4e2164738d48
--- a/network-helper.h Mon Mar 25 19:49:24 2019 +0000
+++ b/network-helper.h Wed Apr 03 11:55:23 2019 +0000
@@ -13,6 +13,7 @@
printf("[NWKH] Connecting to network...\n");
NetworkInterface* network = NetworkInterface::get_default_instance();
+ network->set_network("192.168.1.97","255.255.252.0","192.168.0.1");
if (!network) {
printf("[NWKH] No network interface found, select an interface in 'network-helper.h'\n");