#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