opdracht mqtt nucleo

Dependencies:   MQTT

Fork of PGO6_VoteController_template by Jens de hoog

Revision:
3:abfa79c5b7bd
Parent:
2:5b7d055dbc91
--- a/debounce_button.cpp	Tue Oct 31 09:01:56 2017 +0000
+++ b/debounce_button.cpp	Thu Oct 11 15:52:51 2018 +0000
@@ -15,17 +15,26 @@
         going to make optimisations.
 */
 
-/**
-    TODO
-    ----
-    This function:
-        -   stores the amount of clicks in a variable which is read by the main loop.
-        -   resets the click counter which is used inside this file.
-        -   lowers a flag which tells the main loop that the user stopped pressing the button
-            such that it can proceed its program.
-        -   turns the built-in LED off. Therefore, the user gets informed that the program stopped counting the clicks.
-*/
+
+// init the extern variables
+volatile int multiclick_state = 0;
+volatile int tempCount = 0;
+volatile bool button1_busy = false;
+volatile bool button1_pressed = false;
+volatile bool button1_enabled = true;
+DigitalOut myled(LED1);
+Timeout enableButtonTimer;
+Timeout resetButtonTimer;
+
 void button1_multiclick_reset_cb(void) {
+    //stores the amount of clicks in a variable which is read by the main loop.
+    multiclick_state = tempCount;
+    //resets the click counter which is used inside this file.
+    tempCount = 0;
+    //lowers a flag which tells the main loop that the user stopped pressing the button such that it can proceed its program.
+    button1_busy = false;
+    //turns the built-in LED off. Therefore, the user gets informed that the program stopped counting the clicks.
+    myled = 0;
     
 }
 
@@ -36,23 +45,28 @@
 */
 void button1_enabled_cb(void)
 {
-    
+    button1_enabled = true;
 }
 
-/**
-    TODO
-    ----
-    This function:
-        -   turns the built-in LED on, so the user gets informed that the program has started with counting clicks
-        -   disables the button such that the debouncer is active
-        -   enables the button again after a certain amount of time 
-            (use interrupts with "button1_enabled_cb()" as callback.
-        -   counts the amount of clicks within a period of 1 second
-        -   informs the main loop that the button has been pressed
-        -   informs the main loop that the user is clicking the button.
-            Therefore, this main loop cannot continue its procedure until the clicks within 1 second have been counted.
-*/
 void button1_onpressed_cb(void)
 {
-    
+    if(button1_enabled) {
+        //disables the button such that the debouncer is active
+        button1_enabled = false;
+        //enables the button again after a certain amount of time (use interrupts with "button1_enabled_cb()" as callback.)
+        enableButtonTimer.attach(callback(&button1_enabled_cb), 0.1);
+        //informs the main loop that the button has been pressed
+        button1_pressed = true;
+        //informs the main loop that the user is clicking the button.
+        //Therefore, this main loop cannot continue its procedure until the clicks within 1 second have been counted.
+        if(!button1_busy) {
+            //turns the built-in LED on, so the user gets informed that the program has started with counting clicks
+            myled = 1;
+            button1_busy = true;
+            resetButtonTimer.attach(callback(&button1_multiclick_reset_cb), 1);
+        }
+        //counts the amount of clicks within a period of 1 second
+        tempCount++;
+        
+    }
 }
\ No newline at end of file