The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Revision:
68:f37f3b9c9f0b
Parent:
66:9c8f0e3462fb
Child:
89:552587b429a1
diff -r a9913a65894f -r f37f3b9c9f0b Ticker.h
--- a/Ticker.h	Thu Sep 19 15:44:18 2013 +0300
+++ b/Ticker.h	Wed Oct 23 16:23:06 2013 +0300
@@ -18,7 +18,6 @@
 
 #include "TimerEvent.h"
 #include "FunctionPointer.h"
-#include "CallChain.h"
 
 namespace mbed {
 
@@ -63,34 +62,9 @@
      *
      *  @param fptr pointer to the function to be called
      *  @param t the time between calls in seconds
-     *
-     *  @returns
-     *  The function object created for 'fptr'
      */
-    pFunctionPointer_t attach(void (*fptr)(void), float t) {
-        return attach_us(fptr, t * 1000000.0f);
-    }
-
-    /** Add a function to be called by the Ticker at the end of the call chain
-     *
-     *  @param fptr the function to add
-     *
-     *  @returns
-     *  The function object created for 'fptr'
-     */
-    pFunctionPointer_t add_function(void (*fptr)(void)) {
-        return add_function_helper(fptr);
-    }
-
-    /** Add a function to be called by the Ticker at the beginning of the call chain
-     *
-     *  @param fptr the function to add
-     *
-     *  @returns
-     *  The function object created for 'fptr'
-     */
-    pFunctionPointer_t add_function_front(void (*fptr)(void)) {
-        return add_function_helper(fptr, true);
+    void attach(void (*fptr)(void), float t) {
+        attach_us(fptr, t * 1000000.0f);
     }
 
     /** Attach a member function to be called by the Ticker, specifiying the interval in seconds
@@ -98,54 +72,20 @@
      *  @param tptr pointer to the object to call the member function on
      *  @param mptr pointer to the member function to be called
      *  @param t the time between calls in seconds
-     *
-     *  @returns
-     *  The function object created for 'tptr' and 'mptr'
      */
     template<typename T>
-    pFunctionPointer_t attach(T* tptr, void (T::*mptr)(void), float t) {
-        return attach_us(tptr, mptr, t * 1000000.0f);
-    }
-
-    /** Add a function to be called by the Ticker at the end of the call chain
-     *
-     *  @param tptr pointer to the object to call the member function on
-     *  @param mptr pointer to the member function to be called
-     *
-     *  @returns
-     *  The function object created for 'tptr' and 'mptr'
-     */
-    template<typename T>
-    pFunctionPointer_t add_function(T* tptr, void (T::*mptr)(void)) {
-        return add_function_helper(tptr, mptr);
-    }
-
-    /** Add a function to be called by the Ticker at the beginning of the call chain
-     *
-     *  @param tptr pointer to the object to call the member function on
-     *  @param mptr pointer to the member function to be called
-     *
-     *  @returns
-     *  The function object created for 'tptr' and 'mptr'
-     */
-    template<typename T>
-    pFunctionPointer_t add_function_front(T* tptr, void (T::*mptr)(void)) {
-        return add_function_helper(tptr, mptr, true);
+    void attach(T* tptr, void (T::*mptr)(void), float t) {
+        attach_us(tptr, mptr, t * 1000000.0f);
     }
 
     /** Attach a function to be called by the Ticker, specifiying the interval in micro-seconds
      *
      *  @param fptr pointer to the function to be called
      *  @param t the time between calls in micro-seconds
-     *
-     *  @returns
-     *  The function object created for 'fptr'
      */
-    pFunctionPointer_t attach_us(void (*fptr)(void), unsigned int t) {
-        _chain.clear();
-        pFunctionPointer_t pf = _chain.add(fptr);
+    void attach_us(void (*fptr)(void), unsigned int t) {
+        _function.attach(fptr);
         setup(t);
-        return pf;
     }
 
     /** Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds
@@ -153,50 +93,23 @@
      *  @param tptr pointer to the object to call the member function on
      *  @param mptr pointer to the member function to be called
      *  @param t the time between calls in micro-seconds
-     *
-     *  @returns
-     *  The function object created for 'tptr' and 'mptr'
      */
     template<typename T>
-    pFunctionPointer_t attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) {
-        _chain.clear();
-        pFunctionPointer_t pf = _chain.add(tptr, mptr);
+    void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) {
+        _function.attach(tptr, mptr);
         setup(t);
-        return pf;
     }
 
     /** Detach the function
      */
     void detach();
 
-    /** Remove a function from the Ticker's call chain
-     *
-     *  @param pf the function object to remove
-     *
-     *  @returns
-     *  true if the function was found and removed, false otherwise
-     */
-    bool remove_function(pFunctionPointer_t pf) {
-        bool res = _chain.remove(pf);
-        if (res && _chain.size() == 0)
-            detach();
-        return res;
-    }
-
 protected:
     void setup(unsigned int t);
-    pFunctionPointer_t add_function_helper(void (*fptr)(void), bool front=false);
     virtual void handler();
 
-    template<typename T>
-    pFunctionPointer_t add_function_helper(T* tptr, void (T::*mptr)(void), bool front=false) {
-        if (_chain.size() == 0)
-            return NULL;
-        return front ? _chain.add_front(tptr, mptr) : _chain.add(tptr, mptr);
-    }
-
     unsigned int _delay;
-    CallChain _chain;
+    FunctionPointer _function;
 };
 
 } // namespace mbed