mbed

Fork of mbed-dev by mbed official

Revision:
160:d5399cc887bb
Parent:
149:156823d33999
Child:
176:af195413fb11
--- a/drivers/InterruptIn.cpp	Tue Feb 28 17:13:35 2017 +0000
+++ b/drivers/InterruptIn.cpp	Tue Mar 14 16:40:56 2017 +0000
@@ -27,8 +27,8 @@
                                         _fall() {
     // No lock needed in the constructor
 
-    _rise.attach(donothing);
-    _fall.attach(donothing);
+    _rise = donothing;
+    _fall = donothing;
 
     gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
     gpio_init_in(&gpio, pin);
@@ -53,10 +53,10 @@
 void InterruptIn::rise(Callback<void()> func) {
     core_util_critical_section_enter();
     if (func) {
-        _rise.attach(func);
+        _rise = func;
         gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
     } else {
-        _rise.attach(donothing);
+        _rise = donothing;
         gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
     }
     core_util_critical_section_exit();
@@ -65,10 +65,10 @@
 void InterruptIn::fall(Callback<void()> func) {
     core_util_critical_section_enter();
     if (func) {
-        _fall.attach(func);
+        _fall = func;
         gpio_irq_set(&gpio_irq, IRQ_FALL, 1);
     } else {
-        _fall.attach(donothing);
+        _fall = donothing;
         gpio_irq_set(&gpio_irq, IRQ_FALL, 0);
     }
     core_util_critical_section_exit();
@@ -77,8 +77,8 @@
 void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {
     InterruptIn *handler = (InterruptIn*)id;
     switch (event) {
-        case IRQ_RISE: handler->_rise.call(); break;
-        case IRQ_FALL: handler->_fall.call(); break;
+        case IRQ_RISE: handler->_rise(); break;
+        case IRQ_FALL: handler->_fall(); break;
         case IRQ_NONE: break;
     }
 }