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