free(search->instance);
free(search->service);
free(search->proto);
- vSemaphoreDelete(search->lock);
+ vSemaphoreDelete(search->done_semaphore);
free(search);
}
}
memset(search, 0, sizeof(mdns_search_once_t));
- search->lock = xSemaphoreCreateMutex();
- if (!search->lock) {
+ search->done_semaphore = xSemaphoreCreateBinary();
+ if (!search->done_semaphore) {
free(search);
return NULL;
}
search->started_at = xTaskGetTickCount() * portTICK_PERIOD_MS;
search->next = NULL;
- xSemaphoreTake(search->lock, 0);
-
return search;
}
{
search->state = SEARCH_OFF;
queueDetach(mdns_search_once_t, _mdns_server->search_once, search);
- xSemaphoreGive(search->lock);
+ xSemaphoreGive(search->done_semaphore);
}
/**
free(h->instance);
free(h->service);
free(h->proto);
- vSemaphoreDelete(h->lock);
+ vSemaphoreDelete(h->done_semaphore);
if (h->result) {
mdns_query_results_free(h->result);
}
_mdns_search_free(search);
return ESP_ERR_NO_MEM;
}
- xSemaphoreTake(search->lock, portMAX_DELAY);
+ xSemaphoreTake(search->done_semaphore, portMAX_DELAY);
*results = search->result;
_mdns_search_free(search);
#define PCB_STATE_IS_ANNOUNCING(s) (s->state > PCB_PROBE_3 && s->state < PCB_RUNNING)
#define PCB_STATE_IS_RUNNING(s) (s->state == PCB_RUNNING)
-#define MDNS_SEARCH_LOCK() xSemaphoreTake(_mdns_server->search.lock, portMAX_DELAY)
-#define MDNS_SEARCH_UNLOCK() xSemaphoreGive(_mdns_server->search.lock)
-
#ifndef HOOK_MALLOC_FAILED
#define HOOK_MALLOC_FAILED ESP_LOGE(TAG, "Cannot allocate memory (line: %d, free heap: %d bytes)", __LINE__, esp_get_free_heap_size());
#endif
uint32_t started_at;
uint32_t sent_at;
uint32_t timeout;
- SemaphoreHandle_t lock;
+ SemaphoreHandle_t done_semaphore;
uint16_t type;
uint8_t max_results;
uint8_t num_results;