55 */
66#include <string.h>
77#include "mdns_private.h"
8- #include "mdns_networking.h"
98#include "freertos/FreeRTOS.h"
109#include "freertos/task.h"
1110#include "freertos/queue.h"
1211#include "freertos/semphr.h"
1312#include "esp_check.h"
1413#include "mdns.h"
15- #include "mdns_private.h"
16- #include "mdns_networking.h"
1714#include "mdns_mem_caps.h"
1815#include "mdns_utils.h"
19- #include "mdns_debug.h"
2016#include "mdns_browser.h"
2117#include "mdns_netif.h"
2218#include "mdns_send.h"
2521#include "mdns_pcb.h"
2622#include "mdns_responder.h"
2723
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)
2835
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 ;
3239static QueueHandle_t s_action_queue ;
3340static esp_timer_handle_t s_timer_handle ;
3441
@@ -112,12 +119,10 @@ static void perform_event_action(mdns_if_t mdns_if, mdns_event_actions_t action)
112119#endif /* CONFIG_MDNS_RESPOND_REVERSE_QUERIES */
113120}
114121
115-
116-
117122/**
118123 * @brief Free action data
119124 */
120- static void _mdns_free_action (mdns_action_t * action )
125+ static void free_action (mdns_action_t * action )
121126{
122127 switch (action -> type ) {
123128 case ACTION_SEARCH_ADD :
@@ -152,7 +157,7 @@ static void _mdns_free_action(mdns_action_t *action)
152157/**
153158 * @brief Called from service thread to execute given action
154159 */
155- static void _mdns_execute_action (mdns_action_t * action )
160+ static void execute_action (mdns_action_t * action )
156161{
157162 switch (action -> type ) {
158163 case ACTION_SYSTEM_EVENT :
@@ -191,7 +196,7 @@ static void _mdns_execute_action(mdns_action_t *action)
191196/**
192197 * @brief the main MDNS service task. Packets are received and parsed here
193198 */
194- static void _mdns_service_task (void * pvParameters )
199+ static void service_task (void * pvParameters )
195200{
196201 mdns_action_t * a = NULL ;
197202 for (;;) {
@@ -202,27 +207,27 @@ static void _mdns_service_task(void *pvParameters)
202207 break ;
203208 }
204209 MDNS_SERVICE_LOCK ();
205- _mdns_execute_action (a );
210+ execute_action (a );
206211 MDNS_SERVICE_UNLOCK ();
207212 }
208213 } else {
209214 vTaskDelay (500 * portTICK_PERIOD_MS );
210215 }
211216 }
212- _mdns_service_task_handle = NULL ;
217+ s_service_task_handle = NULL ;
213218 vTaskDelay (portMAX_DELAY );
214219}
215220
216- static void _mdns_timer_cb (void * arg )
221+ static void timer_cb (void * arg )
217222{
218223 mdns_priv_send_packets ();
219224 mdns_priv_query_start_stop ();
220225}
221226
222- static esp_err_t _mdns_start_timer (void )
227+ static esp_err_t start_timer (void )
223228{
224229 esp_timer_create_args_t timer_conf = {
225- .callback = _mdns_timer_cb ,
230+ .callback = timer_cb ,
226231 .arg = NULL ,
227232 .dispatch_method = ESP_TIMER_TASK ,
228233 .name = "mdns_timer"
@@ -234,7 +239,7 @@ static esp_err_t _mdns_start_timer(void)
234239 return esp_timer_start_periodic (s_timer_handle , MDNS_TIMER_PERIOD_US );
235240}
236241
237- static esp_err_t _mdns_stop_timer (void )
242+ static esp_err_t stop_timer (void )
238243{
239244 esp_err_t err = ESP_OK ;
240245 if (s_timer_handle ) {
@@ -247,21 +252,21 @@ static esp_err_t _mdns_stop_timer(void)
247252 return err ;
248253}
249254
250- static esp_err_t _mdns_task_create_with_caps (void )
255+ static esp_err_t create_task_with_caps (void )
251256{
252257 esp_err_t ret = ESP_OK ;
253258 static StaticTask_t mdns_task_buffer ;
254259
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" );
257262
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" );
260265
261266 return ret ;
262267
263268err :
264- mdns_mem_task_free (_mdns_stack_buffer );
269+ mdns_mem_task_free (s_stack_buffer );
265270 return ret ;
266271}
267272
@@ -272,34 +277,34 @@ static esp_err_t _mdns_task_create_with_caps(void)
272277 * - ESP_OK on success
273278 * - ESP_FAIL on error
274279 */
275- static esp_err_t _mdns_service_task_start (void )
280+ static esp_err_t service_task_start (void )
276281{
277282 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" );
281286 }
282287 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" );
284289
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" );
287292#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL (5 , 1 , 0 ) && !CONFIG_IDF_TARGET_LINUX
288293 StackType_t * mdns_debug_stack_buffer ;
289294 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 );
291296 ESP_LOGD (TAG , "mdns_debug_stack_buffer:%p mdns_debug_task_buffer:%p\n" , mdns_debug_stack_buffer , mdns_debug_task_buffer );
292297#endif // CONFIG_IDF_TARGET_LINUX
293298 }
294299 MDNS_SERVICE_UNLOCK ();
295300 return ret ;
296301
297302err_stop_timer :
298- _mdns_stop_timer ();
303+ stop_timer ();
299304err :
300305 MDNS_SERVICE_UNLOCK ();
301- vSemaphoreDelete (_mdns_service_semaphore );
302- _mdns_service_semaphore = NULL ;
306+ vSemaphoreDelete (s_service_semaphore );
307+ s_service_semaphore = NULL ;
303308 return ret ;
304309}
305310
@@ -309,24 +314,24 @@ static esp_err_t _mdns_service_task_start(void)
309314 * @return
310315 * - ESP_OK
311316 */
312- static esp_err_t _mdns_service_task_stop (void )
317+ static esp_err_t service_task_stop (void )
313318{
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 ;
317322 mdns_action_t action ;
318323 mdns_action_t * a = & action ;
319324 action .type = ACTION_TASK_STOP ;
320325 if (xQueueSend (s_action_queue , & a , (TickType_t )0 ) != pdPASS ) {
321- _mdns_service_task_handle = NULL ;
326+ s_service_task_handle = NULL ;
322327 }
323- while (_mdns_service_task_handle ) {
328+ while (s_service_task_handle ) {
324329 vTaskDelay (10 / portTICK_PERIOD_MS );
325330 }
326331 vTaskDelete (task_handle );
327332 }
328- vSemaphoreDelete (_mdns_service_semaphore );
329- _mdns_service_semaphore = NULL ;
333+ vSemaphoreDelete (s_service_semaphore );
334+ s_service_semaphore = NULL ;
330335 return ESP_OK ;
331336}
332337
@@ -363,7 +368,7 @@ esp_err_t mdns_init(void)
363368 goto free_queue ;
364369 }
365370
366- if (_mdns_service_task_start ()) {
371+ if (service_task_start ()) {
367372 //service start failed!
368373 err = ESP_FAIL ;
369374 goto free_all_and_disable_pcbs ;
@@ -390,14 +395,14 @@ void mdns_free(void)
390395 mdns_priv_netif_unregister_predefined_handlers ();
391396
392397 mdns_service_remove_all ();
393- _mdns_service_task_stop ();
398+ service_task_stop ();
394399 // 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 );
396401 mdns_priv_pcb_deinit ();
397402 if (s_action_queue ) {
398403 mdns_action_t * c ;
399404 while (xQueueReceive (s_action_queue , & c , 0 ) == pdTRUE ) {
400- _mdns_free_action (c );
405+ free_action (c );
401406 }
402407 vQueueDelete (s_action_queue );
403408 }
0 commit comments