Преглед изворни кода

Merge branch 'bugfix/mdns_add_result_count_async' into 'master'

mdns: Added results count to async API (GitHub PR)

Closes IDFGH-6340

See merge request espressif/esp-idf!16362
David Čermák пре 4 година
родитељ
комит
e8a4c4b440

+ 2 - 1
components/mdns/include/mdns.h

@@ -546,12 +546,13 @@ esp_err_t mdns_query_async_delete(mdns_search_once_t* search);
  * @param search pointer to search object
  * @param timeout time in milliseconds to wait for answers
  * @param results pointer to the results of the query
+ * @param num_results pointer to the number of the actual result items (set to NULL to ignore this return value)
  *
  * @return
  *      True if search has finished before or at timeout
  *      False if search timeout is over
  */
-bool mdns_query_async_get_results(mdns_search_once_t* search, uint32_t timeout, mdns_result_t ** results);
+bool mdns_query_async_get_results(mdns_search_once_t* search, uint32_t timeout, mdns_result_t ** results, uint8_t * num_results);
 
 /**
  * @brief  Query mDNS for host or service asynchronousely.

+ 7 - 2
components/mdns/mdns.c

@@ -5573,10 +5573,15 @@ esp_err_t mdns_query_async_delete(mdns_search_once_t* search)
     return ESP_OK;
 }
 
-bool mdns_query_async_get_results(mdns_search_once_t* search, uint32_t timeout, mdns_result_t ** results)
+bool mdns_query_async_get_results(mdns_search_once_t* search, uint32_t timeout, mdns_result_t ** results, uint8_t * num_results)
 {
     if (xSemaphoreTake(search->done_semaphore, pdMS_TO_TICKS(timeout)) == pdTRUE) {
-        *results = search->result;
+        if (results) {
+            *results = search->result;
+        }
+        if (num_results) {
+            *num_results = search->num_results;
+        }
         return true;
     }
     return false;

+ 1 - 1
examples/protocols/mdns/main/mdns_example_main.c

@@ -146,7 +146,7 @@ static bool check_and_print_result(mdns_search_once_t *search)
 {
     // Check if any result is available
     mdns_result_t * result = NULL;
-    if (!mdns_query_async_get_results(search, 0, &result)) {
+    if (!mdns_query_async_get_results(search, 0, &result, NULL)) {
         return false;
     }