test

Dependencies:   BLE_API nRF51822 mbed

Fork of KS7 by masaaki makabe

Branch:
KS3
Revision:
33:d7b53d548c33
Parent:
31:b5e19d153db4
--- a/exio.h	Mon Aug 01 08:58:31 2016 +0000
+++ b/exio.h	Wed Aug 10 06:56:36 2016 +0000
@@ -51,6 +51,14 @@
             _cnt = 0;
         }
     }
+    /*void display_unitT(void)
+    {
+        // 単位T表示
+        _row_out[6] |= (0x10 + 0x20 + 0x40);
+        _row_out[7] |= (0x01 + 0x08 + 0x40);
+         _cnt = 0;
+    }*/
+protected:
 /*100msec処理*/
     virtual void TickerCallback(void)
     {
@@ -68,17 +76,22 @@
                 if(_counter >= 10){ /*1sec*/
                     _swState = LongPressed;
                     //printf("LongPressed\r\n");
-                } else {
+                 } else {
                     _swState = Pressed;
                     //printf("Pressed\r\n");
                 }
             }
         } else {
             _counter++;
+            // スイッチ押された状態で1sec経過したらコールバック
+            if(_swFlag && _counter >= 10 && !_callFlag){
+                _callback.call();
+                _callFlag = true; // 1回コールすれば用済み
+            }
         }
         _lastSW = sw;
 #ifdef UART_DEBUG
-        //pc.printf("*");
+        //pc.printf("%d", sw);
 #endif
     }
     
@@ -86,6 +99,7 @@
 /*コンストラクタ*/
     exio() : io(P0_15, P0_13)
     {
+        _callFlag = false;
         _cnt = 0;
         _swFlag = false;
         _swState = None;
@@ -139,6 +153,20 @@
 #endif
     }
     
+    void attach(void (*func)(void))
+    {
+        _callback.attach(func);
+    }
+    /*template<typename T>
+    void attach(T *obj, void (T::*member)(void))
+    {
+        _callback.attach(obj, member);
+    }*/
+    void CallFlagClear()
+    {
+        _callFlag = false;
+    }
+    
 private:
     bool _swFlag;
     Switch_t _swState;
@@ -146,6 +174,8 @@
     Ticker _ticker;
     int _counter;
     int _cnt;
+    FunctionPointer _callback;
+    bool _callFlag;
     
 };