24
24
#endif
25
25
26
26
#if SOC_WIFI_SUPPORTED
27
- static const int WIFI_SCANNING_BIT = BIT0;
28
- static const int WIFI_SCAN_DONE_BIT = BIT1;
27
+ constexpr int WIFI_SCANNING_BIT = BIT0;
28
+ constexpr int WIFI_SCAN_DONE_BIT = BIT1;
29
29
#endif
30
30
31
31
#define NET_HAS_IP6_GLOBAL_BIT 0
32
32
33
33
ESP_EVENT_DECLARE_BASE (ARDUINO_EVENTS);
34
34
35
35
typedef enum {
36
- ARDUINO_EVENT_NONE,
36
+ ARDUINO_EVENT_NONE = 0 ,
37
37
ARDUINO_EVENT_ETH_START,
38
38
ARDUINO_EVENT_ETH_STOP,
39
39
ARDUINO_EVENT_ETH_CONNECTED,
@@ -42,43 +42,43 @@ typedef enum {
42
42
ARDUINO_EVENT_ETH_LOST_IP,
43
43
ARDUINO_EVENT_ETH_GOT_IP6,
44
44
#if SOC_WIFI_SUPPORTED
45
- ARDUINO_EVENT_WIFI_OFF,
45
+ ARDUINO_EVENT_WIFI_OFF = 100 ,
46
46
ARDUINO_EVENT_WIFI_READY,
47
47
ARDUINO_EVENT_WIFI_SCAN_DONE,
48
- ARDUINO_EVENT_WIFI_STA_START,
48
+ ARDUINO_EVENT_WIFI_FTM_REPORT,
49
+ ARDUINO_EVENT_WIFI_STA_START = 110 ,
49
50
ARDUINO_EVENT_WIFI_STA_STOP,
50
51
ARDUINO_EVENT_WIFI_STA_CONNECTED,
51
52
ARDUINO_EVENT_WIFI_STA_DISCONNECTED,
52
53
ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE,
53
54
ARDUINO_EVENT_WIFI_STA_GOT_IP,
54
55
ARDUINO_EVENT_WIFI_STA_GOT_IP6,
55
56
ARDUINO_EVENT_WIFI_STA_LOST_IP,
56
- ARDUINO_EVENT_WIFI_AP_START,
57
+ ARDUINO_EVENT_WIFI_AP_START = 130 ,
57
58
ARDUINO_EVENT_WIFI_AP_STOP,
58
59
ARDUINO_EVENT_WIFI_AP_STACONNECTED,
59
60
ARDUINO_EVENT_WIFI_AP_STADISCONNECTED,
60
61
ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED,
61
62
ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED,
62
63
ARDUINO_EVENT_WIFI_AP_GOT_IP6,
63
- ARDUINO_EVENT_WIFI_FTM_REPORT,
64
- ARDUINO_EVENT_WPS_ER_SUCCESS,
64
+ ARDUINO_EVENT_WPS_ER_SUCCESS = 140 ,
65
65
ARDUINO_EVENT_WPS_ER_FAILED,
66
66
ARDUINO_EVENT_WPS_ER_TIMEOUT,
67
67
ARDUINO_EVENT_WPS_ER_PIN,
68
68
ARDUINO_EVENT_WPS_ER_PBC_OVERLAP,
69
- ARDUINO_EVENT_SC_SCAN_DONE,
69
+ ARDUINO_EVENT_SC_SCAN_DONE = 150 ,
70
70
ARDUINO_EVENT_SC_FOUND_CHANNEL,
71
71
ARDUINO_EVENT_SC_GOT_SSID_PSWD,
72
72
ARDUINO_EVENT_SC_SEND_ACK_DONE,
73
- ARDUINO_EVENT_PROV_INIT,
73
+ ARDUINO_EVENT_PROV_INIT = 160 ,
74
74
ARDUINO_EVENT_PROV_DEINIT,
75
75
ARDUINO_EVENT_PROV_START,
76
76
ARDUINO_EVENT_PROV_END,
77
77
ARDUINO_EVENT_PROV_CRED_RECV,
78
78
ARDUINO_EVENT_PROV_CRED_FAIL,
79
79
ARDUINO_EVENT_PROV_CRED_SUCCESS,
80
80
#endif
81
- ARDUINO_EVENT_PPP_START,
81
+ ARDUINO_EVENT_PPP_START = 200 ,
82
82
ARDUINO_EVENT_PPP_STOP,
83
83
ARDUINO_EVENT_PPP_CONNECTED,
84
84
ARDUINO_EVENT_PPP_DISCONNECTED,
@@ -125,24 +125,107 @@ using NetworkEventFuncCb = std::function<void(arduino_event_id_t event, arduino_
125
125
using NetworkEventSysCb = void (*)(arduino_event_t *event);
126
126
using network_event_handle_t = size_t ;
127
127
128
+ /* *
129
+ * @brief Class that provides network events callback handling
130
+ * it registers user callback functions for event handling,
131
+ * maintans the queue of events and propagates the event amoung subscribed callbacks
132
+ * callback are called in the context of a dedicated task consuming the queue
133
+ *
134
+ */
128
135
class NetworkEvents {
129
136
public:
130
137
NetworkEvents ();
131
138
~NetworkEvents ();
132
139
140
+ /* *
141
+ * @brief register callback function to be executed on arduino event(s)
142
+ * @note if same handler is registered twice or more than same handler would be called twice or more times
143
+ *
144
+ * @param cbEvent static callback function
145
+ * @param event event to process, any event by default
146
+ * @return network_event_handle_t
147
+ */
133
148
network_event_handle_t onEvent (NetworkEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
149
+
150
+ /* *
151
+ * @brief register functional callback to be executed on arduino event(s)
152
+ * also used for lambda callbacks
153
+ * @note if same handler is registered twice or more than same handler would be called twice or more times
154
+ *
155
+ * @param cbEvent static callback function
156
+ * @param event event to process, any event by default
157
+ * @return network_event_handle_t
158
+ */
134
159
network_event_handle_t onEvent (NetworkEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
160
+
161
+ /* *
162
+ * @brief register static system callback to be executed on arduino event(s)
163
+ * callback function would be supplied with a pointer to arduino_event_t structure as an argument
164
+ *
165
+ * @note if same handler is registered twice or more than same handler would be called twice or more times
166
+ *
167
+ * @param cbEvent static callback function
168
+ * @param event event to process, any event by default
169
+ * @return network_event_handle_t
170
+ */
135
171
network_event_handle_t onEvent (NetworkEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
172
+
173
+ /* *
174
+ * @brief unregister static function callback
175
+ * @note a better way to unregister callbacks is to save/unregister via network_event_handle_t
176
+ *
177
+ * @param cbEvent static callback function
178
+ * @param event event to process, any event by default
179
+ */
136
180
void removeEvent (NetworkEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
137
- void removeEvent (NetworkEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX) __attribute__((deprecated(" removing functional callbacks via pointer is deprecated, use removeEvent(network_event_handle_t event_handle) instead" )));
181
+
182
+ /* *
183
+ * @brief unregister functional callback
184
+ * @note a better way to unregister callbacks is to save/unregister via network_event_handle_t
185
+ * @note this does not work for lambda's! Do unregister via network_event_handle_t
186
+ *
187
+ * @param cbEvent functional callback
188
+ * @param event event to process, any event by default
189
+ */
190
+ void removeEvent (NetworkEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX) __attribute__((deprecated(" removing functional callbacks via pointer is deprecated, use removeEvent(network_event_handle_t) instead" )));
191
+
192
+ /* *
193
+ * @brief unregister static system function callback
194
+ * @note a better way to unregister callbacks is to save/unregister via network_event_handle_t
195
+ *
196
+ * @param cbEvent static callback function
197
+ * @param event event to process, any event by default
198
+ */
138
199
void removeEvent (NetworkEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
200
+
201
+ /* *
202
+ * @brief unregister event callback via handler
203
+ *
204
+ * @param cbEvent static callback function
205
+ * @param event event to process, any event by default
206
+ */
139
207
void removeEvent (network_event_handle_t event_handle);
140
208
141
- const char *eventName (arduino_event_id_t id);
209
+ /* *
210
+ * @brief get a human-readable name of an event by it's id
211
+ *
212
+ * @param id event id code
213
+ * @return const char* event name string
214
+ */
215
+ static const char *eventName (arduino_event_id_t id);
142
216
143
- bool postEvent (arduino_event_t *event);
217
+ /* *
218
+ * @brief post an event to the queue
219
+ * and propagade and event to subscribed handlers
220
+ * @note posting an event will trigger context switch from a lower priority task
221
+ *
222
+ * @param event a pointer to arduino_event_t struct
223
+ * @return true if event was queued susccessfuly
224
+ * @return false on memrory allocation error or queue is full
225
+ */
226
+ bool postEvent (const arduino_event_t *event);
144
227
145
- int getStatusBits ();
228
+ int getStatusBits () const ;
146
229
int waitStatusBits (int bits, uint32_t timeout_ms);
147
230
int setStatusBits (int bits);
148
231
int clearStatusBits (int bits);
@@ -158,8 +241,11 @@ class NetworkEvents {
158
241
159
242
protected:
160
243
bool initNetworkEvents ();
244
+ // same as onEvent() but places newly added handler at the begining of registered events list
161
245
network_event_handle_t onSysEvent (NetworkEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
246
+ // same as onEvent() but places newly added handler at the begining of registered events list
162
247
network_event_handle_t onSysEvent (NetworkEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
248
+ // same as onEvent() but places newly added handler at the begining of registered events list
163
249
network_event_handle_t onSysEvent (NetworkEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
164
250
165
251
private:
@@ -189,10 +275,10 @@ class NetworkEvents {
189
275
TaskHandle_t _arduino_event_task_handle;
190
276
191
277
// registred events callbacks containter
192
- std::vector<NetworkEventCbList_t> cbEventList ;
278
+ std::vector<NetworkEventCbList_t> _cbEventList ;
193
279
194
280
/* *
195
- * @brief task that picks events from a event queue and calls registered callbacks
281
+ * @brief task function that picks events from an event queue and calls registered callbacks
196
282
*
197
283
*/
198
284
void _checkForEvent ();
0 commit comments