Quadrature Encoder Interface for motion control with resistance to jitter and chatter on AB signals and motor vibrations
Dependents: QEIx4_Example realtimeMM_V3 realtimeMM_V3
FPointer_vi Class Reference
FPointer - Adds callbacks that take a 32bit uint32_t data type. More...
#include <FPointer_vi.h>
Public Member Functions | |
FPointer_vi () | |
Constructor. | |
void | attach (void(*function)(int)=0) |
attach - Overloaded attachment function. | |
template<class T > | |
void | attach (T *item, void(T::*method)(int)) |
attach - Overloaded attachment function. | |
void | call (int arg) |
call - Overloaded callback initiator. | |
Protected Attributes | |
void(* | c_callback )(int) |
C callback function pointer. | |
FPointerDummy * | obj_callback |
C++ callback object/method pointer (the object part). | |
void(FPointerDummy::* | method_callback )(int) |
C++ callback object/method pointer (the method part). |
Detailed Description
FPointer - Adds callbacks that take a 32bit uint32_t data type.
The Mbed library supplies a callback using the FunctionPointer object as defined in FunctionPointer.h However, this callback system does not allow the caller to pass a value to the callback. Likewise, the callback itself cannot return a value.
FPointer operates in the same way but allows the callback function to be passed one arg, a uint32_t value. Additionally, the callback can return a single uint32_t value. The reason for using uint32_t is that the Mbed and the microcontroller (LPC1768) have a natural data size of 32bits and this means we can use the uint32_t as a pointer. See example1.h for more information. This example passes an "int" by passing a pointer to that int as a 32bit value. Using this technique you can pass any value you like. All you have to do is pass a pointer to your value cast to (uint32_t). Your callback can the deference it to get the original value.
example2.h shows how to do the same thing but demostrates how to specify the callback into a class object/method.
Finally, example3.h shows how to pass multiple values. In this example we define a data structure and in the callback we pass a pointer to that data structure thus allowing the callback to again get the values.
Note, when passing pointers to variables to the callback, if the callback function/method changes that variable's value then it will also change the value the caller sees. If C pointers are new to you, you are strongly advised to read up on the subject. It's pointers that often get beginners into trouble when mis-used.
- See also:
- http://mbed.org/handbook/C-Data-Types
- http://mbed.org/projects/libraries/svn/mbed/trunk/FunctionPointer.h
Definition at line 64 of file FPointer_vi.h.
Constructor & Destructor Documentation
FPointer_vi | ( | ) |
Constructor.
Definition at line 81 of file FPointer_vi.h.
Member Function Documentation
void attach | ( | void(*)(int) | function = 0 ) |
attach - Overloaded attachment function.
Attach a C type function pointer as the callback.
Note, the callback function prototype must be:-
void myCallbackFunction(int);
- Parameters:
-
A C function pointer to call.
Definition at line 97 of file FPointer_vi.h.
void attach | ( | T * | item, |
void(T::*)(int) | method | ||
) |
attach - Overloaded attachment function.
Attach a C++ type object/method pointer as the callback.
Note, the callback method prototype must be:-
public: void myCallbackFunction(int);
- Parameters:
-
A C++ object pointer. A C++ method within the object to call.
Definition at line 112 of file FPointer_vi.h.
void call | ( | int | arg ) |
call - Overloaded callback initiator.
call the callback function.
- Parameters:
-
int The value to pass to the callback.
Definition at line 123 of file FPointer_vi.h.
Field Documentation
void(* c_callback)(int) [protected] |
C callback function pointer.
Definition at line 69 of file FPointer_vi.h.
void(FPointerDummy::* method_callback)(int) [protected] |
C++ callback object/method pointer (the method part).
Definition at line 75 of file FPointer_vi.h.
FPointerDummy* obj_callback [protected] |
C++ callback object/method pointer (the object part).
Definition at line 72 of file FPointer_vi.h.
Generated on Fri Jul 15 2022 02:24:32 by
![doxygen](doxygen.png)