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

Embed: (wiki syntax)

« Back to documentation index

FPointer_vi Class Reference

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:
AC 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:
AC++ object pointer.
AC++ 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:
intThe 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.