|
7 | 7 |
|
8 | 8 | #include "CloudSerial.h"
|
9 | 9 |
|
| 10 | +typedef enum { |
| 11 | + READ = 0x01, |
| 12 | + WRITE = 0x02, |
| 13 | + READWRITE = READ | WRITE |
| 14 | +} permissionType; |
| 15 | + |
10 | 16 | // Declaration of the struct for the mqtt connection options
|
11 | 17 | typedef struct {
|
12 | 18 | int keepAlive;
|
@@ -44,10 +50,18 @@ class ArduinoIoTCloudClass {
|
44 | 50 | // Clean up existing Mqtt connection, create a new one and initialize it
|
45 | 51 | int reconnect(Client& net);
|
46 | 52 |
|
47 |
| - #define addProperty( v, ...) addPropertyReal(v, #v, __VA_ARGS__) |
48 |
| - |
49 |
| - template<typename T, typename N=T> void addPropertyReal(T& property, String name, permissionType _permission = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, N minDelta = N(0)) { |
50 |
| - Thing.addPropertyReal(property, name, _permission, seconds, fn, (T)minDelta); |
| 53 | + template<typename T, typename N=T> void addProperty(T & property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, N minDelta = N(0)) { |
| 54 | + Permission permission = Permission::ReadWrite; |
| 55 | + if (permission_type == READ ) permission = Permission::Read; |
| 56 | + else if(permission_type == WRITE) permission = Permission::Write; |
| 57 | + else permission = Permission::ReadWrite; |
| 58 | + |
| 59 | + if(seconds == ON_CHANGE) { |
| 60 | + Thing.addProperty(property, name, permission).publishOnChange((T)minDelta).onUpdate(fn); |
| 61 | + } |
| 62 | + else { |
| 63 | + Thing.addProperty(property, name, permission).publishEvery(seconds); |
| 64 | + } |
51 | 65 | }
|
52 | 66 |
|
53 | 67 | protected:
|
|
0 commit comments