2424#endif
2525
2626#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;
2929#endif
3030
3131#define NET_HAS_IP6_GLOBAL_BIT 0
3232
3333ESP_EVENT_DECLARE_BASE (ARDUINO_EVENTS);
3434
3535typedef enum {
36- ARDUINO_EVENT_NONE,
36+ ARDUINO_EVENT_NONE = 0 ,
3737 ARDUINO_EVENT_ETH_START,
3838 ARDUINO_EVENT_ETH_STOP,
3939 ARDUINO_EVENT_ETH_CONNECTED,
@@ -42,43 +42,43 @@ typedef enum {
4242 ARDUINO_EVENT_ETH_LOST_IP,
4343 ARDUINO_EVENT_ETH_GOT_IP6,
4444#if SOC_WIFI_SUPPORTED
45- ARDUINO_EVENT_WIFI_OFF,
45+ ARDUINO_EVENT_WIFI_OFF = 100 ,
4646 ARDUINO_EVENT_WIFI_READY,
4747 ARDUINO_EVENT_WIFI_SCAN_DONE,
48- ARDUINO_EVENT_WIFI_STA_START,
48+ ARDUINO_EVENT_WIFI_FTM_REPORT,
49+ ARDUINO_EVENT_WIFI_STA_START = 110 ,
4950 ARDUINO_EVENT_WIFI_STA_STOP,
5051 ARDUINO_EVENT_WIFI_STA_CONNECTED,
5152 ARDUINO_EVENT_WIFI_STA_DISCONNECTED,
5253 ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE,
5354 ARDUINO_EVENT_WIFI_STA_GOT_IP,
5455 ARDUINO_EVENT_WIFI_STA_GOT_IP6,
5556 ARDUINO_EVENT_WIFI_STA_LOST_IP,
56- ARDUINO_EVENT_WIFI_AP_START,
57+ ARDUINO_EVENT_WIFI_AP_START = 130 ,
5758 ARDUINO_EVENT_WIFI_AP_STOP,
5859 ARDUINO_EVENT_WIFI_AP_STACONNECTED,
5960 ARDUINO_EVENT_WIFI_AP_STADISCONNECTED,
6061 ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED,
6162 ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED,
6263 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 ,
6565 ARDUINO_EVENT_WPS_ER_FAILED,
6666 ARDUINO_EVENT_WPS_ER_TIMEOUT,
6767 ARDUINO_EVENT_WPS_ER_PIN,
6868 ARDUINO_EVENT_WPS_ER_PBC_OVERLAP,
69- ARDUINO_EVENT_SC_SCAN_DONE,
69+ ARDUINO_EVENT_SC_SCAN_DONE = 150 ,
7070 ARDUINO_EVENT_SC_FOUND_CHANNEL,
7171 ARDUINO_EVENT_SC_GOT_SSID_PSWD,
7272 ARDUINO_EVENT_SC_SEND_ACK_DONE,
73- ARDUINO_EVENT_PROV_INIT,
73+ ARDUINO_EVENT_PROV_INIT = 160 ,
7474 ARDUINO_EVENT_PROV_DEINIT,
7575 ARDUINO_EVENT_PROV_START,
7676 ARDUINO_EVENT_PROV_END,
7777 ARDUINO_EVENT_PROV_CRED_RECV,
7878 ARDUINO_EVENT_PROV_CRED_FAIL,
7979 ARDUINO_EVENT_PROV_CRED_SUCCESS,
8080#endif
81- ARDUINO_EVENT_PPP_START,
81+ ARDUINO_EVENT_PPP_START = 200 ,
8282 ARDUINO_EVENT_PPP_STOP,
8383 ARDUINO_EVENT_PPP_CONNECTED,
8484 ARDUINO_EVENT_PPP_DISCONNECTED,
@@ -125,24 +125,107 @@ using NetworkEventFuncCb = std::function<void(arduino_event_id_t event, arduino_
125125using NetworkEventSysCb = void (*)(arduino_event_t *event);
126126using network_event_handle_t = size_t ;
127127
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+ */
128135class NetworkEvents {
129136public:
130137 NetworkEvents ();
131138 ~NetworkEvents ();
132139
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+ */
133148 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+ */
134159 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+ */
135171 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+ */
136180 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+ */
138199 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+ */
139207 void removeEvent (network_event_handle_t event_handle);
140208
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);
142216
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);
144227
145- int getStatusBits ();
228+ int getStatusBits () const ;
146229 int waitStatusBits (int bits, uint32_t timeout_ms);
147230 int setStatusBits (int bits);
148231 int clearStatusBits (int bits);
@@ -158,8 +241,11 @@ class NetworkEvents {
158241
159242protected:
160243 bool initNetworkEvents ();
244+ // same as onEvent() but places newly added handler at the begining of registered events list
161245 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
162247 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
163249 network_event_handle_t onSysEvent (NetworkEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
164250
165251private:
@@ -189,10 +275,10 @@ class NetworkEvents {
189275 TaskHandle_t _arduino_event_task_handle;
190276
191277 // registred events callbacks containter
192- std::vector<NetworkEventCbList_t> cbEventList ;
278+ std::vector<NetworkEventCbList_t> _cbEventList ;
193279
194280 /* *
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
196282 *
197283 */
198284 void _checkForEvent ();
0 commit comments