Implemented polling code to check button press and change speed of button flashing.

Fork of digitalInPolling_sample by William Marsh

Revision:
3:17c6a539bd7c
Parent:
2:cd1fe8c29793
--- a/main.cpp	Tue Jan 16 18:02:44 2018 +0000
+++ b/main.cpp	Thu Feb 01 12:24:02 2018 +0000
@@ -49,15 +49,42 @@
 /*  ---- Main function (default thread) ----
     Note that if this thread completes, nothing else works
  */
+enum states { flashing, timeToCheck }; // flsh thread states
 int main() {
-    led = 1 ;  // Initially off
+    int speed = 200;
+    states state = flashing;
+    int cycleCounter = 0;
+    led = 0; // LED is on by default
+    
     pollT.start(callback(polling));
 
     while(true) {
-        if (pressEvent) {
-            pressEvent = 0 ; // clear the event variable
-            led = !led ;
+        Thread::wait(100);
+        cycleCounter++;
+        
+        if (cycleCounter == 1) {
+            state = timeToCheck;
         }
-        Thread::wait(100) ;
+        
+        switch (state) {
+            case flashing:
+                if (cycleCounter == speed / 100) {
+                    led = !led;
+                    cycleCounter = 0;
+                }
+                break;
+            case timeToCheck:
+                if (pressEvent) {
+                    cycleCounter = 0;
+                    pressEvent = 0 ; // clear the event variable
+                    if (speed < 1000) {
+                        speed = speed + 200;
+                    } else {
+                        speed = 200;
+                    }
+                }
+                state = flashing;
+                break;
+        }
     }
 }
\ No newline at end of file