5
5
*/
6
6
#include <string.h>
7
7
#include "mdns_private.h"
8
- #include "mdns_networking.h"
9
8
#include "freertos/FreeRTOS.h"
10
9
#include "freertos/task.h"
11
10
#include "freertos/queue.h"
12
11
#include "freertos/semphr.h"
13
12
#include "esp_check.h"
14
13
#include "mdns.h"
15
- #include "mdns_private.h"
16
- #include "mdns_networking.h"
17
14
#include "mdns_mem_caps.h"
18
15
#include "mdns_utils.h"
19
- #include "mdns_debug.h"
20
16
#include "mdns_browser.h"
21
17
#include "mdns_netif.h"
22
18
#include "mdns_send.h"
25
21
#include "mdns_pcb.h"
26
22
#include "mdns_responder.h"
27
23
24
+ #define MDNS_SERVICE_STACK_DEPTH CONFIG_MDNS_TASK_STACK_SIZE
25
+ #define MDNS_TASK_PRIORITY CONFIG_MDNS_TASK_PRIORITY
26
+ #if (MDNS_TASK_PRIORITY > ESP_TASK_PRIO_MAX )
27
+ #error "mDNS task priority is higher than ESP_TASK_PRIO_MAX"
28
+ #elif (MDNS_TASK_PRIORITY > ESP_TASKD_EVENT_PRIO )
29
+ #warning "mDNS task priority is higher than ESP_TASKD_EVENT_PRIO, mDNS library might not work correctly"
30
+ #endif
31
+ #define MDNS_TASK_AFFINITY CONFIG_MDNS_TASK_AFFINITY
32
+
33
+ #define MDNS_SERVICE_LOCK () xSemaphoreTake(s_service_semaphore, portMAX_DELAY)
34
+ #define MDNS_SERVICE_UNLOCK () xSemaphoreGive(s_service_semaphore)
28
35
29
- static volatile TaskHandle_t _mdns_service_task_handle = NULL ;
30
- static SemaphoreHandle_t _mdns_service_semaphore = NULL ;
31
- static StackType_t * _mdns_stack_buffer ;
36
+ static volatile TaskHandle_t s_service_task_handle = NULL ;
37
+ static SemaphoreHandle_t s_service_semaphore = NULL ;
38
+ static StackType_t * s_stack_buffer ;
32
39
static QueueHandle_t s_action_queue ;
33
40
static esp_timer_handle_t s_timer_handle ;
34
41
@@ -112,12 +119,10 @@ static void perform_event_action(mdns_if_t mdns_if, mdns_event_actions_t action)
112
119
#endif /* CONFIG_MDNS_RESPOND_REVERSE_QUERIES */
113
120
}
114
121
115
-
116
-
117
122
/**
118
123
* @brief Free action data
119
124
*/
120
- static void _mdns_free_action (mdns_action_t * action )
125
+ static void free_action (mdns_action_t * action )
121
126
{
122
127
switch (action -> type ) {
123
128
case ACTION_SEARCH_ADD :
@@ -152,7 +157,7 @@ static void _mdns_free_action(mdns_action_t *action)
152
157
/**
153
158
* @brief Called from service thread to execute given action
154
159
*/
155
- static void _mdns_execute_action (mdns_action_t * action )
160
+ static void execute_action (mdns_action_t * action )
156
161
{
157
162
switch (action -> type ) {
158
163
case ACTION_SYSTEM_EVENT :
@@ -191,7 +196,7 @@ static void _mdns_execute_action(mdns_action_t *action)
191
196
/**
192
197
* @brief the main MDNS service task. Packets are received and parsed here
193
198
*/
194
- static void _mdns_service_task (void * pvParameters )
199
+ static void service_task (void * pvParameters )
195
200
{
196
201
mdns_action_t * a = NULL ;
197
202
for (;;) {
@@ -202,27 +207,27 @@ static void _mdns_service_task(void *pvParameters)
202
207
break ;
203
208
}
204
209
MDNS_SERVICE_LOCK ();
205
- _mdns_execute_action (a );
210
+ execute_action (a );
206
211
MDNS_SERVICE_UNLOCK ();
207
212
}
208
213
} else {
209
214
vTaskDelay (500 * portTICK_PERIOD_MS );
210
215
}
211
216
}
212
- _mdns_service_task_handle = NULL ;
217
+ s_service_task_handle = NULL ;
213
218
vTaskDelay (portMAX_DELAY );
214
219
}
215
220
216
- static void _mdns_timer_cb (void * arg )
221
+ static void timer_cb (void * arg )
217
222
{
218
223
mdns_priv_send_packets ();
219
224
mdns_priv_query_start_stop ();
220
225
}
221
226
222
- static esp_err_t _mdns_start_timer (void )
227
+ static esp_err_t start_timer (void )
223
228
{
224
229
esp_timer_create_args_t timer_conf = {
225
- .callback = _mdns_timer_cb ,
230
+ .callback = timer_cb ,
226
231
.arg = NULL ,
227
232
.dispatch_method = ESP_TIMER_TASK ,
228
233
.name = "mdns_timer"
@@ -234,7 +239,7 @@ static esp_err_t _mdns_start_timer(void)
234
239
return esp_timer_start_periodic (s_timer_handle , MDNS_TIMER_PERIOD_US );
235
240
}
236
241
237
- static esp_err_t _mdns_stop_timer (void )
242
+ static esp_err_t stop_timer (void )
238
243
{
239
244
esp_err_t err = ESP_OK ;
240
245
if (s_timer_handle ) {
@@ -247,21 +252,21 @@ static esp_err_t _mdns_stop_timer(void)
247
252
return err ;
248
253
}
249
254
250
- static esp_err_t _mdns_task_create_with_caps (void )
255
+ static esp_err_t create_task_with_caps (void )
251
256
{
252
257
esp_err_t ret = ESP_OK ;
253
258
static StaticTask_t mdns_task_buffer ;
254
259
255
- _mdns_stack_buffer = mdns_mem_task_malloc (MDNS_SERVICE_STACK_DEPTH );
256
- ESP_GOTO_ON_FALSE (_mdns_stack_buffer != NULL , ESP_FAIL , err , TAG , "failed to allocate memory for the mDNS task's stack" );
260
+ s_stack_buffer = mdns_mem_task_malloc (MDNS_SERVICE_STACK_DEPTH );
261
+ ESP_GOTO_ON_FALSE (s_stack_buffer != NULL , ESP_FAIL , err , TAG , "failed to allocate memory for the mDNS task's stack" );
257
262
258
- _mdns_service_task_handle = xTaskCreateStaticPinnedToCore (_mdns_service_task , "mdns" , MDNS_SERVICE_STACK_DEPTH , NULL , MDNS_TASK_PRIORITY , _mdns_stack_buffer , & mdns_task_buffer , MDNS_TASK_AFFINITY );
259
- ESP_GOTO_ON_FALSE (_mdns_service_task_handle != NULL , ESP_FAIL , err , TAG , "failed to create task for the mDNS" );
263
+ s_service_task_handle = xTaskCreateStaticPinnedToCore (service_task , "mdns" , MDNS_SERVICE_STACK_DEPTH , NULL , MDNS_TASK_PRIORITY , s_stack_buffer , & mdns_task_buffer , MDNS_TASK_AFFINITY );
264
+ ESP_GOTO_ON_FALSE (s_service_task_handle != NULL , ESP_FAIL , err , TAG , "failed to create task for the mDNS" );
260
265
261
266
return ret ;
262
267
263
268
err :
264
- mdns_mem_task_free (_mdns_stack_buffer );
269
+ mdns_mem_task_free (s_stack_buffer );
265
270
return ret ;
266
271
}
267
272
@@ -272,34 +277,34 @@ static esp_err_t _mdns_task_create_with_caps(void)
272
277
* - ESP_OK on success
273
278
* - ESP_FAIL on error
274
279
*/
275
- static esp_err_t _mdns_service_task_start (void )
280
+ static esp_err_t service_task_start (void )
276
281
{
277
282
esp_err_t ret = ESP_OK ;
278
- if (!_mdns_service_semaphore ) {
279
- _mdns_service_semaphore = xSemaphoreCreateMutex ();
280
- ESP_RETURN_ON_FALSE (_mdns_service_semaphore != NULL , ESP_FAIL , TAG , "Failed to create the mDNS service lock" );
283
+ if (!s_service_semaphore ) {
284
+ s_service_semaphore = xSemaphoreCreateMutex ();
285
+ ESP_RETURN_ON_FALSE (s_service_semaphore != NULL , ESP_FAIL , TAG , "Failed to create the mDNS service lock" );
281
286
}
282
287
MDNS_SERVICE_LOCK ();
283
- ESP_GOTO_ON_ERROR (_mdns_start_timer (), err , TAG , "Failed to start the mDNS service timer" );
288
+ ESP_GOTO_ON_ERROR (start_timer (), err , TAG , "Failed to start the mDNS service timer" );
284
289
285
- if (!_mdns_service_task_handle ) {
286
- ESP_GOTO_ON_ERROR (_mdns_task_create_with_caps (), err_stop_timer , TAG , "Failed to start the mDNS service task" );
290
+ if (!s_service_task_handle ) {
291
+ ESP_GOTO_ON_ERROR (create_task_with_caps (), err_stop_timer , TAG , "Failed to start the mDNS service task" );
287
292
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL (5 , 1 , 0 ) && !CONFIG_IDF_TARGET_LINUX
288
293
StackType_t * mdns_debug_stack_buffer ;
289
294
StaticTask_t * mdns_debug_task_buffer ;
290
- xTaskGetStaticBuffers (_mdns_service_task_handle , & mdns_debug_stack_buffer , & mdns_debug_task_buffer );
295
+ xTaskGetStaticBuffers (s_service_task_handle , & mdns_debug_stack_buffer , & mdns_debug_task_buffer );
291
296
ESP_LOGD (TAG , "mdns_debug_stack_buffer:%p mdns_debug_task_buffer:%p\n" , mdns_debug_stack_buffer , mdns_debug_task_buffer );
292
297
#endif // CONFIG_IDF_TARGET_LINUX
293
298
}
294
299
MDNS_SERVICE_UNLOCK ();
295
300
return ret ;
296
301
297
302
err_stop_timer :
298
- _mdns_stop_timer ();
303
+ stop_timer ();
299
304
err :
300
305
MDNS_SERVICE_UNLOCK ();
301
- vSemaphoreDelete (_mdns_service_semaphore );
302
- _mdns_service_semaphore = NULL ;
306
+ vSemaphoreDelete (s_service_semaphore );
307
+ s_service_semaphore = NULL ;
303
308
return ret ;
304
309
}
305
310
@@ -309,24 +314,24 @@ static esp_err_t _mdns_service_task_start(void)
309
314
* @return
310
315
* - ESP_OK
311
316
*/
312
- static esp_err_t _mdns_service_task_stop (void )
317
+ static esp_err_t service_task_stop (void )
313
318
{
314
- _mdns_stop_timer ();
315
- if (_mdns_service_task_handle ) {
316
- TaskHandle_t task_handle = _mdns_service_task_handle ;
319
+ stop_timer ();
320
+ if (s_service_task_handle ) {
321
+ TaskHandle_t task_handle = s_service_task_handle ;
317
322
mdns_action_t action ;
318
323
mdns_action_t * a = & action ;
319
324
action .type = ACTION_TASK_STOP ;
320
325
if (xQueueSend (s_action_queue , & a , (TickType_t )0 ) != pdPASS ) {
321
- _mdns_service_task_handle = NULL ;
326
+ s_service_task_handle = NULL ;
322
327
}
323
- while (_mdns_service_task_handle ) {
328
+ while (s_service_task_handle ) {
324
329
vTaskDelay (10 / portTICK_PERIOD_MS );
325
330
}
326
331
vTaskDelete (task_handle );
327
332
}
328
- vSemaphoreDelete (_mdns_service_semaphore );
329
- _mdns_service_semaphore = NULL ;
333
+ vSemaphoreDelete (s_service_semaphore );
334
+ s_service_semaphore = NULL ;
330
335
return ESP_OK ;
331
336
}
332
337
@@ -363,7 +368,7 @@ esp_err_t mdns_init(void)
363
368
goto free_queue ;
364
369
}
365
370
366
- if (_mdns_service_task_start ()) {
371
+ if (service_task_start ()) {
367
372
//service start failed!
368
373
err = ESP_FAIL ;
369
374
goto free_all_and_disable_pcbs ;
@@ -390,14 +395,14 @@ void mdns_free(void)
390
395
mdns_priv_netif_unregister_predefined_handlers ();
391
396
392
397
mdns_service_remove_all ();
393
- _mdns_service_task_stop ();
398
+ service_task_stop ();
394
399
// at this point, the service task is deleted, so we can destroy the stack size
395
- mdns_mem_task_free (_mdns_stack_buffer );
400
+ mdns_mem_task_free (s_stack_buffer );
396
401
mdns_priv_pcb_deinit ();
397
402
if (s_action_queue ) {
398
403
mdns_action_t * c ;
399
404
while (xQueueReceive (s_action_queue , & c , 0 ) == pdTRUE ) {
400
- _mdns_free_action (c );
405
+ free_action (c );
401
406
}
402
407
vQueueDelete (s_action_queue );
403
408
}
0 commit comments