Skip to content

Commit 90eec00

Browse files
committed
Turning cloud event callback func pointers to be private
1 parent 59642e9 commit 90eec00

File tree

4 files changed

+15
-22
lines changed

4 files changed

+15
-22
lines changed

src/ArduinoIoTCloud.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,8 @@
2727

2828
void ArduinoIoTCloudClass::addCallback(ArduinoIoTCloudEvent const event, OnCloudEventCallback callback)
2929
{
30-
switch (event)
31-
{
32-
case ArduinoIoTCloudEvent::SYNC: _on_sync_event_callback = callback; break;
33-
case ArduinoIoTCloudEvent::CONNECT: _on_connect_event_callback = callback; break;
34-
case ArduinoIoTCloudEvent::DISCONNECT: _on_disconnect_event_callback = callback; break;
35-
}
36-
};
30+
_cloud_event_callback[static_cast<size_t>(event)] = callback;
31+
}
3732

3833
void ArduinoIoTCloudClass::addPropertyReal(ArduinoCloudProperty& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property))
3934
{
@@ -150,8 +145,9 @@ ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(String& property, St
150145
* PRIVATE MEMBER FUNCTIONS
151146
******************************************************************************/
152147

153-
void ArduinoIoTCloudClass::execCloudEventCallback(OnCloudEventCallback& callback)
148+
void ArduinoIoTCloudClass::execCloudEventCallback(ArduinoIoTCloudEvent const event)
154149
{
150+
OnCloudEventCallback callback = _cloud_event_callback[static_cast<size_t>(event)];
155151
if (callback) {
156152
(*callback)();
157153
}

src/ArduinoIoTCloud.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ enum class ArduinoIoTSynchronizationStatus
6262
SYNC_STATUS_VALUES_PROCESSED
6363
};
6464

65-
enum class ArduinoIoTCloudEvent
65+
enum class ArduinoIoTCloudEvent : size_t
6666
{
67-
SYNC, CONNECT, DISCONNECT
67+
SYNC = 0, CONNECT = 1, DISCONNECT = 2
6868
};
6969

7070
typedef void (*OnCloudEventCallback)(void);
@@ -134,17 +134,14 @@ class ArduinoIoTCloudClass
134134

135135
ArduinoCloudThing _thing;
136136

137-
OnCloudEventCallback _on_sync_event_callback = NULL;
138-
OnCloudEventCallback _on_connect_event_callback = NULL;
139-
OnCloudEventCallback _on_disconnect_event_callback = NULL;
140-
141-
static void execCloudEventCallback(OnCloudEventCallback & callback);
137+
void execCloudEventCallback(ArduinoIoTCloudEvent const event);
142138
static void printConnectionStatus(ArduinoIoTConnectionStatus status);
143139

144140
private:
145141

146142
String _thing_id = "";
147143
String _device_id = "";
144+
OnCloudEventCallback _cloud_event_callback[3] = {nullptr};
148145
};
149146

150147
#ifdef HAS_TCP

src/ArduinoIoTCloudLPWAN.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void ArduinoIoTCloudLPWAN::update() {
9191
sendPropertiesToCloud();
9292

9393

94-
execCloudEventCallback(_on_sync_event_callback);
94+
execCloudEventCallback(ArduinoIoTCloudEvent::SYNC);
9595

9696
}
9797

@@ -124,7 +124,7 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudLPWAN::connectionCheck() {
124124
if (_connection->getStatus() != NetworkConnectionState::CONNECTED) {
125125
_iotStatus = ArduinoIoTConnectionStatus::DISCONNECTED;
126126
printConnectionStatus(_iotStatus);
127-
execCloudEventCallback(_on_disconnect_event_callback);
127+
execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT);
128128
}
129129
}
130130
break;
@@ -150,7 +150,7 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudLPWAN::connectionCheck() {
150150
if (net_status == NetworkConnectionState::CONNECTED) {
151151
_iotStatus = ArduinoIoTConnectionStatus::CONNECTED;
152152
printConnectionStatus(_iotStatus);
153-
execCloudEventCallback(_on_connect_event_callback);
153+
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
154154
}
155155

156156
}

src/ArduinoIoTCloudTCP.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ void ArduinoIoTCloudTCP::update() {
188188
}
189189
break;
190190
case ArduinoIoTSynchronizationStatus::SYNC_STATUS_VALUES_PROCESSED: {
191-
execCloudEventCallback(_on_sync_event_callback);
191+
execCloudEventCallback(ArduinoIoTCloudEvent::SYNC);
192192
_syncStatus = ArduinoIoTSynchronizationStatus::SYNC_STATUS_SYNCHRONIZED;
193193
}
194194
break;
@@ -302,7 +302,7 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
302302
_iotStatus = ArduinoIoTConnectionStatus::DISCONNECTED;
303303
_mqtt_data_request_retransmit = true;
304304
printConnectionStatus(_iotStatus);
305-
execCloudEventCallback(_on_disconnect_event_callback);
305+
execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT);
306306
}
307307
}
308308
break;
@@ -317,7 +317,7 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
317317
if (ret_code_reconnect == CONNECT_SUCCESS) {
318318
_iotStatus = ArduinoIoTConnectionStatus::CONNECTED;
319319
printConnectionStatus(_iotStatus);
320-
execCloudEventCallback(_on_connect_event_callback);
320+
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
321321
CloudSerial.begin(9600);
322322
CloudSerial.println("Hello from Cloud Serial!");
323323
}
@@ -329,7 +329,7 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
329329
if (ret_code_connect == CONNECT_SUCCESS) {
330330
_iotStatus = ArduinoIoTConnectionStatus::CONNECTED;
331331
printConnectionStatus(_iotStatus);
332-
execCloudEventCallback(_on_connect_event_callback);
332+
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
333333
CloudSerial.begin(9600);
334334
CloudSerial.println("Hello from Cloud Serial!");
335335
} else if (ret_code_connect == CONNECT_FAILURE_SUBSCRIBE) {

0 commit comments

Comments
 (0)