Dependents:   TEST_with_daniel

Files at this revision

API Documentation at this revision

Comitter:
jurgis
Date:
Sat Jan 07 16:00:30 2017 +0000
Commit message:
Blinker library initial commit

Changed in this revision

Blinker.cpp Show annotated file Show diff for this revision Revisions of this file
Blinker.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r ed332628f798 Blinker.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Blinker.cpp	Sat Jan 07 16:00:30 2017 +0000
@@ -0,0 +1,66 @@
+/** 
+ * @file    Blinker.cpp
+ * @brief   Digital pin blinking library
+ * @author  Jurgis Jurksta
+ * @version 1.0.0
+ * @see     
+ *
+ * Copyright (c) 2017, Jurgis Jurksta
+ */
+
+#include "Blinker.h"
+
+namespace jj
+{
+    Blinker::Blinker(DigitalOut& pin, Timer& timer)
+        : _pin(pin), _timer(timer)
+    {
+        _blink = false;
+    }
+    
+    
+    void Blinker::update()
+    {
+        // do not proceed if blinking is not allowed
+        if (_blink == false)
+            return;
+
+        bool pinIsOn = _pin == 1;
+        int toggleTimeMs = pinIsOn ? _onTimeMs : _offTimeMs;
+
+        if (_timer.read_ms() - _lastToggleTimeMs >= toggleTimeMs)
+        {
+            _lastToggleTimeMs = _timer.read_ms();
+            _pin = !_pin;
+        }
+    }
+
+
+    void Blinker::on()
+    {
+        _blink = true;
+        _pin = 1;
+    }
+    
+    
+    void Blinker::off()
+    {
+        _blink = false;
+        _pin = 0;
+    }
+
+
+    void Blinker::blink(int onTimeMs, int offTimeMs)
+    {
+        _blink = true;
+        _onTimeMs = onTimeMs;
+        _offTimeMs = offTimeMs;
+        _lastToggleTimeMs = _timer.read_ms();
+    }
+
+
+    void Blinker::blink(int timeMs)
+    {
+        blink(timeMs, timeMs);
+    }
+}
diff -r 000000000000 -r ed332628f798 Blinker.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Blinker.h	Sat Jan 07 16:00:30 2017 +0000
@@ -0,0 +1,40 @@
+/** 
+ * @file    Blinker.h
+ * @brief   Digital pin blinking library
+ * @author  Jurgis Jurksta
+ * @version 1.0.0
+ * @see     
+ *
+ * Copyright (c) 2017, Jurgis Jurksta
+ */
+
+#ifndef JJ_BLINKER_H
+#define JJ_BLINKER_H
+
+#include "mbed.h"
+
+namespace jj
+{
+    /** Digital pin blinking class
+     */
+    class Blinker
+    {
+        public:
+            Blinker(DigitalOut& pin, Timer& timer);
+            void update();
+            void on();
+            void off();
+            void blink(int onTimeMs, int offTimeMs);
+            void blink(int timeMs);
+            
+        private:
+            DigitalOut& _pin;
+            Timer& _timer;
+            bool _blink;
+            int _onTimeMs;
+            int _offTimeMs;
+            uint32_t _lastToggleTimeMs;
+    };
+}
+
+#endif