From 3f7b7c4a82c1202561c31de397fb50793bb97023 Mon Sep 17 00:00:00 2001 From: horihiro Date: Sat, 9 Jun 2018 16:55:26 +0900 Subject: [PATCH 1/2] add methods for getting TXTs. --- libraries/ESPmDNS/src/ESPmDNS.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/ESPmDNS/src/ESPmDNS.h b/libraries/ESPmDNS/src/ESPmDNS.h index 083ec17eeac..e66fbdb7e62 100644 --- a/libraries/ESPmDNS/src/ESPmDNS.h +++ b/libraries/ESPmDNS/src/ESPmDNS.h @@ -107,6 +107,10 @@ class MDNSResponder { IPAddress IP(int idx); IPv6Address IPv6(int idx); uint16_t port(int idx); + int numTxt(int idx); + bool hasTxt(int idx, const char * key); + String txt(int idx, const char * key); + String txt(int idx, int txtIdx); private: String _hostname; From 54d5f839e15a955644b46e4aeaa8f4f39a86c1f8 Mon Sep 17 00:00:00 2001 From: horihiro Date: Sat, 9 Jun 2018 16:59:28 +0900 Subject: [PATCH 2/2] add methods for getting TXTs. --- libraries/ESPmDNS/src/ESPmDNS.cpp | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/libraries/ESPmDNS/src/ESPmDNS.cpp b/libraries/ESPmDNS/src/ESPmDNS.cpp index e7b05c9db10..42a4ad50349 100644 --- a/libraries/ESPmDNS/src/ESPmDNS.cpp +++ b/libraries/ESPmDNS/src/ESPmDNS.cpp @@ -285,4 +285,51 @@ uint16_t MDNSResponder::port(int idx) { return result->port; } +int MDNSResponder::numTxt(int idx) { + mdns_result_t * result = _getResult(idx); + if(!result){ + log_e("Result %d not found", idx); + return 0; + } + return result->txt_count; +} + +bool MDNSResponder::hasTxt(int idx, const char * key) { + mdns_result_t * result = _getResult(idx); + if(!result){ + log_e("Result %d not found", idx); + return false; + } + int i = 0; + while(i < result->txt_count) { + if (strcmp(result->txt[i].key, key) == 0) return true; + i++; + } + return false; +} + +String MDNSResponder::txt(int idx, const char * key) { + mdns_result_t * result = _getResult(idx); + if(!result){ + log_e("Result %d not found", idx); + return ""; + } + int i = 0; + while(i < result->txt_count) { + if (strcmp(result->txt[i].key, key) == 0) return result->txt[i].value; + i++; + } + return ""; +} + +String MDNSResponder::txt(int idx, int txtIdx) { + mdns_result_t * result = _getResult(idx); + if(!result){ + log_e("Result %d not found", idx); + return ""; + } + if (txtIdx >= result->txt_count) return ""; + return result->txt[txtIdx].value; +} + MDNSResponder MDNS;