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+ #define MDNS_SERVICE_LOCK () xSemaphoreTake(s_service_semaphore, portMAX_DELAY)
33+ #define MDNS_SERVICE_UNLOCK () xSemaphoreGive(s_service_semaphore)
2834
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 ;
3238static QueueHandle_t s_action_queue ;
3339static esp_timer_handle_t s_timer_handle ;
3440
@@ -112,12 +118,10 @@ static void perform_event_action(mdns_if_t mdns_if, mdns_event_actions_t action)
112118#endif /* CONFIG_MDNS_RESPOND_REVERSE_QUERIES */
113119}
114120
115-
116-
117121/**
118122 * @brief Free action data
119123 */
120- static void _mdns_free_action (mdns_action_t * action )
124+ static void free_action (mdns_action_t * action )
121125{
122126 switch (action -> type ) {
123127 case ACTION_SEARCH_ADD :
@@ -152,7 +156,7 @@ static void _mdns_free_action(mdns_action_t *action)
152156/**
153157 * @brief Called from service thread to execute given action
154158 */
155- static void _mdns_execute_action (mdns_action_t * action )
159+ static void execute_action (mdns_action_t * action )
156160{
157161 switch (action -> type ) {
158162 case ACTION_SYSTEM_EVENT :
@@ -191,7 +195,7 @@ static void _mdns_execute_action(mdns_action_t *action)
191195/**
192196 * @brief the main MDNS service task. Packets are received and parsed here
193197 */
194- static void _mdns_service_task (void * pvParameters )
198+ static void service_task (void * pvParameters )
195199{
196200 mdns_action_t * a = NULL ;
197201 for (;;) {
@@ -202,27 +206,27 @@ static void _mdns_service_task(void *pvParameters)
202206 break ;
203207 }
204208 MDNS_SERVICE_LOCK ();
205- _mdns_execute_action (a );
209+ execute_action (a );
206210 MDNS_SERVICE_UNLOCK ();
207211 }
208212 } else {
209213 vTaskDelay (500 * portTICK_PERIOD_MS );
210214 }
211215 }
212- _mdns_service_task_handle = NULL ;
216+ s_service_task_handle = NULL ;
213217 vTaskDelay (portMAX_DELAY );
214218}
215219
216- static void _mdns_timer_cb (void * arg )
220+ static void timer_cb (void * arg )
217221{
218222 mdns_priv_send_packets ();
219223 mdns_priv_query_start_stop ();
220224}
221225
222- static esp_err_t _mdns_start_timer (void )
226+ static esp_err_t start_timer (void )
223227{
224228 esp_timer_create_args_t timer_conf = {
225- .callback = _mdns_timer_cb ,
229+ .callback = timer_cb ,
226230 .arg = NULL ,
227231 .dispatch_method = ESP_TIMER_TASK ,
228232 .name = "mdns_timer"
@@ -234,7 +238,7 @@ static esp_err_t _mdns_start_timer(void)
234238 return esp_timer_start_periodic (s_timer_handle , MDNS_TIMER_PERIOD_US );
235239}
236240
237- static esp_err_t _mdns_stop_timer (void )
241+ static esp_err_t stop_timer (void )
238242{
239243 esp_err_t err = ESP_OK ;
240244 if (s_timer_handle ) {
@@ -247,21 +251,21 @@ static esp_err_t _mdns_stop_timer(void)
247251 return err ;
248252}
249253
250- static esp_err_t _mdns_task_create_with_caps (void )
254+ static esp_err_t create_task_with_caps (void )
251255{
252256 esp_err_t ret = ESP_OK ;
253257 static StaticTask_t mdns_task_buffer ;
254258
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" );
257261
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" );
260264
261265 return ret ;
262266
263267err :
264- mdns_mem_task_free (_mdns_stack_buffer );
268+ mdns_mem_task_free (s_stack_buffer );
265269 return ret ;
266270}
267271
@@ -272,34 +276,34 @@ static esp_err_t _mdns_task_create_with_caps(void)
272276 * - ESP_OK on success
273277 * - ESP_FAIL on error
274278 */
275- static esp_err_t _mdns_service_task_start (void )
279+ static esp_err_t service_task_start (void )
276280{
277281 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" );
281285 }
282286 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" );
284288
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" );
287291#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL (5 , 1 , 0 ) && !CONFIG_IDF_TARGET_LINUX
288292 StackType_t * mdns_debug_stack_buffer ;
289293 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 );
291295 ESP_LOGD (TAG , "mdns_debug_stack_buffer:%p mdns_debug_task_buffer:%p\n" , mdns_debug_stack_buffer , mdns_debug_task_buffer );
292296#endif // CONFIG_IDF_TARGET_LINUX
293297 }
294298 MDNS_SERVICE_UNLOCK ();
295299 return ret ;
296300
297301err_stop_timer :
298- _mdns_stop_timer ();
302+ stop_timer ();
299303err :
300304 MDNS_SERVICE_UNLOCK ();
301- vSemaphoreDelete (_mdns_service_semaphore );
302- _mdns_service_semaphore = NULL ;
305+ vSemaphoreDelete (s_service_semaphore );
306+ s_service_semaphore = NULL ;
303307 return ret ;
304308}
305309
@@ -309,24 +313,24 @@ static esp_err_t _mdns_service_task_start(void)
309313 * @return
310314 * - ESP_OK
311315 */
312- static esp_err_t _mdns_service_task_stop (void )
316+ static esp_err_t service_task_stop (void )
313317{
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 ;
317321 mdns_action_t action ;
318322 mdns_action_t * a = & action ;
319323 action .type = ACTION_TASK_STOP ;
320324 if (xQueueSend (s_action_queue , & a , (TickType_t )0 ) != pdPASS ) {
321- _mdns_service_task_handle = NULL ;
325+ s_service_task_handle = NULL ;
322326 }
323- while (_mdns_service_task_handle ) {
327+ while (s_service_task_handle ) {
324328 vTaskDelay (10 / portTICK_PERIOD_MS );
325329 }
326330 vTaskDelete (task_handle );
327331 }
328- vSemaphoreDelete (_mdns_service_semaphore );
329- _mdns_service_semaphore = NULL ;
332+ vSemaphoreDelete (s_service_semaphore );
333+ s_service_semaphore = NULL ;
330334 return ESP_OK ;
331335}
332336
@@ -363,7 +367,7 @@ esp_err_t mdns_init(void)
363367 goto free_queue ;
364368 }
365369
366- if (_mdns_service_task_start ()) {
370+ if (service_task_start ()) {
367371 //service start failed!
368372 err = ESP_FAIL ;
369373 goto free_all_and_disable_pcbs ;
@@ -390,14 +394,14 @@ void mdns_free(void)
390394 mdns_priv_netif_unregister_predefined_handlers ();
391395
392396 mdns_service_remove_all ();
393- _mdns_service_task_stop ();
397+ service_task_stop ();
394398 // 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 );
396400 mdns_priv_pcb_deinit ();
397401 if (s_action_queue ) {
398402 mdns_action_t * c ;
399403 while (xQueueReceive (s_action_queue , & c , 0 ) == pdTRUE ) {
400- _mdns_free_action (c );
404+ free_action (c );
401405 }
402406 vQueueDelete (s_action_queue );
403407 }
0 commit comments