A library to send and receive packets over serial, uses MODSERIAL
Dependents: SimpleSerialProtocolExample SerialFileReceiver
Diff: FPointer.h
- Revision:
- 1:98ad30934a71
- Parent:
- 0:1639507580d5
--- a/FPointer.h Thu Jun 28 21:19:58 2012 +0000 +++ b/FPointer.h Wed Aug 27 17:35:30 2014 +0000 @@ -18,31 +18,34 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Modified for use with SimpleSerialProtocol by Christopher Pepper */ #ifndef AJK_FPOINTER_H #define AJK_FPOINTER_H -#include "Packet.h" - namespace SimpleSerialProtocol { class FPointerDummy; +class Packet; +class Protocol; typedef Packet* Packet_ptr; +typedef Protocol* Protocol_ptr; class FPointer { protected: //! C callback function pointer. - void (*c_callback)(Packet_ptr); + void (*c_callback)(Protocol_ptr, Packet_ptr); //! C++ callback object/method pointer (the object part). FPointerDummy *obj_callback; //! C++ callback object/method pointer (the method part). - void (FPointerDummy::*method_callback)(Packet_ptr); + void (FPointerDummy::*method_callback)(Protocol_ptr, Packet_ptr); public: @@ -55,22 +58,22 @@ } - void attach(void (*function)(Packet_ptr) = 0) { + void attach(void (*function)(Protocol_ptr, Packet_ptr) = 0) { c_callback = function; } template<class T> void attach(T* item, void (T::*method)(Packet_ptr)) { obj_callback = (FPointerDummy *)item; - method_callback = (void (FPointerDummy::*)(Packet_ptr))method; + method_callback = (void (FPointerDummy::*)(Protocol_ptr, Packet_ptr))method; } - void call(Packet_ptr arg) { + void call(Protocol_ptr comms, Packet_ptr arg) { if (c_callback != NULL) { - return (*c_callback)(arg); + return (*c_callback)(comms, arg); } else { if (obj_callback != NULL && method_callback != NULL) { - (obj_callback->*method_callback)(arg); + (obj_callback->*method_callback)(comms, arg); return; } } @@ -79,11 +82,11 @@ void call(void) { if (c_callback != NULL) { - (*c_callback)((Packet_ptr)NULL); + (*c_callback)((Protocol_ptr)NULL, (Packet_ptr)NULL); return; } else { if (obj_callback != NULL && method_callback != NULL) { - (obj_callback->*method_callback)((Packet_ptr)NULL); + (obj_callback->*method_callback)((Protocol_ptr)NULL, (Packet_ptr)NULL); return; } }