A library to send and receive packets over serial, uses MODSERIAL

Dependents:   SimpleSerialProtocolExample SerialFileReceiver

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;
             }
         }