mbed client

Fork of simple-mbed-client by sandbox

Revision:
1:75015f627e89
Parent:
0:9fa3f3028773
Child:
2:0a015df677a4
--- a/simple-mbed-client.h	Sun May 15 20:02:58 2016 +0000
+++ b/simple-mbed-client.h	Sun May 15 20:28:07 2016 +0000
@@ -255,6 +255,8 @@
     map<string, M2MObject*> objects;
     map<string, M2MObjectInstance*> objectInstances;
     map<string, M2MResource*> resources;
+    // @todo: write this
+    // map<string, FunctionPointerArg1<void, void*> updateValues;
 };
 
 class SimpleResourceString {
@@ -301,13 +303,58 @@
 
 class SimpleMbedClient : public SimpleMbedClientBase {
 public:
-    SimpleResourceString define_resource(const char* route, string v, M2MBase::Operation opr, bool observable) {
+
+    // @todo: macro this up
+
+    SimpleResourceString define_resource(
+        const char* route, 
+        string v, 
+        M2MBase::Operation opr = M2MBase::GET_PUT_ALLOWED, 
+        bool observable = true,
+        FunctionPointerArg1<void, string> onUpdate = NULL)
+    {
         bool res = define_resource_internal(route, v, opr, observable);
         if (!res) printf("Error while creating %s\n", route);
         return *(new SimpleResourceString(this, route));
     }
+
+    SimpleResourceString define_resource(
+        const char* route, 
+        string v, 
+        M2MBase::Operation opr, 
+        bool observable,
+        void(*onUpdate)(string)) 
+    {
+        FunctionPointerArg1<void, string> fp;
+        fp.attach(onUpdate);
+        return define_resource(route, v, opr, observable, fp);
+    }
     
-    SimpleResourceInt define_resource(const char* route, int v, M2MBase::Operation opr, bool observable) {
+    SimpleResourceString define_resource(
+        const char* route, 
+        string v,
+        FunctionPointerArg1<void, string> onUpdate = NULL) 
+    {
+        return define_resource(route, v, M2MBase::GET_PUT_ALLOWED, true, onUpdate);
+    }
+
+    SimpleResourceString define_resource(
+        const char* route, 
+        string v,
+        void(*onUpdate)(string)) 
+    {
+        FunctionPointerArg1<void, string> fp;
+        fp.attach(onUpdate);
+        return define_resource(route, v, M2MBase::GET_PUT_ALLOWED, true, fp);
+    }
+    
+    SimpleResourceInt define_resource(
+        const char* route, 
+        int v, 
+        M2MBase::Operation opr = M2MBase::GET_PUT_ALLOWED, 
+        bool observable = true,
+        FunctionPointerArg1<void, int> onUpdate = NULL) 
+    {
         stringstream ss;
         ss << v;
         std::string stringified = ss.str();
@@ -315,6 +362,36 @@
         if (!res) printf("Error while creating %s\n", route);
         return *(new SimpleResourceInt(this, route));
     }
+    
+    SimpleResourceInt define_resource(
+        const char* route, 
+        int v, 
+        M2MBase::Operation opr, 
+        bool observable,
+        void(*onUpdate)(int)) 
+    {
+        FunctionPointerArg1<void, int> fp;
+        fp.attach(onUpdate);
+        return define_resource(route, v, opr, observable, fp);
+    }
+    
+    SimpleResourceInt define_resource(
+        const char* route, 
+        int v,
+        FunctionPointerArg1<void, int> onUpdate = NULL) 
+    {
+        return define_resource(route, v, M2MBase::GET_PUT_ALLOWED, true, onUpdate);
+    }
+
+    SimpleResourceInt define_resource(
+        const char* route, 
+        int v,
+        void(*onUpdate)(int)) 
+    {
+        FunctionPointerArg1<void, int> fp;
+        fp.attach(onUpdate);
+        return define_resource(route, v, M2MBase::GET_PUT_ALLOWED, true, fp);
+    }
 };
 
 #endif // __SIMPLE_MBED_CLIENT_H__
\ No newline at end of file