refactor get public data, to be slightly easier to use on callee side
[clinton/Smoothieware.git] / src / libs / PublicDataRequest.h
index 92bfcdc..aabb449 100644 (file)
@@ -8,30 +8,31 @@
 #ifndef PUBLICDATAREQUEST_H
 #define PUBLICDATAREQUEST_H
 
-#include "libs/Kernel.h"
-
 class PublicDataRequest {
     public:
-        PublicDataRequest(uint16_t addrcs1){ target[0]= addrcs1; target[1]= 0; target[2]= 0; data_taken= false; data= NULL; }
-        PublicDataRequest(uint16_t addrcs1, uint16_t addrcs2){ target[0]= addrcs1; target[1]= addrcs2; target[2]= 0; data_taken= false; data= NULL; }
-        PublicDataRequest(uint16_t addrcs1, uint16_t addrcs2, uint16_t addrcs3){ target[0]= addrcs1; target[1]= addrcs2; target[2]= addrcs3; data_taken= false; data= NULL; }
+        PublicDataRequest(uint16_t addrcs1){ target[0]= addrcs1; target[1]= 0; target[2]= 0; data_taken= false; data= NULL; returned_data= true; }
+        PublicDataRequest(uint16_t addrcs1, uint16_t addrcs2){ target[0]= addrcs1; target[1]= addrcs2; target[2]= 0; data_taken= false; data= NULL; returned_data= true; }
+        PublicDataRequest(uint16_t addrcs1, uint16_t addrcs2, uint16_t addrcs3){ target[0]= addrcs1; target[1]= addrcs2; target[2]= addrcs3; data_taken= false; data= NULL; returned_data= true; }
+
+        virtual ~PublicDataRequest() { data= nullptr; }
 
-        virtual ~PublicDataRequest() { data= NULL; }
-        
         bool starts_with(uint16_t addr) const { return addr == this->target[0]; }
         bool second_element_is(uint16_t addr) const { return addr == this->target[1]; }
         bool third_element_is(uint16_t addr) const { return addr == this->target[2]; }
 
         bool is_taken() const { return this->data_taken; }
         void set_taken() { this->data_taken= true; }
-        
-        void set_data_ptr(void *d) { this->data= d; }
+        bool has_returned_data() const { return this->returned_data; }
+        void set_data_ptr(void *d, bool flag= true) { this->data= d; returned_data= flag; }
         void* get_data_ptr(void) const { return this->data; }
 
     private:
         uint16_t target[3];
         void* data;
-        bool data_taken;
+        struct {
+            bool data_taken:1;
+            bool returned_data:1;
+        };
 };
 
-#endif
\ No newline at end of file
+#endif