Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 EthernetInterface LM75B MMA7660 MQTT mbed-rtos mbed
Fork of IBMIoTClientEthernetExample by
Diff: MQTT/FP/FP.h
- Revision:
- 9:58eb378727d9
- Parent:
- 8:80d49dd91542
- Child:
- 10:0b5e0dfee08e
diff -r 80d49dd91542 -r 58eb378727d9 MQTT/FP/FP.h
--- a/MQTT/FP/FP.h Wed Oct 01 13:27:35 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/**
- * @file FP.h
- * @brief Core Utility - Templated Function Pointer Class
- * @author sam grove
- * @version 1.1
- * @see http://mbed.org/users/sam_grove/code/FP/
- *
- * Copyright (c) 2013
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef FP_H
-#define FP_H
-
-/** Example using the FP Class with global functions
- * @code
- * #include "mbed.h"
- * #include "FP.h"
- *
- * FP<void,bool>fp;
- * DigitalOut myled(LED1);
- *
- * void handler(bool value)
- * {
- * myled = value;
- * return;
- * }
- *
- * int main()
- * {
- * fp.attach(&handler);
- *
- * while(1)
- * {
- * fp(1);
- * wait(0.2);
- * fp(0);
- * wait(0.2);
- * }
- * }
- * @endcode
- */
-
-/** Example using the FP Class with different class member functions
- * @code
- * #include "mbed.h"
- * #include "FP.h"
- *
- * FP<void,bool>fp;
- * DigitalOut myled(LED4);
- *
- * class Wrapper
- * {
- * public:
- * Wrapper(){}
- *
- * void handler(bool value)
- * {
- * myled = value;
- * return;
- * }
- * };
- *
- * int main()
- * {
- * Wrapper wrapped;
- * fp.attach(&wrapped, &Wrapper::handler);
- *
- * while(1)
- * {
- * fp(1);
- * wait(0.2);
- * fp(0);
- * wait(0.2);
- * }
- * }
- * @endcode
- */
-
-/** Example using the FP Class with member FP and member function
-* @code
-* #include "mbed.h"
-* #include "FP.h"
-*
-* DigitalOut myled(LED2);
-*
-* class Wrapper
-* {
-* public:
-* Wrapper()
-* {
-* fp.attach(this, &Wrapper::handler);
-* }
-*
-* void handler(bool value)
-* {
-* myled = value;
-* return;
-* }
-*
-* FP<void,bool>fp;
-* };
-*
-* int main()
-* {
-* Wrapper wrapped;
-*
-* while(1)
-* {
-* wrapped.fp(1);
-* wait(0.2);
-* wrapped.fp(0);
-* wait(0.2);
-* }
-* }
-* @endcode
-*/
-
-/**
- * @class FP
- * @brief API for managing Function Pointers
- */
-template<class retT, class argT>
-class FP
-{
-public:
- /** Create the FP object - only one callback can be attached to the object, that is
- * a member function or a global function, not both at the same time
- */
- FP()
- {
- obj_callback = 0;
- c_callback = 0;
- }
-
- /** Add a callback function to the object
- * @param item - Address of the initialized object
- * @param member - Address of the member function (dont forget the scope that the function is defined in)
- */
- template<class T>
- void attach(T *item, retT (T::*method)(argT))
- {
- obj_callback = (FPtrDummy *)(item);
- method_callback = (retT (FPtrDummy::*)(argT))(method);
- return;
- }
-
- /** Add a callback function to the object
- * @param function - The address of a globally defined function
- */
- void attach(retT (*function)(argT))
- {
- c_callback = function;
- }
-
- /** Invoke the function attached to the class
- * @param arg - An argument that is passed into the function handler that is called
- * @return The return from the function hanlder called by this class
- */
- retT operator()(argT arg) const
- {
- if( 0 != c_callback ) {
- return obj_callback ? (obj_callback->*method_callback)(arg) : (*c_callback)(arg);
- }
- return (retT)0;
- }
-
- /** Determine if an callback is currently hooked
- * @return 1 if a method is hooked, 0 otherwise
- */
- bool attached()
- {
- return obj_callback || c_callback;
- }
-
- /** Release a function from the callback hook
- */
- void detach()
- {
- obj_callback = 0;
- c_callback = 0;
- }
-
-private:
-
- // empty type used for casting
- class FPtrDummy;
-
- FPtrDummy *obj_callback;
-
- /**
- * @union Funciton
- * @brief Member or global callback function
- */
- union {
- retT (*c_callback)(argT); /*!< Footprint for a global function */
- retT (FPtrDummy::*method_callback)(argT); /*!< Footprint for a member function */
- };
-};
-
-#endif
