From bbf20fdfa08dc94bcc5d24639609f42daffe0e31 Mon Sep 17 00:00:00 2001 From: david-cermak <38914379+david-cermak@users.noreply.github.com> Date: Fri, 30 Sep 2022 08:40:36 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20espressi?= =?UTF-8?q?f/esp-protocols@467fec5c9b1df059771d280fab06ce56544c9d91=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asio/.buildinfo | 2 +- asio/_static/doctools.js | 130 +--------- asio/_static/pygments.css | 7 +- asio/_static/searchtools.js | 74 ++++-- asio/_static/sphinx_highlight.js | 144 +++++++++++ asio/genindex.html | 3 +- asio/index.html | 13 +- asio/search.html | 1 + asio/searchindex.js | 2 +- esp_modem/.doctrees/advanced_api.doctree | Bin 77627 -> 77932 bytes esp_modem/.doctrees/api_docs.doctree | Bin 288094 -> 289791 bytes esp_modem/.doctrees/cxx_api_docs.doctree | Bin 104092 -> 104345 bytes esp_modem/.doctrees/environment.pickle | Bin 412025 -> 409626 bytes esp_modem/.doctrees/internal_docs.doctree | Bin 466473 -> 468588 bytes esp_modem/README.html | 3 +- esp_modem/_static/doctools.js | 130 +--------- esp_modem/_static/pygments.css | 8 +- esp_modem/_static/searchtools.js | 74 ++++-- esp_modem/_static/sphinx_highlight.js | 144 +++++++++++ esp_modem/advanced_api.html | 3 +- esp_modem/api_docs.html | 3 +- esp_modem/cxx_api_docs.html | 3 +- esp_modem/cxx_api_links.html | 3 +- esp_modem/genindex.html | 3 +- esp_modem/index.html | 3 +- esp_modem/internal_design.html | 3 +- esp_modem/internal_docs.html | 3 +- esp_modem/search.html | 3 +- esp_modem/searchindex.js | 2 +- esp_websocket_client/.buildinfo | 2 +- esp_websocket_client/_static/doctools.js | 130 +--------- esp_websocket_client/_static/pygments.css | 7 +- esp_websocket_client/_static/searchtools.js | 74 ++++-- .../_static/sphinx_highlight.js | 144 +++++++++++ esp_websocket_client/genindex.html | 3 +- esp_websocket_client/index.html | 47 ++-- esp_websocket_client/search.html | 1 + esp_websocket_client/searchindex.js | 2 +- mdns/en/.buildinfo | 2 +- mdns/en/_static/doctools.js | 130 +--------- mdns/en/_static/pygments.css | 7 +- mdns/en/_static/searchtools.js | 74 ++++-- mdns/en/_static/sphinx_highlight.js | 144 +++++++++++ mdns/en/genindex.html | 3 +- mdns/en/index.html | 229 +++++++++--------- mdns/en/search.html | 1 + mdns/en/searchindex.js | 2 +- mdns/zh_CN/.buildinfo | 2 +- mdns/zh_CN/_static/doctools.js | 130 +--------- mdns/zh_CN/_static/pygments.css | 7 +- mdns/zh_CN/_static/searchtools.js | 74 ++++-- mdns/zh_CN/_static/sphinx_highlight.js | 144 +++++++++++ mdns/zh_CN/genindex.html | 3 +- mdns/zh_CN/index.html | 229 +++++++++--------- mdns/zh_CN/search.html | 1 + mdns/zh_CN/searchindex.js | 2 +- 56 files changed, 1383 insertions(+), 975 deletions(-) create mode 100644 asio/_static/sphinx_highlight.js create mode 100644 esp_modem/_static/sphinx_highlight.js create mode 100644 esp_websocket_client/_static/sphinx_highlight.js create mode 100644 mdns/en/_static/sphinx_highlight.js create mode 100644 mdns/zh_CN/_static/sphinx_highlight.js diff --git a/asio/.buildinfo b/asio/.buildinfo index 674b4e9e5..c7552479b 100644 --- a/asio/.buildinfo +++ b/asio/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: bdb9c4058bb57ea76ea7b85c00a2c40f +config: 2bccfe8e104e823c5c6f1fd9ba510b65 tags: 549b3d6d0415232fb7e35403b330ff49 diff --git a/asio/_static/doctools.js b/asio/_static/doctools.js index c3db08d1c..527b876ca 100644 --- a/asio/_static/doctools.js +++ b/asio/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/asio/_static/pygments.css b/asio/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/asio/_static/pygments.css +++ b/asio/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/asio/_static/searchtools.js b/asio/_static/searchtools.js index f2fb7d5cf..e89e34d4e 100644 --- a/asio/_static/searchtools.js +++ b/asio/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/asio/_static/sphinx_highlight.js b/asio/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/asio/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/asio/genindex.html b/asio/genindex.html index 307bf9f96..0d83d8392 100644 --- a/asio/genindex.html +++ b/asio/genindex.html @@ -17,6 +17,7 @@ + @@ -90,7 +91,7 @@
  • »
  • Index
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/asio/index.html b/asio/index.html index 8211726b9..128c37b0f 100644 --- a/asio/index.html +++ b/asio/index.html @@ -18,6 +18,7 @@ + @@ -102,7 +103,7 @@
  • »
  • ASIO port
  • - Edit on GitHub + Edit on GitHub

  • @@ -143,12 +144,12 @@ SSL/TLS support is disabled by default and could be enabled in component configu

    Application Example

    -

    ESP examples are based on standard asio examples :

    +

    ESP examples are based on standard asio examples :

    Please refer to the specific example README.md for details

    diff --git a/asio/search.html b/asio/search.html index 114a5b6e1..bd527eb14 100644 --- a/asio/search.html +++ b/asio/search.html @@ -18,6 +18,7 @@ + diff --git a/asio/searchindex.js b/asio/searchindex.js index abee8b63b..5ff6a8c6e 100644 --- a/asio/searchindex.js +++ b/asio/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["ASIO port"], "terms": {"i": 0, "cross": 0, "platform": 0, "c": 0, "librari": 0, "see": 0, "http": 0, "think": 0, "async": 0, "com": 0, "It": 0, "provid": 0, "consist": 0, "asynchron": 0, "model": 0, "us": 0, "modern": 0, "approach": 0, "pleas": 0, "refer": 0, "origin": 0, "also": 0, "come": 0, "number": 0, "which": 0, "could": 0, "find": 0, "under": 0, "web": 0, "site": 0, "esp": 0, "current": 0, "onli": 0, "network": 0, "socket": 0, "oper": 0, "doe": 0, "serial": 0, "ssl": 0, "tl": 0, "disabl": 0, "default": 0, "enabl": 0, "compon": 0, "configur": 0, "menu": 0, "choos": 0, "from": 0, "mbedtl": 0, "openssl": 0, "translat": 0, "layer": 0, "option": 0, "wolfssl": 0, "veri": 0, "basic": 0, "thi": 0, "stage": 0, "includ": 0, "follow": 0, "verif": 0, "callback": 0, "dh": 0, "properti": 0, "file": 0, "certif": 0, "privat": 0, "kei": 0, "api": 0, "intern": 0, "set": 0, "except": 0, "ar": 0, "menuconfig": 0, "typeid": 0, "base": 0, "standard": 0, "udp_echo_serv": 0, "tcp_echo_serv": 0, "asio_chat": 0, "ssl_client_serv": 0, "specif": 0, "readm": 0, "md": 0, "detail": 0}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"asio": 0, "port": 0, "overview": 0, "document": 0, "support": 0, "featur": 0, "applic": 0, "exampl": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["ASIO port"], "terms": {"i": 0, "cross": 0, "platform": 0, "c": 0, "librari": 0, "see": 0, "http": 0, "think": 0, "async": 0, "com": 0, "It": 0, "provid": 0, "consist": 0, "asynchron": 0, "model": 0, "us": 0, "modern": 0, "approach": 0, "pleas": 0, "refer": 0, "origin": 0, "also": 0, "come": 0, "number": 0, "which": 0, "could": 0, "find": 0, "under": 0, "web": 0, "site": 0, "esp": 0, "current": 0, "onli": 0, "network": 0, "socket": 0, "oper": 0, "doe": 0, "serial": 0, "ssl": 0, "tl": 0, "disabl": 0, "default": 0, "enabl": 0, "compon": 0, "configur": 0, "menu": 0, "choos": 0, "from": 0, "mbedtl": 0, "openssl": 0, "translat": 0, "layer": 0, "option": 0, "wolfssl": 0, "veri": 0, "basic": 0, "thi": 0, "stage": 0, "includ": 0, "follow": 0, "verif": 0, "callback": 0, "dh": 0, "properti": 0, "file": 0, "certif": 0, "privat": 0, "kei": 0, "api": 0, "intern": 0, "set": 0, "except": 0, "ar": 0, "menuconfig": 0, "typeid": 0, "base": 0, "standard": 0, "udp_echo_serv": 0, "tcp_echo_serv": 0, "asio_chat": 0, "ssl_client_serv": 0, "specif": 0, "readm": 0, "md": 0, "detail": 0}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"asio": 0, "port": 0, "overview": 0, "document": 0, "support": 0, "featur": 0, "applic": 0, "exampl": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"ASIO port": [[0, "asio-port"]], "Overview": [[0, "overview"]], "ASIO documentation": [[0, "asio-documentation"]], "Supported features": [[0, "supported-features"]], "Application Example": [[0, "application-example"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/esp_modem/.doctrees/advanced_api.doctree b/esp_modem/.doctrees/advanced_api.doctree index 211daa72b0018486879a67a32f7d4f1fde9b4980..a3871fb4b80a2e4865d9d57ef2990e6b01a02474 100644 GIT binary patch delta 15704 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 M{4x|Xm`juN08#1^lK=n! delta 53958 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 diff --git a/esp_modem/.doctrees/cxx_api_docs.doctree b/esp_modem/.doctrees/cxx_api_docs.doctree index ddad0f366c11c03b8ea4e4f48d23dbe37efc57d2..47a3984f10c8b053dc1cd0433410fe38680c7ce4 100644 GIT binary patch delta 18332 zcmbQUmTl&GHkJm~sf-(0UP;OHaK)G8C&w2g7L^oF(d^*_^YRjNQ>SFGO@1de)Ak<| z149pceo|IRWkKqctp6Y`M@njOG7_IXFF!LcCADHoXAcjQnVMHpR5@ibhl0h28A6Ypa9cfi7ai-*bb5csr|2|H`z+jmT5ZJ zM5ZaslQ*h+P5!5t&ge5aP04^!cCx&U{PYAqMngu)$uE>-8AT?uDF-NJePCi>(9HVC z#K4fjR+^!m)xpTXkRh9)lOg9Vlp&oZ#yq+3lg#7|HWHI3__9p?5X{afHd)?AeR7tx zuv!)~GXq1`6%fG!BCdi6RuBPZu`x3+bY`(nW>pDbWSJbMQpog#d2%AZ#N^lr7p8~I z(_bnw`cE!Xjbwbd`GTr5BacFwFyNVd7w!>?m)_w1x#7e;{t0oZRG^ha8g= zb)^|CC)et#GVKE!$h3=PlDs`5$7FfEy-asmCU2CrWV*>RIdQrs(`%^in=F$BQ&c9` z$?;8IB`3-B2dt0rC)gqXP#gl&DZ>i3m+|IgJ3}odEmn}sc8XN;9-G%rm63(m?E_ z46z<2J%uT)QyQn#PSF4hPiCw)U`(DYZQ9E?eewhgU5=@&V24hce9v?y;|8$MI*8D! z$!pCdnN}ezJA|-|_cF)=sAa1r_nYg26f)KuFfC`D?ikFd$d$DeV#*}e$$_47prp$` z0V2{1(wdYtadKg)Fypkz2^RW{??CoSK%Md$qzsb&8A_9~ma$Gx>}Qmk{NCae(|?3x z*xBGd=apbX`27FmCaWzVg&@cLL37M&xMMisj)6Ikvm0cubXGF!WX5{!$?t<^_G}CcS>R0O0AhhN8JGplWT31D%D&B@>?@POoFSd{aPmZ(g^Uj;Ur;sN zoMJ1$$dtqe&R>yi;QW=v2F_pUlLhU47;`2YID_(691}=Z!^4fo=oQ;x=w>_xd5_-1zq2Q$?=E9 zncl&*fpXbzHgIYO84b#1J6x0)yC&auQDNkr%;;{##K}HM-d-e^36&;g zU7FnQs>^s|@?KX<#`{wZ8KoIDCNsLrO}6irVNziSWkE($uz-UcSO6&#GP;3{c4nWv zQQe!#gMG50vm?T-P|ayD&7vyo450K;4=O$(37j=cXY#_Q;*2E_HBJx<`ivPHCo{Us zPTr8l&geXSBQK*gqsrs}PjgOaCRJdcoM@y2%cYTQh+G=V2Fj&80c;EmJu30e0Rd&k zlOMRtPmcAeazfaauiAU0;UUB?c} zwnD4fVWI7pA?H_`l+^>yLa>Zf=VQuv6KwPaJ^@%}x(3n%i5*a2!7`J78Si8TUkRr5 ztdrLm>M*{8Y2$?E{a5Uh*O^H$y@ETMiGc&2-}nSM5c%yD`{W7cIv|yx4ELNJoclRp zx&PYa08e@3%zqi|L*&fQq{A_JqJ<93!I~Tlu-XsV!Jyo4%K-~QCRc=Oc*BrfV>`Jp za0`akNYG-Ib^u}oeYT*?P3LV8%!i}FhgrerZsHVE0l zw1@*#EHKWT%ou9Kv>Y59lOOQ0i_Zl443r!gkqhyelj}pnn09hZPMje(Ilxt$apq*j zFf*2E91IMTA9^WHt_h1}x&RKU=>Y*G>2wi%UKOB^1oCwz02h!=yG#P9oszz`b$G8!u z?|+9WzS!)z^Ec<}pcdgQ{01QEqT}OK~H@n@NxxR1q;*a6Rb54FZ173;9a87>r!JkQjbF%$M875)Q=^ObN zg(r8!*iF7RQ*?4qjMe1gq71xMh)9NXmMAB@3OO-La&Z5+`lEk9))RHM#8&LEJl*%$S zaD&QBp;~TOV#ig-FdgCsmDl3X*4loM2BZpRvT#`J-MC2p_zM z_<)ar2T`BgAQvNrGPF%BSG$;LA=tl=B(W0g;SSziNS<9dxvQ>}aUsZk^LS7l z(#r#H{6cHQJ#eSNn!~lAh=4SQHx~*`{&yYP9Dc|Hs}~=ESm1gQ%)(tSew`eD!)x-A z29(;PqA{G2k!A9QCUK_UJmAWMXR=|l6%!{fINS2^g0d~V@+eryI{9oT`((M6bdYjb zC89t1Vw)96091+CgZ0~h^n;2mNF|~*`QqdZkP4(qBmtodQi&9Rb>@O}dNUP)ZDvH# z2rix&CxG-Z{+|4=!;Eq6WW#1~9m4o~azUpnqt4`Qof?em!3M471yvuvK~aZjBjc_< zPEA(qwqiQQ3o4ozufxm*2?(ZmGrj;D`4r-|SIBOI>fo4c*bjDz=rLX##Tla*M2(XS zO&~f)7@UFy@1`W}m9ZcpJ^{AZ0VmVf826>wBl>F@6Wz{snCNPbAwJKY&dZ zpS*DqB;-Hv;R<Y;9Qf*sWXv^g(dv3VqqzW z1uhoAEJDQs(>#=7;o7`#MyBKZphhL*zR4eF%TKzk$#{P9#zj_4XZXP-!$p2j8bm4? zikbHDPllBUpJ3q)5(JeBOp_It$xS*X!}K4d9Z@j6o!qcA1EdJ4U{Ic{xXcP9wsAkC zU@(ShHV^>YZ7Kk=n-N7XB-I7Ow1OI#2_S9Y2IfBg$%UQTlYcFfWPCqaWVr@o5l9N; zoIC+gA+e7iRwHGA#{F;?61^aOpw2X7=j4T}v>0cB`Jgszr@&-TIk6ff05W(5#HnkM zoC?)*8l(i|EYVH@T`-~Z%O;%inoLHGU1wc(7SYBy`m;x>)n3x2?t*-wN z+gSt=0mbrL08&seDG7pGRlh+lhO{+}AiDGg!DFTiCWb-6RurTKdpW@rjAV!sxUHEC zF(d(Gh&NLzlGRwv0Y?~9GuRl$-=NTBnji>n5HkH105>(~2_m=meq;AEsHwRNV)J&0 z&3lk+X4)(WD$kj2K};6iEQlk-nO=Y$0#XlZYJNqrdb1!XykSkvRsrOu=01LK@vw^@ zTs&;$hZGMp7J`ZgvB`56T25}>PPnPLoquxSC$-5ZW=TzU*rCp(Bm`)@PiV4WsSHRXXtY3H2-JuJ4QWq4 zybY-kNf&|@A{ihSxDWxe2o)j;yBncB)6K$rN*I~Cgun$zWc$PNpnfRRRv}QDWNe&#@Sy(W`};MSjzW|l0x3rn7aJxwoJ)sjgAKPm zL+JEk`UcVU8Kldb@yF!CeNK$XdccW}QEc+WBXW}+oMf09g(iba3T23Z99W>RQ*N^J z5mm-blQWN~Gn!7Gc*KgyP#9E9Gzt+}Oay?<1C6=)2!qleV=PzzR8IH^gUg9Lu(8>~ zpuk`%5C&&cutS-kI{IKbM16#Dq*=x}5H(IRj6RbOo-kotIeFp{l!C%X7?f~f1%(I1 zAaFs!cogh_Ll6fXM{)qmK4C~X!T1zrJkvgqqrpW5<5#f0Pau7uXbFP^uP8_pj*>!5 z1QfLpGaw~}ng}>4D2sr7uOWi)JyvtTk;dc(HwM%z4Hf|x6^#2PA3PyES!${@Q=$lR zX|WHx&q1X{EyVUJi0$=AwlkH9fMSbjF2r!rG7%gh&$Jrim@*M?$8-mZ)ny`}K!=qU z9>U0_MWYb7w5SyVl@^Q@n+>n9F%s;DRtbR%hoY+vOix7+1;bkraKXU$59CT{2lS~3 zs0jg8HhIrAAx4(T2k*&FhKzQaPd2!&%_k~~C`g`)fD44DBA^BZ(<2dhfgp4RsX)*Y zg%t?eAQrel0JHEH2*+WCLB!1hMkZfTaADvw`Qa@O#?Z+J?}3^Fj6std?|L(5g^PmH z0Jt^br@=9q`%W&CizvJ`Q8D@8Ju8p^s3p+>)7m<@@$N##;>ib}q=Mv-8W1ZH>LCq? zoiIJyAlB^$TZgI_oXQw)!nA^lg=Zjbpqd(FKB!ozd8o`-I(flERmLA6sY$0~7{5$r zeB>bFB1&Azz$7dNo(oqo;uixI3QUG#pnSooH`(xs50kMNC`h1ggsKmO zs2AlI!<8`O#lV>jWMH2$Q;ryNp5PY)B}`apzzs12TpBQSKx}RW+uVg@GfSfwq%>e! z0WrA|qsI4(p%I&c&PH<8SM6a_CKW;_F1{2Iw(tj0j%h;y>z z8!M(pa1b(zO?G?(ZvBGD+sv7Km`E@bTZOq^4kvqj1H6S zKFTs$FOK=hNU$eiJGtOfD$@#acmcq;VY1^JSl0HN-0)eD?;yyP(4t_4IJhW)XqbHe zvjF39B=tU%)4mAv-9S|jY8$K&2Nea3OTlU{@CksL2TZo2liyvpgG|J|6^9iD??5bY zVE|^~FATgUAO8yLVr;JYR>sIAAOR{6nAjyi!wyUm65zBiI(g$SZ{{p12~cE!%LCn? z)gU#{o&}S&1UP}SOHAIlKb*-MqRV6Q#$OAW%p@ikCdf=K`0WkV0Ba)TAn5@Y2uw8) zeU%W~>cF;P(GN~=Kg;JJlxd`X|R|G5O{{4W`{-BSp7M zfD%e#hJ5W5jj1iu8Ngt=odlz)2)hK4g~T-pa3OI?0+a}u9z$)sBmpiYzJTpv{0MRS zHw>qPb!km!WM%|s3(-qp2ceD^L+0s}K#HuGK<4%tGwM$-WM+hCoJ$g*v2UKmailzwvfV)(PjEXRz@AhY>-kbCKpNgctkZw1gyCNq!~HV zAew}sk;XU&q!OwZTvjly0f~V1t_11zX3koN-C|)zaKtg50cijmkvLtG@g|4|4ik`r zKt;uK6fe6-V)Zhp$-pcHN}Nm#Qs9z;RSM0!On)T7F{La8P8*DWK)x4d1cx${p%gg5 z{*eR~5KMMb$R+Y0u$8b9;+zC>3Bf+yk&iKeiCF^NRQR`j10N$N;kE*U#N@(HYSX{) zGg>lbOCidN;^_$jjGd}2Qi!@g8^p$(gvyoz6#z^bQn0oFBLm1K^3x}1GO|zRYml^J z1}$)zDFrJAW`S7XVgSs-Qw(rSZVZ;hF*7I0be3bfqb8$1(=^a5mYrQgwcTU)bx50#<@(Vq(C!b)BQvl=P-Sd0_7jZ57X7e80Deq ziHS)X6c3Carq2{(v}59z1}S0sAT^y!mC=+*RvH|0AbyQ1qulgk;*28GcZf6EGwDl% zqh4DYw4w!SA~%yfW))hmo3zwb_w(hzVqXknd#HL1&O-$j^(;GDyA*)pw-%KymWRzys$a+5gw=`oC z-l{?-Lptl__Cgs(8Ahg6((nYpv`HG=TI4+}jYt8jriaNf?u9A?FK9UlRs|liSG|R- z62u0l6&>WcP^bl>3XFnG52Po5{9HPHt^%Vl??;ewXg#!Q`d$S_9groUwJ*!3%P2CY zF)_%1rZuO}QDpRH{5$=HBI8D;ztZ3cJgvmIkx5qu6nIQ3GTE$JN;4VBfMSeM zWjd!SqZy<9bO%*ND@K*+RVs|ZO#UF_WTwAXVHD%=l>x7)fvSsxsjF6HOkgUI0Y_$z z45&A!0#b+=8I}P}EKbi>W3-0V(JIp$G#H^v#uTRiS7VfAl%6iD&e)5$#SV%9Ss8FH ze5%f9%(OrTlumUfJNU3L&6R;?Dp`=>_K>`^T?Uqyc7RymyaZ<9&P#u#apk4y@|uha zjLWAxXfhfwz67Nlb)R%;28L9W$#8HUJ_E81G$Eb^Qji6<7tF$K?xCF4rhn69 zjAuF}HC?}$QDS<&7NZp7p6Oj$j1lt3q!<`#r(`_@8NEr0fuT6-1Vm&HsF>I^ol%=H znCT@rObi&GO>fs`j1&0-iV61EDH#@;u$3f#rvKDtlwjBL|Bt zIBprIH<~e;GYQB}-)P5ZJpH#0qc77x8PMd48m}ryiJUi6hIH018SoSm&v%gV;E2vr zoqo`eQFwa4HKWXQ0Ut(|>7IIwywl(7G74&&fHa~y0w$EjD$BqCcbbXp^u8QMDY$+q zCL2`eSwfuW25}yv;`F*)Msc`uUePI#Wn!{fP`85CDw$1BG-Xtto)F2%!h1db`s-sU$mos71V!DLtvhxs^-GRAmnkl0a2Q+rsruUnmg&$jnbk+%6 z?wM!HC^P-ADWjzJA52HVgisyzM|L`645QR^MKeZGMwaP@HjGY)98_q(lu+U=9kk0xCat3N>frNj7gt3LzJX=P&={wCC#kKY17#K28;~6G|>N-6+ zkn7~8OIk1rGMb^d&UiZ5bq+|b6QBOUkdbBjUkgTFSO{`VFSI}lL5>XREFF+$`RNU& zj2u|=@am zE7&peGM+(k=1GuU=8V^1&U|OaC_ep<9it%3o!lAHS;s(%P~8a62|5{a4Dtl#>h7Px+|lgb`PfWU_z+Q>yZZ+Rl>=+r4=ZdZ3?P`Cqf)N z5AI-aItCS7k|3?mwrHY zsiYU9Akz<2mwpAil#yxr!2n3z<-sUB{l6C@H>~&-oL=aKR{RQPNN2sn<)0HqGR9A*f|KrPO$`pg@zDS7s(oozd3(5P^ zevF*cdHoqVVNMdxkj@GNISKAakVp_n1g9fs`!m{Ww_!RGCWPw9HihZ6S+JJ$ZhuBT zew5tRhwAulh~sB~9nYvZJue&9ss?GDE+2?+I%wrZ2gsptr-MXVKq5GuzBZ82R(l7g z(_uoWPT!#bsvzX1%Lg;^Ot%kWe{^!*Pep8_MZ!*G)T25EO@Gbufr(Lq^Ah0Wf3v25Y8wL>+*?bNN33@f_s6mFa`-pO)rRK#8yD< z31>9d^22m4ObFGve$!yXiP@ETx1a(kkgy0y7+dZ*n#ky><$>u)m=LNXJ*HbEF}g4XpgPhQ;>aj; zM_x?C;z-#H=`1ghYf#%5AYnIgKBH(J74P zOiie6u7|j}2jXT%#pzzDjQX(hL@q-*s|Ms4R5yZzD?q|H+^8^JE{#z}YYnE$U_z)a zTLW^LG-Sj`E{&0UdS4nNFVhxOhi-&8bRWc_uoNIa9o*Q+OGh*|S&Pg zDv&TXM}r&k@`;Qb)AchLMYZl>x*R5i>hgQj^D-DMn4Y0J^)bY$A0SR;RGc1{$p~-A zD`ZG#Jpj1_)p;P{J0M|f&YSHI>mAL>V&sK%HUyM0G89Y*)r|tvYqA)vm?V@@GL-0a z#%xA&CM9KXhJrLNj9@KF#p!>u&{~v=8PZvNAU*gx^s>`s5*fLt`{po;X*prK4<>}_ zKBwuuIgFM}Ua0PK2iaxL6asf&T`r>`EL|#PNN2f#6rgr9LBb9YVa#r(Vjg3-X$hvI zU_z*lf{A8`^=MANn8+wIJtmKl8@0VwgX-c+kj>^yZ4ej35~w;v_nv%20#(kC&ME^b zMs+<%xCkPQ>3Z-mZfF5xqxdSQ7f{{1YWmv(Mr)?^s7_h~GR~Z7C&WpNiqjtyG8)4I zQ6)nw*l@$oMVLSowwNr-~Uv8NW?eC}A{Y{JcG=gi(P}h(!f9 zWenX9!aBXBl+l@qM+G#I02|F?nf|wwaXS->%4EiRJ#NT81?>#!tk2Wmmocg{KA$dL z&gcWPUrU97A?vO(lKsy?F1owDshqKni7{$BV-@35=6cX@ee9Gh&=7uN7RZIMQ^2lH z%mOKoodPx@v9yOBbb>%;N-=1QbCwCnY(o%n7&O{n$jHEubqK`T44al!qZ|gx}@(M(N!wcl+ zEKQKd)KnN4N_#j#z6KqOfbe%`7Rb*XVE=Z4z1fik@?r3?)h6KL1VcMuT@N)BLF7@QRjXMw^v>pw`{R(?>b z+69u40Hqr+OA^kKg0nyol645At^y=h3nFfdFfe3+S$E*9yKojL^0Hb%>a0QO&;dlu z11*jLv*yED3+mxaP)uiefE4}%i7|sxZ6YX>fLTd!Rx+FgPSe~Vb)bZiH5Zh+!D;#w zNC`MigIUi(+&3U%At+&kS&N{odWI}%P`XzD5z{~fm^B^FngM5l(pr`Vhzrgd(I6AR zS>qW<44gB-EO5^F49X~=oRI}$mG!~=<(H(!7p10wvPchaa%M?l$@cgr#!^P6 zV=B`Z^f0P19aaJN?(Ewb1*Yq^Fv@cr1ZA$ItV7ci`WaQG|LbJ5p1!$-QIY8(RKq>E z20_N#(*xTW#drlkoBomY#ZP`DtUmolE2A9KZ>Y8(=-Q-FY>J<(Evr8LR~w@oqv-U5 zy^QLNLem}F84V#;psAhywVlzGQ6HjC2ah`OPDWQoPl!4~JjAGLbC&A)G zj8_~z+Eu2nn#AbGXbe$ofTCCiQ}L|HjD?K85XD}E6tA7a=**Z7QJjLJSRT{lNmChZ Y7#ksq>yQ;sx1Ywy%6M?P>omr209g46hX4Qo delta 17821 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%0A>aTpqWq% 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 literal 412025 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 E0N=yhc>n+a diff --git a/esp_modem/.doctrees/internal_docs.doctree b/esp_modem/.doctrees/internal_docs.doctree index 27ba9712511d11ac83306fccbce026ba465ab861..8682935a90d1a9b06052c0a9fd71d0f17bc00ec9 100644 GIT binary patch literal 468588 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

    kV6@oyZ{bEqH-65 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 diff --git a/esp_modem/README.html b/esp_modem/README.html index d403bb6f1..fa057e930 100644 --- a/esp_modem/README.html +++ b/esp_modem/README.html @@ -14,6 +14,7 @@ + @@ -201,7 +202,7 @@ as a class derived from Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/_static/doctools.js b/esp_modem/_static/doctools.js index c3db08d1c..527b876ca 100644 --- a/esp_modem/_static/doctools.js +++ b/esp_modem/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '

    " - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/esp_modem/_static/pygments.css b/esp_modem/_static/pygments.css index dd6621d88..9abe04ba5 100644 --- a/esp_modem/_static/pygments.css +++ b/esp_modem/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } +.highlight { background: #f8f8f8; } .highlight .c { color: #8f5902; font-style: italic } /* Comment */ .highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ .highlight .g { color: #000000 } /* Generic */ @@ -49,6 +54,7 @@ .highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #000000 } /* Name.Variable */ .highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ .highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ .highlight .mb { color: #990000 } /* Literal.Number.Bin */ .highlight .mf { color: #990000 } /* Literal.Number.Float */ diff --git a/esp_modem/_static/searchtools.js b/esp_modem/_static/searchtools.js index f2fb7d5cf..e89e34d4e 100644 --- a/esp_modem/_static/searchtools.js +++ b/esp_modem/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/esp_modem/_static/sphinx_highlight.js b/esp_modem/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/esp_modem/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/esp_modem/advanced_api.html b/esp_modem/advanced_api.html index 18ad0450c..8ced4ad45 100644 --- a/esp_modem/advanced_api.html +++ b/esp_modem/advanced_api.html @@ -14,6 +14,7 @@ + @@ -288,7 +289,7 @@ a custom DTE object and supply it into Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/api_docs.html b/esp_modem/api_docs.html index bb19ccbd5..daee541e9 100644 --- a/esp_modem/api_docs.html +++ b/esp_modem/api_docs.html @@ -14,6 +14,7 @@ + @@ -1028,7 +1029,7 @@ pointer as the return value. The API expects the output data to point to user al ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/cxx_api_docs.html b/esp_modem/cxx_api_docs.html index 689ee9d38..948f10fc3 100644 --- a/esp_modem/cxx_api_docs.html +++ b/esp_modem/cxx_api_docs.html @@ -14,6 +14,7 @@ + @@ -287,7 +288,7 @@ It simply gets destroyed and cleaned-up automatically if the object goes out of ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/cxx_api_links.html b/esp_modem/cxx_api_links.html index 79e0e1259..085b127bb 100644 --- a/esp_modem/cxx_api_links.html +++ b/esp_modem/cxx_api_links.html @@ -14,6 +14,7 @@ + @@ -129,7 +130,7 @@ ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/genindex.html b/esp_modem/genindex.html index 6f515deb9..a6c9012e8 100644 --- a/esp_modem/genindex.html +++ b/esp_modem/genindex.html @@ -13,6 +13,7 @@ + @@ -607,7 +608,7 @@ ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 diff --git a/esp_modem/index.html b/esp_modem/index.html index 281c99bd2..149182b92 100644 --- a/esp_modem/index.html +++ b/esp_modem/index.html @@ -14,6 +14,7 @@ + @@ -160,7 +161,7 @@ ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/internal_design.html b/esp_modem/internal_design.html index 28a7c4c0f..87295eba2 100644 --- a/esp_modem/internal_design.html +++ b/esp_modem/internal_design.html @@ -14,6 +14,7 @@ + @@ -146,7 +147,7 @@ to multiplex the terminal.

    ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/internal_docs.html b/esp_modem/internal_docs.html index 96f5b670d..9012f0a42 100644 --- a/esp_modem/internal_docs.html +++ b/esp_modem/internal_docs.html @@ -14,6 +14,7 @@ + @@ -1401,7 +1402,7 @@ Please refer to the Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 | diff --git a/esp_modem/search.html b/esp_modem/search.html index 22f03d7d4..e0bb5c1ab 100644 --- a/esp_modem/search.html +++ b/esp_modem/search.html @@ -14,6 +14,7 @@ + @@ -116,7 +117,7 @@ ©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.2 & Alabaster 0.7.12 diff --git a/esp_modem/searchindex.js b/esp_modem/searchindex.js index d8cc164e5..22f76f87b 100644 --- a/esp_modem/searchindex.js +++ b/esp_modem/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["README", "advanced_api", "api_docs", "cxx_api_docs", "cxx_api_links", "index", "internal_design", "internal_docs"], "filenames": ["README.md", "advanced_api.rst", "api_docs.rst", "cxx_api_docs.rst", "cxx_api_links.rst", "index.rst", "internal_design.md", "internal_docs.rst"], "titles": ["ESP MODEM", "Advanced esp-modem use cases", "C API Documentation", "C++ API Documentation", "<no title>", "ESP-MODEM Programmers manual", "Internal design", "DCE Internal implementation"], "terms": {"thi": [0, 1, 2, 7], "i": [0, 1, 2, 3, 6, 7], "commun": [0, 2, 3, 5, 7], "command": [0, 1, 5, 6], "mode": [0, 2, 5, 6, 7], "AT": [0, 1, 2, 3, 6, 7], "well": [0, 6, 7], "data": [0, 2, 3, 6, 7], "over": [0, 6], "pppo": 0, "protocol": [0, 7], "The": [0, 1, 2, 3, 6, 7], "model": [0, 1, 5], "equip": [0, 7], "object": [0, 1, 3, 7], "which": [0, 1, 2, 6, 7], "compos": [0, 6], "termin": [0, 1, 2, 5], "abstract": [0, 5, 6], "current": [0, 2, 7], "onli": [0, 1, 2, 6, 7], "uart": [0, 1, 2, 3, 6, 7], "implement": [0, 1, 2, 5, 6], "repres": [0, 1, 7], "network": [0, 1, 2, 3, 6, 7], "interfac": [0, 2, 3, 5, 6], "specif": [0, 1, 2, 3, 7], "its": [0, 2, 6, 7], "o": 0, "set_mod": [0, 7], "send_command": 0, "event": [0, 2], "basic": [0, 1, 2, 3, 6, 7], "oper": [0, 2, 7], "unit": [0, 7], "_": 0, "softwar": 0, "configur": [0, 1, 3, 5, 7], "media": 0, "defin": [0, 1, 2, 7], "librari": [0, 5], "support": [0, 1, 2, 7], "type": [0, 2, 5], "config": [0, 1, 2, 3, 7], "lwip": 0, "after": [0, 2, 7], "creat": [0, 2, 5, 7], "applic": [0, 1, 2, 3], "interact": 0, "issu": [0, 2], "switch": [0, 2, 5, 7], "between": [0, 7], "an": [0, 1, 2, 7], "physic": 0, "connect": [0, 1, 2, 7], "attach": [0, 2, 7], "sim800": [0, 1, 3, 7], "bg96": [0, 1, 3, 7], "sim7600": [0, 1, 3, 7], "user": [0, 1, 2, 7], "internet": 0, "via": [0, 7], "cellular": [0, 2, 7], "send": [0, 2, 3, 6, 7], "variou": 0, "e": [0, 1, 7], "g": [0, 1], "sm": [0, 2, 7], "typic": [0, 1, 2, 7], "regist": 0, "handler": 0, "receiv": [0, 7], "notif": 0, "avail": [0, 2, 6, 7], "ip": 0, "address": 0, "chang": 0, "common": [0, 1, 2, 6, 7], "ar": [0, 2, 3, 6, 7], "also": [0, 1, 2, 6, 7], "list": [0, 2, 7], "exampl": [0, 1], "pppos_client": 0, "simpl": [0, 2], "client": 0, "read": [0, 2, 6, 7], "some": [0, 6, 7], "properti": 0, "public": [0, 1, 2, 3, 7], "mqtt": 0, "broker": 0, "modem_consol": [0, 1], "exercis": 0, "all": [0, 1, 3, 7], "possibl": [0, 1], "consol": 0, "ap_to_pppo": 0, "focus": 0, "provid": [0, 1, 6, 7], "wifi": 0, "ap": 0, "forward": [0, 7], "packet": 0, "nat": 0, "from": [0, 1, 2, 6, 7], "virtual": [0, 1, 6, 7], "experiment": 0, "featur": 0, "allow": 0, "multipl": [0, 7], "design": [0, 5], "them": 0, "sole": [0, 7], "we": [0, 7], "modern": 0, "usb": 0, "spi": [0, 1], "ad": [0, 5], "new": [0, 2, 5, 6], "must": [0, 7], "have": [0, 3, 7], "requir": 0, "differ": [0, 1, 6, 7], "might": [0, 6], "mean": [0, 7], "class": [0, 1, 3, 6, 7], "deriv": [0, 1, 7], "genericmodul": [0, 1, 6, 7], "where": 0, "could": [0, 1, 6, 7], "add": [0, 6, 7], "modifi": 0, "exist": [0, 1, 7], "ones": 0, "chapter": [1, 7], "outlin": 1, "extens": [1, 5, 7], "compon": [1, 5, 7], "It": [1, 3, 7], "handl": [1, 2, 6], "mani": 1, "wai": [1, 7], "build": [1, 7], "top": 1, "gener": [1, 2, 3, 5, 6], "share": [1, 3, 7], "uniqu": [1, 3, 7], "vanilla": 1, "pointer": [1, 2, 7], "templat": [1, 3, 6, 7], "dce_t": [1, 3, 7], "one": [1, 7], "function": [1, 2, 3, 7], "group": [1, 2, 3, 7], "esp_modem_dce_factori": 1, "enum": [1, 2, 7], "modemtyp": 1, "choic": 1, "when": [1, 6], "valu": [1, 2, 7], "enumer": [1, 2, 7], "default": [1, 2, 3, 7], "most": [1, 2, 6, 7], "appli": 1, "sim7070": [1, 3, 7], "sim7000": [1, 3, 7], "bg69": 1, "factoryhelp": 1, "includ": [1, 2, 7], "hpp": [1, 7], "helper": [1, 7], "either": [1, 3, 7], "plain": [1, 2], "shared_ptr": [1, 3, 7], "unique_ptr": [1, 3, 7], "typenam": 1, "t_modul": 1, "creator": 1, "dte": [1, 2, 5, 6], "netif": [1, 2, 3, 5, 6], "throw": [1, 6], "base": [1, 3, 7], "suppli": [1, 2, 7], "app": [1, 2], "arg": 1, "inlin": [1, 3, 7], "std": [1, 3, 7], "build_uniqu": 1, "const": [1, 2, 3, 7], "cfg": 1, "chosen": [1, 2], "paramet": [1, 2, 3, 7], "argument": [1, 7], "builder": 1, "constructor": [1, 6], "esp_modem": [1, 3, 4, 7], "structur": [1, 5, 7], "esp_modem_dte_config": [1, 2, 3, 7], "ppp": [1, 2, 5, 6, 7], "return": [1, 2, 3, 7], "success": [1, 2, 3, 7], "static": 1, "necessari": [1, 3, 7], "need": [1, 2, 7], "devic": [1, 2, 5, 6], "ani": 1, "In": 1, "recommend": 1, "order": [1, 7], "appropri": [1, 7], "dce_factori": 1, "pleas": [1, 7], "refer": [1, 3, 7], "note": [1, 2], "trivial": 1, "overrid": [1, 7], "demonstr": 1, "purpos": 1, "unsupport": 1, "i2c": 1, "two": [1, 2, 7], "step": 1, "correspond": 1, "should": [1, 2, 7], "io": 1, "method": [1, 6, 7], "veri": 2, "consist": [2, 3, 7], "part": 2, "workflow": [2, 3], "dce": [2, 4, 5], "instanc": [2, 7], "us": [2, 3, 5, 6, 7], "esp_modem_new": 2, "call": [2, 7], "esp_modem_set_mod": 2, "perform": 2, "desir": [2, 7], "standard": 2, "unrel": 2, "esp": [2, 7], "option": 2, "back": [2, 7], "again": 2, "destroi": [2, 5], "sing": 2, "esp_modem_destroi": 2, "These": 2, "set": [2, 3, 7], "work": [2, 7], "esp_modem_c_api": 2, "typedef": [2, 3, 7], "esp_modem_dce_mod": 2, "esp_modem_dce_mode_t": 2, "esp_modem_dce_devic": 2, "esp_modem_dce_device_t": 2, "esp_modem_mode_command": 2, "startup": 2, "esp_modem_mode_data": 2, "esp_modem_mode_cmux": 2, "multiplex": [2, 6, 7], "esp_modem_dce_genet": 2, "esp_modem_dce_sim7600": 2, "esp_modem_dce_sim7070": 2, "esp_modem_dce_sim7000": 2, "esp_modem_dce_bg96": 2, "esp_modem_dce_sim800": 2, "esp_modem_dce_t": 2, "esp_modem_dte_config_t": 2, "dte_config": [2, 3], "esp_modem_dce_config_t": 2, "dce_config": [2, 3], "esp_netif_t": [2, 3], "now": 2, "null": 2, "failur": [2, 3, 6], "esp_modem_new_dev": 2, "modul": [2, 3, 5, 6], "void": [2, 3, 7], "": [2, 3, 5, 7], "esp_err_t": 2, "esp_ok": 2, "esp_fail": 2, "actual": [2, 7], "textual": 2, "char": [2, 7], "expect": 2, "output": [2, 7], "point": [2, 7], "alloc": [2, 6], "space": 2, "least": 2, "esp_modem_c_api_str_max": 2, "64": 2, "byte": [2, 7], "truncat": 2, "size": [2, 7], "command_result": [2, 7], "esp_modem_sync": 2, "initi": [2, 3, 6, 7], "sequenc": [2, 7], "sync": [2, 3, 4, 7], "up": [2, 3, 7], "ok": [2, 7], "fail": [2, 7], "timeout": [2, 7], "esp_modem_get_operator_nam": 2, "name": [2, 7], "int": [2, 7], "act": [2, 7], "out": [2, 3, 7], "access": [2, 7], "technologi": [2, 7], "esp_modem_store_profil": 2, "store": [2, 7], "profil": [2, 7], "esp_modem_set_pin": 2, "pin": [2, 7], "code": [2, 6, 7], "esp_modem_at": 2, "cmd": [2, 7], "execut": [2, 7], "string": [2, 7], "millisecond": [2, 7], "esp_modem_read_pin": 2, "bool": [2, 7], "pin_ok": [2, 7], "check": [2, 7], "sim": [2, 7], "true": [2, 7], "card": [2, 7], "doesn": [2, 3, 7], "t": [2, 3, 7], "unlock": [2, 7], "esp_modem_set_echo": 2, "echo_on": [2, 7], "echo": [2, 7], "repeat": [2, 7], "esp_modem_sms_txt_mod": 2, "txt": [2, 7], "pdu": [2, 7], "esp_modem_sms_character_set": 2, "gsm": [2, 7], "charact": [2, 7], "esp_modem_send_sm": 2, "number": [2, 6, 7], "messag": [2, 7], "phone": [2, 7], "text": [2, 7], "sent": [2, 7], "esp_modem_resume_data_mod": 2, "resum": [2, 7], "wa": [2, 7], "temporarili": [2, 7], "suspend": [2, 7], "esp_modem_set_pdp_context": 2, "esp_modem_pdpcontext_t": 2, "p1": [2, 7], "php": [2, 7], "context": [2, 7], "pdp": [2, 7], "struct": [2, 7], "setup": [2, 7], "esp_modem_set_command_mod": 2, "esp_modem_set_cmux": 2, "cmux": [2, 5], "esp_modem_get_imsi": 2, "imsi": [2, 7], "esp_modem_get_imei": 2, "imei": [2, 7], "esp_modem_get_module_nam": 2, "esp_modem_set_data_mod": 2, "esp_modem_get_signal_qu": 2, "rssi": [2, 7], "ber": [2, 7], "get": [2, 3, 7], "signal": [2, 7], "qualiti": [2, 7], "strength": [2, 7], "indic": [2, 7], "channel": [2, 7], "bit": [2, 7], "error": [2, 3, 6, 7], "rate": [2, 7], "esp_modem_set_flow_control": 2, "dce_flow": [2, 7], "dte_flow": [2, 7], "hw": [2, 7], "control": [2, 7], "flow": [2, 7], "0": [2, 7], "none": [2, 7], "2": [2, 7], "rt": [2, 7], "ct": [2, 7], "esp_modem_hang_up": 2, "hang": [2, 7], "esp_modem_get_battery_statu": 2, "voltag": [2, 7], "bc": [2, 7], "bcl": [2, 7], "level": [2, 7], "power": [2, 7], "circuitri": [2, 7], "statu": [2, 7], "mv": [2, 7], "charg": [2, 7], "1": [2, 7], "Not": [2, 7], "done": [2, 7], "100": [2, 7], "batteri": [2, 7], "capac": [2, 7], "esp_modem_power_down": 2, "down": [2, 6, 7], "esp_modem_reset": 2, "reset": [2, 3, 4, 7], "esp_modem_set_baud": 2, "baud": [2, 7], "baudrat": [2, 7], "esp_modem_set_oper": 2, "format": [2, 7], "forc": [2, 7], "attempt": [2, 7], "automat": [2, 3, 7], "manual": [2, 7], "deregist": [2, 7], "3": [2, 7], "4": [2, 7], "fallback": [2, 7], "what": [2, 7], "given": [2, 7], "long": [2, 6, 7], "short": [2, 7], "numer": [2, 7], "esp_modem_set_network_attachment_st": 2, "state": [2, 7], "detach": [2, 7], "gpr": [2, 7], "servic": [2, 7], "esp_modem_get_network_attachment_st": 2, "esp_modem_set_radio_st": 2, "radio": [2, 7], "full": [2, 7], "minimum": [2, 7], "esp_modem_get_radio_st": 2, "esp_modem_set_network_mod": 2, "prefer": [2, 7], "esp_modem_set_preferred_mod": 2, "cat": [2, 7], "m": [2, 7], "nb": [2, 7], "iot": [2, 7], "select": [2, 7], "esp_modem_set_network_band": 2, "band": [2, 7], "esp_modem_get_network_system_mod": 2, "show": [2, 7], "system": [2, 7], "esp_modem_set_gnss_power_mod": 2, "gnss": [2, 7], "off": [2, 6, 7], "esp_modem_config": 2, "esp_modem_dte_default_config": 2, "esp_modem_dce_default_config": 2, "apn": 2, "esp_modem_dce_config": [2, 3], "esp_modem_flow_ctrl_t": 2, "esp_modem_flow_control_non": 2, "esp_modem_flow_control_sw": 2, "esp_modem_flow_control_hw": 2, "esp_modem_uart_term_config": 2, "h": 2, "member": 2, "uart_port_t": 2, "port_num": 2, "port": 2, "uart_word_length_t": 2, "data_bit": 2, "uart_stop_bits_t": 2, "stop_bit": 2, "stop": [2, 7], "uart_parity_t": 2, "pariti": 2, "flow_control": 2, "uart_sclk_t": 2, "source_clk": 2, "sourc": [2, 7], "clock": 2, "baud_rat": 2, "tx_io_num": 2, "txd": 2, "rx_io_num": 2, "rxd": 2, "rts_io_num": 2, "cts_io_num": 2, "rx_buffer_s": 2, "rx": 2, "buffer": [2, 7], "tx_buffer_s": 2, "tx": 2, "event_queue_s": 2, "queue": 2, "esp_modem_vfs_term_config": 2, "vf": [2, 3], "fd": 2, "alreadi": 2, "file": [2, 7], "descriptor": 2, "delet": 2, "esp_modem_vfs_resourc": 2, "custom": [2, 5, 7], "close": [2, 7], "resourc": 2, "clenaup": 2, "complet": [2, 7], "sw": 2, "follow": [2, 7], "portion": 2, "dedic": 2, "size_t": [2, 7], "dte_buffer_s": 2, "uint32_t": [2, 7], "task_stack_s": 2, "task": 2, "stack": 2, "unsign": 2, "task_prior": 2, "prioriti": 2, "uart_config": 2, "vfs_config": 2, "extension_config": 2, "logic": [2, 7], "similar": 3, "construct": [3, 7], "esp_modem_init_dt": 3, "create_uart_dt": 3, "ptr": [3, 7], "nullptr": 3, "due": 3, "insuffici": 3, "memori": 3, "wrong": 3, "except": [3, 6], "disabl": 3, "abort": [3, 6], "create_vfs_dt": 3, "esp_modem_init_dc": 3, "create_sim7600_dc": 3, "create_sim7070_dc": 3, "create_sim7000_dc": 3, "create_sim800_dc": 3, "create_bg96_dc": 3, "create_generic_dc": 3, "specificmodul": [3, 6, 7], "respons": [3, 7], "transact": [3, 7], "relat": [3, 7], "consequ": [3, 7], "synergi": [3, 7], "aggreg": [3, 7], "set_data": [3, 7], "get_operator_nam": [3, 4, 7], "store_profil": [3, 4, 7], "set_pin": [3, 4, 7], "read_pin": [3, 4, 7], "set_echo": [3, 4, 7], "sms_txt_mode": [3, 4, 7], "sms_character_set": [3, 4, 7], "send_sm": [3, 4, 7], "resume_data_mod": [3, 4, 7], "set_pdp_context": [3, 4, 7], "set_command_mod": [3, 4, 7], "set_cmux": [3, 4, 7], "get_imsi": [3, 4, 7], "get_imei": [3, 4, 7], "get_module_nam": [3, 4, 7], "set_data_mod": [3, 4, 7], "get_signal_qu": [3, 4, 7], "set_flow_control": [3, 4, 7], "hang_up": [3, 4, 7], "get_battery_statu": [3, 4, 7], "power_down": [3, 4, 7], "set_baud": [3, 4, 7], "set_oper": [3, 4, 7], "set_network_attachment_st": [3, 4, 7], "get_network_attachment_st": [3, 4, 7], "set_radio_st": [3, 4, 7], "get_radio_st": [3, 4, 7], "set_network_mod": [3, 4, 7], "set_preferred_mod": [3, 4, 7], "set_network_band": [3, 4, 7], "get_network_system_mod": [3, 4, 7], "set_gnss_power_mod": [3, 4, 7], "explicitli": [3, 7], "simpli": 3, "clean": 3, "goe": 3, "block": [3, 6, 7], "scope": 3, "brief": 5, "intro": 5, "case": [5, 6], "other": [5, 7], "c": [5, 6, 7], "lifecycl": 5, "api": [5, 6, 7], "advanc": [5, 7], "instanti": 5, "factori": [5, 7], "intern": 5, "decis": 5, "collabor": 5, "inherit": 5, "addit": [6, 7], "macro": [6, 7], "wrapper": 6, "try": 6, "catch": 6, "easier": 6, "ON": 6, "init": [6, 7], "treat": 6, "runtim": [6, 7], "program": 6, "break": 6, "more": 6, "privat": 6, "modem": 6, "special": [6, 7], "implant": 6, "minim": 6, "moduleif": [6, 7], "oonli": 6, "compil": 6, "time": [6, 7], "without": [6, 7], "diagram": 6, "describ": [6, 7], "how": 6, "can": [6, 7], "write": [6, 7], "callback": [6, 7], "driver": 6, "below": 6, "depict": 6, "idea": 6, "cmuxinst": [6, 7], "arbitrari": 6, "same": [6, 7], "consum": [6, 7], "origin": [6, 7], "detail": 7, "descript": 7, "turn": 7, "thee": 7, "develop": 7, "would": 7, "explain": 7, "section": 7, "esp_modem_dc": 7, "definit": 7, "dce_mod": 7, "parent": 7, "pdpcontext": 7, "talk": 7, "besid": 7, "document": 7, "esp_modem_dt": 7, "commandableif": 7, "explicit": 7, "uint8_t": 7, "len": 7, "underli": 7, "written": 7, "d": 7, "payload": 7, "length": 7, "set_read_cb": 7, "f": 7, "valid": 7, "set_error_cb": 7, "terminal_error": 7, "err": 7, "modem_mod": 7, "got_line_cb": 7, "got_lin": 7, "time_m": 7, "respond": 7, "line": 7, "wait": 7, "answer": 7, "separ": 7, "abov": 7, "esp_modem_termin": 7, "buffer_overflow": 7, "checksum_error": 7, "unexpected_control_flow": 7, "device_gon": 7, "compli": 7, "subclass": 7, "maximum": 7, "esp_modem_cmux": 7, "cmux_stat": 7, "machin": 7, "header": 7, "footer": 7, "recov": 7, "itself": 7, "usabl": 7, "deinit": 7, "pair": 7, "unique_buff": 7, "eject": 7, "so": 7, "thei": 7, "tradit": 7, "inst": 7, "index": 7, "esp_modem_netif": 7, "layer": 7, "glue": 7, "start": 7, "wait_until_ppp_exit": 7, "until": 7, "esp_modem_modul": 7, "esp_modem_dce_modul": 7, "just": 7, "setup_data_mod": 7, "mandatori": 7, "abl": 7, "configure_pdp_context": 7, "new_pdp": 7, "simplifi": 7, "version": 7, "To": 7, "ha": 7, "declar": 7, "first": 7, "esp_modem_command_declar": 7, "inc": 7, "singl": 7, "cpp": 7, "therefor": 7, "care": 7, "taken": 7, "correctli": 7, "specifi": 7, "especi": 7, "keep": 7, "low": 7, "6": 7, "preprocessor": 7, "both": 7, "clariti": 7, "expand": 7, "pattern": 7, "int_in": 7, "input": 7, "integ": 7, "human": 7, "readabl": 7, "second": 7, "p2": 7, "etc": 7, "namespac": 7, "hold": 7, "esp_modem_dce_command": 7, "esp_modem_declare_dce_command": 7, "return_typ": 7, "num": 7, "get_battery_status_sim7xxx": 7, "set_gnss_power_mode_sim76xx": 7, "power_down_sim76xx": 7, "power_down_sim70xx": 7, "set_network_bands_sim76xx": 7, "power_down_sim8xx": 7, "set_data_mode_sim8xx": 7, "esp_modem_typ": 7, "undef": 7, "command_mod": 7, "8212": 7, "suppos": 7, "data_mod": 7, "cmux_mod": 7, "assign": 7, "result": 7, "successfulli": 7, "didn": 7, "timelin": 7, "elig": 7}, "objects": {"": [[2, 0, 1, "c.ESP_MODEM_DCE_DEFAULT_CONFIG", "ESP_MODEM_DCE_DEFAULT_CONFIG"], [7, 0, 1, "c.ESP_MODEM_DECLARE_DCE_COMMAND", "ESP_MODEM_DECLARE_DCE_COMMAND"], [2, 0, 1, "c.ESP_MODEM_DTE_DEFAULT_CONFIG", "ESP_MODEM_DTE_DEFAULT_CONFIG"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device18ESP_MODEM_DCE_BG96E", "ESP_MODEM_DCE_BG96"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_GENETICE", "ESP_MODEM_DCE_GENETIC"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7000E", "ESP_MODEM_DCE_SIM7000"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7070E", "ESP_MODEM_DCE_SIM7070"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7600E", "ESP_MODEM_DCE_SIM7600"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device20ESP_MODEM_DCE_SIM800E", "ESP_MODEM_DCE_SIM800"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_HWE", "ESP_MODEM_FLOW_CONTROL_HW"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t27ESP_MODEM_FLOW_CONTROL_NONEE", "ESP_MODEM_FLOW_CONTROL_NONE"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_SWE", "ESP_MODEM_FLOW_CONTROL_SW"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_CMUXE", "ESP_MODEM_MODE_CMUX"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode22ESP_MODEM_MODE_COMMANDE", "ESP_MODEM_MODE_COMMAND"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_DATAE", "ESP_MODEM_MODE_DATA"], [1, 2, 1, "_CPPv49ModemType", "ModemType"], [1, 1, 1, "_CPPv4N9ModemType4BG96E", "ModemType::BG96"], [1, 1, 1, "_CPPv4N9ModemType13GenericModuleE", "ModemType::GenericModule"], [1, 1, 1, "_CPPv4N9ModemType7SIM7000E", "ModemType::SIM7000"], [1, 1, 1, "_CPPv4N9ModemType7SIM7070E", "ModemType::SIM7070"], [1, 1, 1, "_CPPv4N9ModemType7SIM7600E", "ModemType::SIM7600"], [1, 1, 1, "_CPPv4N9ModemType6SIM800E", "ModemType::SIM800"], [7, 2, 1, "_CPPv410cmux_state", "cmux_state"], [7, 1, 1, "_CPPv4N10cmux_state6FOOTERE", "cmux_state::FOOTER"], [7, 1, 1, "_CPPv4N10cmux_state6HEADERE", "cmux_state::HEADER"], [7, 1, 1, "_CPPv4N10cmux_state4INITE", "cmux_state::INIT"], [7, 1, 1, "_CPPv4N10cmux_state7PAYLOADE", "cmux_state::PAYLOAD"], [7, 1, 1, "_CPPv4N10cmux_state7RECOVERE", "cmux_state::RECOVER"], [7, 2, 1, "_CPPv414command_result", "command_result"], [7, 1, 1, "_CPPv4N14command_result4FAILE", "command_result::FAIL"], [7, 1, 1, "_CPPv4N14command_result2OKE", "command_result::OK"], [7, 1, 1, "_CPPv4N14command_result7TIMEOUTE", "command_result::TIMEOUT"], [3, 3, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::config"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::dte"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::config"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::config"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::config"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::netif"], [3, 3, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::config"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::dte"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::netif"], [3, 3, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::config"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::dte"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::netif"], [3, 3, 1, "_CPPv415create_uart_dtePK10dte_config", "create_uart_dte"], [3, 4, 1, "_CPPv415create_uart_dtePK10dte_config", "create_uart_dte::config"], [3, 3, 1, "_CPPv414create_vfs_dtePK10dte_config", "create_vfs_dte"], [3, 4, 1, "_CPPv414create_vfs_dtePK10dte_config", "create_vfs_dte::config"], [3, 5, 1, "_CPPv410dce_config", "dce_config"], [3, 5, 1, "_CPPv410dte_config", "dte_config"], [7, 6, 1, "_CPPv4N9esp_modem4BG96E", "esp_modem::BG96"], [7, 6, 1, "_CPPv4N9esp_modem4CMuxE", "esp_modem::CMux"], [7, 3, 1, "_CPPv4N9esp_modem4CMux6deinitEv", "esp_modem::CMux::deinit"], [7, 3, 1, "_CPPv4N9esp_modem4CMux6detachEv", "esp_modem::CMux::detach"], [7, 3, 1, "_CPPv4N9esp_modem4CMux4initEv", "esp_modem::CMux::init"], [7, 3, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb"], [7, 4, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb::f"], [7, 4, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb::inst"], [7, 3, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::data"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::i"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::len"], [7, 6, 1, "_CPPv4N9esp_modem12CMuxInstanceE", "esp_modem::CMuxInstance"], [7, 3, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read::data"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read::len"], [7, 3, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write::data"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write::len"], [7, 6, 1, "_CPPv4N9esp_modem13CommandableIfE", "esp_modem::CommandableIf"], [7, 3, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::command"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::separator"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::time_ms"], [7, 6, 1, "_CPPv4N9esp_modem3DCEE", "esp_modem::DCE"], [7, 3, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::cmd"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::out"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::timeout"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::bcl"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::bcs"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::voltage"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE", "esp_modem::DCE::get_imei"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE", "esp_modem::DCE::get_imei::imei"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE", "esp_modem::DCE::get_imsi"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE", "esp_modem::DCE::get_imsi::imsi"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE", "esp_modem::DCE::get_module_name"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE", "esp_modem::DCE::get_module_name::name"], [7, 3, 1, "_CPPv4N9esp_modem3DCE28get_network_attachment_stateERi", "esp_modem::DCE::get_network_attachment_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE28get_network_attachment_stateERi", "esp_modem::DCE::get_network_attachment_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE23get_network_system_modeERi", "esp_modem::DCE::get_network_system_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE23get_network_system_modeERi", "esp_modem::DCE::get_network_system_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name::act"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name::name"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15get_radio_stateERi", "esp_modem::DCE::get_radio_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15get_radio_stateERi", "esp_modem::DCE::get_radio_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality::ber"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality::rssi"], [7, 3, 1, "_CPPv4N9esp_modem3DCE7hang_upEv", "esp_modem::DCE::hang_up"], [7, 3, 1, "_CPPv4N9esp_modem3DCE10power_downEv", "esp_modem::DCE::power_down"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8read_pinERb", "esp_modem::DCE::read_pin"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8read_pinERb", "esp_modem::DCE::read_pin::pin_ok"], [7, 3, 1, "_CPPv4N9esp_modem3DCE5resetEv", "esp_modem::DCE::reset"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16resume_data_modeEv", "esp_modem::DCE::resume_data_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms::message"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms::number"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_baudEi", "esp_modem::DCE::set_baud"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8set_baudEi", "esp_modem::DCE::set_baud::baud"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_cmuxEv", "esp_modem::DCE::set_cmux"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_command_modeEv", "esp_modem::DCE::set_command_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE13set_data_modeEv", "esp_modem::DCE::set_data_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_echoEKb", "esp_modem::DCE::set_echo"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8set_echoEKb", "esp_modem::DCE::set_echo::echo_on"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control::dce_flow"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control::dte_flow"], [7, 3, 1, "_CPPv4N9esp_modem3DCE19set_gnss_power_modeEi", "esp_modem::DCE::set_gnss_power_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE19set_gnss_power_modeEi", "esp_modem::DCE::set_gnss_power_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE28set_network_attachment_stateEi", "esp_modem::DCE::set_network_attachment_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE28set_network_attachment_stateEi", "esp_modem::DCE::set_network_attachment_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::bands"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::size"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_network_modeEi", "esp_modem::DCE::set_network_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_network_modeEi", "esp_modem::DCE::set_network_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::format"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::oper"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext", "esp_modem::DCE::set_pdp_context"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext", "esp_modem::DCE::set_pdp_context::p1"], [7, 3, 1, "_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE", "esp_modem::DCE::set_pin"], [7, 4, 1, "_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE", "esp_modem::DCE::set_pin::pin"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18set_preferred_modeEi", "esp_modem::DCE::set_preferred_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18set_preferred_modeEi", "esp_modem::DCE::set_preferred_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15set_radio_stateEi", "esp_modem::DCE::set_radio_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15set_radio_stateEi", "esp_modem::DCE::set_radio_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17sms_character_setEv", "esp_modem::DCE::sms_character_set"], [7, 3, 1, "_CPPv4N9esp_modem3DCE12sms_txt_modeEKb", "esp_modem::DCE::sms_txt_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12sms_txt_modeEKb", "esp_modem::DCE::sms_txt_mode::txt"], [7, 3, 1, "_CPPv4N9esp_modem3DCE13store_profileEv", "esp_modem::DCE::store_profile"], [7, 3, 1, "_CPPv4N9esp_modem3DCE4syncEv", "esp_modem::DCE::sync"], [7, 6, 1, "_CPPv4N9esp_modem8DCE_ModeE", "esp_modem::DCE_Mode"], [3, 6, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T"], [7, 6, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T"], [3, 7, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T::SpecificModule"], [7, 7, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T::SpecificModule"], [3, 3, 1, "_CPPv4N9esp_modem5DCE_T8set_dataEv", "esp_modem::DCE_T::set_data"], [7, 3, 1, "_CPPv4N9esp_modem5DCE_T8set_dataEv", "esp_modem::DCE_T::set_data"], [7, 6, 1, "_CPPv4N9esp_modem3DTEE", "esp_modem::DTE"], [7, 3, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE"], [7, 4, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE::config"], [7, 4, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE::t"], [7, 3, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command"], [7, 3, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::separator"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::time_ms"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::time_ms"], [7, 3, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read"], [7, 4, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read::d"], [7, 4, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read::len"], [7, 3, 1, "_CPPv4N9esp_modem3DTE12set_error_cbENSt8functionIFv14terminal_errorEEE", "esp_modem::DTE::set_error_cb"], [7, 4, 1, "_CPPv4N9esp_modem3DTE12set_error_cbENSt8functionIFv14terminal_errorEEE", "esp_modem::DTE::set_error_cb::f"], [7, 3, 1, "_CPPv4N9esp_modem3DTE8set_modeE10modem_mode", "esp_modem::DTE::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DTE8set_modeE10modem_mode", "esp_modem::DTE::set_mode::m"], [7, 3, 1, "_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::DTE::set_read_cb"], [7, 4, 1, "_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::DTE::set_read_cb::f"], [7, 3, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write"], [7, 4, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write::data"], [7, 4, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write::len"], [7, 6, 1, "_CPPv4N9esp_modem13GenericModuleE", "esp_modem::GenericModule"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule::dte"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule::pdp"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::configure_pdp_context"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::configure_pdp_context::new_pdp"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule17get_operator_nameERNSt6stringE", "esp_modem::GenericModule::get_operator_name"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule17get_operator_nameERNSt6stringE", "esp_modem::GenericModule::get_operator_name::name"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode", "esp_modem::GenericModule::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode", "esp_modem::GenericModule::set_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule15setup_data_modeEv", "esp_modem::GenericModule::setup_data_mode"], [7, 6, 1, "_CPPv4N9esp_modem8ModuleIfE", "esp_modem::ModuleIf"], [7, 3, 1, "_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode", "esp_modem::ModuleIf::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode", "esp_modem::ModuleIf::set_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem8ModuleIf15setup_data_modeEv", "esp_modem::ModuleIf::setup_data_mode"], [7, 6, 1, "_CPPv4N9esp_modem5NetifE", "esp_modem::Netif"], [7, 3, 1, "_CPPv4N9esp_modem5Netif5startEv", "esp_modem::Netif::start"], [7, 3, 1, "_CPPv4N9esp_modem5Netif4stopEv", "esp_modem::Netif::stop"], [7, 3, 1, "_CPPv4N9esp_modem5Netif20wait_until_ppp_exitsEv", "esp_modem::Netif::wait_until_ppp_exits"], [7, 6, 1, "_CPPv4N9esp_modem10PdpContextE", "esp_modem::PdpContext"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7000E", "esp_modem::SIM7000"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7070E", "esp_modem::SIM7070"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7600E", "esp_modem::SIM7600"], [7, 6, 1, "_CPPv4N9esp_modem6SIM800E", "esp_modem::SIM800"], [7, 6, 1, "_CPPv4N9esp_modem8TerminalE", "esp_modem::Terminal"], [7, 3, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read::data"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read::len"], [7, 3, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write::data"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write::len"], [1, 6, 1, "_CPPv4I0EN9esp_modem11dce_factory7CreatorE", "esp_modem::dce_factory::Creator"], [1, 7, 1, "_CPPv4I0EN9esp_modem11dce_factory7CreatorE", "esp_modem::dce_factory::Creator::T_Module"], [1, 6, 1, "_CPPv4N9esp_modem11dce_factory7FactoryE", "esp_modem::dce_factory::Factory"], [1, 3, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::Args"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::T_Module"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::args"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::cfg"], [1, 3, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique"], [1, 3, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::Args"], [1, 7, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::Args"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::T_Module"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::args"], [1, 4, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::args"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::cfg"], [1, 4, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::cfg"], [1, 6, 1, "_CPPv4N9esp_modem11dce_factory13FactoryHelperE", "esp_modem::dce_factory::FactoryHelper"], [2, 3, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::cmd"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::out"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::timeout"], [2, 6, 1, "_CPPv420esp_modem_dce_config", "esp_modem_dce_config"], [2, 8, 1, "_CPPv4N20esp_modem_dce_config3apnE", "esp_modem_dce_config::apn"], [2, 5, 1, "_CPPv422esp_modem_dce_config_t", "esp_modem_dce_config_t"], [2, 2, 1, "_CPPv420esp_modem_dce_device", "esp_modem_dce_device"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device18ESP_MODEM_DCE_BG96E", "esp_modem_dce_device::ESP_MODEM_DCE_BG96"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_GENETICE", "esp_modem_dce_device::ESP_MODEM_DCE_GENETIC"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7000E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7000"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7070E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7070"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7600E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7600"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device20ESP_MODEM_DCE_SIM800E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM800"], [2, 5, 1, "_CPPv422esp_modem_dce_device_t", "esp_modem_dce_device_t"], [2, 2, 1, "_CPPv418esp_modem_dce_mode", "esp_modem_dce_mode"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_CMUXE", "esp_modem_dce_mode::ESP_MODEM_MODE_CMUX"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode22ESP_MODEM_MODE_COMMANDE", "esp_modem_dce_mode::ESP_MODEM_MODE_COMMAND"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_DATAE", "esp_modem_dce_mode::ESP_MODEM_MODE_DATA"], [2, 5, 1, "_CPPv420esp_modem_dce_mode_t", "esp_modem_dce_mode_t"], [2, 3, 1, "_CPPv417esp_modem_destroyP15esp_modem_dce_t", "esp_modem_destroy"], [2, 4, 1, "_CPPv417esp_modem_destroyP15esp_modem_dce_t", "esp_modem_destroy::dce"], [2, 6, 1, "_CPPv420esp_modem_dte_config", "esp_modem_dte_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config15dte_buffer_sizeE", "esp_modem_dte_config::dte_buffer_size"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config16extension_configE", "esp_modem_dte_config::extension_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config13task_priorityE", "esp_modem_dte_config::task_priority"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config15task_stack_sizeE", "esp_modem_dte_config::task_stack_size"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config11uart_configE", "esp_modem_dte_config::uart_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config10vfs_configE", "esp_modem_dte_config::vfs_config"], [2, 5, 1, "_CPPv422esp_modem_dte_config_t", "esp_modem_dte_config_t"], [2, 2, 1, "_CPPv421esp_modem_flow_ctrl_t", "esp_modem_flow_ctrl_t"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_HWE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_HW"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t27ESP_MODEM_FLOW_CONTROL_NONEE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_NONE"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_SWE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_SW"], [2, 3, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::bcl"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::bcs"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::voltage"], [2, 3, 1, "_CPPv418esp_modem_get_imeiPc", "esp_modem_get_imei"], [2, 4, 1, "_CPPv418esp_modem_get_imeiPc", "esp_modem_get_imei::imei"], [2, 3, 1, "_CPPv418esp_modem_get_imsiPc", "esp_modem_get_imsi"], [2, 4, 1, "_CPPv418esp_modem_get_imsiPc", "esp_modem_get_imsi::imsi"], [2, 3, 1, "_CPPv425esp_modem_get_module_namePc", "esp_modem_get_module_name"], [2, 4, 1, "_CPPv425esp_modem_get_module_namePc", "esp_modem_get_module_name::name"], [2, 3, 1, "_CPPv438esp_modem_get_network_attachment_statePi", "esp_modem_get_network_attachment_state"], [2, 4, 1, "_CPPv438esp_modem_get_network_attachment_statePi", "esp_modem_get_network_attachment_state::state"], [2, 3, 1, "_CPPv433esp_modem_get_network_system_modePi", "esp_modem_get_network_system_mode"], [2, 4, 1, "_CPPv433esp_modem_get_network_system_modePi", "esp_modem_get_network_system_mode::mode"], [2, 3, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name"], [2, 4, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name::act"], [2, 4, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name::name"], [2, 3, 1, "_CPPv425esp_modem_get_radio_statePi", "esp_modem_get_radio_state"], [2, 4, 1, "_CPPv425esp_modem_get_radio_statePi", "esp_modem_get_radio_state::state"], [2, 3, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality"], [2, 4, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality::ber"], [2, 4, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality::rssi"], [2, 3, 1, "_CPPv417esp_modem_hang_upv", "esp_modem_hang_up"], [2, 3, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::dce_config"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::dte_config"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::netif"], [2, 3, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::dce_config"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::dte_config"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::module"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::netif"], [2, 3, 1, "_CPPv420esp_modem_power_downv", "esp_modem_power_down"], [2, 3, 1, "_CPPv418esp_modem_read_pinPb", "esp_modem_read_pin"], [2, 4, 1, "_CPPv418esp_modem_read_pinPb", "esp_modem_read_pin::pin_ok"], [2, 3, 1, "_CPPv415esp_modem_resetv", "esp_modem_reset"], [2, 3, 1, "_CPPv426esp_modem_resume_data_modev", "esp_modem_resume_data_mode"], [2, 3, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms"], [2, 4, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms::message"], [2, 4, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms::number"], [2, 3, 1, "_CPPv418esp_modem_set_baudi", "esp_modem_set_baud"], [2, 4, 1, "_CPPv418esp_modem_set_baudi", "esp_modem_set_baud::baud"], [2, 3, 1, "_CPPv418esp_modem_set_cmuxv", "esp_modem_set_cmux"], [2, 3, 1, "_CPPv426esp_modem_set_command_modev", "esp_modem_set_command_mode"], [2, 3, 1, "_CPPv423esp_modem_set_data_modev", "esp_modem_set_data_mode"], [2, 3, 1, "_CPPv418esp_modem_set_echoKb", "esp_modem_set_echo"], [2, 4, 1, "_CPPv418esp_modem_set_echoKb", "esp_modem_set_echo::echo_on"], [2, 3, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control"], [2, 4, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control::dce_flow"], [2, 4, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control::dte_flow"], [2, 3, 1, "_CPPv429esp_modem_set_gnss_power_modei", "esp_modem_set_gnss_power_mode"], [2, 4, 1, "_CPPv429esp_modem_set_gnss_power_modei", "esp_modem_set_gnss_power_mode::mode"], [2, 3, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode"], [2, 4, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode::dce"], [2, 4, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode::mode"], [2, 3, 1, "_CPPv438esp_modem_set_network_attachment_statei", "esp_modem_set_network_attachment_state"], [2, 4, 1, "_CPPv438esp_modem_set_network_attachment_statei", "esp_modem_set_network_attachment_state::state"], [2, 3, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::bands"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::mode"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::size"], [2, 3, 1, "_CPPv426esp_modem_set_network_modei", "esp_modem_set_network_mode"], [2, 4, 1, "_CPPv426esp_modem_set_network_modei", "esp_modem_set_network_mode::mode"], [2, 3, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::format"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::mode"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::oper"], [2, 3, 1, "_CPPv425esp_modem_set_pdp_contextP22esp_modem_PdpContext_t", "esp_modem_set_pdp_context"], [2, 4, 1, "_CPPv425esp_modem_set_pdp_contextP22esp_modem_PdpContext_t", "esp_modem_set_pdp_context::p1"], [2, 3, 1, "_CPPv417esp_modem_set_pinPKc", "esp_modem_set_pin"], [2, 4, 1, "_CPPv417esp_modem_set_pinPKc", "esp_modem_set_pin::pin"], [2, 3, 1, "_CPPv428esp_modem_set_preferred_modei", "esp_modem_set_preferred_mode"], [2, 4, 1, "_CPPv428esp_modem_set_preferred_modei", "esp_modem_set_preferred_mode::mode"], [2, 3, 1, "_CPPv425esp_modem_set_radio_statei", "esp_modem_set_radio_state"], [2, 4, 1, "_CPPv425esp_modem_set_radio_statei", "esp_modem_set_radio_state::state"], [2, 3, 1, "_CPPv427esp_modem_sms_character_setv", "esp_modem_sms_character_set"], [2, 3, 1, "_CPPv422esp_modem_sms_txt_modeKb", "esp_modem_sms_txt_mode"], [2, 4, 1, "_CPPv422esp_modem_sms_txt_modeKb", "esp_modem_sms_txt_mode::txt"], [2, 3, 1, "_CPPv423esp_modem_store_profilev", "esp_modem_store_profile"], [2, 3, 1, "_CPPv414esp_modem_syncv", "esp_modem_sync"], [2, 6, 1, "_CPPv426esp_modem_uart_term_config", "esp_modem_uart_term_config"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9baud_rateE", "esp_modem_uart_term_config::baud_rate"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10cts_io_numE", "esp_modem_uart_term_config::cts_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9data_bitsE", "esp_modem_uart_term_config::data_bits"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config16event_queue_sizeE", "esp_modem_uart_term_config::event_queue_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config12flow_controlE", "esp_modem_uart_term_config::flow_control"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config6parityE", "esp_modem_uart_term_config::parity"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config8port_numE", "esp_modem_uart_term_config::port_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10rts_io_numE", "esp_modem_uart_term_config::rts_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config14rx_buffer_sizeE", "esp_modem_uart_term_config::rx_buffer_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9rx_io_numE", "esp_modem_uart_term_config::rx_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10source_clkE", "esp_modem_uart_term_config::source_clk"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9stop_bitsE", "esp_modem_uart_term_config::stop_bits"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config14tx_buffer_sizeE", "esp_modem_uart_term_config::tx_buffer_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9tx_io_numE", "esp_modem_uart_term_config::tx_io_num"], [2, 6, 1, "_CPPv425esp_modem_vfs_term_config", "esp_modem_vfs_term_config"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config7deleterE", "esp_modem_vfs_term_config::deleter"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config2fdE", "esp_modem_vfs_term_config::fd"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config8resourceE", "esp_modem_vfs_term_config::resource"], [7, 3, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::bcl"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::bcs"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::t"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::voltage"], [7, 5, 1, "_CPPv411got_line_cb", "got_line_cb"], [7, 2, 1, "_CPPv410modem_mode", "modem_mode"], [7, 1, 1, "_CPPv4N10modem_mode9CMUX_MODEE", "modem_mode::CMUX_MODE"], [7, 1, 1, "_CPPv4N10modem_mode12COMMAND_MODEE", "modem_mode::COMMAND_MODE"], [7, 1, 1, "_CPPv4N10modem_mode9DATA_MODEE", "modem_mode::DATA_MODE"], [7, 1, 1, "_CPPv4N10modem_mode5UNDEFE", "modem_mode::UNDEF"], [7, 3, 1, "_CPPv418power_down_sim70xxP13CommandableIf", "power_down_sim70xx"], [7, 4, 1, "_CPPv418power_down_sim70xxP13CommandableIf", "power_down_sim70xx::t"], [7, 3, 1, "_CPPv418power_down_sim76xxP13CommandableIf", "power_down_sim76xx"], [7, 4, 1, "_CPPv418power_down_sim76xxP13CommandableIf", "power_down_sim76xx::t"], [7, 3, 1, "_CPPv417power_down_sim8xxP13CommandableIf", "power_down_sim8xx"], [7, 4, 1, "_CPPv417power_down_sim8xxP13CommandableIf", "power_down_sim8xx::t"], [7, 3, 1, "_CPPv420set_data_mode_sim8xxP13CommandableIf", "set_data_mode_sim8xx"], [7, 4, 1, "_CPPv420set_data_mode_sim8xxP13CommandableIf", "set_data_mode_sim8xx::t"], [7, 3, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx"], [7, 4, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx::mode"], [7, 4, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx::t"], [7, 3, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::bands"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::mode"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::size"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::t"], [7, 2, 1, "_CPPv414terminal_error", "terminal_error"], [7, 1, 1, "_CPPv4N14terminal_error15BUFFER_OVERFLOWE", "terminal_error::BUFFER_OVERFLOW"], [7, 1, 1, "_CPPv4N14terminal_error14CHECKSUM_ERRORE", "terminal_error::CHECKSUM_ERROR"], [7, 1, 1, "_CPPv4N14terminal_error11DEVICE_GONEE", "terminal_error::DEVICE_GONE"], [7, 1, 1, "_CPPv4N14terminal_error23UNEXPECTED_CONTROL_FLOWE", "terminal_error::UNEXPECTED_CONTROL_FLOW"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:enum", "3": "cpp:function", "4": "cpp:functionParam", "5": "cpp:type", "6": "cpp:class", "7": "cpp:templateParam", "8": "cpp:member"}, "objnames": {"0": ["c", "macro", "C macro"], "1": ["cpp", "enumerator", "C++ enumerator"], "2": ["cpp", "enum", "C++ enum"], "3": ["cpp", "function", "C++ function"], "4": ["cpp", "functionParam", "C++ function parameter"], "5": ["cpp", "type", "C++ type"], "6": ["cpp", "class", "C++ class"], "7": ["cpp", "templateParam", "C++ template parameter"], "8": ["cpp", "member", "C++ member"]}, "titleterms": {"esp": [0, 1, 5], "modem": [0, 1, 2, 3, 5, 7], "compon": 0, "dce": [0, 1, 3, 6, 7], "dte": [0, 3, 7], "ppp": 0, "netif": [0, 7], "modul": [0, 1, 7], "us": [0, 1], "case": [0, 1], "extens": 0, "cmux": [0, 6, 7], "": 0, "other": 0, "devic": [0, 7], "advanc": 1, "custom": 1, "instanti": 1, "factori": 1, "creat": [1, 3], "new": [1, 7], "commun": 1, "interfac": [1, 7], "c": [2, 3], "api": [2, 3], "document": [2, 3], "lifecycl": 2, "command": [2, 3, 7], "configur": 2, "structur": 2, "mode": 3, "switch": 3, "destroi": 3, "programm": 5, "manual": 5, "intern": [6, 7], "design": 6, "decis": 6, "collabor": 6, "model": 6, "termin": [6, 7], "inherit": 6, "implement": 7, "abstract": 7, "ad": 7, "gener": 7, "librari": 7, "type": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["README", "advanced_api", "api_docs", "cxx_api_docs", "cxx_api_links", "index", "internal_design", "internal_docs"], "filenames": ["README.md", "advanced_api.rst", "api_docs.rst", "cxx_api_docs.rst", "cxx_api_links.rst", "index.rst", "internal_design.md", "internal_docs.rst"], "titles": ["ESP MODEM", "Advanced esp-modem use cases", "C API Documentation", "C++ API Documentation", "<no title>", "ESP-MODEM Programmers manual", "Internal design", "DCE Internal implementation"], "terms": {"thi": [0, 1, 2, 7], "i": [0, 1, 2, 3, 6, 7], "commun": [0, 2, 3, 5, 7], "command": [0, 1, 5, 6], "mode": [0, 2, 5, 6, 7], "AT": [0, 1, 2, 3, 6, 7], "well": [0, 6, 7], "data": [0, 2, 3, 6, 7], "over": [0, 6], "pppo": 0, "protocol": [0, 7], "The": [0, 1, 2, 3, 6, 7], "model": [0, 1, 5], "equip": [0, 7], "object": [0, 1, 3, 7], "which": [0, 1, 2, 6, 7], "compos": [0, 6], "termin": [0, 1, 2, 5], "abstract": [0, 5, 6], "current": [0, 2, 7], "onli": [0, 1, 2, 6, 7], "uart": [0, 1, 2, 3, 6, 7], "implement": [0, 1, 2, 5, 6], "repres": [0, 1, 7], "network": [0, 1, 2, 3, 6, 7], "interfac": [0, 2, 3, 5, 6], "specif": [0, 1, 2, 3, 7], "its": [0, 2, 6, 7], "o": 0, "set_mod": [0, 7], "send_command": 0, "event": [0, 2], "basic": [0, 1, 2, 3, 6, 7], "oper": [0, 2, 7], "unit": [0, 7], "_": 0, "softwar": 0, "configur": [0, 1, 3, 5, 7], "media": 0, "defin": [0, 1, 2, 7], "librari": [0, 5], "support": [0, 1, 2, 7], "type": [0, 2, 5], "config": [0, 1, 2, 3, 7], "lwip": 0, "after": [0, 2, 7], "creat": [0, 2, 5, 7], "applic": [0, 1, 2, 3], "interact": 0, "issu": [0, 2], "switch": [0, 2, 5, 7], "between": [0, 7], "an": [0, 1, 2, 7], "physic": 0, "connect": [0, 1, 2, 7], "attach": [0, 2, 7], "sim800": [0, 1, 3, 7], "bg96": [0, 1, 3, 7], "sim7600": [0, 1, 3, 7], "user": [0, 1, 2, 7], "internet": 0, "via": [0, 7], "cellular": [0, 2, 7], "send": [0, 2, 3, 6, 7], "variou": 0, "e": [0, 1, 7], "g": [0, 1], "sm": [0, 2, 7], "typic": [0, 1, 2, 7], "regist": 0, "handler": 0, "receiv": [0, 7], "notif": 0, "avail": [0, 2, 6, 7], "ip": 0, "address": 0, "chang": 0, "common": [0, 1, 2, 6, 7], "ar": [0, 2, 3, 6, 7], "also": [0, 1, 2, 6, 7], "list": [0, 2, 7], "exampl": [0, 1], "pppos_client": 0, "simpl": [0, 2], "client": 0, "read": [0, 2, 6, 7], "some": [0, 6, 7], "properti": 0, "public": [0, 1, 2, 3, 7], "mqtt": 0, "broker": 0, "modem_consol": [0, 1], "exercis": 0, "all": [0, 1, 3, 7], "possibl": [0, 1], "consol": 0, "ap_to_pppo": 0, "focus": 0, "provid": [0, 1, 6, 7], "wifi": 0, "ap": 0, "forward": [0, 7], "packet": 0, "nat": 0, "from": [0, 1, 2, 6, 7], "virtual": [0, 1, 6, 7], "experiment": 0, "featur": 0, "allow": 0, "multipl": [0, 7], "design": [0, 5], "them": 0, "sole": [0, 7], "we": [0, 7], "modern": 0, "usb": 0, "spi": [0, 1], "ad": [0, 5], "new": [0, 2, 5, 6], "must": [0, 7], "have": [0, 3, 7], "requir": 0, "differ": [0, 1, 6, 7], "might": [0, 6], "mean": [0, 7], "class": [0, 1, 3, 6, 7], "deriv": [0, 1, 7], "genericmodul": [0, 1, 6, 7], "where": 0, "could": [0, 1, 6, 7], "add": [0, 6, 7], "modifi": 0, "exist": [0, 1, 7], "ones": 0, "chapter": [1, 7], "outlin": 1, "extens": [1, 5, 7], "compon": [1, 5, 7], "It": [1, 3, 7], "handl": [1, 2, 6], "mani": 1, "wai": [1, 7], "build": [1, 7], "top": 1, "gener": [1, 2, 3, 5, 6], "share": [1, 3, 7], "uniqu": [1, 3, 7], "vanilla": 1, "pointer": [1, 2, 7], "templat": [1, 3, 6, 7], "dce_t": [1, 3, 7], "one": [1, 7], "function": [1, 2, 3, 7], "group": [1, 2, 3, 7], "esp_modem_dce_factori": 1, "enum": [1, 2, 7], "modemtyp": 1, "choic": 1, "when": [1, 6], "valu": [1, 2, 7], "enumer": [1, 2, 7], "default": [1, 2, 3, 7], "most": [1, 2, 6, 7], "appli": 1, "sim7070": [1, 3, 7], "sim7000": [1, 3, 7], "bg69": 1, "factoryhelp": 1, "includ": [1, 2, 7], "hpp": [1, 7], "helper": [1, 7], "either": [1, 3, 7], "plain": [1, 2], "shared_ptr": [1, 3, 7], "unique_ptr": [1, 3, 7], "typenam": 1, "t_modul": 1, "creator": 1, "dte": [1, 2, 5, 6], "netif": [1, 2, 3, 5, 6], "throw": [1, 6], "base": [1, 3, 7], "suppli": [1, 2, 7], "app": [1, 2], "arg": 1, "inlin": [1, 3, 7], "std": [1, 3, 7], "build_uniqu": 1, "const": [1, 2, 3, 7], "cfg": 1, "chosen": [1, 2], "paramet": [1, 2, 3, 7], "argument": [1, 7], "builder": 1, "constructor": [1, 6], "esp_modem": [1, 3, 4, 7], "structur": [1, 5, 7], "esp_modem_dte_config": [1, 2, 3, 7], "ppp": [1, 2, 5, 6, 7], "return": [1, 2, 3, 7], "success": [1, 2, 3, 7], "static": 1, "necessari": [1, 3, 7], "need": [1, 2, 7], "devic": [1, 2, 5, 6], "ani": 1, "In": 1, "recommend": 1, "order": [1, 7], "appropri": [1, 7], "dce_factori": 1, "pleas": [1, 7], "refer": [1, 3, 7], "note": [1, 2], "trivial": 1, "overrid": [1, 7], "demonstr": 1, "purpos": 1, "unsupport": 1, "i2c": 1, "two": [1, 2, 7], "step": 1, "correspond": 1, "should": [1, 2, 7], "io": 1, "method": [1, 6, 7], "veri": 2, "consist": [2, 3, 7], "part": 2, "workflow": [2, 3], "dce": [2, 4, 5], "instanc": [2, 7], "us": [2, 3, 5, 6, 7], "esp_modem_new": 2, "call": [2, 7], "esp_modem_set_mod": 2, "perform": 2, "desir": [2, 7], "standard": 2, "unrel": 2, "esp": [2, 7], "option": 2, "back": [2, 7], "again": 2, "destroi": [2, 5], "sing": 2, "esp_modem_destroi": 2, "These": 2, "set": [2, 3, 7], "work": [2, 7], "esp_modem_c_api": 2, "typedef": [2, 3, 7], "esp_modem_dce_mod": 2, "esp_modem_dce_mode_t": 2, "esp_modem_dce_devic": 2, "esp_modem_dce_device_t": 2, "esp_modem_mode_command": 2, "startup": 2, "esp_modem_mode_data": 2, "esp_modem_mode_cmux": 2, "multiplex": [2, 6, 7], "esp_modem_dce_genet": 2, "esp_modem_dce_sim7600": 2, "esp_modem_dce_sim7070": 2, "esp_modem_dce_sim7000": 2, "esp_modem_dce_bg96": 2, "esp_modem_dce_sim800": 2, "esp_modem_dce_t": 2, "esp_modem_dte_config_t": 2, "dte_config": [2, 3], "esp_modem_dce_config_t": 2, "dce_config": [2, 3], "esp_netif_t": [2, 3], "now": 2, "null": 2, "failur": [2, 3, 6], "esp_modem_new_dev": 2, "modul": [2, 3, 5, 6], "void": [2, 3, 7], "": [2, 3, 5, 7], "esp_err_t": 2, "esp_ok": 2, "esp_fail": 2, "actual": [2, 7], "textual": 2, "char": [2, 7], "expect": 2, "output": [2, 7], "point": [2, 7], "alloc": [2, 6], "space": 2, "least": 2, "esp_modem_c_api_str_max": 2, "64": 2, "byte": [2, 7], "truncat": 2, "size": [2, 7], "command_result": [2, 7], "esp_modem_sync": 2, "initi": [2, 3, 6, 7], "sequenc": [2, 7], "sync": [2, 3, 4, 7], "up": [2, 3, 7], "ok": [2, 7], "fail": [2, 7], "timeout": [2, 7], "esp_modem_get_operator_nam": 2, "name": [2, 7], "int": [2, 7], "act": [2, 7], "out": [2, 3, 7], "access": [2, 7], "technologi": [2, 7], "esp_modem_store_profil": 2, "store": [2, 7], "profil": [2, 7], "esp_modem_set_pin": 2, "pin": [2, 7], "code": [2, 6, 7], "esp_modem_at": 2, "cmd": [2, 7], "execut": [2, 7], "string": [2, 7], "millisecond": [2, 7], "esp_modem_read_pin": 2, "bool": [2, 7], "pin_ok": [2, 7], "check": [2, 7], "sim": [2, 7], "true": [2, 7], "card": [2, 7], "doesn": [2, 3, 7], "t": [2, 3, 7], "unlock": [2, 7], "esp_modem_set_echo": 2, "echo_on": [2, 7], "echo": [2, 7], "repeat": [2, 7], "esp_modem_sms_txt_mod": 2, "txt": [2, 7], "pdu": [2, 7], "esp_modem_sms_character_set": 2, "gsm": [2, 7], "charact": [2, 7], "esp_modem_send_sm": 2, "number": [2, 6, 7], "messag": [2, 7], "phone": [2, 7], "text": [2, 7], "sent": [2, 7], "esp_modem_resume_data_mod": 2, "resum": [2, 7], "wa": [2, 7], "temporarili": [2, 7], "suspend": [2, 7], "esp_modem_set_pdp_context": 2, "esp_modem_pdpcontext_t": 2, "p1": [2, 7], "php": [2, 7], "context": [2, 7], "pdp": [2, 7], "struct": [2, 7], "setup": [2, 7], "esp_modem_set_command_mod": 2, "esp_modem_set_cmux": 2, "cmux": [2, 5], "esp_modem_get_imsi": 2, "imsi": [2, 7], "esp_modem_get_imei": 2, "imei": [2, 7], "esp_modem_get_module_nam": 2, "esp_modem_set_data_mod": 2, "esp_modem_get_signal_qu": 2, "rssi": [2, 7], "ber": [2, 7], "get": [2, 3, 7], "signal": [2, 7], "qualiti": [2, 7], "strength": [2, 7], "indic": [2, 7], "channel": [2, 7], "bit": [2, 7], "error": [2, 3, 6, 7], "rate": [2, 7], "esp_modem_set_flow_control": 2, "dce_flow": [2, 7], "dte_flow": [2, 7], "hw": [2, 7], "control": [2, 7], "flow": [2, 7], "0": [2, 7], "none": [2, 7], "2": [2, 7], "rt": [2, 7], "ct": [2, 7], "esp_modem_hang_up": 2, "hang": [2, 7], "esp_modem_get_battery_statu": 2, "voltag": [2, 7], "bc": [2, 7], "bcl": [2, 7], "level": [2, 7], "power": [2, 7], "circuitri": [2, 7], "statu": [2, 7], "mv": [2, 7], "charg": [2, 7], "1": [2, 7], "Not": [2, 7], "done": [2, 7], "100": [2, 7], "batteri": [2, 7], "capac": [2, 7], "esp_modem_power_down": 2, "down": [2, 6, 7], "esp_modem_reset": 2, "reset": [2, 3, 4, 7], "esp_modem_set_baud": 2, "baud": [2, 7], "baudrat": [2, 7], "esp_modem_set_oper": 2, "format": [2, 7], "forc": [2, 7], "attempt": [2, 7], "automat": [2, 3, 7], "manual": [2, 7], "deregist": [2, 7], "3": [2, 7], "4": [2, 7], "fallback": [2, 7], "what": [2, 7], "given": [2, 7], "long": [2, 6, 7], "short": [2, 7], "numer": [2, 7], "esp_modem_set_network_attachment_st": 2, "state": [2, 7], "detach": [2, 7], "gpr": [2, 7], "servic": [2, 7], "esp_modem_get_network_attachment_st": 2, "esp_modem_set_radio_st": 2, "radio": [2, 7], "full": [2, 7], "minimum": [2, 7], "esp_modem_get_radio_st": 2, "esp_modem_set_network_mod": 2, "prefer": [2, 7], "esp_modem_set_preferred_mod": 2, "cat": [2, 7], "m": [2, 7], "nb": [2, 7], "iot": [2, 7], "select": [2, 7], "esp_modem_set_network_band": 2, "band": [2, 7], "esp_modem_get_network_system_mod": 2, "show": [2, 7], "system": [2, 7], "esp_modem_set_gnss_power_mod": 2, "gnss": [2, 7], "off": [2, 6, 7], "esp_modem_config": 2, "esp_modem_dte_default_config": 2, "esp_modem_dce_default_config": 2, "apn": 2, "esp_modem_dce_config": [2, 3], "esp_modem_flow_ctrl_t": 2, "esp_modem_flow_control_non": 2, "esp_modem_flow_control_sw": 2, "esp_modem_flow_control_hw": 2, "esp_modem_uart_term_config": 2, "h": 2, "member": 2, "uart_port_t": 2, "port_num": 2, "port": 2, "uart_word_length_t": 2, "data_bit": 2, "uart_stop_bits_t": 2, "stop_bit": 2, "stop": [2, 7], "uart_parity_t": 2, "pariti": 2, "flow_control": 2, "uart_sclk_t": 2, "source_clk": 2, "sourc": [2, 7], "clock": 2, "baud_rat": 2, "tx_io_num": 2, "txd": 2, "rx_io_num": 2, "rxd": 2, "rts_io_num": 2, "cts_io_num": 2, "rx_buffer_s": 2, "rx": 2, "buffer": [2, 7], "tx_buffer_s": 2, "tx": 2, "event_queue_s": 2, "queue": 2, "esp_modem_vfs_term_config": 2, "vf": [2, 3], "fd": 2, "alreadi": 2, "file": [2, 7], "descriptor": 2, "delet": 2, "esp_modem_vfs_resourc": 2, "custom": [2, 5, 7], "close": [2, 7], "resourc": 2, "clenaup": 2, "complet": [2, 7], "sw": 2, "follow": [2, 7], "portion": 2, "dedic": 2, "size_t": [2, 7], "dte_buffer_s": 2, "uint32_t": [2, 7], "task_stack_s": 2, "task": 2, "stack": 2, "unsign": 2, "task_prior": 2, "prioriti": 2, "uart_config": 2, "vfs_config": 2, "extension_config": 2, "logic": [2, 7], "similar": 3, "construct": [3, 7], "esp_modem_init_dt": 3, "create_uart_dt": 3, "ptr": [3, 7], "nullptr": 3, "due": 3, "insuffici": 3, "memori": 3, "wrong": 3, "except": [3, 6], "disabl": 3, "abort": [3, 6], "create_vfs_dt": 3, "esp_modem_init_dc": 3, "create_sim7600_dc": 3, "create_sim7070_dc": 3, "create_sim7000_dc": 3, "create_sim800_dc": 3, "create_bg96_dc": 3, "create_generic_dc": 3, "specificmodul": [3, 6, 7], "respons": [3, 7], "transact": [3, 7], "relat": [3, 7], "consequ": [3, 7], "synergi": [3, 7], "aggreg": [3, 7], "set_data": [3, 7], "get_operator_nam": [3, 4, 7], "store_profil": [3, 4, 7], "set_pin": [3, 4, 7], "read_pin": [3, 4, 7], "set_echo": [3, 4, 7], "sms_txt_mode": [3, 4, 7], "sms_character_set": [3, 4, 7], "send_sm": [3, 4, 7], "resume_data_mod": [3, 4, 7], "set_pdp_context": [3, 4, 7], "set_command_mod": [3, 4, 7], "set_cmux": [3, 4, 7], "get_imsi": [3, 4, 7], "get_imei": [3, 4, 7], "get_module_nam": [3, 4, 7], "set_data_mod": [3, 4, 7], "get_signal_qu": [3, 4, 7], "set_flow_control": [3, 4, 7], "hang_up": [3, 4, 7], "get_battery_statu": [3, 4, 7], "power_down": [3, 4, 7], "set_baud": [3, 4, 7], "set_oper": [3, 4, 7], "set_network_attachment_st": [3, 4, 7], "get_network_attachment_st": [3, 4, 7], "set_radio_st": [3, 4, 7], "get_radio_st": [3, 4, 7], "set_network_mod": [3, 4, 7], "set_preferred_mod": [3, 4, 7], "set_network_band": [3, 4, 7], "get_network_system_mod": [3, 4, 7], "set_gnss_power_mod": [3, 4, 7], "explicitli": [3, 7], "simpli": 3, "clean": 3, "goe": 3, "block": [3, 6, 7], "scope": 3, "brief": 5, "intro": 5, "case": [5, 6], "other": [5, 7], "c": [5, 6, 7], "lifecycl": 5, "api": [5, 6, 7], "advanc": [5, 7], "instanti": 5, "factori": [5, 7], "intern": 5, "decis": 5, "collabor": 5, "inherit": 5, "addit": [6, 7], "macro": [6, 7], "wrapper": 6, "try": 6, "catch": 6, "easier": 6, "ON": 6, "init": [6, 7], "treat": 6, "runtim": [6, 7], "program": 6, "break": 6, "more": 6, "privat": 6, "modem": 6, "special": [6, 7], "implant": 6, "minim": 6, "moduleif": [6, 7], "oonli": 6, "compil": 6, "time": [6, 7], "without": [6, 7], "diagram": 6, "describ": [6, 7], "how": 6, "can": [6, 7], "write": [6, 7], "callback": [6, 7], "driver": 6, "below": 6, "depict": 6, "idea": 6, "cmuxinst": [6, 7], "arbitrari": 6, "same": [6, 7], "consum": [6, 7], "origin": [6, 7], "detail": 7, "descript": 7, "turn": 7, "thee": 7, "develop": 7, "would": 7, "explain": 7, "section": 7, "esp_modem_dc": 7, "definit": 7, "dce_mod": 7, "parent": 7, "pdpcontext": 7, "talk": 7, "besid": 7, "document": 7, "esp_modem_dt": 7, "commandableif": 7, "explicit": 7, "uint8_t": 7, "len": 7, "underli": 7, "written": 7, "d": 7, "payload": 7, "length": 7, "set_read_cb": 7, "f": 7, "valid": 7, "set_error_cb": 7, "terminal_error": 7, "err": 7, "modem_mod": 7, "got_line_cb": 7, "got_lin": 7, "time_m": 7, "respond": 7, "line": 7, "wait": 7, "answer": 7, "separ": 7, "abov": 7, "esp_modem_termin": 7, "buffer_overflow": 7, "checksum_error": 7, "unexpected_control_flow": 7, "device_gon": 7, "compli": 7, "subclass": 7, "maximum": 7, "esp_modem_cmux": 7, "cmux_stat": 7, "machin": 7, "header": 7, "footer": 7, "recov": 7, "itself": 7, "usabl": 7, "deinit": 7, "pair": 7, "unique_buff": 7, "eject": 7, "so": 7, "thei": 7, "tradit": 7, "inst": 7, "index": 7, "esp_modem_netif": 7, "layer": 7, "glue": 7, "start": 7, "wait_until_ppp_exit": 7, "until": 7, "esp_modem_modul": 7, "esp_modem_dce_modul": 7, "just": 7, "setup_data_mod": 7, "mandatori": 7, "abl": 7, "configure_pdp_context": 7, "new_pdp": 7, "simplifi": 7, "version": 7, "To": 7, "ha": 7, "declar": 7, "first": 7, "esp_modem_command_declar": 7, "inc": 7, "singl": 7, "cpp": 7, "therefor": 7, "care": 7, "taken": 7, "correctli": 7, "specifi": 7, "especi": 7, "keep": 7, "low": 7, "6": 7, "preprocessor": 7, "both": 7, "clariti": 7, "expand": 7, "pattern": 7, "int_in": 7, "input": 7, "integ": 7, "human": 7, "readabl": 7, "second": 7, "p2": 7, "etc": 7, "namespac": 7, "hold": 7, "esp_modem_dce_command": 7, "esp_modem_declare_dce_command": 7, "return_typ": 7, "num": 7, "get_battery_status_sim7xxx": 7, "set_gnss_power_mode_sim76xx": 7, "power_down_sim76xx": 7, "power_down_sim70xx": 7, "set_network_bands_sim76xx": 7, "power_down_sim8xx": 7, "set_data_mode_sim8xx": 7, "esp_modem_typ": 7, "undef": 7, "command_mod": 7, "8212": 7, "suppos": 7, "data_mod": 7, "cmux_mod": 7, "assign": 7, "result": 7, "successfulli": 7, "didn": 7, "timelin": 7, "elig": 7}, "objects": {"": [[2, 0, 1, "c.ESP_MODEM_DCE_DEFAULT_CONFIG", "ESP_MODEM_DCE_DEFAULT_CONFIG"], [7, 0, 1, "c.ESP_MODEM_DECLARE_DCE_COMMAND", "ESP_MODEM_DECLARE_DCE_COMMAND"], [2, 0, 1, "c.ESP_MODEM_DTE_DEFAULT_CONFIG", "ESP_MODEM_DTE_DEFAULT_CONFIG"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device18ESP_MODEM_DCE_BG96E", "ESP_MODEM_DCE_BG96"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_GENETICE", "ESP_MODEM_DCE_GENETIC"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7000E", "ESP_MODEM_DCE_SIM7000"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7070E", "ESP_MODEM_DCE_SIM7070"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7600E", "ESP_MODEM_DCE_SIM7600"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device20ESP_MODEM_DCE_SIM800E", "ESP_MODEM_DCE_SIM800"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_HWE", "ESP_MODEM_FLOW_CONTROL_HW"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t27ESP_MODEM_FLOW_CONTROL_NONEE", "ESP_MODEM_FLOW_CONTROL_NONE"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_SWE", "ESP_MODEM_FLOW_CONTROL_SW"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_CMUXE", "ESP_MODEM_MODE_CMUX"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode22ESP_MODEM_MODE_COMMANDE", "ESP_MODEM_MODE_COMMAND"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_DATAE", "ESP_MODEM_MODE_DATA"], [1, 2, 1, "_CPPv49ModemType", "ModemType"], [1, 1, 1, "_CPPv4N9ModemType4BG96E", "ModemType::BG96"], [1, 1, 1, "_CPPv4N9ModemType13GenericModuleE", "ModemType::GenericModule"], [1, 1, 1, "_CPPv4N9ModemType7SIM7000E", "ModemType::SIM7000"], [1, 1, 1, "_CPPv4N9ModemType7SIM7070E", "ModemType::SIM7070"], [1, 1, 1, "_CPPv4N9ModemType7SIM7600E", "ModemType::SIM7600"], [1, 1, 1, "_CPPv4N9ModemType6SIM800E", "ModemType::SIM800"], [7, 2, 1, "_CPPv410cmux_state", "cmux_state"], [7, 1, 1, "_CPPv4N10cmux_state6FOOTERE", "cmux_state::FOOTER"], [7, 1, 1, "_CPPv4N10cmux_state6HEADERE", "cmux_state::HEADER"], [7, 1, 1, "_CPPv4N10cmux_state4INITE", "cmux_state::INIT"], [7, 1, 1, "_CPPv4N10cmux_state7PAYLOADE", "cmux_state::PAYLOAD"], [7, 1, 1, "_CPPv4N10cmux_state7RECOVERE", "cmux_state::RECOVER"], [7, 2, 1, "_CPPv414command_result", "command_result"], [7, 1, 1, "_CPPv4N14command_result4FAILE", "command_result::FAIL"], [7, 1, 1, "_CPPv4N14command_result2OKE", "command_result::OK"], [7, 1, 1, "_CPPv4N14command_result7TIMEOUTE", "command_result::TIMEOUT"], [3, 3, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::config"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::dte"], [3, 4, 1, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_BG96_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::config"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7000_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::config"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7070_dce::netif"], [3, 3, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::config"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::dte"], [3, 4, 1, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM7600_dce::netif"], [3, 3, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::config"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::dte"], [3, 4, 1, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_SIM800_dce::netif"], [3, 3, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::config"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::dte"], [3, 4, 1, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t", "create_generic_dce::netif"], [3, 3, 1, "_CPPv415create_uart_dtePK10dte_config", "create_uart_dte"], [3, 4, 1, "_CPPv415create_uart_dtePK10dte_config", "create_uart_dte::config"], [3, 3, 1, "_CPPv414create_vfs_dtePK10dte_config", "create_vfs_dte"], [3, 4, 1, "_CPPv414create_vfs_dtePK10dte_config", "create_vfs_dte::config"], [3, 5, 1, "_CPPv410dce_config", "dce_config"], [3, 5, 1, "_CPPv410dte_config", "dte_config"], [7, 6, 1, "_CPPv4N9esp_modem4BG96E", "esp_modem::BG96"], [7, 6, 1, "_CPPv4N9esp_modem4CMuxE", "esp_modem::CMux"], [7, 3, 1, "_CPPv4N9esp_modem4CMux6deinitEv", "esp_modem::CMux::deinit"], [7, 3, 1, "_CPPv4N9esp_modem4CMux6detachEv", "esp_modem::CMux::detach"], [7, 3, 1, "_CPPv4N9esp_modem4CMux4initEv", "esp_modem::CMux::init"], [7, 3, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb"], [7, 4, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb::f"], [7, 4, 1, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::CMux::set_read_cb::inst"], [7, 3, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::data"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::i"], [7, 4, 1, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t", "esp_modem::CMux::write::len"], [7, 6, 1, "_CPPv4N9esp_modem12CMuxInstanceE", "esp_modem::CMuxInstance"], [7, 3, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read::data"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t", "esp_modem::CMuxInstance::read::len"], [7, 3, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write::data"], [7, 4, 1, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t", "esp_modem::CMuxInstance::write::len"], [7, 6, 1, "_CPPv4N9esp_modem13CommandableIfE", "esp_modem::CommandableIf"], [7, 3, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::command"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::separator"], [7, 4, 1, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc", "esp_modem::CommandableIf::command::time_ms"], [7, 6, 1, "_CPPv4N9esp_modem3DCEE", "esp_modem::DCE"], [7, 3, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::cmd"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::out"], [7, 4, 1, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi", "esp_modem::DCE::at::timeout"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::bcl"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::bcs"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi", "esp_modem::DCE::get_battery_status::voltage"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE", "esp_modem::DCE::get_imei"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE", "esp_modem::DCE::get_imei::imei"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE", "esp_modem::DCE::get_imsi"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE", "esp_modem::DCE::get_imsi::imsi"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE", "esp_modem::DCE::get_module_name"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE", "esp_modem::DCE::get_module_name::name"], [7, 3, 1, "_CPPv4N9esp_modem3DCE28get_network_attachment_stateERi", "esp_modem::DCE::get_network_attachment_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE28get_network_attachment_stateERi", "esp_modem::DCE::get_network_attachment_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE23get_network_system_modeERi", "esp_modem::DCE::get_network_system_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE23get_network_system_modeERi", "esp_modem::DCE::get_network_system_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name::act"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi", "esp_modem::DCE::get_operator_name::name"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15get_radio_stateERi", "esp_modem::DCE::get_radio_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15get_radio_stateERi", "esp_modem::DCE::get_radio_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality::ber"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi", "esp_modem::DCE::get_signal_quality::rssi"], [7, 3, 1, "_CPPv4N9esp_modem3DCE7hang_upEv", "esp_modem::DCE::hang_up"], [7, 3, 1, "_CPPv4N9esp_modem3DCE10power_downEv", "esp_modem::DCE::power_down"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8read_pinERb", "esp_modem::DCE::read_pin"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8read_pinERb", "esp_modem::DCE::read_pin::pin_ok"], [7, 3, 1, "_CPPv4N9esp_modem3DCE5resetEv", "esp_modem::DCE::reset"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16resume_data_modeEv", "esp_modem::DCE::resume_data_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms::message"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE", "esp_modem::DCE::send_sms::number"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_baudEi", "esp_modem::DCE::set_baud"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8set_baudEi", "esp_modem::DCE::set_baud::baud"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_cmuxEv", "esp_modem::DCE::set_cmux"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_command_modeEv", "esp_modem::DCE::set_command_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE13set_data_modeEv", "esp_modem::DCE::set_data_mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE8set_echoEKb", "esp_modem::DCE::set_echo"], [7, 4, 1, "_CPPv4N9esp_modem3DCE8set_echoEKb", "esp_modem::DCE::set_echo::echo_on"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control::dce_flow"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_flow_controlEii", "esp_modem::DCE::set_flow_control::dte_flow"], [7, 3, 1, "_CPPv4N9esp_modem3DCE19set_gnss_power_modeEi", "esp_modem::DCE::set_gnss_power_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE19set_gnss_power_modeEi", "esp_modem::DCE::set_gnss_power_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE28set_network_attachment_stateEi", "esp_modem::DCE::set_network_attachment_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE28set_network_attachment_stateEi", "esp_modem::DCE::set_network_attachment_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::bands"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii", "esp_modem::DCE::set_network_bands::size"], [7, 3, 1, "_CPPv4N9esp_modem3DCE16set_network_modeEi", "esp_modem::DCE::set_network_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE16set_network_modeEi", "esp_modem::DCE::set_network_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::format"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE", "esp_modem::DCE::set_operator::oper"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext", "esp_modem::DCE::set_pdp_context"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext", "esp_modem::DCE::set_pdp_context::p1"], [7, 3, 1, "_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE", "esp_modem::DCE::set_pin"], [7, 4, 1, "_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE", "esp_modem::DCE::set_pin::pin"], [7, 3, 1, "_CPPv4N9esp_modem3DCE18set_preferred_modeEi", "esp_modem::DCE::set_preferred_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE18set_preferred_modeEi", "esp_modem::DCE::set_preferred_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem3DCE15set_radio_stateEi", "esp_modem::DCE::set_radio_state"], [7, 4, 1, "_CPPv4N9esp_modem3DCE15set_radio_stateEi", "esp_modem::DCE::set_radio_state::state"], [7, 3, 1, "_CPPv4N9esp_modem3DCE17sms_character_setEv", "esp_modem::DCE::sms_character_set"], [7, 3, 1, "_CPPv4N9esp_modem3DCE12sms_txt_modeEKb", "esp_modem::DCE::sms_txt_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DCE12sms_txt_modeEKb", "esp_modem::DCE::sms_txt_mode::txt"], [7, 3, 1, "_CPPv4N9esp_modem3DCE13store_profileEv", "esp_modem::DCE::store_profile"], [7, 3, 1, "_CPPv4N9esp_modem3DCE4syncEv", "esp_modem::DCE::sync"], [7, 6, 1, "_CPPv4N9esp_modem8DCE_ModeE", "esp_modem::DCE_Mode"], [3, 6, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T"], [7, 6, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T"], [3, 7, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T::SpecificModule"], [7, 7, 1, "_CPPv4I0EN9esp_modem5DCE_TE", "esp_modem::DCE_T::SpecificModule"], [3, 3, 1, "_CPPv4N9esp_modem5DCE_T8set_dataEv", "esp_modem::DCE_T::set_data"], [7, 3, 1, "_CPPv4N9esp_modem5DCE_T8set_dataEv", "esp_modem::DCE_T::set_data"], [7, 6, 1, "_CPPv4N9esp_modem3DTEE", "esp_modem::DTE"], [7, 3, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE"], [7, 4, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE::config"], [7, 4, 1, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE", "esp_modem::DTE::DTE::t"], [7, 3, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command"], [7, 3, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::command"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::got_line"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::separator"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t", "esp_modem::DTE::command::time_ms"], [7, 4, 1, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc", "esp_modem::DTE::command::time_ms"], [7, 3, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read"], [7, 4, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read::d"], [7, 4, 1, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t", "esp_modem::DTE::read::len"], [7, 3, 1, "_CPPv4N9esp_modem3DTE12set_error_cbENSt8functionIFv14terminal_errorEEE", "esp_modem::DTE::set_error_cb"], [7, 4, 1, "_CPPv4N9esp_modem3DTE12set_error_cbENSt8functionIFv14terminal_errorEEE", "esp_modem::DTE::set_error_cb::f"], [7, 3, 1, "_CPPv4N9esp_modem3DTE8set_modeE10modem_mode", "esp_modem::DTE::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem3DTE8set_modeE10modem_mode", "esp_modem::DTE::set_mode::m"], [7, 3, 1, "_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::DTE::set_read_cb"], [7, 4, 1, "_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE", "esp_modem::DTE::set_read_cb::f"], [7, 3, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write"], [7, 4, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write::data"], [7, 4, 1, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t", "esp_modem::DTE::write::len"], [7, 6, 1, "_CPPv4N9esp_modem13GenericModuleE", "esp_modem::GenericModule"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule::dte"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::GenericModule::pdp"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::configure_pdp_context"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE", "esp_modem::GenericModule::configure_pdp_context::new_pdp"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule17get_operator_nameERNSt6stringE", "esp_modem::GenericModule::get_operator_name"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule17get_operator_nameERNSt6stringE", "esp_modem::GenericModule::get_operator_name::name"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode", "esp_modem::GenericModule::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode", "esp_modem::GenericModule::set_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem13GenericModule15setup_data_modeEv", "esp_modem::GenericModule::setup_data_mode"], [7, 6, 1, "_CPPv4N9esp_modem8ModuleIfE", "esp_modem::ModuleIf"], [7, 3, 1, "_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode", "esp_modem::ModuleIf::set_mode"], [7, 4, 1, "_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode", "esp_modem::ModuleIf::set_mode::mode"], [7, 3, 1, "_CPPv4N9esp_modem8ModuleIf15setup_data_modeEv", "esp_modem::ModuleIf::setup_data_mode"], [7, 6, 1, "_CPPv4N9esp_modem5NetifE", "esp_modem::Netif"], [7, 3, 1, "_CPPv4N9esp_modem5Netif5startEv", "esp_modem::Netif::start"], [7, 3, 1, "_CPPv4N9esp_modem5Netif4stopEv", "esp_modem::Netif::stop"], [7, 3, 1, "_CPPv4N9esp_modem5Netif20wait_until_ppp_exitsEv", "esp_modem::Netif::wait_until_ppp_exits"], [7, 6, 1, "_CPPv4N9esp_modem10PdpContextE", "esp_modem::PdpContext"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7000E", "esp_modem::SIM7000"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7070E", "esp_modem::SIM7070"], [7, 6, 1, "_CPPv4N9esp_modem7SIM7600E", "esp_modem::SIM7600"], [7, 6, 1, "_CPPv4N9esp_modem6SIM800E", "esp_modem::SIM800"], [7, 6, 1, "_CPPv4N9esp_modem8TerminalE", "esp_modem::Terminal"], [7, 3, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read::data"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t", "esp_modem::Terminal::read::len"], [7, 3, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write::data"], [7, 4, 1, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t", "esp_modem::Terminal::write::len"], [1, 6, 1, "_CPPv4I0EN9esp_modem11dce_factory7CreatorE", "esp_modem::dce_factory::Creator"], [1, 7, 1, "_CPPv4I0EN9esp_modem11dce_factory7CreatorE", "esp_modem::dce_factory::Creator::T_Module"], [1, 6, 1, "_CPPv4N9esp_modem11dce_factory7FactoryE", "esp_modem::dce_factory::Factory"], [1, 3, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::Args"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::T_Module"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::args"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build::cfg"], [1, 3, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique"], [1, 3, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::Args"], [1, 7, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::Args"], [1, 7, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::T_Module"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::args"], [1, 4, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::args"], [1, 4, 1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::cfg"], [1, 4, 1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args", "esp_modem::dce_factory::Factory::build_unique::cfg"], [1, 6, 1, "_CPPv4N9esp_modem11dce_factory13FactoryHelperE", "esp_modem::dce_factory::FactoryHelper"], [2, 3, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::cmd"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::out"], [2, 4, 1, "_CPPv412esp_modem_atPKcPci", "esp_modem_at::timeout"], [2, 6, 1, "_CPPv420esp_modem_dce_config", "esp_modem_dce_config"], [2, 8, 1, "_CPPv4N20esp_modem_dce_config3apnE", "esp_modem_dce_config::apn"], [2, 5, 1, "_CPPv422esp_modem_dce_config_t", "esp_modem_dce_config_t"], [2, 2, 1, "_CPPv420esp_modem_dce_device", "esp_modem_dce_device"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device18ESP_MODEM_DCE_BG96E", "esp_modem_dce_device::ESP_MODEM_DCE_BG96"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_GENETICE", "esp_modem_dce_device::ESP_MODEM_DCE_GENETIC"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7000E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7000"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7070E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7070"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7600E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM7600"], [2, 1, 1, "_CPPv4N20esp_modem_dce_device20ESP_MODEM_DCE_SIM800E", "esp_modem_dce_device::ESP_MODEM_DCE_SIM800"], [2, 5, 1, "_CPPv422esp_modem_dce_device_t", "esp_modem_dce_device_t"], [2, 2, 1, "_CPPv418esp_modem_dce_mode", "esp_modem_dce_mode"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_CMUXE", "esp_modem_dce_mode::ESP_MODEM_MODE_CMUX"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode22ESP_MODEM_MODE_COMMANDE", "esp_modem_dce_mode::ESP_MODEM_MODE_COMMAND"], [2, 1, 1, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_DATAE", "esp_modem_dce_mode::ESP_MODEM_MODE_DATA"], [2, 5, 1, "_CPPv420esp_modem_dce_mode_t", "esp_modem_dce_mode_t"], [2, 3, 1, "_CPPv417esp_modem_destroyP15esp_modem_dce_t", "esp_modem_destroy"], [2, 4, 1, "_CPPv417esp_modem_destroyP15esp_modem_dce_t", "esp_modem_destroy::dce"], [2, 6, 1, "_CPPv420esp_modem_dte_config", "esp_modem_dte_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config15dte_buffer_sizeE", "esp_modem_dte_config::dte_buffer_size"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config16extension_configE", "esp_modem_dte_config::extension_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config13task_priorityE", "esp_modem_dte_config::task_priority"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config15task_stack_sizeE", "esp_modem_dte_config::task_stack_size"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config11uart_configE", "esp_modem_dte_config::uart_config"], [2, 8, 1, "_CPPv4N20esp_modem_dte_config10vfs_configE", "esp_modem_dte_config::vfs_config"], [2, 5, 1, "_CPPv422esp_modem_dte_config_t", "esp_modem_dte_config_t"], [2, 2, 1, "_CPPv421esp_modem_flow_ctrl_t", "esp_modem_flow_ctrl_t"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_HWE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_HW"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t27ESP_MODEM_FLOW_CONTROL_NONEE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_NONE"], [2, 1, 1, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_SWE", "esp_modem_flow_ctrl_t::ESP_MODEM_FLOW_CONTROL_SW"], [2, 3, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::bcl"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::bcs"], [2, 4, 1, "_CPPv428esp_modem_get_battery_statusPiPiPi", "esp_modem_get_battery_status::voltage"], [2, 3, 1, "_CPPv418esp_modem_get_imeiPc", "esp_modem_get_imei"], [2, 4, 1, "_CPPv418esp_modem_get_imeiPc", "esp_modem_get_imei::imei"], [2, 3, 1, "_CPPv418esp_modem_get_imsiPc", "esp_modem_get_imsi"], [2, 4, 1, "_CPPv418esp_modem_get_imsiPc", "esp_modem_get_imsi::imsi"], [2, 3, 1, "_CPPv425esp_modem_get_module_namePc", "esp_modem_get_module_name"], [2, 4, 1, "_CPPv425esp_modem_get_module_namePc", "esp_modem_get_module_name::name"], [2, 3, 1, "_CPPv438esp_modem_get_network_attachment_statePi", "esp_modem_get_network_attachment_state"], [2, 4, 1, "_CPPv438esp_modem_get_network_attachment_statePi", "esp_modem_get_network_attachment_state::state"], [2, 3, 1, "_CPPv433esp_modem_get_network_system_modePi", "esp_modem_get_network_system_mode"], [2, 4, 1, "_CPPv433esp_modem_get_network_system_modePi", "esp_modem_get_network_system_mode::mode"], [2, 3, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name"], [2, 4, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name::act"], [2, 4, 1, "_CPPv427esp_modem_get_operator_namePcPi", "esp_modem_get_operator_name::name"], [2, 3, 1, "_CPPv425esp_modem_get_radio_statePi", "esp_modem_get_radio_state"], [2, 4, 1, "_CPPv425esp_modem_get_radio_statePi", "esp_modem_get_radio_state::state"], [2, 3, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality"], [2, 4, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality::ber"], [2, 4, 1, "_CPPv428esp_modem_get_signal_qualityPiPi", "esp_modem_get_signal_quality::rssi"], [2, 3, 1, "_CPPv417esp_modem_hang_upv", "esp_modem_hang_up"], [2, 3, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::dce_config"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::dte_config"], [2, 4, 1, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new::netif"], [2, 3, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::dce_config"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::dte_config"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::module"], [2, 4, 1, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t", "esp_modem_new_dev::netif"], [2, 3, 1, "_CPPv420esp_modem_power_downv", "esp_modem_power_down"], [2, 3, 1, "_CPPv418esp_modem_read_pinPb", "esp_modem_read_pin"], [2, 4, 1, "_CPPv418esp_modem_read_pinPb", "esp_modem_read_pin::pin_ok"], [2, 3, 1, "_CPPv415esp_modem_resetv", "esp_modem_reset"], [2, 3, 1, "_CPPv426esp_modem_resume_data_modev", "esp_modem_resume_data_mode"], [2, 3, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms"], [2, 4, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms::message"], [2, 4, 1, "_CPPv418esp_modem_send_smsPKcPKc", "esp_modem_send_sms::number"], [2, 3, 1, "_CPPv418esp_modem_set_baudi", "esp_modem_set_baud"], [2, 4, 1, "_CPPv418esp_modem_set_baudi", "esp_modem_set_baud::baud"], [2, 3, 1, "_CPPv418esp_modem_set_cmuxv", "esp_modem_set_cmux"], [2, 3, 1, "_CPPv426esp_modem_set_command_modev", "esp_modem_set_command_mode"], [2, 3, 1, "_CPPv423esp_modem_set_data_modev", "esp_modem_set_data_mode"], [2, 3, 1, "_CPPv418esp_modem_set_echoKb", "esp_modem_set_echo"], [2, 4, 1, "_CPPv418esp_modem_set_echoKb", "esp_modem_set_echo::echo_on"], [2, 3, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control"], [2, 4, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control::dce_flow"], [2, 4, 1, "_CPPv426esp_modem_set_flow_controlii", "esp_modem_set_flow_control::dte_flow"], [2, 3, 1, "_CPPv429esp_modem_set_gnss_power_modei", "esp_modem_set_gnss_power_mode"], [2, 4, 1, "_CPPv429esp_modem_set_gnss_power_modei", "esp_modem_set_gnss_power_mode::mode"], [2, 3, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode"], [2, 4, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode::dce"], [2, 4, 1, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t", "esp_modem_set_mode::mode"], [2, 3, 1, "_CPPv438esp_modem_set_network_attachment_statei", "esp_modem_set_network_attachment_state"], [2, 4, 1, "_CPPv438esp_modem_set_network_attachment_statei", "esp_modem_set_network_attachment_state::state"], [2, 3, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::bands"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::mode"], [2, 4, 1, "_CPPv427esp_modem_set_network_bandsPKcPKii", "esp_modem_set_network_bands::size"], [2, 3, 1, "_CPPv426esp_modem_set_network_modei", "esp_modem_set_network_mode"], [2, 4, 1, "_CPPv426esp_modem_set_network_modei", "esp_modem_set_network_mode::mode"], [2, 3, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::format"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::mode"], [2, 4, 1, "_CPPv422esp_modem_set_operatoriiPKc", "esp_modem_set_operator::oper"], [2, 3, 1, "_CPPv425esp_modem_set_pdp_contextP22esp_modem_PdpContext_t", "esp_modem_set_pdp_context"], [2, 4, 1, "_CPPv425esp_modem_set_pdp_contextP22esp_modem_PdpContext_t", "esp_modem_set_pdp_context::p1"], [2, 3, 1, "_CPPv417esp_modem_set_pinPKc", "esp_modem_set_pin"], [2, 4, 1, "_CPPv417esp_modem_set_pinPKc", "esp_modem_set_pin::pin"], [2, 3, 1, "_CPPv428esp_modem_set_preferred_modei", "esp_modem_set_preferred_mode"], [2, 4, 1, "_CPPv428esp_modem_set_preferred_modei", "esp_modem_set_preferred_mode::mode"], [2, 3, 1, "_CPPv425esp_modem_set_radio_statei", "esp_modem_set_radio_state"], [2, 4, 1, "_CPPv425esp_modem_set_radio_statei", "esp_modem_set_radio_state::state"], [2, 3, 1, "_CPPv427esp_modem_sms_character_setv", "esp_modem_sms_character_set"], [2, 3, 1, "_CPPv422esp_modem_sms_txt_modeKb", "esp_modem_sms_txt_mode"], [2, 4, 1, "_CPPv422esp_modem_sms_txt_modeKb", "esp_modem_sms_txt_mode::txt"], [2, 3, 1, "_CPPv423esp_modem_store_profilev", "esp_modem_store_profile"], [2, 3, 1, "_CPPv414esp_modem_syncv", "esp_modem_sync"], [2, 6, 1, "_CPPv426esp_modem_uart_term_config", "esp_modem_uart_term_config"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9baud_rateE", "esp_modem_uart_term_config::baud_rate"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10cts_io_numE", "esp_modem_uart_term_config::cts_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9data_bitsE", "esp_modem_uart_term_config::data_bits"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config16event_queue_sizeE", "esp_modem_uart_term_config::event_queue_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config12flow_controlE", "esp_modem_uart_term_config::flow_control"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config6parityE", "esp_modem_uart_term_config::parity"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config8port_numE", "esp_modem_uart_term_config::port_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10rts_io_numE", "esp_modem_uart_term_config::rts_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config14rx_buffer_sizeE", "esp_modem_uart_term_config::rx_buffer_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9rx_io_numE", "esp_modem_uart_term_config::rx_io_num"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config10source_clkE", "esp_modem_uart_term_config::source_clk"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9stop_bitsE", "esp_modem_uart_term_config::stop_bits"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config14tx_buffer_sizeE", "esp_modem_uart_term_config::tx_buffer_size"], [2, 8, 1, "_CPPv4N26esp_modem_uart_term_config9tx_io_numE", "esp_modem_uart_term_config::tx_io_num"], [2, 6, 1, "_CPPv425esp_modem_vfs_term_config", "esp_modem_vfs_term_config"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config7deleterE", "esp_modem_vfs_term_config::deleter"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config2fdE", "esp_modem_vfs_term_config::fd"], [2, 8, 1, "_CPPv4N25esp_modem_vfs_term_config8resourceE", "esp_modem_vfs_term_config::resource"], [7, 3, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::bcl"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::bcs"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::t"], [7, 4, 1, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi", "get_battery_status_sim7xxx::voltage"], [7, 5, 1, "_CPPv411got_line_cb", "got_line_cb"], [7, 2, 1, "_CPPv410modem_mode", "modem_mode"], [7, 1, 1, "_CPPv4N10modem_mode9CMUX_MODEE", "modem_mode::CMUX_MODE"], [7, 1, 1, "_CPPv4N10modem_mode12COMMAND_MODEE", "modem_mode::COMMAND_MODE"], [7, 1, 1, "_CPPv4N10modem_mode9DATA_MODEE", "modem_mode::DATA_MODE"], [7, 1, 1, "_CPPv4N10modem_mode5UNDEFE", "modem_mode::UNDEF"], [7, 3, 1, "_CPPv418power_down_sim70xxP13CommandableIf", "power_down_sim70xx"], [7, 4, 1, "_CPPv418power_down_sim70xxP13CommandableIf", "power_down_sim70xx::t"], [7, 3, 1, "_CPPv418power_down_sim76xxP13CommandableIf", "power_down_sim76xx"], [7, 4, 1, "_CPPv418power_down_sim76xxP13CommandableIf", "power_down_sim76xx::t"], [7, 3, 1, "_CPPv417power_down_sim8xxP13CommandableIf", "power_down_sim8xx"], [7, 4, 1, "_CPPv417power_down_sim8xxP13CommandableIf", "power_down_sim8xx::t"], [7, 3, 1, "_CPPv420set_data_mode_sim8xxP13CommandableIf", "set_data_mode_sim8xx"], [7, 4, 1, "_CPPv420set_data_mode_sim8xxP13CommandableIf", "set_data_mode_sim8xx::t"], [7, 3, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx"], [7, 4, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx::mode"], [7, 4, 1, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi", "set_gnss_power_mode_sim76xx::t"], [7, 3, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::bands"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::mode"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::size"], [7, 4, 1, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii", "set_network_bands_sim76xx::t"], [7, 2, 1, "_CPPv414terminal_error", "terminal_error"], [7, 1, 1, "_CPPv4N14terminal_error15BUFFER_OVERFLOWE", "terminal_error::BUFFER_OVERFLOW"], [7, 1, 1, "_CPPv4N14terminal_error14CHECKSUM_ERRORE", "terminal_error::CHECKSUM_ERROR"], [7, 1, 1, "_CPPv4N14terminal_error11DEVICE_GONEE", "terminal_error::DEVICE_GONE"], [7, 1, 1, "_CPPv4N14terminal_error23UNEXPECTED_CONTROL_FLOWE", "terminal_error::UNEXPECTED_CONTROL_FLOW"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:enum", "3": "cpp:function", "4": "cpp:functionParam", "5": "cpp:type", "6": "cpp:class", "7": "cpp:templateParam", "8": "cpp:member"}, "objnames": {"0": ["c", "macro", "C macro"], "1": ["cpp", "enumerator", "C++ enumerator"], "2": ["cpp", "enum", "C++ enum"], "3": ["cpp", "function", "C++ function"], "4": ["cpp", "functionParam", "C++ function parameter"], "5": ["cpp", "type", "C++ type"], "6": ["cpp", "class", "C++ class"], "7": ["cpp", "templateParam", "C++ template parameter"], "8": ["cpp", "member", "C++ member"]}, "titleterms": {"esp": [0, 1, 5], "modem": [0, 1, 2, 3, 5, 7], "compon": 0, "dce": [0, 1, 3, 6, 7], "dte": [0, 3, 7], "ppp": 0, "netif": [0, 7], "modul": [0, 1, 7], "us": [0, 1], "case": [0, 1], "extens": 0, "cmux": [0, 6, 7], "": 0, "other": 0, "devic": [0, 7], "advanc": 1, "custom": 1, "instanti": 1, "factori": 1, "creat": [1, 3], "new": [1, 7], "commun": 1, "interfac": [1, 7], "c": [2, 3], "api": [2, 3], "document": [2, 3], "lifecycl": 2, "command": [2, 3, 7], "configur": 2, "structur": 2, "mode": 3, "switch": 3, "destroi": 3, "programm": 5, "manual": 5, "intern": [6, 7], "design": 6, "decis": 6, "collabor": 6, "model": 6, "termin": [6, 7], "inherit": 6, "implement": 7, "abstract": 7, "ad": 7, "gener": 7, "librari": 7, "type": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"ESP MODEM": [[0, "esp-modem"]], "Modem components": [[0, "modem-components"]], "DCE": [[0, "dce"]], "DTE": [[0, "dte"]], "PPP netif": [[0, "ppp-netif"]], "Module": [[0, "module"]], "Use cases": [[0, "use-cases"]], "Extensibility": [[0, "extensibility"]], "CMUX": [[0, "cmux"]], "DTE\u2019s": [[0, "dte-s"]], "Other devices": [[0, "other-devices"]], "Advanced esp-modem use cases": [[1, "advanced-esp-modem-use-cases"]], "Custom instantiation with DCE factory": [[1, "custom-instantiation-with-dce-factory"]], "Create custom module": [[1, "create-custom-module"]], "Create new communication interface": [[1, "create-new-communication-interface"]], "C API Documentation": [[2, "c-api-documentation"]], "Lifecycle API": [[2, "lifecycle-api"]], "Modem commands": [[2, "modem-commands"], [3, "modem-commands"]], "Configuration structures": [[2, "configuration-structures"]], "C++ API Documentation": [[3, "c-api-documentation"]], "Create DTE and DCE": [[3, "create-dte-and-dce"]], "Mode switching commands": [[3, "mode-switching-commands"]], "Destroy the DCE": [[3, "destroy-the-dce"]], "ESP-MODEM Programmers manual": [[5, "esp-modem-programmers-manual"]], "Internal design": [[6, "internal-design"]], "Design decisions": [[6, "design-decisions"]], "DCE collaboration model": [[6, "dce-collaboration-model"]], "Terminal inheritance": [[6, "terminal-inheritance"]], "CMUX terminal": [[6, "cmux-terminal"]], "DCE Internal implementation": [[7, "dce-internal-implementation"]], "DTE abstraction": [[7, "dte-abstraction"]], "Terminal interface": [[7, "terminal-interface"]], "CMUX implementation": [[7, "cmux-implementation"]], "Netif": [[7, "netif"]], "Module abstraction": [[7, "module-abstraction"]], "Adding new devices": [[7, "adding-new-devices"]], "Implement a new generic command": [[7, "implement-a-new-generic-command"]], "Command library": [[7, "command-library"]], "Modem types": [[7, "modem-types"]]}, "indexentries": {"modemtype (c++ enum)": [[1, "_CPPv49ModemType"]], "modemtype::bg96 (c++ enumerator)": [[1, "_CPPv4N9ModemType4BG96E"]], "modemtype::genericmodule (c++ enumerator)": [[1, "_CPPv4N9ModemType13GenericModuleE"]], "modemtype::sim7000 (c++ enumerator)": [[1, "_CPPv4N9ModemType7SIM7000E"]], "modemtype::sim7070 (c++ enumerator)": [[1, "_CPPv4N9ModemType7SIM7070E"]], "modemtype::sim7600 (c++ enumerator)": [[1, "_CPPv4N9ModemType7SIM7600E"]], "modemtype::sim800 (c++ enumerator)": [[1, "_CPPv4N9ModemType6SIM800E"]], "esp_modem::dce_factory::creator (c++ class)": [[1, "_CPPv4I0EN9esp_modem11dce_factory7CreatorE"]], "esp_modem::dce_factory::factory (c++ class)": [[1, "_CPPv4N9esp_modem11dce_factory7FactoryE"]], "esp_modem::dce_factory::factory::build (c++ function)": [[1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory5buildEP3DCEPK6configDpRR4Args"]], "esp_modem::dce_factory::factory::build_unique (c++ function)": [[1, "_CPPv4I0DpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args"], [1, "_CPPv4IDpEN9esp_modem11dce_factory7Factory12build_uniqueENSt10unique_ptrI3DCEEEPK6configDpRR4Args"]], "esp_modem::dce_factory::factoryhelper (c++ class)": [[1, "_CPPv4N9esp_modem11dce_factory13FactoryHelperE"]], "esp_modem_dce_default_config (c macro)": [[2, "c.ESP_MODEM_DCE_DEFAULT_CONFIG"]], "esp_modem_dte_default_config (c macro)": [[2, "c.ESP_MODEM_DTE_DEFAULT_CONFIG"]], "esp_modem_at (c++ function)": [[2, "_CPPv412esp_modem_atPKcPci"]], "esp_modem_dce_config (c++ struct)": [[2, "_CPPv420esp_modem_dce_config"]], "esp_modem_dce_config::apn (c++ member)": [[2, "_CPPv4N20esp_modem_dce_config3apnE"]], "esp_modem_dce_config_t (c++ type)": [[2, "_CPPv422esp_modem_dce_config_t"]], "esp_modem_dce_device (c++ enum)": [[2, "_CPPv420esp_modem_dce_device"]], "esp_modem_dce_device::esp_modem_dce_bg96 (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device18ESP_MODEM_DCE_BG96E"]], "esp_modem_dce_device::esp_modem_dce_genetic (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_GENETICE"]], "esp_modem_dce_device::esp_modem_dce_sim7000 (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7000E"]], "esp_modem_dce_device::esp_modem_dce_sim7070 (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7070E"]], "esp_modem_dce_device::esp_modem_dce_sim7600 (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device21ESP_MODEM_DCE_SIM7600E"]], "esp_modem_dce_device::esp_modem_dce_sim800 (c++ enumerator)": [[2, "_CPPv4N20esp_modem_dce_device20ESP_MODEM_DCE_SIM800E"]], "esp_modem_dce_device_t (c++ type)": [[2, "_CPPv422esp_modem_dce_device_t"]], "esp_modem_dce_mode (c++ enum)": [[2, "_CPPv418esp_modem_dce_mode"]], "esp_modem_dce_mode::esp_modem_mode_cmux (c++ enumerator)": [[2, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_CMUXE"]], "esp_modem_dce_mode::esp_modem_mode_command (c++ enumerator)": [[2, "_CPPv4N18esp_modem_dce_mode22ESP_MODEM_MODE_COMMANDE"]], "esp_modem_dce_mode::esp_modem_mode_data (c++ enumerator)": [[2, "_CPPv4N18esp_modem_dce_mode19ESP_MODEM_MODE_DATAE"]], "esp_modem_dce_mode_t (c++ type)": [[2, "_CPPv420esp_modem_dce_mode_t"]], "esp_modem_destroy (c++ function)": [[2, "_CPPv417esp_modem_destroyP15esp_modem_dce_t"]], "esp_modem_dte_config (c++ struct)": [[2, "_CPPv420esp_modem_dte_config"]], "esp_modem_dte_config::dte_buffer_size (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config15dte_buffer_sizeE"]], "esp_modem_dte_config::extension_config (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config16extension_configE"]], "esp_modem_dte_config::task_priority (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config13task_priorityE"]], "esp_modem_dte_config::task_stack_size (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config15task_stack_sizeE"]], "esp_modem_dte_config::uart_config (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config11uart_configE"]], "esp_modem_dte_config::vfs_config (c++ member)": [[2, "_CPPv4N20esp_modem_dte_config10vfs_configE"]], "esp_modem_dte_config_t (c++ type)": [[2, "_CPPv422esp_modem_dte_config_t"]], "esp_modem_flow_ctrl_t (c++ enum)": [[2, "_CPPv421esp_modem_flow_ctrl_t"]], "esp_modem_flow_ctrl_t::esp_modem_flow_control_hw (c++ enumerator)": [[2, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_HWE"]], "esp_modem_flow_ctrl_t::esp_modem_flow_control_none (c++ enumerator)": [[2, "_CPPv4N21esp_modem_flow_ctrl_t27ESP_MODEM_FLOW_CONTROL_NONEE"]], "esp_modem_flow_ctrl_t::esp_modem_flow_control_sw (c++ enumerator)": [[2, "_CPPv4N21esp_modem_flow_ctrl_t25ESP_MODEM_FLOW_CONTROL_SWE"]], "esp_modem_get_battery_status (c++ function)": [[2, "_CPPv428esp_modem_get_battery_statusPiPiPi"]], "esp_modem_get_imei (c++ function)": [[2, "_CPPv418esp_modem_get_imeiPc"]], "esp_modem_get_imsi (c++ function)": [[2, "_CPPv418esp_modem_get_imsiPc"]], "esp_modem_get_module_name (c++ function)": [[2, "_CPPv425esp_modem_get_module_namePc"]], "esp_modem_get_network_attachment_state (c++ function)": [[2, "_CPPv438esp_modem_get_network_attachment_statePi"]], "esp_modem_get_network_system_mode (c++ function)": [[2, "_CPPv433esp_modem_get_network_system_modePi"]], "esp_modem_get_operator_name (c++ function)": [[2, "_CPPv427esp_modem_get_operator_namePcPi"]], "esp_modem_get_radio_state (c++ function)": [[2, "_CPPv425esp_modem_get_radio_statePi"]], "esp_modem_get_signal_quality (c++ function)": [[2, "_CPPv428esp_modem_get_signal_qualityPiPi"]], "esp_modem_hang_up (c++ function)": [[2, "_CPPv417esp_modem_hang_upv"]], "esp_modem_new (c++ function)": [[2, "_CPPv413esp_modem_newPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t"]], "esp_modem_new_dev (c++ function)": [[2, "_CPPv417esp_modem_new_dev22esp_modem_dce_device_tPK22esp_modem_dte_config_tPK22esp_modem_dce_config_tP11esp_netif_t"]], "esp_modem_power_down (c++ function)": [[2, "_CPPv420esp_modem_power_downv"]], "esp_modem_read_pin (c++ function)": [[2, "_CPPv418esp_modem_read_pinPb"]], "esp_modem_reset (c++ function)": [[2, "_CPPv415esp_modem_resetv"]], "esp_modem_resume_data_mode (c++ function)": [[2, "_CPPv426esp_modem_resume_data_modev"]], "esp_modem_send_sms (c++ function)": [[2, "_CPPv418esp_modem_send_smsPKcPKc"]], "esp_modem_set_baud (c++ function)": [[2, "_CPPv418esp_modem_set_baudi"]], "esp_modem_set_cmux (c++ function)": [[2, "_CPPv418esp_modem_set_cmuxv"]], "esp_modem_set_command_mode (c++ function)": [[2, "_CPPv426esp_modem_set_command_modev"]], "esp_modem_set_data_mode (c++ function)": [[2, "_CPPv423esp_modem_set_data_modev"]], "esp_modem_set_echo (c++ function)": [[2, "_CPPv418esp_modem_set_echoKb"]], "esp_modem_set_flow_control (c++ function)": [[2, "_CPPv426esp_modem_set_flow_controlii"]], "esp_modem_set_gnss_power_mode (c++ function)": [[2, "_CPPv429esp_modem_set_gnss_power_modei"]], "esp_modem_set_mode (c++ function)": [[2, "_CPPv418esp_modem_set_modeP15esp_modem_dce_t20esp_modem_dce_mode_t"]], "esp_modem_set_network_attachment_state (c++ function)": [[2, "_CPPv438esp_modem_set_network_attachment_statei"]], "esp_modem_set_network_bands (c++ function)": [[2, "_CPPv427esp_modem_set_network_bandsPKcPKii"]], "esp_modem_set_network_mode (c++ function)": [[2, "_CPPv426esp_modem_set_network_modei"]], "esp_modem_set_operator (c++ function)": [[2, "_CPPv422esp_modem_set_operatoriiPKc"]], "esp_modem_set_pdp_context (c++ function)": [[2, "_CPPv425esp_modem_set_pdp_contextP22esp_modem_PdpContext_t"]], "esp_modem_set_pin (c++ function)": [[2, "_CPPv417esp_modem_set_pinPKc"]], "esp_modem_set_preferred_mode (c++ function)": [[2, "_CPPv428esp_modem_set_preferred_modei"]], "esp_modem_set_radio_state (c++ function)": [[2, "_CPPv425esp_modem_set_radio_statei"]], "esp_modem_sms_character_set (c++ function)": [[2, "_CPPv427esp_modem_sms_character_setv"]], "esp_modem_sms_txt_mode (c++ function)": [[2, "_CPPv422esp_modem_sms_txt_modeKb"]], "esp_modem_store_profile (c++ function)": [[2, "_CPPv423esp_modem_store_profilev"]], "esp_modem_sync (c++ function)": [[2, "_CPPv414esp_modem_syncv"]], "esp_modem_uart_term_config (c++ struct)": [[2, "_CPPv426esp_modem_uart_term_config"]], "esp_modem_uart_term_config::baud_rate (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config9baud_rateE"]], "esp_modem_uart_term_config::cts_io_num (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config10cts_io_numE"]], "esp_modem_uart_term_config::data_bits (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config9data_bitsE"]], "esp_modem_uart_term_config::event_queue_size (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config16event_queue_sizeE"]], "esp_modem_uart_term_config::flow_control (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config12flow_controlE"]], "esp_modem_uart_term_config::parity (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config6parityE"]], "esp_modem_uart_term_config::port_num (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config8port_numE"]], "esp_modem_uart_term_config::rts_io_num (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config10rts_io_numE"]], "esp_modem_uart_term_config::rx_buffer_size (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config14rx_buffer_sizeE"]], "esp_modem_uart_term_config::rx_io_num (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config9rx_io_numE"]], "esp_modem_uart_term_config::source_clk (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config10source_clkE"]], "esp_modem_uart_term_config::stop_bits (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config9stop_bitsE"]], "esp_modem_uart_term_config::tx_buffer_size (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config14tx_buffer_sizeE"]], "esp_modem_uart_term_config::tx_io_num (c++ member)": [[2, "_CPPv4N26esp_modem_uart_term_config9tx_io_numE"]], "esp_modem_vfs_term_config (c++ struct)": [[2, "_CPPv425esp_modem_vfs_term_config"]], "esp_modem_vfs_term_config::deleter (c++ member)": [[2, "_CPPv4N25esp_modem_vfs_term_config7deleterE"]], "esp_modem_vfs_term_config::fd (c++ member)": [[2, "_CPPv4N25esp_modem_vfs_term_config2fdE"]], "esp_modem_vfs_term_config::resource (c++ member)": [[2, "_CPPv4N25esp_modem_vfs_term_config8resourceE"]], "create_bg96_dce (c++ function)": [[3, "_CPPv415create_BG96_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_sim7000_dce (c++ function)": [[3, "_CPPv418create_SIM7000_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_sim7070_dce (c++ function)": [[3, "_CPPv418create_SIM7070_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_sim7600_dce (c++ function)": [[3, "_CPPv418create_SIM7600_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_sim800_dce (c++ function)": [[3, "_CPPv417create_SIM800_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_generic_dce (c++ function)": [[3, "_CPPv418create_generic_dcePK10dce_configNSt10shared_ptrI3DTEEEP11esp_netif_t"]], "create_uart_dte (c++ function)": [[3, "_CPPv415create_uart_dtePK10dte_config"]], "create_vfs_dte (c++ function)": [[3, "_CPPv414create_vfs_dtePK10dte_config"]], "dce_config (c++ type)": [[3, "_CPPv410dce_config"]], "dte_config (c++ type)": [[3, "_CPPv410dte_config"]], "esp_modem::dce_t (c++ class)": [[3, "_CPPv4I0EN9esp_modem5DCE_TE"], [7, "_CPPv4I0EN9esp_modem5DCE_TE"]], "esp_modem::dce_t::set_data (c++ function)": [[3, "_CPPv4N9esp_modem5DCE_T8set_dataEv"], [7, "_CPPv4N9esp_modem5DCE_T8set_dataEv"]], "esp_modem_declare_dce_command (c macro)": [[7, "c.ESP_MODEM_DECLARE_DCE_COMMAND"]], "cmux_state (c++ enum)": [[7, "_CPPv410cmux_state"]], "cmux_state::footer (c++ enumerator)": [[7, "_CPPv4N10cmux_state6FOOTERE"]], "cmux_state::header (c++ enumerator)": [[7, "_CPPv4N10cmux_state6HEADERE"]], "cmux_state::init (c++ enumerator)": [[7, "_CPPv4N10cmux_state4INITE"]], "cmux_state::payload (c++ enumerator)": [[7, "_CPPv4N10cmux_state7PAYLOADE"]], "cmux_state::recover (c++ enumerator)": [[7, "_CPPv4N10cmux_state7RECOVERE"]], "command_result (c++ enum)": [[7, "_CPPv414command_result"]], "command_result::fail (c++ enumerator)": [[7, "_CPPv4N14command_result4FAILE"]], "command_result::ok (c++ enumerator)": [[7, "_CPPv4N14command_result2OKE"]], "command_result::timeout (c++ enumerator)": [[7, "_CPPv4N14command_result7TIMEOUTE"]], "esp_modem::bg96 (c++ class)": [[7, "_CPPv4N9esp_modem4BG96E"]], "esp_modem::cmux (c++ class)": [[7, "_CPPv4N9esp_modem4CMuxE"]], "esp_modem::cmux::deinit (c++ function)": [[7, "_CPPv4N9esp_modem4CMux6deinitEv"]], "esp_modem::cmux::detach (c++ function)": [[7, "_CPPv4N9esp_modem4CMux6detachEv"]], "esp_modem::cmux::init (c++ function)": [[7, "_CPPv4N9esp_modem4CMux4initEv"]], "esp_modem::cmux::set_read_cb (c++ function)": [[7, "_CPPv4N9esp_modem4CMux11set_read_cbEiNSt8functionIFbP7uint8_t6size_tEEE"]], "esp_modem::cmux::write (c++ function)": [[7, "_CPPv4N9esp_modem4CMux5writeEiP7uint8_t6size_t"]], "esp_modem::cmuxinstance (c++ class)": [[7, "_CPPv4N9esp_modem12CMuxInstanceE"]], "esp_modem::cmuxinstance::read (c++ function)": [[7, "_CPPv4N9esp_modem12CMuxInstance4readEP7uint8_t6size_t"]], "esp_modem::cmuxinstance::write (c++ function)": [[7, "_CPPv4N9esp_modem12CMuxInstance5writeEP7uint8_t6size_t"]], "esp_modem::commandableif (c++ class)": [[7, "_CPPv4N9esp_modem13CommandableIfE"]], "esp_modem::commandableif::command (c++ function)": [[7, "_CPPv4N9esp_modem13CommandableIf7commandERKNSt6stringE11got_line_cb8uint32_tKc"]], "esp_modem::dce (c++ class)": [[7, "_CPPv4N9esp_modem3DCEE"]], "esp_modem::dce::at (c++ function)": [[7, "_CPPv4N9esp_modem3DCE2atERKNSt6stringERNSt6stringEi"]], "esp_modem::dce::get_battery_status (c++ function)": [[7, "_CPPv4N9esp_modem3DCE18get_battery_statusERiRiRi"]], "esp_modem::dce::get_imei (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8get_imeiERNSt6stringE"]], "esp_modem::dce::get_imsi (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8get_imsiERNSt6stringE"]], "esp_modem::dce::get_module_name (c++ function)": [[7, "_CPPv4N9esp_modem3DCE15get_module_nameERNSt6stringE"]], "esp_modem::dce::get_network_attachment_state (c++ function)": [[7, "_CPPv4N9esp_modem3DCE28get_network_attachment_stateERi"]], "esp_modem::dce::get_network_system_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE23get_network_system_modeERi"]], "esp_modem::dce::get_operator_name (c++ function)": [[7, "_CPPv4N9esp_modem3DCE17get_operator_nameERNSt6stringERi"]], "esp_modem::dce::get_radio_state (c++ function)": [[7, "_CPPv4N9esp_modem3DCE15get_radio_stateERi"]], "esp_modem::dce::get_signal_quality (c++ function)": [[7, "_CPPv4N9esp_modem3DCE18get_signal_qualityERiRi"]], "esp_modem::dce::hang_up (c++ function)": [[7, "_CPPv4N9esp_modem3DCE7hang_upEv"]], "esp_modem::dce::power_down (c++ function)": [[7, "_CPPv4N9esp_modem3DCE10power_downEv"]], "esp_modem::dce::read_pin (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8read_pinERb"]], "esp_modem::dce::reset (c++ function)": [[7, "_CPPv4N9esp_modem3DCE5resetEv"]], "esp_modem::dce::resume_data_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE16resume_data_modeEv"]], "esp_modem::dce::send_sms (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8send_smsERKNSt6stringERKNSt6stringE"]], "esp_modem::dce::set_baud (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8set_baudEi"]], "esp_modem::dce::set_cmux (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8set_cmuxEv"]], "esp_modem::dce::set_command_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE16set_command_modeEv"]], "esp_modem::dce::set_data_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE13set_data_modeEv"]], "esp_modem::dce::set_echo (c++ function)": [[7, "_CPPv4N9esp_modem3DCE8set_echoEKb"]], "esp_modem::dce::set_flow_control (c++ function)": [[7, "_CPPv4N9esp_modem3DCE16set_flow_controlEii"]], "esp_modem::dce::set_gnss_power_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE19set_gnss_power_modeEi"]], "esp_modem::dce::set_network_attachment_state (c++ function)": [[7, "_CPPv4N9esp_modem3DCE28set_network_attachment_stateEi"]], "esp_modem::dce::set_network_bands (c++ function)": [[7, "_CPPv4N9esp_modem3DCE17set_network_bandsERKNSt6stringEPKii"]], "esp_modem::dce::set_network_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE16set_network_modeEi"]], "esp_modem::dce::set_operator (c++ function)": [[7, "_CPPv4N9esp_modem3DCE12set_operatorEiiRKNSt6stringE"]], "esp_modem::dce::set_pdp_context (c++ function)": [[7, "_CPPv4N9esp_modem3DCE15set_pdp_contextER10PdpContext"]], "esp_modem::dce::set_pin (c++ function)": [[7, "_CPPv4N9esp_modem3DCE7set_pinERKNSt6stringE"]], "esp_modem::dce::set_preferred_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE18set_preferred_modeEi"]], "esp_modem::dce::set_radio_state (c++ function)": [[7, "_CPPv4N9esp_modem3DCE15set_radio_stateEi"]], "esp_modem::dce::sms_character_set (c++ function)": [[7, "_CPPv4N9esp_modem3DCE17sms_character_setEv"]], "esp_modem::dce::sms_txt_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DCE12sms_txt_modeEKb"]], "esp_modem::dce::store_profile (c++ function)": [[7, "_CPPv4N9esp_modem3DCE13store_profileEv"]], "esp_modem::dce::sync (c++ function)": [[7, "_CPPv4N9esp_modem3DCE4syncEv"]], "esp_modem::dce_mode (c++ class)": [[7, "_CPPv4N9esp_modem8DCE_ModeE"]], "esp_modem::dte (c++ class)": [[7, "_CPPv4N9esp_modem3DTEE"]], "esp_modem::dte::dte (c++ function)": [[7, "_CPPv4N9esp_modem3DTE3DTEEPK20esp_modem_dte_configNSt10unique_ptrI8TerminalEE"]], "esp_modem::dte::command (c++ function)": [[7, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_t"], [7, "_CPPv4N9esp_modem3DTE7commandERKNSt6stringE11got_line_cb8uint32_tc"]], "esp_modem::dte::read (c++ function)": [[7, "_CPPv4N9esp_modem3DTE4readEPP7uint8_t6size_t"]], "esp_modem::dte::set_error_cb (c++ function)": [[7, "_CPPv4N9esp_modem3DTE12set_error_cbENSt8functionIFv14terminal_errorEEE"]], "esp_modem::dte::set_mode (c++ function)": [[7, "_CPPv4N9esp_modem3DTE8set_modeE10modem_mode"]], "esp_modem::dte::set_read_cb (c++ function)": [[7, "_CPPv4N9esp_modem3DTE11set_read_cbENSt8functionIFbP7uint8_t6size_tEEE"]], "esp_modem::dte::write (c++ function)": [[7, "_CPPv4N9esp_modem3DTE5writeEP7uint8_t6size_t"]], "esp_modem::genericmodule (c++ class)": [[7, "_CPPv4N9esp_modem13GenericModuleE"]], "esp_modem::genericmodule::genericmodule (c++ function)": [[7, "_CPPv4N9esp_modem13GenericModule13GenericModuleENSt10shared_ptrI3DTEEENSt10unique_ptrI10PdpContextEE"]], "esp_modem::genericmodule::configure_pdp_context (c++ function)": [[7, "_CPPv4N9esp_modem13GenericModule21configure_pdp_contextENSt10unique_ptrI10PdpContextEE"]], "esp_modem::genericmodule::get_operator_name (c++ function)": [[7, "_CPPv4N9esp_modem13GenericModule17get_operator_nameERNSt6stringE"]], "esp_modem::genericmodule::set_mode (c++ function)": [[7, "_CPPv4N9esp_modem13GenericModule8set_modeE10modem_mode"]], "esp_modem::genericmodule::setup_data_mode (c++ function)": [[7, "_CPPv4N9esp_modem13GenericModule15setup_data_modeEv"]], "esp_modem::moduleif (c++ class)": [[7, "_CPPv4N9esp_modem8ModuleIfE"]], "esp_modem::moduleif::set_mode (c++ function)": [[7, "_CPPv4N9esp_modem8ModuleIf8set_modeE10modem_mode"]], "esp_modem::moduleif::setup_data_mode (c++ function)": [[7, "_CPPv4N9esp_modem8ModuleIf15setup_data_modeEv"]], "esp_modem::netif (c++ class)": [[7, "_CPPv4N9esp_modem5NetifE"]], "esp_modem::netif::start (c++ function)": [[7, "_CPPv4N9esp_modem5Netif5startEv"]], "esp_modem::netif::stop (c++ function)": [[7, "_CPPv4N9esp_modem5Netif4stopEv"]], "esp_modem::netif::wait_until_ppp_exits (c++ function)": [[7, "_CPPv4N9esp_modem5Netif20wait_until_ppp_exitsEv"]], "esp_modem::pdpcontext (c++ struct)": [[7, "_CPPv4N9esp_modem10PdpContextE"]], "esp_modem::sim7000 (c++ class)": [[7, "_CPPv4N9esp_modem7SIM7000E"]], "esp_modem::sim7070 (c++ class)": [[7, "_CPPv4N9esp_modem7SIM7070E"]], "esp_modem::sim7600 (c++ class)": [[7, "_CPPv4N9esp_modem7SIM7600E"]], "esp_modem::sim800 (c++ class)": [[7, "_CPPv4N9esp_modem6SIM800E"]], "esp_modem::terminal (c++ class)": [[7, "_CPPv4N9esp_modem8TerminalE"]], "esp_modem::terminal::read (c++ function)": [[7, "_CPPv4N9esp_modem8Terminal4readEP7uint8_t6size_t"]], "esp_modem::terminal::write (c++ function)": [[7, "_CPPv4N9esp_modem8Terminal5writeEP7uint8_t6size_t"]], "get_battery_status_sim7xxx (c++ function)": [[7, "_CPPv426get_battery_status_sim7xxxP13CommandableIfRiRiRi"]], "got_line_cb (c++ type)": [[7, "_CPPv411got_line_cb"]], "modem_mode (c++ enum)": [[7, "_CPPv410modem_mode"]], "modem_mode::cmux_mode (c++ enumerator)": [[7, "_CPPv4N10modem_mode9CMUX_MODEE"]], "modem_mode::command_mode (c++ enumerator)": [[7, "_CPPv4N10modem_mode12COMMAND_MODEE"]], "modem_mode::data_mode (c++ enumerator)": [[7, "_CPPv4N10modem_mode9DATA_MODEE"]], "modem_mode::undef (c++ enumerator)": [[7, "_CPPv4N10modem_mode5UNDEFE"]], "power_down_sim70xx (c++ function)": [[7, "_CPPv418power_down_sim70xxP13CommandableIf"]], "power_down_sim76xx (c++ function)": [[7, "_CPPv418power_down_sim76xxP13CommandableIf"]], "power_down_sim8xx (c++ function)": [[7, "_CPPv417power_down_sim8xxP13CommandableIf"]], "set_data_mode_sim8xx (c++ function)": [[7, "_CPPv420set_data_mode_sim8xxP13CommandableIf"]], "set_gnss_power_mode_sim76xx (c++ function)": [[7, "_CPPv427set_gnss_power_mode_sim76xxP13CommandableIfi"]], "set_network_bands_sim76xx (c++ function)": [[7, "_CPPv425set_network_bands_sim76xxP13CommandableIfRKNSt6stringEPKii"]], "terminal_error (c++ enum)": [[7, "_CPPv414terminal_error"]], "terminal_error::buffer_overflow (c++ enumerator)": [[7, "_CPPv4N14terminal_error15BUFFER_OVERFLOWE"]], "terminal_error::checksum_error (c++ enumerator)": [[7, "_CPPv4N14terminal_error14CHECKSUM_ERRORE"]], "terminal_error::device_gone (c++ enumerator)": [[7, "_CPPv4N14terminal_error11DEVICE_GONEE"]], "terminal_error::unexpected_control_flow (c++ enumerator)": [[7, "_CPPv4N14terminal_error23UNEXPECTED_CONTROL_FLOWE"]]}}) \ No newline at end of file diff --git a/esp_websocket_client/.buildinfo b/esp_websocket_client/.buildinfo index fa3d7aa9c..d5d21ba73 100644 --- a/esp_websocket_client/.buildinfo +++ b/esp_websocket_client/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 498cce684b6373a44bc74358e7d65b40 +config: 9789b27bdf7841a7eefb1ea43bf1774a tags: 549b3d6d0415232fb7e35403b330ff49 diff --git a/esp_websocket_client/_static/doctools.js b/esp_websocket_client/_static/doctools.js index c3db08d1c..527b876ca 100644 --- a/esp_websocket_client/_static/doctools.js +++ b/esp_websocket_client/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/esp_websocket_client/_static/pygments.css b/esp_websocket_client/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/esp_websocket_client/_static/pygments.css +++ b/esp_websocket_client/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/esp_websocket_client/_static/searchtools.js b/esp_websocket_client/_static/searchtools.js index f2fb7d5cf..e89e34d4e 100644 --- a/esp_websocket_client/_static/searchtools.js +++ b/esp_websocket_client/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/esp_websocket_client/_static/sphinx_highlight.js b/esp_websocket_client/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/esp_websocket_client/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/esp_websocket_client/genindex.html b/esp_websocket_client/genindex.html index 64ccff743..a4fb4a3c4 100644 --- a/esp_websocket_client/genindex.html +++ b/esp_websocket_client/genindex.html @@ -17,6 +17,7 @@ + @@ -90,7 +91,7 @@
  • »
  • Index
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/esp_websocket_client/index.html b/esp_websocket_client/index.html index 48f376c14..cecef4483 100644 --- a/esp_websocket_client/index.html +++ b/esp_websocket_client/index.html @@ -18,6 +18,7 @@ + @@ -118,7 +119,7 @@
  • »
  • ESP WebSocket Client
  • - Edit on GitHub + Edit on GitHub

  • @@ -156,24 +157,24 @@

    Minimal configurations:

    -
    const esp_websocket_client_config_t ws_cfg = {
    -    .uri = "ws://echo.websocket.org",
    -};
    +
    const esp_websocket_client_config_t ws_cfg = {
    +    .uri = "ws://echo.websocket.org",
    +};
     

    The WebSocket client supports the use of both path and query in the URI. Sample:

    -
    const esp_websocket_client_config_t ws_cfg = {
    -    .uri = "ws://echo.websocket.org/connectionhandler?id=104",
    -};
    +
    const esp_websocket_client_config_t ws_cfg = {
    +    .uri = "ws://echo.websocket.org/connectionhandler?id=104",
    +};
     

    If there are any options related to the URI in esp_websocket_client_config_t, the option defined by the URI will be overridden. Sample:

    -
    const esp_websocket_client_config_t ws_cfg = {
    -    .uri = "ws://echo.websocket.org:123",
    -    .port = 4567,
    -};
    +
    const esp_websocket_client_config_t ws_cfg = {
    +    .uri = "ws://echo.websocket.org:123",
    +    .port = 4567,
    +};
     //WebSocket client will connect to websocket.org using port 4567
     
    @@ -181,10 +182,10 @@ overridden. Sample:

    TLS

    Configuration:

    -
    const esp_websocket_client_config_t ws_cfg = {
    -    .uri = "wss://echo.websocket.org",
    -    .cert_pem = (const char *)websocket_org_pem_start,
    -};
    +
    const esp_websocket_client_config_t ws_cfg = {
    +    .uri = "wss://echo.websocket.org",
    +    .cert_pem = (const char *)websocket_org_pem_start,
    +};
     
    @@ -201,10 +202,10 @@ In case a host operating system has openssl and sed pa

    Subprotocol

    The subprotocol field in the config struct can be used to request a subprotocol

    -
    const esp_websocket_client_config_t ws_cfg = {
    -    .uri = "ws://websocket.org",
    -    .subprotocol = "soap",
    -};
    +
    const esp_websocket_client_config_t ws_cfg = {
    +    .uri = "ws://websocket.org",
    +    .subprotocol = "soap",
    +};
     
    @@ -223,7 +224,7 @@ In case a host operating system has openssl and sed pa
  • WEBSOCKET_EVENT_ERROR: Not used in the current implementation of the client.

  • If the client handle is needed in the event handler it can be accessed through the pointer passed to the event handler:

    -
    esp_websocket_client_handle_t client = (esp_websocket_client_handle_t)handler_args;
    +
    esp_websocket_client_handle_t client = (esp_websocket_client_handle_t)handler_args;
     
    @@ -235,11 +236,11 @@ In case a host operating system has openssl and sed pa

    Application Example

    -

    A simple WebSocket example that uses esp_websocket_client to establish a websocket connection and send/receive data with the websocket.org server can be found here: example .

    +

    A simple WebSocket example that uses esp_websocket_client to establish a websocket connection and send/receive data with the websocket.org server can be found here: example .

    Sending Text Data

    The WebSocket client supports sending data as a text data frame, which informs the application layer that the payload data is text data encoded as UTF-8. Example:

    -
    esp_websocket_client_send_text(client, data, len, portMAX_DELAY);
    +
    esp_websocket_client_send_text(client, data, len, portMAX_DELAY);
     
    @@ -249,7 +250,7 @@ In case a host operating system has openssl and sed pa

    Header File

    diff --git a/esp_websocket_client/search.html b/esp_websocket_client/search.html index db6d6e4ec..a355e39d0 100644 --- a/esp_websocket_client/search.html +++ b/esp_websocket_client/search.html @@ -18,6 +18,7 @@ + diff --git a/esp_websocket_client/searchindex.js b/esp_websocket_client/searchindex.js index f407010fa..8041a2063 100644 --- a/esp_websocket_client/searchindex.js +++ b/esp_websocket_client/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["ESP WebSocket Client"], "terms": {"The": 0, "i": 0, "an": 0, "implement": 0, "protocol": 0, "esp32": 0, "support": 0, "over": 0, "tcp": 0, "mbedtl": 0, "easi": 0, "setup": 0, "multipl": 0, "instanc": 0, "one": 0, "w": 0, "wss": 0, "scheme": 0, "sampl": 0, "echo": 0, "org": 0, "default": 0, "port": 0, "80": 0, "ssl": 0, "443": 0, "minim": 0, "const": 0, "esp_websocket_client_config_t": 0, "ws_cfg": 0, "us": 0, "both": 0, "path": 0, "queri": 0, "connectionhandl": 0, "id": 0, "104": 0, "If": 0, "ar": 0, "ani": 0, "option": 0, "relat": 0, "defin": 0, "overridden": 0, "123": 0, "4567": 0, "connect": 0, "cert_pem": 0, "char": 0, "websocket_org_pem_start": 0, "you": 0, "want": 0, "verifi": 0, "server": 0, "need": 0, "provid": 0, "certif": 0, "pem": 0, "format": 0, "websocket_client_config_t": 0, "certfic": 0, "requir": 0, "verif": 0, "thi": 0, "could": 0, "extract": 0, "from": 0, "openssl": 0, "s_client": 0, "command": 0, "In": 0, "case": 0, "host": 0, "oper": 0, "system": 0, "ha": 0, "sed": 0, "packag": 0, "instal": 0, "execut": 0, "follow": 0, "download": 0, "save": 0, "root": 0, "intermedi": 0, "note": 0, "window": 0, "user": 0, "linux": 0, "like": 0, "environ": 0, "nativ": 0, "mai": 0, "showcert": 0, "n": 0, "1": 0, "d": 0, "begin": 0, "end": 0, "p": 0, "x509": 0, "outform": 0, "websocket_org": 0, "second": 0, "chain": 0, "field": 0, "config": 0, "struct": 0, "can": 0, "request": 0, "soap": 0, "indiffer": 0, "respons": 0, "accept": 0, "matter": 0, "what": 0, "repli": 0, "For": 0, "more": 0, "pleas": 0, "below": 0, "websocket_event_connect": 0, "successfulli": 0, "establish": 0, "now": 0, "readi": 0, "receiv": 0, "contain": 0, "websocket_event_disconnect": 0, "abort": 0, "due": 0, "transport": 0, "layer": 0, "fail": 0, "read": 0, "e": 0, "g": 0, "becaus": 0, "unavail": 0, "websocket_event_data": 0, "pars": 0, "frame": 0, "pointer": 0, "payload": 0, "length": 0, "well": 0, "opcod": 0, "A": 0, "messag": 0, "fragment": 0, "exce": 0, "buffer": 0, "size": 0, "also": 0, "post": 0, "non": 0, "pong": 0, "close": 0, "websocket_event_error": 0, "Not": 0, "current": 0, "handl": 0, "handler": 0, "access": 0, "through": 0, "pass": 0, "esp_websocket_client_handle_t": 0, "handler_arg": 0, "abl": 0, "dure": 0, "handshak": 0, "doe": 0, "do": 0, "check": 0, "simpl": 0, "esp_websocket_cli": 0, "found": 0, "here": 0, "which": 0, "inform": 0, "encod": 0, "utf": 0, "8": 0, "esp_websocket_client_send_text": 0, "len": 0, "portmax_delai": 0, "includ": 0, "h": 0, "esp_websocket_client_init": 0, "start": 0, "session": 0, "must": 0, "first": 0, "call": 0, "return": 0, "input": 0, "other": 0, "interfac": 0, "have": 0, "correspond": 0, "esp_websocket_client_destroi": 0, "when": 0, "complet": 0, "paramet": 0, "null": 0, "error": 0, "esp_err_t": 0, "esp_websocket_client_set_uri": 0, "set": 0, "url": 0, "perform": 0, "behavior": 0, "replac": 0, "old": 0, "ones": 0, "stop": 0, "befor": 0, "been": 0, "esp_websocket_client_start": 0, "open": 0, "esp_websocket_client_stop": 0, "without": 0, "directli": 0, "It": 0, "good": 0, "practic": 0, "clean": 0, "wai": 0, "esp_websocket_client_clos": 0, "cannot": 0, "destroi": 0, "free": 0, "all": 0, "resourc": 0, "last": 0, "opposit": 0, "same": 0, "might": 0, "int": 0, "esp_websocket_client_send_bin": 0, "ticktype_t": 0, "timeout": 0, "write": 0, "binari": 0, "02": 0, "rto": 0, "tick": 0, "number": 0, "wa": 0, "sent": 0, "textual": 0, "01": 0, "sequenc": 0, "initi": 0, "wait": 0, "until": 0, "esp_websocket_client_close_with_cod": 0, "code": 0, "custom": 0, "statu": 0, "rfc6455": 0, "section": 0, "7": 0, "4": 0, "addit": 0, "bool": 0, "esp_websocket_client_is_connect": 0, "state": 0, "true": 0, "fals": 0, "size_t": 0, "esp_websocket_client_get_ping_interval_sec": 0, "get": 0, "ping": 0, "interv": 0, "sec": 0, "esp_websocket_client_set_ping_interval_sec": 0, "ping_interval_sec": 0, "new": 0, "esp_websocket_register_ev": 0, "esp_websocket_event_id_t": 0, "esp_event_handler_t": 0, "event_handl": 0, "void": 0, "event_handler_arg": 0, "regist": 0, "callback": 0, "context": 0, "esp_websocket_event_data_t": 0, "public": 0, "member": 0, "data_ptr": 0, "data_len": 0, "fin": 0, "flag": 0, "uint8_t": 0, "op_cod": 0, "user_context": 0, "user_data": 0, "payload_len": 0, "total": 0, "exceed": 0, "payload_offset": 0, "actual": 0, "offset": 0, "associ": 0, "overrid": 0, "domain": 0, "ip": 0, "string": 0, "depend": 0, "esp_websocket_transport_t": 0, "usernam": 0, "http": 0, "authent": 0, "password": 0, "disable_auto_reconnect": 0, "disabl": 0, "automat": 0, "reconnect": 0, "disconnect": 0, "task_prio": 0, "task": 0, "prioriti": 0, "task_stack": 0, "stack": 0, "buffer_s": 0, "der": 0, "termin": 0, "charact": 0, "cert_len": 0, "point": 0, "0": 0, "client_cert": 0, "mutual": 0, "client_kei": 0, "client_cert_len": 0, "privat": 0, "kei": 0, "client_key_len": 0, "client_key_pem": 0, "see": 0, "user_ag": 0, "agent": 0, "pingpong_timeout_sec": 0, "period": 0, "disable_pingpong_discon": 0, "auto": 0, "within": 0, "use_global_ca_stor": 0, "global": 0, "ca_stor": 0, "crt_bundle_attach": 0, "conf": 0, "esp_crt_bundle_attach": 0, "enabl": 0, "bundl": 0, "mbedtls_certificate_bundl": 0, "menuconfig": 0, "esp_crt_bundl": 0, "ca": 0, "skip_cert_common_name_check": 0, "skip": 0, "valid": 0, "cn": 0, "keep_alive_en": 0, "keep": 0, "aliv": 0, "keep_alive_idl": 0, "idl": 0, "time": 0, "5": 0, "keep_alive_interv": 0, "keep_alive_count": 0, "packet": 0, "retri": 0, "count": 0, "3": 0, "reconnect_timeout_m": 0, "after": 0, "valu": 0, "milisecond": 0, "10": 0, "network_timeout_m": 0, "network": 0, "millisecond": 0, "ifreq": 0, "if_nam": 0, "name": 0, "go": 0, "typedef": 0, "enum": 0, "websocket_event_ani": 0, "occur": 0, "onc": 0, "exchang": 0, "possibli": 0, "portion": 0, "websocket_event_clos": 0, "cleanli": 0, "websocket_event_max": 0, "websocket_transport_unknown": 0, "unknown": 0, "websocket_transport_over_tcp": 0, "websocket_transport_over_ssl": 0}, "objects": {"": [[0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE", "WEBSOCKET_EVENT_ANY"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE", "WEBSOCKET_EVENT_CLOSED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE", "WEBSOCKET_EVENT_CONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE", "WEBSOCKET_EVENT_DATA"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE", "WEBSOCKET_EVENT_DISCONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE", "WEBSOCKET_EVENT_ERROR"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE", "WEBSOCKET_EVENT_MAX"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE", "WEBSOCKET_TRANSPORT_OVER_SSL"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE", "WEBSOCKET_TRANSPORT_OVER_TCP"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE", "WEBSOCKET_TRANSPORT_UNKNOWN"], [0, 1, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close"], [0, 2, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close::client"], [0, 2, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close::timeout"], [0, 1, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::client"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::code"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::data"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::len"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::timeout"], [0, 3, 1, "_CPPv429esp_websocket_client_config_t", "esp_websocket_client_config_t"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11buffer_sizeE", "esp_websocket_client_config_t::buffer_size"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8cert_lenE", "esp_websocket_client_config_t::cert_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8cert_pemE", "esp_websocket_client_config_t::cert_pem"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11client_certE", "esp_websocket_client_config_t::client_cert"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t15client_cert_lenE", "esp_websocket_client_config_t::client_cert_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10client_keyE", "esp_websocket_client_config_t::client_key"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t14client_key_lenE", "esp_websocket_client_config_t::client_key_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17crt_bundle_attachE", "esp_websocket_client_config_t::crt_bundle_attach"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE", "esp_websocket_client_config_t::disable_auto_reconnect"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE", "esp_websocket_client_config_t::disable_pingpong_discon"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t7headersE", "esp_websocket_client_config_t::headers"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4hostE", "esp_websocket_client_config_t::host"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t7if_nameE", "esp_websocket_client_config_t::if_name"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t16keep_alive_countE", "esp_websocket_client_config_t::keep_alive_count"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE", "esp_websocket_client_config_t::keep_alive_enable"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE", "esp_websocket_client_config_t::keep_alive_idle"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE", "esp_websocket_client_config_t::keep_alive_interval"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t18network_timeout_msE", "esp_websocket_client_config_t::network_timeout_ms"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8passwordE", "esp_websocket_client_config_t::password"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4pathE", "esp_websocket_client_config_t::path"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17ping_interval_secE", "esp_websocket_client_config_t::ping_interval_sec"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE", "esp_websocket_client_config_t::pingpong_timeout_sec"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4portE", "esp_websocket_client_config_t::port"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE", "esp_websocket_client_config_t::reconnect_timeout_ms"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE", "esp_websocket_client_config_t::skip_cert_common_name_check"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11subprotocolE", "esp_websocket_client_config_t::subprotocol"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t9task_prioE", "esp_websocket_client_config_t::task_prio"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10task_stackE", "esp_websocket_client_config_t::task_stack"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t9transportE", "esp_websocket_client_config_t::transport"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t3uriE", "esp_websocket_client_config_t::uri"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE", "esp_websocket_client_config_t::use_global_ca_store"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10user_agentE", "esp_websocket_client_config_t::user_agent"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t12user_contextE", "esp_websocket_client_config_t::user_context"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8usernameE", "esp_websocket_client_config_t::username"], [0, 1, 1, "_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t", "esp_websocket_client_destroy"], [0, 2, 1, "_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t", "esp_websocket_client_destroy::client"], [0, 1, 1, "_CPPv442esp_websocket_client_get_ping_interval_sec29esp_websocket_client_handle_t", "esp_websocket_client_get_ping_interval_sec"], [0, 2, 1, "_CPPv442esp_websocket_client_get_ping_interval_sec29esp_websocket_client_handle_t", "esp_websocket_client_get_ping_interval_sec::client"], [0, 5, 1, "_CPPv429esp_websocket_client_handle_t", "esp_websocket_client_handle_t"], [0, 1, 1, "_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t", "esp_websocket_client_init"], [0, 2, 1, "_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t", "esp_websocket_client_init::config"], [0, 1, 1, "_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t", "esp_websocket_client_is_connected"], [0, 2, 1, "_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t", "esp_websocket_client_is_connected::client"], [0, 1, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::client"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::data"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::len"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::timeout"], [0, 1, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::client"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::data"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::len"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::timeout"], [0, 1, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec"], [0, 2, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec::client"], [0, 2, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec::ping_interval_sec"], [0, 1, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri"], [0, 2, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri::client"], [0, 2, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri::uri"], [0, 1, 1, "_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t", "esp_websocket_client_start"], [0, 2, 1, "_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t", "esp_websocket_client_start::client"], [0, 1, 1, "_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t", "esp_websocket_client_stop"], [0, 2, 1, "_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t", "esp_websocket_client_stop::client"], [0, 3, 1, "_CPPv426esp_websocket_event_data_t", "esp_websocket_event_data_t"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t6clientE", "esp_websocket_event_data_t::client"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t8data_lenE", "esp_websocket_event_data_t::data_len"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t8data_ptrE", "esp_websocket_event_data_t::data_ptr"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t3finE", "esp_websocket_event_data_t::fin"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t7op_codeE", "esp_websocket_event_data_t::op_code"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t11payload_lenE", "esp_websocket_event_data_t::payload_len"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t14payload_offsetE", "esp_websocket_event_data_t::payload_offset"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t12user_contextE", "esp_websocket_event_data_t::user_context"], [0, 6, 1, "_CPPv424esp_websocket_event_id_t", "esp_websocket_event_id_t"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_ANY"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_CLOSED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_CONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_DATA"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_DISCONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_ERROR"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_MAX"], [0, 1, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::client"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event_handler"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event_handler_arg"], [0, 6, 1, "_CPPv425esp_websocket_transport_t", "esp_websocket_transport_t"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_SSL"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_TCP"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_UNKNOWN"]]}, "objtypes": {"0": "cpp:enumerator", "1": "cpp:function", "2": "cpp:functionParam", "3": "cpp:class", "4": "cpp:member", "5": "cpp:type", "6": "cpp:enum"}, "objnames": {"0": ["cpp", "enumerator", "C++ enumerator"], "1": ["cpp", "function", "C++ function"], "2": ["cpp", "functionParam", "C++ function parameter"], "3": ["cpp", "class", "C++ class"], "4": ["cpp", "member", "C++ member"], "5": ["cpp", "type", "C++ type"], "6": ["cpp", "enum", "C++ enum"]}, "titleterms": {"esp": 0, "websocket": 0, "client": 0, "overview": 0, "featur": 0, "configur": 0, "uri": 0, "tl": 0, "subprotocol": 0, "event": 0, "limit": 0, "known": 0, "issu": 0, "applic": 0, "exampl": 0, "send": 0, "text": 0, "data": 0, "api": 0, "refer": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["ESP WebSocket Client"], "terms": {"The": 0, "i": 0, "an": 0, "implement": 0, "protocol": 0, "esp32": 0, "support": 0, "over": 0, "tcp": 0, "mbedtl": 0, "easi": 0, "setup": 0, "multipl": 0, "instanc": 0, "one": 0, "w": 0, "wss": 0, "scheme": 0, "sampl": 0, "echo": 0, "org": 0, "default": 0, "port": 0, "80": 0, "ssl": 0, "443": 0, "minim": 0, "const": 0, "esp_websocket_client_config_t": 0, "ws_cfg": 0, "us": 0, "both": 0, "path": 0, "queri": 0, "connectionhandl": 0, "id": 0, "104": 0, "If": 0, "ar": 0, "ani": 0, "option": 0, "relat": 0, "defin": 0, "overridden": 0, "123": 0, "4567": 0, "connect": 0, "cert_pem": 0, "char": 0, "websocket_org_pem_start": 0, "you": 0, "want": 0, "verifi": 0, "server": 0, "need": 0, "provid": 0, "certif": 0, "pem": 0, "format": 0, "websocket_client_config_t": 0, "certfic": 0, "requir": 0, "verif": 0, "thi": 0, "could": 0, "extract": 0, "from": 0, "openssl": 0, "s_client": 0, "command": 0, "In": 0, "case": 0, "host": 0, "oper": 0, "system": 0, "ha": 0, "sed": 0, "packag": 0, "instal": 0, "execut": 0, "follow": 0, "download": 0, "save": 0, "root": 0, "intermedi": 0, "note": 0, "window": 0, "user": 0, "linux": 0, "like": 0, "environ": 0, "nativ": 0, "mai": 0, "showcert": 0, "n": 0, "1": 0, "d": 0, "begin": 0, "end": 0, "p": 0, "x509": 0, "outform": 0, "websocket_org": 0, "second": 0, "chain": 0, "field": 0, "config": 0, "struct": 0, "can": 0, "request": 0, "soap": 0, "indiffer": 0, "respons": 0, "accept": 0, "matter": 0, "what": 0, "repli": 0, "For": 0, "more": 0, "pleas": 0, "below": 0, "websocket_event_connect": 0, "successfulli": 0, "establish": 0, "now": 0, "readi": 0, "receiv": 0, "contain": 0, "websocket_event_disconnect": 0, "abort": 0, "due": 0, "transport": 0, "layer": 0, "fail": 0, "read": 0, "e": 0, "g": 0, "becaus": 0, "unavail": 0, "websocket_event_data": 0, "pars": 0, "frame": 0, "pointer": 0, "payload": 0, "length": 0, "well": 0, "opcod": 0, "A": 0, "messag": 0, "fragment": 0, "exce": 0, "buffer": 0, "size": 0, "also": 0, "post": 0, "non": 0, "pong": 0, "close": 0, "websocket_event_error": 0, "Not": 0, "current": 0, "handl": 0, "handler": 0, "access": 0, "through": 0, "pass": 0, "esp_websocket_client_handle_t": 0, "handler_arg": 0, "abl": 0, "dure": 0, "handshak": 0, "doe": 0, "do": 0, "check": 0, "simpl": 0, "esp_websocket_cli": 0, "found": 0, "here": 0, "which": 0, "inform": 0, "encod": 0, "utf": 0, "8": 0, "esp_websocket_client_send_text": 0, "len": 0, "portmax_delai": 0, "includ": 0, "h": 0, "esp_websocket_client_init": 0, "start": 0, "session": 0, "must": 0, "first": 0, "call": 0, "return": 0, "input": 0, "other": 0, "interfac": 0, "have": 0, "correspond": 0, "esp_websocket_client_destroi": 0, "when": 0, "complet": 0, "paramet": 0, "null": 0, "error": 0, "esp_err_t": 0, "esp_websocket_client_set_uri": 0, "set": 0, "url": 0, "perform": 0, "behavior": 0, "replac": 0, "old": 0, "ones": 0, "stop": 0, "befor": 0, "been": 0, "esp_websocket_client_start": 0, "open": 0, "esp_websocket_client_stop": 0, "without": 0, "directli": 0, "It": 0, "good": 0, "practic": 0, "clean": 0, "wai": 0, "esp_websocket_client_clos": 0, "cannot": 0, "destroi": 0, "free": 0, "all": 0, "resourc": 0, "last": 0, "opposit": 0, "same": 0, "might": 0, "int": 0, "esp_websocket_client_send_bin": 0, "ticktype_t": 0, "timeout": 0, "write": 0, "binari": 0, "02": 0, "rto": 0, "tick": 0, "number": 0, "wa": 0, "sent": 0, "textual": 0, "01": 0, "sequenc": 0, "initi": 0, "wait": 0, "until": 0, "esp_websocket_client_close_with_cod": 0, "code": 0, "custom": 0, "statu": 0, "rfc6455": 0, "section": 0, "7": 0, "4": 0, "addit": 0, "bool": 0, "esp_websocket_client_is_connect": 0, "state": 0, "true": 0, "fals": 0, "size_t": 0, "esp_websocket_client_get_ping_interval_sec": 0, "get": 0, "ping": 0, "interv": 0, "sec": 0, "esp_websocket_client_set_ping_interval_sec": 0, "ping_interval_sec": 0, "new": 0, "esp_websocket_register_ev": 0, "esp_websocket_event_id_t": 0, "esp_event_handler_t": 0, "event_handl": 0, "void": 0, "event_handler_arg": 0, "regist": 0, "callback": 0, "context": 0, "esp_websocket_event_data_t": 0, "public": 0, "member": 0, "data_ptr": 0, "data_len": 0, "fin": 0, "flag": 0, "uint8_t": 0, "op_cod": 0, "user_context": 0, "user_data": 0, "payload_len": 0, "total": 0, "exceed": 0, "payload_offset": 0, "actual": 0, "offset": 0, "associ": 0, "overrid": 0, "domain": 0, "ip": 0, "string": 0, "depend": 0, "esp_websocket_transport_t": 0, "usernam": 0, "http": 0, "authent": 0, "password": 0, "disable_auto_reconnect": 0, "disabl": 0, "automat": 0, "reconnect": 0, "disconnect": 0, "task_prio": 0, "task": 0, "prioriti": 0, "task_stack": 0, "stack": 0, "buffer_s": 0, "der": 0, "termin": 0, "charact": 0, "cert_len": 0, "point": 0, "0": 0, "client_cert": 0, "mutual": 0, "client_kei": 0, "client_cert_len": 0, "privat": 0, "kei": 0, "client_key_len": 0, "client_key_pem": 0, "see": 0, "user_ag": 0, "agent": 0, "pingpong_timeout_sec": 0, "period": 0, "disable_pingpong_discon": 0, "auto": 0, "within": 0, "use_global_ca_stor": 0, "global": 0, "ca_stor": 0, "crt_bundle_attach": 0, "conf": 0, "esp_crt_bundle_attach": 0, "enabl": 0, "bundl": 0, "mbedtls_certificate_bundl": 0, "menuconfig": 0, "esp_crt_bundl": 0, "ca": 0, "skip_cert_common_name_check": 0, "skip": 0, "valid": 0, "cn": 0, "keep_alive_en": 0, "keep": 0, "aliv": 0, "keep_alive_idl": 0, "idl": 0, "time": 0, "5": 0, "keep_alive_interv": 0, "keep_alive_count": 0, "packet": 0, "retri": 0, "count": 0, "3": 0, "reconnect_timeout_m": 0, "after": 0, "valu": 0, "milisecond": 0, "10": 0, "network_timeout_m": 0, "network": 0, "millisecond": 0, "ifreq": 0, "if_nam": 0, "name": 0, "go": 0, "typedef": 0, "enum": 0, "websocket_event_ani": 0, "occur": 0, "onc": 0, "exchang": 0, "possibli": 0, "portion": 0, "websocket_event_clos": 0, "cleanli": 0, "websocket_event_max": 0, "websocket_transport_unknown": 0, "unknown": 0, "websocket_transport_over_tcp": 0, "websocket_transport_over_ssl": 0}, "objects": {"": [[0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE", "WEBSOCKET_EVENT_ANY"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE", "WEBSOCKET_EVENT_CLOSED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE", "WEBSOCKET_EVENT_CONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE", "WEBSOCKET_EVENT_DATA"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE", "WEBSOCKET_EVENT_DISCONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE", "WEBSOCKET_EVENT_ERROR"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE", "WEBSOCKET_EVENT_MAX"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE", "WEBSOCKET_TRANSPORT_OVER_SSL"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE", "WEBSOCKET_TRANSPORT_OVER_TCP"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE", "WEBSOCKET_TRANSPORT_UNKNOWN"], [0, 1, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close"], [0, 2, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close::client"], [0, 2, 1, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t", "esp_websocket_client_close::timeout"], [0, 1, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::client"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::code"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::data"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::len"], [0, 2, 1, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t", "esp_websocket_client_close_with_code::timeout"], [0, 3, 1, "_CPPv429esp_websocket_client_config_t", "esp_websocket_client_config_t"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11buffer_sizeE", "esp_websocket_client_config_t::buffer_size"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8cert_lenE", "esp_websocket_client_config_t::cert_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8cert_pemE", "esp_websocket_client_config_t::cert_pem"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11client_certE", "esp_websocket_client_config_t::client_cert"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t15client_cert_lenE", "esp_websocket_client_config_t::client_cert_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10client_keyE", "esp_websocket_client_config_t::client_key"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t14client_key_lenE", "esp_websocket_client_config_t::client_key_len"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17crt_bundle_attachE", "esp_websocket_client_config_t::crt_bundle_attach"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE", "esp_websocket_client_config_t::disable_auto_reconnect"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE", "esp_websocket_client_config_t::disable_pingpong_discon"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t7headersE", "esp_websocket_client_config_t::headers"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4hostE", "esp_websocket_client_config_t::host"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t7if_nameE", "esp_websocket_client_config_t::if_name"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t16keep_alive_countE", "esp_websocket_client_config_t::keep_alive_count"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE", "esp_websocket_client_config_t::keep_alive_enable"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE", "esp_websocket_client_config_t::keep_alive_idle"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE", "esp_websocket_client_config_t::keep_alive_interval"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t18network_timeout_msE", "esp_websocket_client_config_t::network_timeout_ms"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8passwordE", "esp_websocket_client_config_t::password"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4pathE", "esp_websocket_client_config_t::path"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t17ping_interval_secE", "esp_websocket_client_config_t::ping_interval_sec"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE", "esp_websocket_client_config_t::pingpong_timeout_sec"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t4portE", "esp_websocket_client_config_t::port"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE", "esp_websocket_client_config_t::reconnect_timeout_ms"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE", "esp_websocket_client_config_t::skip_cert_common_name_check"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t11subprotocolE", "esp_websocket_client_config_t::subprotocol"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t9task_prioE", "esp_websocket_client_config_t::task_prio"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10task_stackE", "esp_websocket_client_config_t::task_stack"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t9transportE", "esp_websocket_client_config_t::transport"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t3uriE", "esp_websocket_client_config_t::uri"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE", "esp_websocket_client_config_t::use_global_ca_store"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t10user_agentE", "esp_websocket_client_config_t::user_agent"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t12user_contextE", "esp_websocket_client_config_t::user_context"], [0, 4, 1, "_CPPv4N29esp_websocket_client_config_t8usernameE", "esp_websocket_client_config_t::username"], [0, 1, 1, "_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t", "esp_websocket_client_destroy"], [0, 2, 1, "_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t", "esp_websocket_client_destroy::client"], [0, 1, 1, "_CPPv442esp_websocket_client_get_ping_interval_sec29esp_websocket_client_handle_t", "esp_websocket_client_get_ping_interval_sec"], [0, 2, 1, "_CPPv442esp_websocket_client_get_ping_interval_sec29esp_websocket_client_handle_t", "esp_websocket_client_get_ping_interval_sec::client"], [0, 5, 1, "_CPPv429esp_websocket_client_handle_t", "esp_websocket_client_handle_t"], [0, 1, 1, "_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t", "esp_websocket_client_init"], [0, 2, 1, "_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t", "esp_websocket_client_init::config"], [0, 1, 1, "_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t", "esp_websocket_client_is_connected"], [0, 2, 1, "_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t", "esp_websocket_client_is_connected::client"], [0, 1, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::client"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::data"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::len"], [0, 2, 1, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_bin::timeout"], [0, 1, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::client"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::data"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::len"], [0, 2, 1, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t", "esp_websocket_client_send_text::timeout"], [0, 1, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec"], [0, 2, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec::client"], [0, 2, 1, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t", "esp_websocket_client_set_ping_interval_sec::ping_interval_sec"], [0, 1, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri"], [0, 2, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri::client"], [0, 2, 1, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc", "esp_websocket_client_set_uri::uri"], [0, 1, 1, "_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t", "esp_websocket_client_start"], [0, 2, 1, "_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t", "esp_websocket_client_start::client"], [0, 1, 1, "_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t", "esp_websocket_client_stop"], [0, 2, 1, "_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t", "esp_websocket_client_stop::client"], [0, 3, 1, "_CPPv426esp_websocket_event_data_t", "esp_websocket_event_data_t"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t6clientE", "esp_websocket_event_data_t::client"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t8data_lenE", "esp_websocket_event_data_t::data_len"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t8data_ptrE", "esp_websocket_event_data_t::data_ptr"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t3finE", "esp_websocket_event_data_t::fin"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t7op_codeE", "esp_websocket_event_data_t::op_code"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t11payload_lenE", "esp_websocket_event_data_t::payload_len"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t14payload_offsetE", "esp_websocket_event_data_t::payload_offset"], [0, 4, 1, "_CPPv4N26esp_websocket_event_data_t12user_contextE", "esp_websocket_event_data_t::user_context"], [0, 6, 1, "_CPPv424esp_websocket_event_id_t", "esp_websocket_event_id_t"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_ANY"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_CLOSED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_CONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_DATA"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_DISCONNECTED"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_ERROR"], [0, 0, 1, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE", "esp_websocket_event_id_t::WEBSOCKET_EVENT_MAX"], [0, 1, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::client"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event_handler"], [0, 2, 1, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv", "esp_websocket_register_events::event_handler_arg"], [0, 6, 1, "_CPPv425esp_websocket_transport_t", "esp_websocket_transport_t"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_SSL"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_OVER_TCP"], [0, 0, 1, "_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE", "esp_websocket_transport_t::WEBSOCKET_TRANSPORT_UNKNOWN"]]}, "objtypes": {"0": "cpp:enumerator", "1": "cpp:function", "2": "cpp:functionParam", "3": "cpp:class", "4": "cpp:member", "5": "cpp:type", "6": "cpp:enum"}, "objnames": {"0": ["cpp", "enumerator", "C++ enumerator"], "1": ["cpp", "function", "C++ function"], "2": ["cpp", "functionParam", "C++ function parameter"], "3": ["cpp", "class", "C++ class"], "4": ["cpp", "member", "C++ member"], "5": ["cpp", "type", "C++ type"], "6": ["cpp", "enum", "C++ enum"]}, "titleterms": {"esp": 0, "websocket": 0, "client": 0, "overview": 0, "featur": 0, "configur": 0, "uri": 0, "tl": 0, "subprotocol": 0, "event": 0, "limit": 0, "known": 0, "issu": 0, "applic": 0, "exampl": 0, "send": 0, "text": 0, "data": 0, "api": 0, "refer": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"ESP WebSocket Client": [[0, "esp-websocket-client"]], "Overview": [[0, "overview"]], "Features": [[0, "features"]], "Configuration": [[0, "configuration"]], "URI": [[0, "uri"]], "TLS": [[0, "tls"]], "Subprotocol": [[0, "subprotocol"]], "Events": [[0, "events"]], "Limitations and Known Issues": [[0, "limitations-and-known-issues"]], "Application Example": [[0, "application-example"]], "Sending Text Data": [[0, "sending-text-data"]], "API Reference": [[0, "api-reference"]], "Header File": [[0, "header-file"]], "Functions": [[0, "functions"]], "Structures": [[0, "structures"]], "Type Definitions": [[0, "type-definitions"]], "Enumerations": [[0, "enumerations"]]}, "indexentries": {"esp_websocket_client_close (c++ function)": [[0, "_CPPv426esp_websocket_client_close29esp_websocket_client_handle_t10TickType_t"]], "esp_websocket_client_close_with_code (c++ function)": [[0, "_CPPv436esp_websocket_client_close_with_code29esp_websocket_client_handle_tiPKci10TickType_t"]], "esp_websocket_client_config_t (c++ struct)": [[0, "_CPPv429esp_websocket_client_config_t"]], "esp_websocket_client_config_t::buffer_size (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t11buffer_sizeE"]], "esp_websocket_client_config_t::cert_len (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t8cert_lenE"]], "esp_websocket_client_config_t::cert_pem (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t8cert_pemE"]], "esp_websocket_client_config_t::client_cert (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t11client_certE"]], "esp_websocket_client_config_t::client_cert_len (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t15client_cert_lenE"]], "esp_websocket_client_config_t::client_key (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t10client_keyE"]], "esp_websocket_client_config_t::client_key_len (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t14client_key_lenE"]], "esp_websocket_client_config_t::crt_bundle_attach (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t17crt_bundle_attachE"]], "esp_websocket_client_config_t::disable_auto_reconnect (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t22disable_auto_reconnectE"]], "esp_websocket_client_config_t::disable_pingpong_discon (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t23disable_pingpong_disconE"]], "esp_websocket_client_config_t::headers (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t7headersE"]], "esp_websocket_client_config_t::host (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t4hostE"]], "esp_websocket_client_config_t::if_name (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t7if_nameE"]], "esp_websocket_client_config_t::keep_alive_count (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t16keep_alive_countE"]], "esp_websocket_client_config_t::keep_alive_enable (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t17keep_alive_enableE"]], "esp_websocket_client_config_t::keep_alive_idle (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t15keep_alive_idleE"]], "esp_websocket_client_config_t::keep_alive_interval (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t19keep_alive_intervalE"]], "esp_websocket_client_config_t::network_timeout_ms (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t18network_timeout_msE"]], "esp_websocket_client_config_t::password (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t8passwordE"]], "esp_websocket_client_config_t::path (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t4pathE"]], "esp_websocket_client_config_t::ping_interval_sec (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t17ping_interval_secE"]], "esp_websocket_client_config_t::pingpong_timeout_sec (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t20pingpong_timeout_secE"]], "esp_websocket_client_config_t::port (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t4portE"]], "esp_websocket_client_config_t::reconnect_timeout_ms (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t20reconnect_timeout_msE"]], "esp_websocket_client_config_t::skip_cert_common_name_check (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t27skip_cert_common_name_checkE"]], "esp_websocket_client_config_t::subprotocol (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t11subprotocolE"]], "esp_websocket_client_config_t::task_prio (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t9task_prioE"]], "esp_websocket_client_config_t::task_stack (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t10task_stackE"]], "esp_websocket_client_config_t::transport (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t9transportE"]], "esp_websocket_client_config_t::uri (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t3uriE"]], "esp_websocket_client_config_t::use_global_ca_store (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t19use_global_ca_storeE"]], "esp_websocket_client_config_t::user_agent (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t10user_agentE"]], "esp_websocket_client_config_t::user_context (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t12user_contextE"]], "esp_websocket_client_config_t::username (c++ member)": [[0, "_CPPv4N29esp_websocket_client_config_t8usernameE"]], "esp_websocket_client_destroy (c++ function)": [[0, "_CPPv428esp_websocket_client_destroy29esp_websocket_client_handle_t"]], "esp_websocket_client_get_ping_interval_sec (c++ function)": [[0, "_CPPv442esp_websocket_client_get_ping_interval_sec29esp_websocket_client_handle_t"]], "esp_websocket_client_handle_t (c++ type)": [[0, "_CPPv429esp_websocket_client_handle_t"]], "esp_websocket_client_init (c++ function)": [[0, "_CPPv425esp_websocket_client_initPK29esp_websocket_client_config_t"]], "esp_websocket_client_is_connected (c++ function)": [[0, "_CPPv433esp_websocket_client_is_connected29esp_websocket_client_handle_t"]], "esp_websocket_client_send_bin (c++ function)": [[0, "_CPPv429esp_websocket_client_send_bin29esp_websocket_client_handle_tPKci10TickType_t"]], "esp_websocket_client_send_text (c++ function)": [[0, "_CPPv430esp_websocket_client_send_text29esp_websocket_client_handle_tPKci10TickType_t"]], "esp_websocket_client_set_ping_interval_sec (c++ function)": [[0, "_CPPv442esp_websocket_client_set_ping_interval_sec29esp_websocket_client_handle_t6size_t"]], "esp_websocket_client_set_uri (c++ function)": [[0, "_CPPv428esp_websocket_client_set_uri29esp_websocket_client_handle_tPKc"]], "esp_websocket_client_start (c++ function)": [[0, "_CPPv426esp_websocket_client_start29esp_websocket_client_handle_t"]], "esp_websocket_client_stop (c++ function)": [[0, "_CPPv425esp_websocket_client_stop29esp_websocket_client_handle_t"]], "esp_websocket_event_data_t (c++ struct)": [[0, "_CPPv426esp_websocket_event_data_t"]], "esp_websocket_event_data_t::client (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t6clientE"]], "esp_websocket_event_data_t::data_len (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t8data_lenE"]], "esp_websocket_event_data_t::data_ptr (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t8data_ptrE"]], "esp_websocket_event_data_t::fin (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t3finE"]], "esp_websocket_event_data_t::op_code (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t7op_codeE"]], "esp_websocket_event_data_t::payload_len (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t11payload_lenE"]], "esp_websocket_event_data_t::payload_offset (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t14payload_offsetE"]], "esp_websocket_event_data_t::user_context (c++ member)": [[0, "_CPPv4N26esp_websocket_event_data_t12user_contextE"]], "esp_websocket_event_id_t (c++ enum)": [[0, "_CPPv424esp_websocket_event_id_t"]], "esp_websocket_event_id_t::websocket_event_any (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_ANYE"]], "esp_websocket_event_id_t::websocket_event_closed (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t22WEBSOCKET_EVENT_CLOSEDE"]], "esp_websocket_event_id_t::websocket_event_connected (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t25WEBSOCKET_EVENT_CONNECTEDE"]], "esp_websocket_event_id_t::websocket_event_data (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t20WEBSOCKET_EVENT_DATAE"]], "esp_websocket_event_id_t::websocket_event_disconnected (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t28WEBSOCKET_EVENT_DISCONNECTEDE"]], "esp_websocket_event_id_t::websocket_event_error (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t21WEBSOCKET_EVENT_ERRORE"]], "esp_websocket_event_id_t::websocket_event_max (c++ enumerator)": [[0, "_CPPv4N24esp_websocket_event_id_t19WEBSOCKET_EVENT_MAXE"]], "esp_websocket_register_events (c++ function)": [[0, "_CPPv429esp_websocket_register_events29esp_websocket_client_handle_t24esp_websocket_event_id_t19esp_event_handler_tPv"]], "esp_websocket_transport_t (c++ enum)": [[0, "_CPPv425esp_websocket_transport_t"]], "esp_websocket_transport_t::websocket_transport_over_ssl (c++ enumerator)": [[0, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_SSLE"]], "esp_websocket_transport_t::websocket_transport_over_tcp (c++ enumerator)": [[0, "_CPPv4N25esp_websocket_transport_t28WEBSOCKET_TRANSPORT_OVER_TCPE"]], "esp_websocket_transport_t::websocket_transport_unknown (c++ enumerator)": [[0, "_CPPv4N25esp_websocket_transport_t27WEBSOCKET_TRANSPORT_UNKNOWNE"]]}}) \ No newline at end of file diff --git a/mdns/en/.buildinfo b/mdns/en/.buildinfo index 674b4e9e5..c7552479b 100644 --- a/mdns/en/.buildinfo +++ b/mdns/en/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: bdb9c4058bb57ea76ea7b85c00a2c40f +config: 2bccfe8e104e823c5c6f1fd9ba510b65 tags: 549b3d6d0415232fb7e35403b330ff49 diff --git a/mdns/en/_static/doctools.js b/mdns/en/_static/doctools.js index c3db08d1c..527b876ca 100644 --- a/mdns/en/_static/doctools.js +++ b/mdns/en/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/mdns/en/_static/pygments.css b/mdns/en/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/mdns/en/_static/pygments.css +++ b/mdns/en/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/mdns/en/_static/searchtools.js b/mdns/en/_static/searchtools.js index f2fb7d5cf..e89e34d4e 100644 --- a/mdns/en/_static/searchtools.js +++ b/mdns/en/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/mdns/en/_static/sphinx_highlight.js b/mdns/en/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/mdns/en/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/mdns/en/genindex.html b/mdns/en/genindex.html index 907a25b47..f85c613f5 100644 --- a/mdns/en/genindex.html +++ b/mdns/en/genindex.html @@ -17,6 +17,7 @@ + @@ -90,7 +91,7 @@
  • »
  • Index
  • - Edit on GitHub + Edit on GitHub

  • diff --git a/mdns/en/index.html b/mdns/en/index.html index df149a4db..2d7fdf989 100644 --- a/mdns/en/index.html +++ b/mdns/en/index.html @@ -18,6 +18,7 @@ + @@ -115,7 +116,7 @@
  • »
  • mDNS Service
  • - Edit on GitHub + Edit on GitHub

  • @@ -139,20 +140,20 @@

    Example method to start mDNS for the STA interface and set hostname and default_instance:

    -
    void start_mdns_service()
    -{
    -    //initialize mDNS service
    -    esp_err_t err = mdns_init();
    -    if (err) {
    -        printf("MDNS Init failed: %d\n", err);
    -        return;
    -    }
    +
    void start_mdns_service()
    +{
    +    //initialize mDNS service
    +    esp_err_t err = mdns_init();
    +    if (err) {
    +        printf("MDNS Init failed: %d\n", err);
    +        return;
    +    }
     
    -    //set hostname
    -    mdns_hostname_set("my-esp32");
    -    //set default instance
    -    mdns_instance_name_set("Jhon's ESP32 Thing");
    -}
    +    //set hostname
    +    mdns_hostname_set("my-esp32");
    +    //set default instance
    +    mdns_instance_name_set("Jhon's ESP32 Thing");
    +}
     
    @@ -169,28 +170,28 @@

    Example method to add a few services and different properties:

    -
    void add_mdns_services()
    -{
    -    //add our services
    -    mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0);
    -    mdns_service_add(NULL, "_arduino", "_tcp", 3232, NULL, 0);
    -    mdns_service_add(NULL, "_myservice", "_udp", 1234, NULL, 0);
    +
    void add_mdns_services()
    +{
    +    //add our services
    +    mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0);
    +    mdns_service_add(NULL, "_arduino", "_tcp", 3232, NULL, 0);
    +    mdns_service_add(NULL, "_myservice", "_udp", 1234, NULL, 0);
     
    -    //NOTE: services must be added before their properties can be set
    -    //use custom instance for the web server
    -    mdns_service_instance_name_set("_http", "_tcp", "Jhon's ESP32 Web Server");
    +    //NOTE: services must be added before their properties can be set
    +    //use custom instance for the web server
    +    mdns_service_instance_name_set("_http", "_tcp", "Jhon's ESP32 Web Server");
     
    -    mdns_txt_item_t serviceTxtData[3] = {
    -        {"board","{esp32}"},
    -        {"u","user"},
    -        {"p","password"}
    -    };
    -    //set txt data for service (will free and replace current data)
    -    mdns_service_txt_set("_http", "_tcp", serviceTxtData, 3);
    +    mdns_txt_item_t serviceTxtData[3] = {
    +        {"board","{esp32}"},
    +        {"u","user"},
    +        {"p","password"}
    +    };
    +    //set txt data for service (will free and replace current data)
    +    mdns_service_txt_set("_http", "_tcp", serviceTxtData, 3);
     
    -    //change service port
    -    mdns_service_port_set("_myservice", "_udp", 4321);
    -}
    +    //change service port
    +    mdns_service_port_set("_myservice", "_udp", 4321);
    +}
     
    @@ -199,100 +200,100 @@

    mDNS provides methods for browsing for services and resolving host’s IP/IPv6 addresses.

    Results for services are returned as a linked list of mdns_result_t objects.

    Example method to resolve host IPs:

    -
    void resolve_mdns_host(const char * host_name)
    -{
    -    printf("Query A: %s.local", host_name);
    +
    void resolve_mdns_host(const char * host_name)
    +{
    +    printf("Query A: %s.local", host_name);
     
    -    struct ip4_addr addr;
    -    addr.addr = 0;
    +    struct ip4_addr addr;
    +    addr.addr = 0;
     
    -    esp_err_t err = mdns_query_a(host_name, 2000,  &addr);
    -    if(err){
    -        if(err == ESP_ERR_NOT_FOUND){
    -            printf("Host was not found!");
    -            return;
    -        }
    -        printf("Query Failed");
    -        return;
    -    }
    +    esp_err_t err = mdns_query_a(host_name, 2000,  &addr);
    +    if(err){
    +        if(err == ESP_ERR_NOT_FOUND){
    +            printf("Host was not found!");
    +            return;
    +        }
    +        printf("Query Failed");
    +        return;
    +    }
     
    -    printf(IPSTR, IP2STR(&addr));
    -}
    +    printf(IPSTR, IP2STR(&addr));
    +}
     

    Example method to resolve local services:

    -
    static const char * if_str[] = {"STA", "AP", "ETH", "MAX"};
    -static const char * ip_protocol_str[] = {"V4", "V6", "MAX"};
    +
    static const char * if_str[] = {"STA", "AP", "ETH", "MAX"};
    +static const char * ip_protocol_str[] = {"V4", "V6", "MAX"};
     
    -void mdns_print_results(mdns_result_t * results){
    -    mdns_result_t * r = results;
    -    mdns_ip_addr_t * a = NULL;
    -    int i = 1, t;
    -    while(r){
    -        printf("%d: Interface: %s, Type: %s\n", i++, if_str[r->tcpip_if], ip_protocol_str[r->ip_protocol]);
    -        if(r->instance_name){
    -            printf("  PTR : %s\n", r->instance_name);
    -        }
    -        if(r->hostname){
    -            printf("  SRV : %s.local:%u\n", r->hostname, r->port);
    -        }
    -        if(r->txt_count){
    -            printf("  TXT : [%u] ", r->txt_count);
    -            for(t=0; t<r->txt_count; t++){
    -                printf("%s=%s; ", r->txt[t].key, r->txt[t].value);
    -            }
    -            printf("\n");
    -        }
    -        a = r->addr;
    -        while(a){
    -            if(a->addr.type == IPADDR_TYPE_V6){
    -                printf("  AAAA: " IPV6STR "\n", IPV62STR(a->addr.u_addr.ip6));
    -            } else {
    -                printf("  A   : " IPSTR "\n", IP2STR(&(a->addr.u_addr.ip4)));
    -            }
    -            a = a->next;
    -        }
    -        r = r->next;
    -    }
    +void mdns_print_results(mdns_result_t * results){
    +    mdns_result_t * r = results;
    +    mdns_ip_addr_t * a = NULL;
    +    int i = 1, t;
    +    while(r){
    +        printf("%d: Interface: %s, Type: %s\n", i++, if_str[r->tcpip_if], ip_protocol_str[r->ip_protocol]);
    +        if(r->instance_name){
    +            printf("  PTR : %s\n", r->instance_name);
    +        }
    +        if(r->hostname){
    +            printf("  SRV : %s.local:%u\n", r->hostname, r->port);
    +        }
    +        if(r->txt_count){
    +            printf("  TXT : [%u] ", r->txt_count);
    +            for(t=0; t<r->txt_count; t++){
    +                printf("%s=%s; ", r->txt[t].key, r->txt[t].value);
    +            }
    +            printf("\n");
    +        }
    +        a = r->addr;
    +        while(a){
    +            if(a->addr.type == IPADDR_TYPE_V6){
    +                printf("  AAAA: " IPV6STR "\n", IPV62STR(a->addr.u_addr.ip6));
    +            } else {
    +                printf("  A   : " IPSTR "\n", IP2STR(&(a->addr.u_addr.ip4)));
    +            }
    +            a = a->next;
    +        }
    +        r = r->next;
    +    }
     
    -}
    +}
     
    -void find_mdns_service(const char * service_name, const char * proto)
    -{
    -    ESP_LOGI(TAG, "Query PTR: %s.%s.local", service_name, proto);
    +void find_mdns_service(const char * service_name, const char * proto)
    +{
    +    ESP_LOGI(TAG, "Query PTR: %s.%s.local", service_name, proto);
     
    -    mdns_result_t * results = NULL;
    -    esp_err_t err = mdns_query_ptr(service_name, proto, 3000, 20,  &results);
    -    if(err){
    -        ESP_LOGE(TAG, "Query Failed");
    -        return;
    -    }
    -    if(!results){
    -        ESP_LOGW(TAG, "No results found!");
    -        return;
    -    }
    +    mdns_result_t * results = NULL;
    +    esp_err_t err = mdns_query_ptr(service_name, proto, 3000, 20,  &results);
    +    if(err){
    +        ESP_LOGE(TAG, "Query Failed");
    +        return;
    +    }
    +    if(!results){
    +        ESP_LOGW(TAG, "No results found!");
    +        return;
    +    }
     
    -    mdns_print_results(results);
    -    mdns_query_results_free(results);
    -}
    +    mdns_print_results(results);
    +    mdns_query_results_free(results);
    +}
     

    Example of using the methods above:

    -
    void my_app_some_method(){
    -    //search for esp32-mdns.local
    -    resolve_mdns_host("esp32-mdns");
    +
    void my_app_some_method(){
    +    //search for esp32-mdns.local
    +    resolve_mdns_host("esp32-mdns");
     
    -    //search for HTTP servers
    -    find_mdns_service("_http", "_tcp");
    -    //or file servers
    -    find_mdns_service("_smb", "_tcp"); //windows sharing
    -    find_mdns_service("_afpovertcp", "_tcp"); //apple sharing
    -    find_mdns_service("_nfs", "_tcp"); //NFS server
    -    find_mdns_service("_ftp", "_tcp"); //FTP server
    -    //or networked printer
    -    find_mdns_service("_printer", "_tcp");
    -    find_mdns_service("_ipp", "_tcp");
    -}
    +    //search for HTTP servers
    +    find_mdns_service("_http", "_tcp");
    +    //or file servers
    +    find_mdns_service("_smb", "_tcp"); //windows sharing
    +    find_mdns_service("_afpovertcp", "_tcp"); //apple sharing
    +    find_mdns_service("_nfs", "_tcp"); //NFS server
    +    find_mdns_service("_ftp", "_tcp"); //FTP server
    +    //or networked printer
    +    find_mdns_service("_printer", "_tcp");
    +    find_mdns_service("_ipp", "_tcp");
    +}
     
    @@ -318,14 +319,14 @@

    Application Example

    -

    mDNS server/scanner example: .

    +

    mDNS server/scanner example: .

    API Reference

    Header File

    diff --git a/mdns/en/search.html b/mdns/en/search.html index 114a5b6e1..bd527eb14 100644 --- a/mdns/en/search.html +++ b/mdns/en/search.html @@ -18,6 +18,7 @@ + diff --git a/mdns/en/searchindex.js b/mdns/en/searchindex.js index acf81bee4..125de897a 100644 --- a/mdns/en/searchindex.js +++ b/mdns/en/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["mDNS Service"], "terms": {"\u4e2d\u6587": 0, "i": 0, "multicast": 0, "udp": 0, "us": 0, "provid": 0, "local": 0, "network": 0, "host": 0, "discoveri": 0, "instal": 0, "default": 0, "most": 0, "oper": 0, "system": 0, "avail": 0, "separ": 0, "packag": 0, "On": 0, "mac": 0, "o": 0, "call": 0, "bonjour": 0, "appl": 0, "releas": 0, "an": 0, "window": 0, "can": 0, "found": 0, "": 0, "support": 0, "page": 0, "linux": 0, "avahi": 0, "usual": 0, "hostnam": 0, "devic": 0, "respond": 0, "If": 0, "set": 0, "read": 0, "from": 0, "interfac": 0, "my": 0, "esp32": 0, "resolv": 0, "default_inst": 0, "friendli": 0, "name": 0, "your": 0, "like": 0, "jhon": 0, "thing": 0, "method": 0, "start": 0, "sta": 0, "void": 0, "start_mdns_servic": 0, "initi": 0, "esp_err_t": 0, "err": 0, "mdns_init": 0, "printf": 0, "init": 0, "fail": 0, "d": 0, "n": 0, "return": 0, "mdns_hostname_set": 0, "instanc": 0, "mdns_instance_name_set": 0, "advertis": 0, "inform": 0, "about": 0, "offer": 0, "each": 0, "defin": 0, "few": 0, "instance_nam": 0, "eesp32": 0, "web": 0, "server": 0, "service_typ": 0, "requir": 0, "prepend": 0, "underscor": 0, "some": 0, "common": 0, "here": 0, "proto": 0, "protocol": 0, "run": 0, "_tcp": 0, "_udp": 0, "port": 0, "txt": 0, "var": 0, "val": 0, "arrai": 0, "string": 0, "add": 0, "differ": 0, "add_mdns_servic": 0, "our": 0, "mdns_service_add": 0, "null": 0, "_http": 0, "80": 0, "0": 0, "_arduino": 0, "3232": 0, "_myservic": 0, "1234": 0, "note": 0, "must": 0, "ad": 0, "befor": 0, "custom": 0, "mdns_service_instance_name_set": 0, "mdns_txt_item_t": 0, "servicetxtdata": 0, "3": 0, "board": 0, "u": 0, "user": 0, "p": 0, "password": 0, "data": 0, "free": 0, "replac": 0, "current": 0, "mdns_service_txt_set": 0, "chang": 0, "mdns_service_port_set": 0, "4321": 0, "brows": 0, "ip": 0, "ipv6": 0, "address": 0, "result": 0, "ar": 0, "link": 0, "list": 0, "mdns_result_t": 0, "object": 0, "resolve_mdns_host": 0, "const": 0, "char": 0, "host_nam": 0, "A": 0, "struct": 0, "ip4_addr": 0, "addr": 0, "mdns_query_a": 0, "2000": 0, "esp_err_not_found": 0, "wa": 0, "ipstr": 0, "ip2str": 0, "static": 0, "if_str": 0, "ap": 0, "eth": 0, "max": 0, "ip_protocol_str": 0, "v4": 0, "v6": 0, "mdns_print_result": 0, "r": 0, "mdns_ip_addr_t": 0, "int": 0, "1": 0, "t": 0, "while": 0, "tcpip_if": 0, "ip_protocol": 0, "ptr": 0, "srv": 0, "txt_count": 0, "kei": 0, "valu": 0, "ipaddr_type_v6": 0, "aaaa": 0, "ipv6str": 0, "ipv62str": 0, "u_addr": 0, "ip6": 0, "els": 0, "ip4": 0, "next": 0, "find_mdns_servic": 0, "service_nam": 0, "esp_logi": 0, "tag": 0, "mdns_query_ptr": 0, "3000": 0, "20": 0, "esp_log": 0, "esp_logw": 0, "No": 0, "mdns_query_results_fre": 0, "abov": 0, "my_app_some_method": 0, "search": 0, "http": 0, "_smb": 0, "share": 0, "_afpovertcp": 0, "_nf": 0, "nf": 0, "_ftp": 0, "ftp": 0, "printer": 0, "_printer": 0, "_ipp": 0, "creat": 0, "task": 0, "low": 0, "prioriti": 0, "config_mdns_task_prior": 0, "config_freertos_unicor": 0, "enabel": 0, "pin": 0, "cpu0": 0, "config_mdns_task_affin": 0, "pleas": 0, "check": 0, "maxim": 0, "more": 0, "detail": 0, "stack": 0, "size": 0, "configur": 0, "config_mdns_task_stack_s": 0, "scanner": 0, "includ": 0, "h": 0, "given": 0, "esp_ok": 0, "success": 0, "esp_err_invalid_st": 0, "when": 0, "regist": 0, "event": 0, "handler": 0, "esp_err_no_mem": 0, "memori": 0, "error": 0, "esp_fail": 0, "mdns_free": 0, "stop": 0, "you": 0, "want": 0, "paramet": 0, "esp_err_invalid_arg": 0, "mdns_delegate_hostname_add": 0, "address_list": 0, "deleg": 0, "repli": 0, "thi": 0, "The": 0, "mdns_delegate_hostname_remov": 0, "remov": 0, "all": 0, "also": 0, "bool": 0, "mdns_hostname_exist": 0, "whether": 0, "ha": 0, "been": 0, "true": 0, "fals": 0, "uint16_t": 0, "size_t": 0, "num_item": 0, "length": 0, "item": 0, "automat": 0, "decid": 0, "strlen": 0, "global": 0, "mdns_multiple_inst": 0, "config": 0, "option": 0, "need": 0, "enabl": 0, "multipl": 0, "same": 0, "etc": 0, "eg": 0, "other": 0, "2": 0, "number": 0, "mdns_service_add_for_host": 0, "mdns_service_exist": 0, "correspond": 0, "mdns_service_exists_with_inst": 0, "mdns_service_remov": 0, "mdns_service_remove_for_host": 0, "mdns_service_instance_name_set_for_host": 0, "instance_old": 0, "origin": 0, "mdns_service_port_set_for_host": 0, "uint8_t": 0, "mdns_service_txt_set_for_host": 0, "mdns_service_txt_item_set": 0, "record": 0, "updat": 0, "new": 0, "mdns_service_txt_item_set_with_explicit_value_len": 0, "value_len": 0, "mdns_service_txt_item_set_for_host": 0, "mdns_service_txt_item_set_for_host_with_explicit_value_len": 0, "mdns_service_txt_item_remov": 0, "mdns_service_txt_item_remove_for_host": 0, "mdns_service_subtype_add_for_host": 0, "subtyp": 0, "find": 0, "first": 0, "mdns_service_remove_al": 0, "mdns_query_async_delet": 0, "mdns_search_once_t": 0, "delet": 0, "finish": 0, "onli": 0, "after": 0, "end": 0, "pointer": 0, "mdns_query_async_get_result": 0, "uint32_t": 0, "timeout": 0, "num_result": 0, "get": 0, "output": 0, "via": 0, "onc": 0, "although": 0, "have": 0, "freed": 0, "manual": 0, "time": 0, "millisecond": 0, "wait": 0, "answer": 0, "actual": 0, "ignor": 0, "over": 0, "mdns_query_async_new": 0, "max_result": 0, "mdns_query_notify_t": 0, "notifi": 0, "asynchronous": 0, "test": 0, "progress": 0, "mdns_type_": 0, "dure": 0, "which": 0, "activ": 0, "maximum": 0, "collect": 0, "notif": 0, "readi": 0, "mdns_search_once_": 0, "successfulli": 0, "otherwis": 0, "mdns_query_gener": 0, "mdns_query_transmission_type_t": 0, "transmission_typ": 0, "gener": 0, "follow": 0, "deriv": 0, "one": 0, "either": 0, "unicast": 0, "below": 0, "mdns_queri": 0, "send": 0, "mdns_query_srv": 0, "mdns_query_txt": 0, "esp_ip4_addr_t": 0, "look": 0, "mdns_register_netif": 0, "esp_netif_t": 0, "esp_netif": 0, "preconfigur": 0, "ani": 0, "standard": 0, "wifi": 0, "ethernet": 0, "driver": 0, "kind": 0, "esp": 0, "netif": 0, "alreadi": 0, "enough": 0, "see": 0, "config_mdns_max_interfac": 0, "mdns_unregister_netif": 0, "unregist": 0, "mdns_netif_act": 0, "mdns_event_actions_t": 0, "event_act": 0, "desir": 0, "state": 0, "action": 0, "disabl": 0, "announc": 0, "packet": 0, "probe": 0, "conflict": 0, "bye": 0, "specifi": 0, "specif": 0, "could": 0, "connect": 0, "them": 0, "disconnect": 0, "ipv4": 0, "basic": 0, "text": 0, "public": 0, "member": 0, "mdns_ip_addr_": 0, "esp_ip_addr_t": 0, "last": 0, "mdns_result_": 0, "ttl": 0, "live": 0, "mdns_ip_protocol_t": 0, "srevic": 0, "txt_value_len": 0, "len": 0, "mdns_type_a": 0, "mdns_type_ptr": 0, "mdns_type_txt": 0, "mdns_type_aaaa": 0, "mdns_type_srv": 0, "mdns_type_opt": 0, "mdns_type_nsec": 0, "mdns_type_ani": 0, "typedef": 0, "asynchron": 0, "handl": 0, "enum": 0, "mdns_event_enable_ip4": 0, "mdns_event_enable_ip6": 0, "mdns_event_announce_ip4": 0, "mdns_event_announce_ip6": 0, "mdns_event_disable_ip4": 0, "mdns_event_disable_ip6": 0, "mdns_ip_protocol_v4": 0, "mdns_ip_protocol_v6": 0, "mdns_ip_protocol_max": 0, "explicitli": 0, "mdns_query_unicast": 0, "mdns_query_multicast": 0}, "objects": {"": [[0, 0, 1, "c.MDNS_TYPE_A", "MDNS_TYPE_A"], [0, 0, 1, "c.MDNS_TYPE_AAAA", "MDNS_TYPE_AAAA"], [0, 0, 1, "c.MDNS_TYPE_ANY", "MDNS_TYPE_ANY"], [0, 0, 1, "c.MDNS_TYPE_NSEC", "MDNS_TYPE_NSEC"], [0, 0, 1, "c.MDNS_TYPE_OPT", "MDNS_TYPE_OPT"], [0, 0, 1, "c.MDNS_TYPE_PTR", "MDNS_TYPE_PTR"], [0, 0, 1, "c.MDNS_TYPE_SRV", "MDNS_TYPE_SRV"], [0, 0, 1, "c.MDNS_TYPE_TXT", "MDNS_TYPE_TXT"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "MDNS_EVENT_ENABLE_IP6"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "MDNS_IP_PROTOCOL_V6"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::address_list"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::hostname"], [0, 2, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove"], [0, 3, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove::hostname"], [0, 4, 1, "_CPPv420mdns_event_actions_t", "mdns_event_actions_t"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP6"], [0, 2, 1, "_CPPv49mdns_freev", "mdns_free"], [0, 2, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists"], [0, 3, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists::hostname"], [0, 2, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set"], [0, 3, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set::hostname"], [0, 2, 1, "_CPPv49mdns_initv", "mdns_init"], [0, 2, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set"], [0, 3, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set::instance_name"], [0, 5, 1, "_CPPv414mdns_ip_addr_s", "mdns_ip_addr_s"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4addrE", "mdns_ip_addr_s::addr"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4nextE", "mdns_ip_addr_s::next"], [0, 7, 1, "_CPPv414mdns_ip_addr_t", "mdns_ip_addr_t"], [0, 4, 1, "_CPPv418mdns_ip_protocol_t", "mdns_ip_protocol_t"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V6"], [0, 2, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::esp_netif"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::event_action"], [0, 2, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::max_results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::name"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::proto"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::service_type"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::timeout"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::type"], [0, 2, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::addr"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::host_name"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::timeout"], [0, 2, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete"], [0, 3, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete::search"], [0, 2, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::num_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::search"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::timeout"], [0, 2, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::max_results"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::name"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::notifier"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::proto"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::service_type"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::timeout"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::type"], [0, 2, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::max_results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::name"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::proto"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::service_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::timeout"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::transmission_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::type"], [0, 7, 1, "_CPPv419mdns_query_notify_t", "mdns_query_notify_t"], [0, 2, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::max_results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::proto"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::service_type"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::timeout"], [0, 2, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free"], [0, 3, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free::results"], [0, 2, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::instance_name"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::proto"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::result"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::service_type"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::timeout"], [0, 4, 1, "_CPPv430mdns_query_transmission_type_t", "mdns_query_transmission_type_t"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::instance_name"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::proto"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::result"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::service_type"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::timeout"], [0, 2, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif"], [0, 3, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif::esp_netif"], [0, 5, 1, "_CPPv413mdns_result_s", "mdns_result_s"], [0, 6, 1, "_CPPv4N13mdns_result_s4addrE", "mdns_result_s::addr"], [0, 6, 1, "_CPPv4N13mdns_result_s9esp_netifE", "mdns_result_s::esp_netif"], [0, 6, 1, "_CPPv4N13mdns_result_s8hostnameE", "mdns_result_s::hostname"], [0, 6, 1, "_CPPv4N13mdns_result_s13instance_nameE", "mdns_result_s::instance_name"], [0, 6, 1, "_CPPv4N13mdns_result_s11ip_protocolE", "mdns_result_s::ip_protocol"], [0, 6, 1, "_CPPv4N13mdns_result_s4nextE", "mdns_result_s::next"], [0, 6, 1, "_CPPv4N13mdns_result_s4portE", "mdns_result_s::port"], [0, 6, 1, "_CPPv4N13mdns_result_s5protoE", "mdns_result_s::proto"], [0, 6, 1, "_CPPv4N13mdns_result_s12service_typeE", "mdns_result_s::service_type"], [0, 6, 1, "_CPPv4N13mdns_result_s3ttlE", "mdns_result_s::ttl"], [0, 6, 1, "_CPPv4N13mdns_result_s3txtE", "mdns_result_s::txt"], [0, 6, 1, "_CPPv4N13mdns_result_s9txt_countE", "mdns_result_s::txt_count"], [0, 6, 1, "_CPPv4N13mdns_result_s13txt_value_lenE", "mdns_result_s::txt_value_len"], [0, 7, 1, "_CPPv413mdns_result_t", "mdns_result_t"], [0, 7, 1, "_CPPv418mdns_search_once_t", "mdns_search_once_t"], [0, 2, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::instance_name"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::num_items"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::port"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::proto"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::service_type"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::txt"], [0, 2, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::hostname"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::instance_name"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::num_items"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::port"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::proto"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::service_type"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::txt"], [0, 2, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::hostname"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::proto"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::service_type"], [0, 2, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::hostname"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::proto"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::service_type"], [0, 2, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::instance_name"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::proto"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::service_type"], [0, 2, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::hostname"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_name"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_old"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::proto"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::service_type"], [0, 2, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::port"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::proto"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::service_type"], [0, 2, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::hostname"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::instance"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::port"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::proto"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::service_type"], [0, 2, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::proto"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::service_type"], [0, 2, 1, "_CPPv423mdns_service_remove_allv", "mdns_service_remove_all"], [0, 2, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::hostname"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::instance"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::proto"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::service_type"], [0, 2, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::hostname"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::instance_name"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::proto"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::service_type"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::subtype"], [0, 2, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::key"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::proto"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::service_type"], [0, 2, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::hostname"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::instance"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::key"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::proto"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::service_type"], [0, 2, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::key"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::proto"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::service_type"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::value"], [0, 2, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::hostname"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::instance"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::key"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::proto"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::service_type"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::value"], [0, 2, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::hostname"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::instance"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::key"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::key"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::num_items"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::proto"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::service_type"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::txt"], [0, 2, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::hostname"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::instance"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::num_items"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::proto"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::service_type"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::txt"], [0, 5, 1, "_CPPv415mdns_txt_item_t", "mdns_txt_item_t"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t3keyE", "mdns_txt_item_t::key"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t5valueE", "mdns_txt_item_t::value"], [0, 2, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif"], [0, 3, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif::esp_netif"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:function", "3": "cpp:functionParam", "4": "cpp:enum", "5": "cpp:class", "6": "cpp:member", "7": "cpp:type"}, "objnames": {"0": ["c", "macro", "C macro"], "1": ["cpp", "enumerator", "C++ enumerator"], "2": ["cpp", "function", "C++ function"], "3": ["cpp", "functionParam", "C++ function parameter"], "4": ["cpp", "enum", "C++ enum"], "5": ["cpp", "class", "C++ class"], "6": ["cpp", "member", "C++ member"], "7": ["cpp", "type", "C++ type"]}, "titleterms": {"mdn": 0, "servic": 0, "overview": 0, "properti": 0, "queri": 0, "perform": 0, "optim": 0, "execut": 0, "speed": 0, "minim": 0, "ram": 0, "usag": 0, "applic": 0, "exampl": 0, "api": 0, "refer": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "macro": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["mDNS Service"], "terms": {"\u4e2d\u6587": 0, "i": 0, "multicast": 0, "udp": 0, "us": 0, "provid": 0, "local": 0, "network": 0, "host": 0, "discoveri": 0, "instal": 0, "default": 0, "most": 0, "oper": 0, "system": 0, "avail": 0, "separ": 0, "packag": 0, "On": 0, "mac": 0, "o": 0, "call": 0, "bonjour": 0, "appl": 0, "releas": 0, "an": 0, "window": 0, "can": 0, "found": 0, "": 0, "support": 0, "page": 0, "linux": 0, "avahi": 0, "usual": 0, "hostnam": 0, "devic": 0, "respond": 0, "If": 0, "set": 0, "read": 0, "from": 0, "interfac": 0, "my": 0, "esp32": 0, "resolv": 0, "default_inst": 0, "friendli": 0, "name": 0, "your": 0, "like": 0, "jhon": 0, "thing": 0, "method": 0, "start": 0, "sta": 0, "void": 0, "start_mdns_servic": 0, "initi": 0, "esp_err_t": 0, "err": 0, "mdns_init": 0, "printf": 0, "init": 0, "fail": 0, "d": 0, "n": 0, "return": 0, "mdns_hostname_set": 0, "instanc": 0, "mdns_instance_name_set": 0, "advertis": 0, "inform": 0, "about": 0, "offer": 0, "each": 0, "defin": 0, "few": 0, "instance_nam": 0, "eesp32": 0, "web": 0, "server": 0, "service_typ": 0, "requir": 0, "prepend": 0, "underscor": 0, "some": 0, "common": 0, "here": 0, "proto": 0, "protocol": 0, "run": 0, "_tcp": 0, "_udp": 0, "port": 0, "txt": 0, "var": 0, "val": 0, "arrai": 0, "string": 0, "add": 0, "differ": 0, "add_mdns_servic": 0, "our": 0, "mdns_service_add": 0, "null": 0, "_http": 0, "80": 0, "0": 0, "_arduino": 0, "3232": 0, "_myservic": 0, "1234": 0, "note": 0, "must": 0, "ad": 0, "befor": 0, "custom": 0, "mdns_service_instance_name_set": 0, "mdns_txt_item_t": 0, "servicetxtdata": 0, "3": 0, "board": 0, "u": 0, "user": 0, "p": 0, "password": 0, "data": 0, "free": 0, "replac": 0, "current": 0, "mdns_service_txt_set": 0, "chang": 0, "mdns_service_port_set": 0, "4321": 0, "brows": 0, "ip": 0, "ipv6": 0, "address": 0, "result": 0, "ar": 0, "link": 0, "list": 0, "mdns_result_t": 0, "object": 0, "resolve_mdns_host": 0, "const": 0, "char": 0, "host_nam": 0, "A": 0, "struct": 0, "ip4_addr": 0, "addr": 0, "mdns_query_a": 0, "2000": 0, "esp_err_not_found": 0, "wa": 0, "ipstr": 0, "ip2str": 0, "static": 0, "if_str": 0, "ap": 0, "eth": 0, "max": 0, "ip_protocol_str": 0, "v4": 0, "v6": 0, "mdns_print_result": 0, "r": 0, "mdns_ip_addr_t": 0, "int": 0, "1": 0, "t": 0, "while": 0, "tcpip_if": 0, "ip_protocol": 0, "ptr": 0, "srv": 0, "txt_count": 0, "kei": 0, "valu": 0, "ipaddr_type_v6": 0, "aaaa": 0, "ipv6str": 0, "ipv62str": 0, "u_addr": 0, "ip6": 0, "els": 0, "ip4": 0, "next": 0, "find_mdns_servic": 0, "service_nam": 0, "esp_logi": 0, "tag": 0, "mdns_query_ptr": 0, "3000": 0, "20": 0, "esp_log": 0, "esp_logw": 0, "No": 0, "mdns_query_results_fre": 0, "abov": 0, "my_app_some_method": 0, "search": 0, "http": 0, "_smb": 0, "share": 0, "_afpovertcp": 0, "_nf": 0, "nf": 0, "_ftp": 0, "ftp": 0, "printer": 0, "_printer": 0, "_ipp": 0, "creat": 0, "task": 0, "low": 0, "prioriti": 0, "config_mdns_task_prior": 0, "config_freertos_unicor": 0, "enabel": 0, "pin": 0, "cpu0": 0, "config_mdns_task_affin": 0, "pleas": 0, "check": 0, "maxim": 0, "more": 0, "detail": 0, "stack": 0, "size": 0, "configur": 0, "config_mdns_task_stack_s": 0, "scanner": 0, "includ": 0, "h": 0, "given": 0, "esp_ok": 0, "success": 0, "esp_err_invalid_st": 0, "when": 0, "regist": 0, "event": 0, "handler": 0, "esp_err_no_mem": 0, "memori": 0, "error": 0, "esp_fail": 0, "mdns_free": 0, "stop": 0, "you": 0, "want": 0, "paramet": 0, "esp_err_invalid_arg": 0, "mdns_delegate_hostname_add": 0, "address_list": 0, "deleg": 0, "repli": 0, "thi": 0, "The": 0, "mdns_delegate_hostname_remov": 0, "remov": 0, "all": 0, "also": 0, "bool": 0, "mdns_hostname_exist": 0, "whether": 0, "ha": 0, "been": 0, "true": 0, "fals": 0, "uint16_t": 0, "size_t": 0, "num_item": 0, "length": 0, "item": 0, "automat": 0, "decid": 0, "strlen": 0, "global": 0, "mdns_multiple_inst": 0, "config": 0, "option": 0, "need": 0, "enabl": 0, "multipl": 0, "same": 0, "etc": 0, "eg": 0, "other": 0, "2": 0, "number": 0, "mdns_service_add_for_host": 0, "mdns_service_exist": 0, "correspond": 0, "mdns_service_exists_with_inst": 0, "mdns_service_remov": 0, "mdns_service_remove_for_host": 0, "mdns_service_instance_name_set_for_host": 0, "instance_old": 0, "origin": 0, "mdns_service_port_set_for_host": 0, "uint8_t": 0, "mdns_service_txt_set_for_host": 0, "mdns_service_txt_item_set": 0, "record": 0, "updat": 0, "new": 0, "mdns_service_txt_item_set_with_explicit_value_len": 0, "value_len": 0, "mdns_service_txt_item_set_for_host": 0, "mdns_service_txt_item_set_for_host_with_explicit_value_len": 0, "mdns_service_txt_item_remov": 0, "mdns_service_txt_item_remove_for_host": 0, "mdns_service_subtype_add_for_host": 0, "subtyp": 0, "find": 0, "first": 0, "mdns_service_remove_al": 0, "mdns_query_async_delet": 0, "mdns_search_once_t": 0, "delet": 0, "finish": 0, "onli": 0, "after": 0, "end": 0, "pointer": 0, "mdns_query_async_get_result": 0, "uint32_t": 0, "timeout": 0, "num_result": 0, "get": 0, "output": 0, "via": 0, "onc": 0, "although": 0, "have": 0, "freed": 0, "manual": 0, "time": 0, "millisecond": 0, "wait": 0, "answer": 0, "actual": 0, "ignor": 0, "over": 0, "mdns_query_async_new": 0, "max_result": 0, "mdns_query_notify_t": 0, "notifi": 0, "asynchronous": 0, "test": 0, "progress": 0, "mdns_type_": 0, "dure": 0, "which": 0, "activ": 0, "maximum": 0, "collect": 0, "notif": 0, "readi": 0, "mdns_search_once_": 0, "successfulli": 0, "otherwis": 0, "mdns_query_gener": 0, "mdns_query_transmission_type_t": 0, "transmission_typ": 0, "gener": 0, "follow": 0, "deriv": 0, "one": 0, "either": 0, "unicast": 0, "below": 0, "mdns_queri": 0, "send": 0, "mdns_query_srv": 0, "mdns_query_txt": 0, "esp_ip4_addr_t": 0, "look": 0, "mdns_register_netif": 0, "esp_netif_t": 0, "esp_netif": 0, "preconfigur": 0, "ani": 0, "standard": 0, "wifi": 0, "ethernet": 0, "driver": 0, "kind": 0, "esp": 0, "netif": 0, "alreadi": 0, "enough": 0, "see": 0, "config_mdns_max_interfac": 0, "mdns_unregister_netif": 0, "unregist": 0, "mdns_netif_act": 0, "mdns_event_actions_t": 0, "event_act": 0, "desir": 0, "state": 0, "action": 0, "disabl": 0, "announc": 0, "packet": 0, "probe": 0, "conflict": 0, "bye": 0, "specifi": 0, "specif": 0, "could": 0, "connect": 0, "them": 0, "disconnect": 0, "ipv4": 0, "basic": 0, "text": 0, "public": 0, "member": 0, "mdns_ip_addr_": 0, "esp_ip_addr_t": 0, "last": 0, "mdns_result_": 0, "ttl": 0, "live": 0, "mdns_ip_protocol_t": 0, "srevic": 0, "txt_value_len": 0, "len": 0, "mdns_type_a": 0, "mdns_type_ptr": 0, "mdns_type_txt": 0, "mdns_type_aaaa": 0, "mdns_type_srv": 0, "mdns_type_opt": 0, "mdns_type_nsec": 0, "mdns_type_ani": 0, "typedef": 0, "asynchron": 0, "handl": 0, "enum": 0, "mdns_event_enable_ip4": 0, "mdns_event_enable_ip6": 0, "mdns_event_announce_ip4": 0, "mdns_event_announce_ip6": 0, "mdns_event_disable_ip4": 0, "mdns_event_disable_ip6": 0, "mdns_ip_protocol_v4": 0, "mdns_ip_protocol_v6": 0, "mdns_ip_protocol_max": 0, "explicitli": 0, "mdns_query_unicast": 0, "mdns_query_multicast": 0}, "objects": {"": [[0, 0, 1, "c.MDNS_TYPE_A", "MDNS_TYPE_A"], [0, 0, 1, "c.MDNS_TYPE_AAAA", "MDNS_TYPE_AAAA"], [0, 0, 1, "c.MDNS_TYPE_ANY", "MDNS_TYPE_ANY"], [0, 0, 1, "c.MDNS_TYPE_NSEC", "MDNS_TYPE_NSEC"], [0, 0, 1, "c.MDNS_TYPE_OPT", "MDNS_TYPE_OPT"], [0, 0, 1, "c.MDNS_TYPE_PTR", "MDNS_TYPE_PTR"], [0, 0, 1, "c.MDNS_TYPE_SRV", "MDNS_TYPE_SRV"], [0, 0, 1, "c.MDNS_TYPE_TXT", "MDNS_TYPE_TXT"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "MDNS_EVENT_ENABLE_IP6"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "MDNS_IP_PROTOCOL_V6"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::address_list"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::hostname"], [0, 2, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove"], [0, 3, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove::hostname"], [0, 4, 1, "_CPPv420mdns_event_actions_t", "mdns_event_actions_t"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP6"], [0, 2, 1, "_CPPv49mdns_freev", "mdns_free"], [0, 2, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists"], [0, 3, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists::hostname"], [0, 2, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set"], [0, 3, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set::hostname"], [0, 2, 1, "_CPPv49mdns_initv", "mdns_init"], [0, 2, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set"], [0, 3, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set::instance_name"], [0, 5, 1, "_CPPv414mdns_ip_addr_s", "mdns_ip_addr_s"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4addrE", "mdns_ip_addr_s::addr"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4nextE", "mdns_ip_addr_s::next"], [0, 7, 1, "_CPPv414mdns_ip_addr_t", "mdns_ip_addr_t"], [0, 4, 1, "_CPPv418mdns_ip_protocol_t", "mdns_ip_protocol_t"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V6"], [0, 2, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::esp_netif"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::event_action"], [0, 2, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::max_results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::name"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::proto"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::service_type"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::timeout"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::type"], [0, 2, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::addr"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::host_name"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::timeout"], [0, 2, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete"], [0, 3, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete::search"], [0, 2, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::num_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::search"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::timeout"], [0, 2, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::max_results"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::name"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::notifier"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::proto"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::service_type"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::timeout"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::type"], [0, 2, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::max_results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::name"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::proto"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::service_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::timeout"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::transmission_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::type"], [0, 7, 1, "_CPPv419mdns_query_notify_t", "mdns_query_notify_t"], [0, 2, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::max_results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::proto"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::service_type"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::timeout"], [0, 2, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free"], [0, 3, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free::results"], [0, 2, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::instance_name"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::proto"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::result"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::service_type"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::timeout"], [0, 4, 1, "_CPPv430mdns_query_transmission_type_t", "mdns_query_transmission_type_t"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::instance_name"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::proto"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::result"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::service_type"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::timeout"], [0, 2, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif"], [0, 3, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif::esp_netif"], [0, 5, 1, "_CPPv413mdns_result_s", "mdns_result_s"], [0, 6, 1, "_CPPv4N13mdns_result_s4addrE", "mdns_result_s::addr"], [0, 6, 1, "_CPPv4N13mdns_result_s9esp_netifE", "mdns_result_s::esp_netif"], [0, 6, 1, "_CPPv4N13mdns_result_s8hostnameE", "mdns_result_s::hostname"], [0, 6, 1, "_CPPv4N13mdns_result_s13instance_nameE", "mdns_result_s::instance_name"], [0, 6, 1, "_CPPv4N13mdns_result_s11ip_protocolE", "mdns_result_s::ip_protocol"], [0, 6, 1, "_CPPv4N13mdns_result_s4nextE", "mdns_result_s::next"], [0, 6, 1, "_CPPv4N13mdns_result_s4portE", "mdns_result_s::port"], [0, 6, 1, "_CPPv4N13mdns_result_s5protoE", "mdns_result_s::proto"], [0, 6, 1, "_CPPv4N13mdns_result_s12service_typeE", "mdns_result_s::service_type"], [0, 6, 1, "_CPPv4N13mdns_result_s3ttlE", "mdns_result_s::ttl"], [0, 6, 1, "_CPPv4N13mdns_result_s3txtE", "mdns_result_s::txt"], [0, 6, 1, "_CPPv4N13mdns_result_s9txt_countE", "mdns_result_s::txt_count"], [0, 6, 1, "_CPPv4N13mdns_result_s13txt_value_lenE", "mdns_result_s::txt_value_len"], [0, 7, 1, "_CPPv413mdns_result_t", "mdns_result_t"], [0, 7, 1, "_CPPv418mdns_search_once_t", "mdns_search_once_t"], [0, 2, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::instance_name"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::num_items"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::port"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::proto"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::service_type"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::txt"], [0, 2, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::hostname"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::instance_name"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::num_items"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::port"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::proto"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::service_type"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::txt"], [0, 2, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::hostname"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::proto"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::service_type"], [0, 2, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::hostname"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::proto"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::service_type"], [0, 2, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::instance_name"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::proto"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::service_type"], [0, 2, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::hostname"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_name"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_old"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::proto"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::service_type"], [0, 2, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::port"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::proto"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::service_type"], [0, 2, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::hostname"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::instance"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::port"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::proto"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::service_type"], [0, 2, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::proto"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::service_type"], [0, 2, 1, "_CPPv423mdns_service_remove_allv", "mdns_service_remove_all"], [0, 2, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::hostname"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::instance"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::proto"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::service_type"], [0, 2, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::hostname"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::instance_name"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::proto"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::service_type"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::subtype"], [0, 2, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::key"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::proto"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::service_type"], [0, 2, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::hostname"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::instance"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::key"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::proto"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::service_type"], [0, 2, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::key"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::proto"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::service_type"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::value"], [0, 2, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::hostname"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::instance"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::key"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::proto"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::service_type"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::value"], [0, 2, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::hostname"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::instance"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::key"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::key"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::num_items"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::proto"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::service_type"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::txt"], [0, 2, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::hostname"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::instance"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::num_items"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::proto"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::service_type"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::txt"], [0, 5, 1, "_CPPv415mdns_txt_item_t", "mdns_txt_item_t"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t3keyE", "mdns_txt_item_t::key"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t5valueE", "mdns_txt_item_t::value"], [0, 2, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif"], [0, 3, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif::esp_netif"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:function", "3": "cpp:functionParam", "4": "cpp:enum", "5": "cpp:class", "6": "cpp:member", "7": "cpp:type"}, "objnames": {"0": ["c", "macro", "C macro"], "1": ["cpp", "enumerator", "C++ enumerator"], "2": ["cpp", "function", "C++ function"], "3": ["cpp", "functionParam", "C++ function parameter"], "4": ["cpp", "enum", "C++ enum"], "5": ["cpp", "class", "C++ class"], "6": ["cpp", "member", "C++ member"], "7": ["cpp", "type", "C++ type"]}, "titleterms": {"mdn": 0, "servic": 0, "overview": 0, "properti": 0, "queri": 0, "perform": 0, "optim": 0, "execut": 0, "speed": 0, "minim": 0, "ram": 0, "usag": 0, "applic": 0, "exampl": 0, "api": 0, "refer": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "macro": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"mDNS Service": [[0, "mdns-service"]], "Overview": [[0, "overview"]], "mDNS Properties": [[0, "mdns-properties"]], "mDNS Services": [[0, "mdns-services"]], "mDNS Query": [[0, "mdns-query"]], "Performance Optimization": [[0, "performance-optimization"]], "Execution Speed": [[0, "execution-speed"]], "Minimizing RAM Usage": [[0, "minimizing-ram-usage"]], "Application Example": [[0, "application-example"]], "API Reference": [[0, "api-reference"]], "Header File": [[0, "header-file"]], "Functions": [[0, "functions"]], "Structures": [[0, "structures"]], "Macros": [[0, "macros"]], "Type Definitions": [[0, "type-definitions"]], "Enumerations": [[0, "enumerations"]]}, "indexentries": {"mdns_type_a (c macro)": [[0, "c.MDNS_TYPE_A"]], "mdns_type_aaaa (c macro)": [[0, "c.MDNS_TYPE_AAAA"]], "mdns_type_any (c macro)": [[0, "c.MDNS_TYPE_ANY"]], "mdns_type_nsec (c macro)": [[0, "c.MDNS_TYPE_NSEC"]], "mdns_type_opt (c macro)": [[0, "c.MDNS_TYPE_OPT"]], "mdns_type_ptr (c macro)": [[0, "c.MDNS_TYPE_PTR"]], "mdns_type_srv (c macro)": [[0, "c.MDNS_TYPE_SRV"]], "mdns_type_txt (c macro)": [[0, "c.MDNS_TYPE_TXT"]], "mdns_delegate_hostname_add (c++ function)": [[0, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t"]], "mdns_delegate_hostname_remove (c++ function)": [[0, "_CPPv429mdns_delegate_hostname_removePKc"]], "mdns_event_actions_t (c++ enum)": [[0, "_CPPv420mdns_event_actions_t"]], "mdns_event_actions_t::mdns_event_announce_ip4 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E"]], "mdns_event_actions_t::mdns_event_announce_ip6 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E"]], "mdns_event_actions_t::mdns_event_disable_ip4 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E"]], "mdns_event_actions_t::mdns_event_disable_ip6 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E"]], "mdns_event_actions_t::mdns_event_enable_ip4 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E"]], "mdns_event_actions_t::mdns_event_enable_ip6 (c++ enumerator)": [[0, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E"]], "mdns_free (c++ function)": [[0, "_CPPv49mdns_freev"]], "mdns_hostname_exists (c++ function)": [[0, "_CPPv420mdns_hostname_existsPKc"]], "mdns_hostname_set (c++ function)": [[0, "_CPPv417mdns_hostname_setPKc"]], "mdns_init (c++ function)": [[0, "_CPPv49mdns_initv"]], "mdns_instance_name_set (c++ function)": [[0, "_CPPv422mdns_instance_name_setPKc"]], "mdns_ip_addr_s (c++ struct)": [[0, "_CPPv414mdns_ip_addr_s"]], "mdns_ip_addr_s::addr (c++ member)": [[0, "_CPPv4N14mdns_ip_addr_s4addrE"]], "mdns_ip_addr_s::next (c++ member)": [[0, "_CPPv4N14mdns_ip_addr_s4nextE"]], "mdns_ip_addr_t (c++ type)": [[0, "_CPPv414mdns_ip_addr_t"]], "mdns_ip_protocol_t (c++ enum)": [[0, "_CPPv418mdns_ip_protocol_t"]], "mdns_ip_protocol_t::mdns_ip_protocol_max (c++ enumerator)": [[0, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE"]], "mdns_ip_protocol_t::mdns_ip_protocol_v4 (c++ enumerator)": [[0, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E"]], "mdns_ip_protocol_t::mdns_ip_protocol_v6 (c++ enumerator)": [[0, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E"]], "mdns_netif_action (c++ function)": [[0, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t"]], "mdns_query (c++ function)": [[0, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t"]], "mdns_query_a (c++ function)": [[0, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t"]], "mdns_query_async_delete (c++ function)": [[0, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t"]], "mdns_query_async_get_results (c++ function)": [[0, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t"]], "mdns_query_async_new (c++ function)": [[0, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t"]], "mdns_query_generic (c++ function)": [[0, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t"]], "mdns_query_notify_t (c++ type)": [[0, "_CPPv419mdns_query_notify_t"]], "mdns_query_ptr (c++ function)": [[0, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t"]], "mdns_query_results_free (c++ function)": [[0, "_CPPv423mdns_query_results_freeP13mdns_result_t"]], "mdns_query_srv (c++ function)": [[0, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t"]], "mdns_query_transmission_type_t (c++ enum)": [[0, "_CPPv430mdns_query_transmission_type_t"]], "mdns_query_transmission_type_t::mdns_query_multicast (c++ enumerator)": [[0, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE"]], "mdns_query_transmission_type_t::mdns_query_unicast (c++ enumerator)": [[0, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE"]], "mdns_query_txt (c++ function)": [[0, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t"]], "mdns_register_netif (c++ function)": [[0, "_CPPv419mdns_register_netifP11esp_netif_t"]], "mdns_result_s (c++ struct)": [[0, "_CPPv413mdns_result_s"]], "mdns_result_s::addr (c++ member)": [[0, "_CPPv4N13mdns_result_s4addrE"]], "mdns_result_s::esp_netif (c++ member)": [[0, "_CPPv4N13mdns_result_s9esp_netifE"]], "mdns_result_s::hostname (c++ member)": [[0, "_CPPv4N13mdns_result_s8hostnameE"]], "mdns_result_s::instance_name (c++ member)": [[0, "_CPPv4N13mdns_result_s13instance_nameE"]], "mdns_result_s::ip_protocol (c++ member)": [[0, "_CPPv4N13mdns_result_s11ip_protocolE"]], "mdns_result_s::next (c++ member)": [[0, "_CPPv4N13mdns_result_s4nextE"]], "mdns_result_s::port (c++ member)": [[0, "_CPPv4N13mdns_result_s4portE"]], "mdns_result_s::proto (c++ member)": [[0, "_CPPv4N13mdns_result_s5protoE"]], "mdns_result_s::service_type (c++ member)": [[0, "_CPPv4N13mdns_result_s12service_typeE"]], "mdns_result_s::ttl (c++ member)": [[0, "_CPPv4N13mdns_result_s3ttlE"]], "mdns_result_s::txt (c++ member)": [[0, "_CPPv4N13mdns_result_s3txtE"]], "mdns_result_s::txt_count (c++ member)": [[0, "_CPPv4N13mdns_result_s9txt_countE"]], "mdns_result_s::txt_value_len (c++ member)": [[0, "_CPPv4N13mdns_result_s13txt_value_lenE"]], "mdns_result_t (c++ type)": [[0, "_CPPv413mdns_result_t"]], "mdns_search_once_t (c++ type)": [[0, "_CPPv418mdns_search_once_t"]], "mdns_service_add (c++ function)": [[0, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t"]], "mdns_service_add_for_host (c++ function)": [[0, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t"]], "mdns_service_exists (c++ function)": [[0, "_CPPv419mdns_service_existsPKcPKcPKc"]], "mdns_service_exists_with_instance (c++ function)": [[0, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc"]], "mdns_service_instance_name_set (c++ function)": [[0, "_CPPv430mdns_service_instance_name_setPKcPKcPKc"]], "mdns_service_instance_name_set_for_host (c++ function)": [[0, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_port_set (c++ function)": [[0, "_CPPv421mdns_service_port_setPKcPKc8uint16_t"]], "mdns_service_port_set_for_host (c++ function)": [[0, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t"]], "mdns_service_remove (c++ function)": [[0, "_CPPv419mdns_service_removePKcPKc"]], "mdns_service_remove_all (c++ function)": [[0, "_CPPv423mdns_service_remove_allv"]], "mdns_service_remove_for_host (c++ function)": [[0, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc"]], "mdns_service_subtype_add_for_host (c++ function)": [[0, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_remove (c++ function)": [[0, "_CPPv428mdns_service_txt_item_removePKcPKcPKc"]], "mdns_service_txt_item_remove_for_host (c++ function)": [[0, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_set (c++ function)": [[0, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc"]], "mdns_service_txt_item_set_for_host (c++ function)": [[0, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_set_for_host_with_explicit_value_len (c++ function)": [[0, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t"]], "mdns_service_txt_item_set_with_explicit_value_len (c++ function)": [[0, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t"]], "mdns_service_txt_set (c++ function)": [[0, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t"]], "mdns_service_txt_set_for_host (c++ function)": [[0, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t"]], "mdns_txt_item_t (c++ struct)": [[0, "_CPPv415mdns_txt_item_t"]], "mdns_txt_item_t::key (c++ member)": [[0, "_CPPv4N15mdns_txt_item_t3keyE"]], "mdns_txt_item_t::value (c++ member)": [[0, "_CPPv4N15mdns_txt_item_t5valueE"]], "mdns_unregister_netif (c++ function)": [[0, "_CPPv421mdns_unregister_netifP11esp_netif_t"]]}}) \ No newline at end of file diff --git a/mdns/zh_CN/.buildinfo b/mdns/zh_CN/.buildinfo index 8d38293fd..9f9362220 100644 --- a/mdns/zh_CN/.buildinfo +++ b/mdns/zh_CN/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: aae3f67767183490dfce579bf34d72be +config: ad680e541a9400d9e85e0b17096ae589 tags: 549b3d6d0415232fb7e35403b330ff49 diff --git a/mdns/zh_CN/_static/doctools.js b/mdns/zh_CN/_static/doctools.js index c3db08d1c..527b876ca 100644 --- a/mdns/zh_CN/_static/doctools.js +++ b/mdns/zh_CN/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/mdns/zh_CN/_static/pygments.css b/mdns/zh_CN/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/mdns/zh_CN/_static/pygments.css +++ b/mdns/zh_CN/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/mdns/zh_CN/_static/searchtools.js b/mdns/zh_CN/_static/searchtools.js index f2fb7d5cf..e89e34d4e 100644 --- a/mdns/zh_CN/_static/searchtools.js +++ b/mdns/zh_CN/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/mdns/zh_CN/_static/sphinx_highlight.js b/mdns/zh_CN/_static/sphinx_highlight.js new file mode 100644 index 000000000..aae669d7e --- /dev/null +++ b/mdns/zh_CN/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/mdns/zh_CN/genindex.html b/mdns/zh_CN/genindex.html index dcc969294..eaad00bb2 100644 --- a/mdns/zh_CN/genindex.html +++ b/mdns/zh_CN/genindex.html @@ -17,6 +17,7 @@ + @@ -91,7 +92,7 @@
  • »
  • 索引
  • - 在 GitHub 上修改 + 在 GitHub 上修改

  • diff --git a/mdns/zh_CN/index.html b/mdns/zh_CN/index.html index f79f03505..03844e90e 100644 --- a/mdns/zh_CN/index.html +++ b/mdns/zh_CN/index.html @@ -18,6 +18,7 @@ + @@ -113,7 +114,7 @@
  • »
  • mDNS 服务
  • - 在 GitHub 上修改 + 在 GitHub 上修改

  • @@ -137,20 +138,20 @@

    以下为 STA 接口启动 mDNS 服务并设置 hostnamedefault_instance 的示例方法:

    -
    void start_mdns_service()
    -{
    -    // 初始化 mDNS 服务
    -    esp_err_t err = mdns_init();
    -    if (err) {
    -        printf("MDNS Init failed: %d\n", err);
    -        return;
    -    }
    +
    void start_mdns_service()
    +{
    +    // 初始化 mDNS 服务
    +    esp_err_t err = mdns_init();
    +    if (err) {
    +        printf("MDNS Init failed: %d\n", err);
    +        return;
    +    }
     
    -    // 设置 hostname
    -    mdns_hostname_set("my-esp32");
    -    // 设置默认实例
    -    mdns_instance_name_set("Jhon's ESP32 Thing");
    -}
    +    // 设置 hostname
    +    mdns_hostname_set("my-esp32");
    +    // 设置默认实例
    +    mdns_instance_name_set("Jhon's ESP32 Thing");
    +}
     
    @@ -167,28 +168,28 @@

    添加一些服务和不同属性的示例方法:

    -
    void add_mdns_services()
    -{
    -    // 添加服务
    -    mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0);
    -    mdns_service_add(NULL, "_arduino", "_tcp", 3232, NULL, 0);
    -    mdns_service_add(NULL, "_myservice", "_udp", 1234, NULL, 0);
    +
    void add_mdns_services()
    +{
    +    // 添加服务
    +    mdns_service_add(NULL, "_http", "_tcp", 80, NULL, 0);
    +    mdns_service_add(NULL, "_arduino", "_tcp", 3232, NULL, 0);
    +    mdns_service_add(NULL, "_myservice", "_udp", 1234, NULL, 0);
     
    -    // 注意:必须先添加服务,然后才能设置其属性
    -    // web 服务器使用自定义的实例名
    -    mdns_service_instance_name_set("_http", "_tcp", "Jhon's ESP32 Web Server");
    +    // 注意:必须先添加服务,然后才能设置其属性
    +    // web 服务器使用自定义的实例名
    +    mdns_service_instance_name_set("_http", "_tcp", "Jhon's ESP32 Web Server");
     
    -    mdns_txt_item_t serviceTxtData[3] = {
    -        {"board","esp32"},
    -        {"u","user"},
    -        {"p","password"}
    -    };
    -    // 设置服务的文本数据(会释放并替换当前数据)
    -    mdns_service_txt_set("_http", "_tcp", serviceTxtData, 3);
    +    mdns_txt_item_t serviceTxtData[3] = {
    +        {"board","esp32"},
    +        {"u","user"},
    +        {"p","password"}
    +    };
    +    // 设置服务的文本数据(会释放并替换当前数据)
    +    mdns_service_txt_set("_http", "_tcp", serviceTxtData, 3);
     
    -    // 修改服务端口号
    -    mdns_service_port_set("_myservice", "_udp", 4321);
    -}
    +    // 修改服务端口号
    +    mdns_service_port_set("_myservice", "_udp", 4321);
    +}
     
    @@ -197,114 +198,114 @@

    mDNS 提供查询服务和解析主机 IP/IPv6 地址的方法。

    服务查询的结果会作为 mdns_result_t 类型对象的链表返回。

    解析主机 IP 地址的示例方法:

    -
    void resolve_mdns_host(const char * host_name)
    -{
    -    printf("Query A: %s.local", host_name);
    +
    void resolve_mdns_host(const char * host_name)
    +{
    +    printf("Query A: %s.local", host_name);
     
    -    struct ip4_addr addr;
    -    addr.addr = 0;
    +    struct ip4_addr addr;
    +    addr.addr = 0;
     
    -    esp_err_t err = mdns_query_a(host_name, 2000,  &addr);
    -    if(err){
    -        if(err == ESP_ERR_NOT_FOUND){
    -            printf("Host was not found!");
    -            return;
    -        }
    -        printf("Query Failed");
    -        return;
    -    }
    +    esp_err_t err = mdns_query_a(host_name, 2000,  &addr);
    +    if(err){
    +        if(err == ESP_ERR_NOT_FOUND){
    +            printf("Host was not found!");
    +            return;
    +        }
    +        printf("Query Failed");
    +        return;
    +    }
     
    -    printf(IPSTR, IP2STR(&addr));
    -}
    +    printf(IPSTR, IP2STR(&addr));
    +}
     

    解析本地服务的示例方法:

    -
    static const char * if_str[] = {"STA", "AP", "ETH", "MAX"};
    -static const char * ip_protocol_str[] = {"V4", "V6", "MAX"};
    +
    static const char * if_str[] = {"STA", "AP", "ETH", "MAX"};
    +static const char * ip_protocol_str[] = {"V4", "V6", "MAX"};
     
    -void mdns_print_results(mdns_result_t * results){
    -    mdns_result_t * r = results;
    -    mdns_ip_addr_t * a = NULL;
    -    int i = 1, t;
    -    while(r){
    -        printf("%d: Interface: %s, Type: %s\n", i++, if_str[r->tcpip_if], ip_protocol_str[r->ip_protocol]);
    -        if(r->instance_name){
    -            printf("  PTR : %s\n", r->instance_name);
    -        }
    -        if(r->hostname){
    -            printf("  SRV : %s.local:%u\n", r->hostname, r->port);
    -        }
    -        if(r->txt_count){
    -            printf("  TXT : [%u] ", r->txt_count);
    -            for(t=0; t<r->txt_count; t++){
    -                printf("%s=%s; ", r->txt[t].key, r->txt[t].value);
    -            }
    -            printf("\n");
    -        }
    -        a = r->addr;
    -        while(a){
    -            if(a->addr.type == IPADDR_TYPE_V6){
    -                printf("  AAAA: " IPV6STR "\n", IPV62STR(a->addr.u_addr.ip6));
    -            } else {
    -                printf("  A   : " IPSTR "\n", IP2STR(&(a->addr.u_addr.ip4)));
    -            }
    -            a = a->next;
    -        }
    -        r = r->next;
    -    }
    +void mdns_print_results(mdns_result_t * results){
    +    mdns_result_t * r = results;
    +    mdns_ip_addr_t * a = NULL;
    +    int i = 1, t;
    +    while(r){
    +        printf("%d: Interface: %s, Type: %s\n", i++, if_str[r->tcpip_if], ip_protocol_str[r->ip_protocol]);
    +        if(r->instance_name){
    +            printf("  PTR : %s\n", r->instance_name);
    +        }
    +        if(r->hostname){
    +            printf("  SRV : %s.local:%u\n", r->hostname, r->port);
    +        }
    +        if(r->txt_count){
    +            printf("  TXT : [%u] ", r->txt_count);
    +            for(t=0; t<r->txt_count; t++){
    +                printf("%s=%s; ", r->txt[t].key, r->txt[t].value);
    +            }
    +            printf("\n");
    +        }
    +        a = r->addr;
    +        while(a){
    +            if(a->addr.type == IPADDR_TYPE_V6){
    +                printf("  AAAA: " IPV6STR "\n", IPV62STR(a->addr.u_addr.ip6));
    +            } else {
    +                printf("  A   : " IPSTR "\n", IP2STR(&(a->addr.u_addr.ip4)));
    +            }
    +            a = a->next;
    +        }
    +        r = r->next;
    +    }
     
    -}
    +}
     
    -void find_mdns_service(const char * service_name, const char * proto)
    -{
    -    ESP_LOGI(TAG, "Query PTR: %s.%s.local", service_name, proto);
    +void find_mdns_service(const char * service_name, const char * proto)
    +{
    +    ESP_LOGI(TAG, "Query PTR: %s.%s.local", service_name, proto);
     
    -    mdns_result_t * results = NULL;
    -    esp_err_t err = mdns_query_ptr(service_name, proto, 3000, 20,  &results);
    -    if(err){
    -        ESP_LOGE(TAG, "Query Failed");
    -        return;
    -    }
    -    if(!results){
    -        ESP_LOGW(TAG, "No results found!");
    -        return;
    -    }
    +    mdns_result_t * results = NULL;
    +    esp_err_t err = mdns_query_ptr(service_name, proto, 3000, 20,  &results);
    +    if(err){
    +        ESP_LOGE(TAG, "Query Failed");
    +        return;
    +    }
    +    if(!results){
    +        ESP_LOGW(TAG, "No results found!");
    +        return;
    +    }
     
    -    mdns_print_results(results);
    -    mdns_query_results_free(results);
    -}
    +    mdns_print_results(results);
    +    mdns_query_results_free(results);
    +}
     

    使用上述方法的示例:

    -
    void my_app_some_method(){
    -    // 搜索 esp32-mdns.local
    -    resolve_mdns_host("esp32-mdns");
    +
    void my_app_some_method(){
    +    // 搜索 esp32-mdns.local
    +    resolve_mdns_host("esp32-mdns");
     
    -    // 搜索 HTTP 服务器
    -    find_mdns_service("_http", "_tcp");
    -    // 或者搜索文件服务器
    -    find_mdns_service("_smb", "_tcp"); // Windows 系统的共享服务
    -    find_mdns_service("_afpovertcp", "_tcp"); // Apple AFP 文件共享服务
    -    find_mdns_service("_nfs", "_tcp"); // NFS 服务器
    -    find_mdns_service("_ftp", "_tcp"); // FTP 服务器
    -    // 或者网络打印机
    -    find_mdns_service("_printer", "_tcp");
    -    find_mdns_service("_ipp", "_tcp");
    -}
    +    // 搜索 HTTP 服务器
    +    find_mdns_service("_http", "_tcp");
    +    // 或者搜索文件服务器
    +    find_mdns_service("_smb", "_tcp"); // Windows 系统的共享服务
    +    find_mdns_service("_afpovertcp", "_tcp"); // Apple AFP 文件共享服务
    +    find_mdns_service("_nfs", "_tcp"); // NFS 服务器
    +    find_mdns_service("_ftp", "_tcp"); // FTP 服务器
    +    // 或者网络打印机
    +    find_mdns_service("_printer", "_tcp");
    +    find_mdns_service("_ipp", "_tcp");
    +}
     

    应用示例

    -

    有关 mDNS 服务器和查询器的应用示例请参考

    +

    有关 mDNS 服务器和查询器的应用示例请参考

    API 参考

    Header File

    diff --git a/mdns/zh_CN/search.html b/mdns/zh_CN/search.html index a60d3ef4d..c09ba4042 100644 --- a/mdns/zh_CN/search.html +++ b/mdns/zh_CN/search.html @@ -18,6 +18,7 @@ + diff --git a/mdns/zh_CN/searchindex.js b/mdns/zh_CN/searchindex.js index a141db97c..b23323446 100644 --- a/mdns/zh_CN/searchindex.js +++ b/mdns/zh_CN/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["mDNS \u670d\u52a1"], "terms": {"english": 0, "udp": 0, "mac": 0, "os": 0, "bonjour": 0, "appl": 0, "window": 0, "linux": 0, "avahi": 0, "hostnam": 0, "my": 0, "esp32": 0, "local": 0, "default_inst": 0, "jhon": 0, "thing": 0, "sta": 0, "void": 0, "start_mdns_servic": 0, "esp_err_t": 0, "err": 0, "mdns_init": 0, "if": 0, "printf": 0, "init": 0, "fail": 0, "return": 0, "mdns_hostname_set": 0, "mdns_instance_name_set": 0, "instance_nam": 0, "web": 0, "server": 0, "service_typ": 0, "proto": 0, "_tcp": 0, "_udp": 0, "port": 0, "txt": 0, "var": 0, "val": 0, "add_mdns_servic": 0, "mdns_service_add": 0, "null": 0, "_http": 0, "80": 0, "_arduino": 0, "3232": 0, "_myservic": 0, "1234": 0, "mdns_service_instance_name_set": 0, "mdns_txt_item_t": 0, "servicetxtdata": 0, "board": 0, "user": 0, "password": 0, "mdns_service_txt_set": 0, "mdns_service_port_set": 0, "4321": 0, "ip": 0, "ipv6": 0, "mdns_result_t": 0, "resolve_mdns_host": 0, "const": 0, "char": 0, "host_nam": 0, "queri": 0, "struct": 0, "ip4_addr": 0, "addr": 0, "mdns_query_a": 0, "2000": 0, "esp_err_not_found": 0, "host": 0, "was": 0, "not": 0, "found": 0, "ipstr": 0, "ip2str": 0, "static": 0, "if_str": 0, "ap": 0, "eth": 0, "max": 0, "ip_protocol_str": 0, "v4": 0, "v6": 0, "mdns_print_result": 0, "result": 0, "mdns_ip_addr_t": 0, "int": 0, "while": 0, "interfac": 0, "tcpip_if": 0, "ip_protocol": 0, "ptr": 0, "srv": 0, "txt_count": 0, "for": 0, "key": 0, "valu": 0, "ipaddr_type_v6": 0, "aaaa": 0, "ipv6str": 0, "ipv62str": 0, "u_addr": 0, "ip6": 0, "els": 0, "ip4": 0, "next": 0, "find_mdns_servic": 0, "service_nam": 0, "esp_log": 0, "tag": 0, "mdns_query_ptr": 0, "3000": 0, "20": 0, "esp_logw": 0, "no": 0, "mdns_query_results_fre": 0, "my_app_some_method": 0, "http": 0, "_smb": 0, "_afpovertcp": 0, "afp": 0, "_nfs": 0, "nfs": 0, "_ftp": 0, "ftp": 0, "_printer": 0, "_ipp": 0, "includ": 0, "initi": 0, "on": 0, "given": 0, "esp_ok": 0, "success": 0, "esp_err_invalid_st": 0, "when": 0, "to": 0, "regist": 0, "event": 0, "handler": 0, "esp_err_no_mem": 0, "memori": 0, "error": 0, "esp_fail": 0, "start": 0, "task": 0, "mdns_free": 0, "stop": 0, "and": 0, "free": 0, "set": 0, "the": 0, "requir": 0, "you": 0, "want": 0, "advertis": 0, "servic": 0, "esp_err_invalid_arg": 0, "paramet": 0, "mdns_delegate_hostname_add": 0, "address_list": 0, "add": 0, "address": 0, "be": 0, "deleg": 0, "will": 0, "repli": 0, "can": 0, "added": 0, "this": 0, "list": 0, "of": 0, "is": 0, "run": 0, "mdns_delegate_hostname_remov": 0, "remov": 0, "all": 0, "also": 0, "bool": 0, "mdns_hostname_exist": 0, "whether": 0, "has": 0, "been": 0, "true": 0, "fals": 0, "default": 0, "instanc": 0, "name": 0, "uint16_t": 0, "size_t": 0, "num_item": 0, "length": 0, "item": 0, "automat": 0, "decid": 0, "by": 0, "strlen": 0, "global": 0, "or": 0, "use": 0, "note": 0, "that": 0, "mdns_multiple_inst": 0, "config": 0, "option": 0, "need": 0, "enabl": 0, "adding": 0, "multipl": 0, "with": 0, "same": 0, "etc": 0, "protocol": 0, "string": 0, "array": 0, "data": 0, "eg": 0, "other": 0, "number": 0, "in": 0, "mdns_service_add_for_host": 0, "mdns_service_exist": 0, "check": 0, "correspond": 0, "mdns_service_exists_with_inst": 0, "mdns_service_remov": 0, "from": 0, "mdns_service_remove_for_host": 0, "mdns_service_instance_name_set_for_host": 0, "instance_old": 0, "origin": 0, "mdns_service_port_set_for_host": 0, "uint8_t": 0, "replac": 0, "mdns_service_txt_set_for_host": 0, "mdns_service_txt_item_set": 0, "record": 0, "updat": 0, "new": 0, "mdns_service_txt_item_set_with_explicit_value_len": 0, "value_len": 0, "mdns_service_txt_item_set_for_host": 0, "mdns_service_txt_item_set_for_host_with_explicit_value_len": 0, "mdns_service_txt_item_remov": 0, "mdns_service_txt_item_remove_for_host": 0, "mdns_service_subtype_add_for_host": 0, "subtyp": 0, "find": 0, "first": 0, "mdns_service_remove_al": 0, "mdns_query_async_delet": 0, "mdns_search_once_t": 0, "search": 0, "delet": 0, "finish": 0, "call": 0, "onli": 0, "after": 0, "end": 0, "pointer": 0, "object": 0, "mdns_query_async_get_result": 0, "uint32_t": 0, "timeout": 0, "num_result": 0, "get": 0, "avail": 0, "as": 0, "output": 0, "via": 0, "onc": 0, "although": 0, "have": 0, "freed": 0, "manual": 0, "time": 0, "millisecond": 0, "wait": 0, "answer": 0, "actual": 0, "ignor": 0, "befor": 0, "at": 0, "over": 0, "mdns_query_async_new": 0, "max_result": 0, "mdns_query_notify_t": 0, "notifi": 0, "asynchronous": 0, "test": 0, "progress": 0, "mdns_type_": 0, "dure": 0, "which": 0, "activ": 0, "maximum": 0, "collect": 0, "notif": 0, "readi": 0, "mdns_search_once_": 0, "otherwis": 0, "mdns_query_gener": 0, "mdns_query_transmission_type_t": 0, "transmission_typ": 0, "generic": 0, "follow": 0, "method": 0, "are": 0, "deriv": 0, "one": 0, "either": 0, "unicast": 0, "multicast": 0, "must": 0, "below": 0, "mdns_queri": 0, "send": 0, "link": 0, "mdns_query_srv": 0, "mdns_query_txt": 0, "esp_ip4_addr_t": 0, "look": 0, "mdns_register_netif": 0, "esp_netif_t": 0, "esp_netif": 0, "custom": 0, "preconfigur": 0, "ani": 0, "standard": 0, "wifi": 0, "ethernet": 0, "driver": 0, "kind": 0, "defin": 0, "esp": 0, "netif": 0, "alreadi": 0, "enough": 0, "see": 0, "config_mdns_max_interfac": 0, "mdns_unregister_netif": 0, "unregist": 0, "mdns_netif_act": 0, "mdns_event_actions_t": 0, "event_act": 0, "desir": 0, "state": 0, "perform": 0, "action": 0, "such": 0, "disabl": 0, "announc": 0, "packet": 0, "probe": 0, "resolv": 0, "conflict": 0, "bye": 0, "specifi": 0, "network": 0, "specif": 0, "could": 0, "connect": 0, "properti": 0, "chang": 0, "them": 0, "disconnect": 0, "ipv4": 0, "basic": 0, "text": 0, "public": 0, "member": 0, "mdns_ip_addr_": 0, "esp_ip_addr_t": 0, "last": 0, "mdns_result_": 0, "ttl": 0, "live": 0, "mdns_ip_protocol_t": 0, "srevic": 0, "txt_value_len": 0, "len": 0, "each": 0, "mdns_type_a": 0, "mdns_type_ptr": 0, "mdns_type_txt": 0, "mdns_type_aaaa": 0, "mdns_type_srv": 0, "mdns_type_opt": 0, "mdns_type_nsec": 0, "mdns_type_ani": 0, "typedef": 0, "asynchron": 0, "handl": 0, "enum": 0, "mdns_event_enable_ip4": 0, "mdns_event_enable_ip6": 0, "mdns_event_announce_ip4": 0, "mdns_event_announce_ip6": 0, "mdns_event_disable_ip4": 0, "mdns_event_disable_ip6": 0, "mdns_ip_protocol_v4": 0, "mdns_ip_protocol_v6": 0, "mdns_ip_protocol_max": 0, "explicit": 0, "mdns_query_unicast": 0, "mdns_query_multicast": 0}, "objects": {"": [[0, 0, 1, "c.MDNS_TYPE_A", "MDNS_TYPE_A"], [0, 0, 1, "c.MDNS_TYPE_AAAA", "MDNS_TYPE_AAAA"], [0, 0, 1, "c.MDNS_TYPE_ANY", "MDNS_TYPE_ANY"], [0, 0, 1, "c.MDNS_TYPE_NSEC", "MDNS_TYPE_NSEC"], [0, 0, 1, "c.MDNS_TYPE_OPT", "MDNS_TYPE_OPT"], [0, 0, 1, "c.MDNS_TYPE_PTR", "MDNS_TYPE_PTR"], [0, 0, 1, "c.MDNS_TYPE_SRV", "MDNS_TYPE_SRV"], [0, 0, 1, "c.MDNS_TYPE_TXT", "MDNS_TYPE_TXT"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "MDNS_EVENT_ENABLE_IP6"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "MDNS_IP_PROTOCOL_V6"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::address_list"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::hostname"], [0, 2, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove"], [0, 3, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove::hostname"], [0, 4, 1, "_CPPv420mdns_event_actions_t", "mdns_event_actions_t"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP6"], [0, 2, 1, "_CPPv49mdns_freev", "mdns_free"], [0, 2, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists"], [0, 3, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists::hostname"], [0, 2, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set"], [0, 3, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set::hostname"], [0, 2, 1, "_CPPv49mdns_initv", "mdns_init"], [0, 2, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set"], [0, 3, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set::instance_name"], [0, 5, 1, "_CPPv414mdns_ip_addr_s", "mdns_ip_addr_s"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4addrE", "mdns_ip_addr_s::addr"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4nextE", "mdns_ip_addr_s::next"], [0, 7, 1, "_CPPv414mdns_ip_addr_t", "mdns_ip_addr_t"], [0, 4, 1, "_CPPv418mdns_ip_protocol_t", "mdns_ip_protocol_t"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V6"], [0, 2, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::esp_netif"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::event_action"], [0, 2, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::max_results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::name"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::proto"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::service_type"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::timeout"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::type"], [0, 2, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::addr"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::host_name"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::timeout"], [0, 2, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete"], [0, 3, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete::search"], [0, 2, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::num_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::search"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::timeout"], [0, 2, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::max_results"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::name"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::notifier"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::proto"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::service_type"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::timeout"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::type"], [0, 2, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::max_results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::name"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::proto"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::service_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::timeout"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::transmission_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::type"], [0, 7, 1, "_CPPv419mdns_query_notify_t", "mdns_query_notify_t"], [0, 2, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::max_results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::proto"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::service_type"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::timeout"], [0, 2, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free"], [0, 3, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free::results"], [0, 2, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::instance_name"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::proto"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::result"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::service_type"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::timeout"], [0, 4, 1, "_CPPv430mdns_query_transmission_type_t", "mdns_query_transmission_type_t"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::instance_name"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::proto"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::result"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::service_type"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::timeout"], [0, 2, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif"], [0, 3, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif::esp_netif"], [0, 5, 1, "_CPPv413mdns_result_s", "mdns_result_s"], [0, 6, 1, "_CPPv4N13mdns_result_s4addrE", "mdns_result_s::addr"], [0, 6, 1, "_CPPv4N13mdns_result_s9esp_netifE", "mdns_result_s::esp_netif"], [0, 6, 1, "_CPPv4N13mdns_result_s8hostnameE", "mdns_result_s::hostname"], [0, 6, 1, "_CPPv4N13mdns_result_s13instance_nameE", "mdns_result_s::instance_name"], [0, 6, 1, "_CPPv4N13mdns_result_s11ip_protocolE", "mdns_result_s::ip_protocol"], [0, 6, 1, "_CPPv4N13mdns_result_s4nextE", "mdns_result_s::next"], [0, 6, 1, "_CPPv4N13mdns_result_s4portE", "mdns_result_s::port"], [0, 6, 1, "_CPPv4N13mdns_result_s5protoE", "mdns_result_s::proto"], [0, 6, 1, "_CPPv4N13mdns_result_s12service_typeE", "mdns_result_s::service_type"], [0, 6, 1, "_CPPv4N13mdns_result_s3ttlE", "mdns_result_s::ttl"], [0, 6, 1, "_CPPv4N13mdns_result_s3txtE", "mdns_result_s::txt"], [0, 6, 1, "_CPPv4N13mdns_result_s9txt_countE", "mdns_result_s::txt_count"], [0, 6, 1, "_CPPv4N13mdns_result_s13txt_value_lenE", "mdns_result_s::txt_value_len"], [0, 7, 1, "_CPPv413mdns_result_t", "mdns_result_t"], [0, 7, 1, "_CPPv418mdns_search_once_t", "mdns_search_once_t"], [0, 2, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::instance_name"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::num_items"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::port"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::proto"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::service_type"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::txt"], [0, 2, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::hostname"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::instance_name"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::num_items"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::port"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::proto"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::service_type"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::txt"], [0, 2, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::hostname"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::proto"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::service_type"], [0, 2, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::hostname"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::proto"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::service_type"], [0, 2, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::instance_name"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::proto"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::service_type"], [0, 2, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::hostname"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_name"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_old"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::proto"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::service_type"], [0, 2, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::port"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::proto"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::service_type"], [0, 2, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::hostname"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::instance"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::port"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::proto"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::service_type"], [0, 2, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::proto"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::service_type"], [0, 2, 1, "_CPPv423mdns_service_remove_allv", "mdns_service_remove_all"], [0, 2, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::hostname"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::instance"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::proto"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::service_type"], [0, 2, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::hostname"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::instance_name"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::proto"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::service_type"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::subtype"], [0, 2, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::key"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::proto"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::service_type"], [0, 2, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::hostname"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::instance"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::key"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::proto"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::service_type"], [0, 2, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::key"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::proto"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::service_type"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::value"], [0, 2, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::hostname"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::instance"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::key"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::proto"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::service_type"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::value"], [0, 2, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::hostname"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::instance"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::key"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::key"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::num_items"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::proto"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::service_type"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::txt"], [0, 2, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::hostname"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::instance"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::num_items"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::proto"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::service_type"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::txt"], [0, 5, 1, "_CPPv415mdns_txt_item_t", "mdns_txt_item_t"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t3keyE", "mdns_txt_item_t::key"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t5valueE", "mdns_txt_item_t::value"], [0, 2, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif"], [0, 3, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif::esp_netif"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:function", "3": "cpp:functionParam", "4": "cpp:enum", "5": "cpp:class", "6": "cpp:member", "7": "cpp:type"}, "objnames": {"0": ["c", "macro", "C \u5b8f"], "1": ["cpp", "enumerator", "C++ \u679a\u4e3e\u6210\u5458"], "2": ["cpp", "function", "C++ \u51fd\u6570"], "3": ["cpp", "functionParam", "C++ \u51fd\u6570\u53c2\u6570"], "4": ["cpp", "enum", "C++ \u679a\u4e3e"], "5": ["cpp", "class", "C++ \u7c7b"], "6": ["cpp", "member", "C++ \u6210\u5458"], "7": ["cpp", "type", "C++ \u7c7b\u578b"]}, "titleterms": {"mdns": 0, "api": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "macro": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["mDNS \u670d\u52a1"], "terms": {"english": 0, "udp": 0, "mac": 0, "os": 0, "bonjour": 0, "appl": 0, "window": 0, "linux": 0, "avahi": 0, "hostnam": 0, "my": 0, "esp32": 0, "local": 0, "default_inst": 0, "jhon": 0, "thing": 0, "sta": 0, "void": 0, "start_mdns_servic": 0, "esp_err_t": 0, "err": 0, "mdns_init": 0, "if": 0, "printf": 0, "init": 0, "fail": 0, "return": 0, "mdns_hostname_set": 0, "mdns_instance_name_set": 0, "instance_nam": 0, "web": 0, "server": 0, "service_typ": 0, "proto": 0, "_tcp": 0, "_udp": 0, "port": 0, "txt": 0, "var": 0, "val": 0, "add_mdns_servic": 0, "mdns_service_add": 0, "null": 0, "_http": 0, "80": 0, "_arduino": 0, "3232": 0, "_myservic": 0, "1234": 0, "mdns_service_instance_name_set": 0, "mdns_txt_item_t": 0, "servicetxtdata": 0, "board": 0, "user": 0, "password": 0, "mdns_service_txt_set": 0, "mdns_service_port_set": 0, "4321": 0, "ip": 0, "ipv6": 0, "mdns_result_t": 0, "resolve_mdns_host": 0, "const": 0, "char": 0, "host_nam": 0, "queri": 0, "struct": 0, "ip4_addr": 0, "addr": 0, "mdns_query_a": 0, "2000": 0, "esp_err_not_found": 0, "host": 0, "was": 0, "not": 0, "found": 0, "ipstr": 0, "ip2str": 0, "static": 0, "if_str": 0, "ap": 0, "eth": 0, "max": 0, "ip_protocol_str": 0, "v4": 0, "v6": 0, "mdns_print_result": 0, "result": 0, "mdns_ip_addr_t": 0, "int": 0, "while": 0, "interfac": 0, "tcpip_if": 0, "ip_protocol": 0, "ptr": 0, "srv": 0, "txt_count": 0, "for": 0, "key": 0, "valu": 0, "ipaddr_type_v6": 0, "aaaa": 0, "ipv6str": 0, "ipv62str": 0, "u_addr": 0, "ip6": 0, "els": 0, "ip4": 0, "next": 0, "find_mdns_servic": 0, "service_nam": 0, "esp_log": 0, "tag": 0, "mdns_query_ptr": 0, "3000": 0, "20": 0, "esp_logw": 0, "no": 0, "mdns_query_results_fre": 0, "my_app_some_method": 0, "http": 0, "_smb": 0, "_afpovertcp": 0, "afp": 0, "_nfs": 0, "nfs": 0, "_ftp": 0, "ftp": 0, "_printer": 0, "_ipp": 0, "includ": 0, "initi": 0, "on": 0, "given": 0, "esp_ok": 0, "success": 0, "esp_err_invalid_st": 0, "when": 0, "to": 0, "regist": 0, "event": 0, "handler": 0, "esp_err_no_mem": 0, "memori": 0, "error": 0, "esp_fail": 0, "start": 0, "task": 0, "mdns_free": 0, "stop": 0, "and": 0, "free": 0, "set": 0, "the": 0, "requir": 0, "you": 0, "want": 0, "advertis": 0, "servic": 0, "esp_err_invalid_arg": 0, "paramet": 0, "mdns_delegate_hostname_add": 0, "address_list": 0, "add": 0, "address": 0, "be": 0, "deleg": 0, "will": 0, "repli": 0, "can": 0, "added": 0, "this": 0, "list": 0, "of": 0, "is": 0, "run": 0, "mdns_delegate_hostname_remov": 0, "remov": 0, "all": 0, "also": 0, "bool": 0, "mdns_hostname_exist": 0, "whether": 0, "has": 0, "been": 0, "true": 0, "fals": 0, "default": 0, "instanc": 0, "name": 0, "uint16_t": 0, "size_t": 0, "num_item": 0, "length": 0, "item": 0, "automat": 0, "decid": 0, "by": 0, "strlen": 0, "global": 0, "or": 0, "use": 0, "note": 0, "that": 0, "mdns_multiple_inst": 0, "config": 0, "option": 0, "need": 0, "enabl": 0, "adding": 0, "multipl": 0, "with": 0, "same": 0, "etc": 0, "protocol": 0, "string": 0, "array": 0, "data": 0, "eg": 0, "other": 0, "number": 0, "in": 0, "mdns_service_add_for_host": 0, "mdns_service_exist": 0, "check": 0, "correspond": 0, "mdns_service_exists_with_inst": 0, "mdns_service_remov": 0, "from": 0, "mdns_service_remove_for_host": 0, "mdns_service_instance_name_set_for_host": 0, "instance_old": 0, "origin": 0, "mdns_service_port_set_for_host": 0, "uint8_t": 0, "replac": 0, "mdns_service_txt_set_for_host": 0, "mdns_service_txt_item_set": 0, "record": 0, "updat": 0, "new": 0, "mdns_service_txt_item_set_with_explicit_value_len": 0, "value_len": 0, "mdns_service_txt_item_set_for_host": 0, "mdns_service_txt_item_set_for_host_with_explicit_value_len": 0, "mdns_service_txt_item_remov": 0, "mdns_service_txt_item_remove_for_host": 0, "mdns_service_subtype_add_for_host": 0, "subtyp": 0, "find": 0, "first": 0, "mdns_service_remove_al": 0, "mdns_query_async_delet": 0, "mdns_search_once_t": 0, "search": 0, "delet": 0, "finish": 0, "call": 0, "onli": 0, "after": 0, "end": 0, "pointer": 0, "object": 0, "mdns_query_async_get_result": 0, "uint32_t": 0, "timeout": 0, "num_result": 0, "get": 0, "avail": 0, "as": 0, "output": 0, "via": 0, "onc": 0, "although": 0, "have": 0, "freed": 0, "manual": 0, "time": 0, "millisecond": 0, "wait": 0, "answer": 0, "actual": 0, "ignor": 0, "befor": 0, "at": 0, "over": 0, "mdns_query_async_new": 0, "max_result": 0, "mdns_query_notify_t": 0, "notifi": 0, "asynchronous": 0, "test": 0, "progress": 0, "mdns_type_": 0, "dure": 0, "which": 0, "activ": 0, "maximum": 0, "collect": 0, "notif": 0, "readi": 0, "mdns_search_once_": 0, "otherwis": 0, "mdns_query_gener": 0, "mdns_query_transmission_type_t": 0, "transmission_typ": 0, "generic": 0, "follow": 0, "method": 0, "are": 0, "deriv": 0, "one": 0, "either": 0, "unicast": 0, "multicast": 0, "must": 0, "below": 0, "mdns_queri": 0, "send": 0, "link": 0, "mdns_query_srv": 0, "mdns_query_txt": 0, "esp_ip4_addr_t": 0, "look": 0, "mdns_register_netif": 0, "esp_netif_t": 0, "esp_netif": 0, "custom": 0, "preconfigur": 0, "ani": 0, "standard": 0, "wifi": 0, "ethernet": 0, "driver": 0, "kind": 0, "defin": 0, "esp": 0, "netif": 0, "alreadi": 0, "enough": 0, "see": 0, "config_mdns_max_interfac": 0, "mdns_unregister_netif": 0, "unregist": 0, "mdns_netif_act": 0, "mdns_event_actions_t": 0, "event_act": 0, "desir": 0, "state": 0, "perform": 0, "action": 0, "such": 0, "disabl": 0, "announc": 0, "packet": 0, "probe": 0, "resolv": 0, "conflict": 0, "bye": 0, "specifi": 0, "network": 0, "specif": 0, "could": 0, "connect": 0, "properti": 0, "chang": 0, "them": 0, "disconnect": 0, "ipv4": 0, "basic": 0, "text": 0, "public": 0, "member": 0, "mdns_ip_addr_": 0, "esp_ip_addr_t": 0, "last": 0, "mdns_result_": 0, "ttl": 0, "live": 0, "mdns_ip_protocol_t": 0, "srevic": 0, "txt_value_len": 0, "len": 0, "each": 0, "mdns_type_a": 0, "mdns_type_ptr": 0, "mdns_type_txt": 0, "mdns_type_aaaa": 0, "mdns_type_srv": 0, "mdns_type_opt": 0, "mdns_type_nsec": 0, "mdns_type_ani": 0, "typedef": 0, "asynchron": 0, "handl": 0, "enum": 0, "mdns_event_enable_ip4": 0, "mdns_event_enable_ip6": 0, "mdns_event_announce_ip4": 0, "mdns_event_announce_ip6": 0, "mdns_event_disable_ip4": 0, "mdns_event_disable_ip6": 0, "mdns_ip_protocol_v4": 0, "mdns_ip_protocol_v6": 0, "mdns_ip_protocol_max": 0, "explicit": 0, "mdns_query_unicast": 0, "mdns_query_multicast": 0}, "objects": {"": [[0, 0, 1, "c.MDNS_TYPE_A", "MDNS_TYPE_A"], [0, 0, 1, "c.MDNS_TYPE_AAAA", "MDNS_TYPE_AAAA"], [0, 0, 1, "c.MDNS_TYPE_ANY", "MDNS_TYPE_ANY"], [0, 0, 1, "c.MDNS_TYPE_NSEC", "MDNS_TYPE_NSEC"], [0, 0, 1, "c.MDNS_TYPE_OPT", "MDNS_TYPE_OPT"], [0, 0, 1, "c.MDNS_TYPE_PTR", "MDNS_TYPE_PTR"], [0, 0, 1, "c.MDNS_TYPE_SRV", "MDNS_TYPE_SRV"], [0, 0, 1, "c.MDNS_TYPE_TXT", "MDNS_TYPE_TXT"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "MDNS_EVENT_ENABLE_IP6"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "MDNS_IP_PROTOCOL_V6"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::address_list"], [0, 3, 1, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t", "mdns_delegate_hostname_add::hostname"], [0, 2, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove"], [0, 3, 1, "_CPPv429mdns_delegate_hostname_removePKc", "mdns_delegate_hostname_remove::hostname"], [0, 4, 1, "_CPPv420mdns_event_actions_t", "mdns_event_actions_t"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ANNOUNCE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_DISABLE_IP6"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP4"], [0, 1, 1, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E", "mdns_event_actions_t::MDNS_EVENT_ENABLE_IP6"], [0, 2, 1, "_CPPv49mdns_freev", "mdns_free"], [0, 2, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists"], [0, 3, 1, "_CPPv420mdns_hostname_existsPKc", "mdns_hostname_exists::hostname"], [0, 2, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set"], [0, 3, 1, "_CPPv417mdns_hostname_setPKc", "mdns_hostname_set::hostname"], [0, 2, 1, "_CPPv49mdns_initv", "mdns_init"], [0, 2, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set"], [0, 3, 1, "_CPPv422mdns_instance_name_setPKc", "mdns_instance_name_set::instance_name"], [0, 5, 1, "_CPPv414mdns_ip_addr_s", "mdns_ip_addr_s"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4addrE", "mdns_ip_addr_s::addr"], [0, 6, 1, "_CPPv4N14mdns_ip_addr_s4nextE", "mdns_ip_addr_s::next"], [0, 7, 1, "_CPPv414mdns_ip_addr_t", "mdns_ip_addr_t"], [0, 4, 1, "_CPPv418mdns_ip_protocol_t", "mdns_ip_protocol_t"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_MAX"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V4"], [0, 1, 1, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E", "mdns_ip_protocol_t::MDNS_IP_PROTOCOL_V6"], [0, 2, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::esp_netif"], [0, 3, 1, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t", "mdns_netif_action::event_action"], [0, 2, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::max_results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::name"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::proto"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::results"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::service_type"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::timeout"], [0, 3, 1, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t", "mdns_query::type"], [0, 2, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::addr"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::host_name"], [0, 3, 1, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t", "mdns_query_a::timeout"], [0, 2, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete"], [0, 3, 1, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t", "mdns_query_async_delete::search"], [0, 2, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::num_results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::results"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::search"], [0, 3, 1, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t", "mdns_query_async_get_results::timeout"], [0, 2, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::max_results"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::name"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::notifier"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::proto"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::service_type"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::timeout"], [0, 3, 1, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t", "mdns_query_async_new::type"], [0, 2, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::max_results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::name"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::proto"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::results"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::service_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::timeout"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::transmission_type"], [0, 3, 1, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t", "mdns_query_generic::type"], [0, 7, 1, "_CPPv419mdns_query_notify_t", "mdns_query_notify_t"], [0, 2, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::max_results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::proto"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::results"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::service_type"], [0, 3, 1, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t", "mdns_query_ptr::timeout"], [0, 2, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free"], [0, 3, 1, "_CPPv423mdns_query_results_freeP13mdns_result_t", "mdns_query_results_free::results"], [0, 2, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::instance_name"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::proto"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::result"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::service_type"], [0, 3, 1, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_srv::timeout"], [0, 4, 1, "_CPPv430mdns_query_transmission_type_t", "mdns_query_transmission_type_t"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_MULTICAST"], [0, 1, 1, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE", "mdns_query_transmission_type_t::MDNS_QUERY_UNICAST"], [0, 2, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::instance_name"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::proto"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::result"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::service_type"], [0, 3, 1, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t", "mdns_query_txt::timeout"], [0, 2, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif"], [0, 3, 1, "_CPPv419mdns_register_netifP11esp_netif_t", "mdns_register_netif::esp_netif"], [0, 5, 1, "_CPPv413mdns_result_s", "mdns_result_s"], [0, 6, 1, "_CPPv4N13mdns_result_s4addrE", "mdns_result_s::addr"], [0, 6, 1, "_CPPv4N13mdns_result_s9esp_netifE", "mdns_result_s::esp_netif"], [0, 6, 1, "_CPPv4N13mdns_result_s8hostnameE", "mdns_result_s::hostname"], [0, 6, 1, "_CPPv4N13mdns_result_s13instance_nameE", "mdns_result_s::instance_name"], [0, 6, 1, "_CPPv4N13mdns_result_s11ip_protocolE", "mdns_result_s::ip_protocol"], [0, 6, 1, "_CPPv4N13mdns_result_s4nextE", "mdns_result_s::next"], [0, 6, 1, "_CPPv4N13mdns_result_s4portE", "mdns_result_s::port"], [0, 6, 1, "_CPPv4N13mdns_result_s5protoE", "mdns_result_s::proto"], [0, 6, 1, "_CPPv4N13mdns_result_s12service_typeE", "mdns_result_s::service_type"], [0, 6, 1, "_CPPv4N13mdns_result_s3ttlE", "mdns_result_s::ttl"], [0, 6, 1, "_CPPv4N13mdns_result_s3txtE", "mdns_result_s::txt"], [0, 6, 1, "_CPPv4N13mdns_result_s9txt_countE", "mdns_result_s::txt_count"], [0, 6, 1, "_CPPv4N13mdns_result_s13txt_value_lenE", "mdns_result_s::txt_value_len"], [0, 7, 1, "_CPPv413mdns_result_t", "mdns_result_t"], [0, 7, 1, "_CPPv418mdns_search_once_t", "mdns_search_once_t"], [0, 2, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::instance_name"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::num_items"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::port"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::proto"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::service_type"], [0, 3, 1, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add::txt"], [0, 2, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::hostname"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::instance_name"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::num_items"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::port"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::proto"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::service_type"], [0, 3, 1, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t", "mdns_service_add_for_host::txt"], [0, 2, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::hostname"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::proto"], [0, 3, 1, "_CPPv419mdns_service_existsPKcPKcPKc", "mdns_service_exists::service_type"], [0, 2, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::hostname"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::instance"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::proto"], [0, 3, 1, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc", "mdns_service_exists_with_instance::service_type"], [0, 2, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::instance_name"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::proto"], [0, 3, 1, "_CPPv430mdns_service_instance_name_setPKcPKcPKc", "mdns_service_instance_name_set::service_type"], [0, 2, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::hostname"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_name"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::instance_old"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::proto"], [0, 3, 1, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc", "mdns_service_instance_name_set_for_host::service_type"], [0, 2, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::port"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::proto"], [0, 3, 1, "_CPPv421mdns_service_port_setPKcPKc8uint16_t", "mdns_service_port_set::service_type"], [0, 2, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::hostname"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::instance"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::port"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::proto"], [0, 3, 1, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t", "mdns_service_port_set_for_host::service_type"], [0, 2, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::proto"], [0, 3, 1, "_CPPv419mdns_service_removePKcPKc", "mdns_service_remove::service_type"], [0, 2, 1, "_CPPv423mdns_service_remove_allv", "mdns_service_remove_all"], [0, 2, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::hostname"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::instance"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::proto"], [0, 3, 1, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc", "mdns_service_remove_for_host::service_type"], [0, 2, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::hostname"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::instance_name"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::proto"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::service_type"], [0, 3, 1, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc", "mdns_service_subtype_add_for_host::subtype"], [0, 2, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::key"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::proto"], [0, 3, 1, "_CPPv428mdns_service_txt_item_removePKcPKcPKc", "mdns_service_txt_item_remove::service_type"], [0, 2, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::hostname"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::instance"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::key"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::proto"], [0, 3, 1, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc", "mdns_service_txt_item_remove_for_host::service_type"], [0, 2, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::key"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::proto"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::service_type"], [0, 3, 1, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc", "mdns_service_txt_item_set::value"], [0, 2, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::hostname"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::instance"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::key"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::proto"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::service_type"], [0, 3, 1, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc", "mdns_service_txt_item_set_for_host::value"], [0, 2, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::hostname"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::instance"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::key"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value"], [0, 3, 1, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_for_host_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::key"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::proto"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::service_type"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value"], [0, 3, 1, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t", "mdns_service_txt_item_set_with_explicit_value_len::value_len"], [0, 2, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::num_items"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::proto"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::service_type"], [0, 3, 1, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set::txt"], [0, 2, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::hostname"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::instance"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::num_items"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::proto"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::service_type"], [0, 3, 1, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t", "mdns_service_txt_set_for_host::txt"], [0, 5, 1, "_CPPv415mdns_txt_item_t", "mdns_txt_item_t"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t3keyE", "mdns_txt_item_t::key"], [0, 6, 1, "_CPPv4N15mdns_txt_item_t5valueE", "mdns_txt_item_t::value"], [0, 2, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif"], [0, 3, 1, "_CPPv421mdns_unregister_netifP11esp_netif_t", "mdns_unregister_netif::esp_netif"]]}, "objtypes": {"0": "c:macro", "1": "cpp:enumerator", "2": "cpp:function", "3": "cpp:functionParam", "4": "cpp:enum", "5": "cpp:class", "6": "cpp:member", "7": "cpp:type"}, "objnames": {"0": ["c", "macro", "C \u5b8f"], "1": ["cpp", "enumerator", "C++ \u679a\u4e3e\u6210\u5458"], "2": ["cpp", "function", "C++ \u51fd\u6570"], "3": ["cpp", "functionParam", "C++ \u51fd\u6570\u53c2\u6570"], "4": ["cpp", "enum", "C++ \u679a\u4e3e"], "5": ["cpp", "class", "C++ \u7c7b"], "6": ["cpp", "member", "C++ \u6210\u5458"], "7": ["cpp", "type", "C++ \u7c7b\u578b"]}, "titleterms": {"mdns": 0, "api": 0, "header": 0, "file": 0, "function": 0, "structur": 0, "macro": 0, "type": 0, "definit": 0, "enumer": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 57}, "alltitles": {"mDNS \u670d\u52a1": [[0, "mdns"], [0, "id4"]], "\u6982\u8ff0": [[0, "id1"]], "mDNS \u5c5e\u6027": [[0, "id3"]], "mDNS \u67e5\u8be2": [[0, "id6"]], "\u5e94\u7528\u793a\u4f8b": [[0, "id7"]], "API \u53c2\u8003": [[0, "api"]], "Header File": [[0, "header-file"]], "Functions": [[0, "functions"]], "Structures": [[0, "structures"]], "Macros": [[0, "macros"]], "Type Definitions": [[0, "type-definitions"]], "Enumerations": [[0, "enumerations"]]}, "indexentries": {"mdns_type_aaaa\uff08c macro\uff09": [[0, "c.MDNS_TYPE_AAAA"]], "mdns_type_any\uff08c macro\uff09": [[0, "c.MDNS_TYPE_ANY"]], "mdns_type_a\uff08c macro\uff09": [[0, "c.MDNS_TYPE_A"]], "mdns_type_nsec\uff08c macro\uff09": [[0, "c.MDNS_TYPE_NSEC"]], "mdns_type_opt\uff08c macro\uff09": [[0, "c.MDNS_TYPE_OPT"]], "mdns_type_ptr\uff08c macro\uff09": [[0, "c.MDNS_TYPE_PTR"]], "mdns_type_srv\uff08c macro\uff09": [[0, "c.MDNS_TYPE_SRV"]], "mdns_type_txt\uff08c macro\uff09": [[0, "c.MDNS_TYPE_TXT"]], "mdns_delegate_hostname_add\uff08c++ function\uff09": [[0, "_CPPv426mdns_delegate_hostname_addPKcPK14mdns_ip_addr_t"]], "mdns_delegate_hostname_remove\uff08c++ function\uff09": [[0, "_CPPv429mdns_delegate_hostname_removePKc"]], "mdns_event_actions_t::mdns_event_announce_ip4\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP4E"]], "mdns_event_actions_t::mdns_event_announce_ip6\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t23MDNS_EVENT_ANNOUNCE_IP6E"]], "mdns_event_actions_t::mdns_event_disable_ip4\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP4E"]], "mdns_event_actions_t::mdns_event_disable_ip6\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t22MDNS_EVENT_DISABLE_IP6E"]], "mdns_event_actions_t::mdns_event_enable_ip4\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP4E"]], "mdns_event_actions_t::mdns_event_enable_ip6\uff08c++ enumerator\uff09": [[0, "_CPPv4N20mdns_event_actions_t21MDNS_EVENT_ENABLE_IP6E"]], "mdns_event_actions_t\uff08c++ enum\uff09": [[0, "_CPPv420mdns_event_actions_t"]], "mdns_free\uff08c++ function\uff09": [[0, "_CPPv49mdns_freev"]], "mdns_hostname_exists\uff08c++ function\uff09": [[0, "_CPPv420mdns_hostname_existsPKc"]], "mdns_hostname_set\uff08c++ function\uff09": [[0, "_CPPv417mdns_hostname_setPKc"]], "mdns_init\uff08c++ function\uff09": [[0, "_CPPv49mdns_initv"]], "mdns_instance_name_set\uff08c++ function\uff09": [[0, "_CPPv422mdns_instance_name_setPKc"]], "mdns_ip_addr_s::addr\uff08c++ member\uff09": [[0, "_CPPv4N14mdns_ip_addr_s4addrE"]], "mdns_ip_addr_s::next\uff08c++ member\uff09": [[0, "_CPPv4N14mdns_ip_addr_s4nextE"]], "mdns_ip_addr_s\uff08c++ struct\uff09": [[0, "_CPPv414mdns_ip_addr_s"]], "mdns_ip_addr_t\uff08c++ type\uff09": [[0, "_CPPv414mdns_ip_addr_t"]], "mdns_ip_protocol_t::mdns_ip_protocol_max\uff08c++ enumerator\uff09": [[0, "_CPPv4N18mdns_ip_protocol_t20MDNS_IP_PROTOCOL_MAXE"]], "mdns_ip_protocol_t::mdns_ip_protocol_v4\uff08c++ enumerator\uff09": [[0, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V4E"]], "mdns_ip_protocol_t::mdns_ip_protocol_v6\uff08c++ enumerator\uff09": [[0, "_CPPv4N18mdns_ip_protocol_t19MDNS_IP_PROTOCOL_V6E"]], "mdns_ip_protocol_t\uff08c++ enum\uff09": [[0, "_CPPv418mdns_ip_protocol_t"]], "mdns_netif_action\uff08c++ function\uff09": [[0, "_CPPv417mdns_netif_actionP11esp_netif_t20mdns_event_actions_t"]], "mdns_query_async_delete\uff08c++ function\uff09": [[0, "_CPPv423mdns_query_async_deleteP18mdns_search_once_t"]], "mdns_query_async_get_results\uff08c++ function\uff09": [[0, "_CPPv428mdns_query_async_get_resultsP18mdns_search_once_t8uint32_tPP13mdns_result_tP7uint8_t"]], "mdns_query_async_new\uff08c++ function\uff09": [[0, "_CPPv420mdns_query_async_newPKcPKcPKc8uint16_t8uint32_t6size_t19mdns_query_notify_t"]], "mdns_query_a\uff08c++ function\uff09": [[0, "_CPPv412mdns_query_aPKc8uint32_tP14esp_ip4_addr_t"]], "mdns_query_generic\uff08c++ function\uff09": [[0, "_CPPv418mdns_query_genericPKcPKcPKc8uint16_t30mdns_query_transmission_type_t8uint32_t6size_tPP13mdns_result_t"]], "mdns_query_notify_t\uff08c++ type\uff09": [[0, "_CPPv419mdns_query_notify_t"]], "mdns_query_ptr\uff08c++ function\uff09": [[0, "_CPPv414mdns_query_ptrPKcPKc8uint32_t6size_tPP13mdns_result_t"]], "mdns_query_results_free\uff08c++ function\uff09": [[0, "_CPPv423mdns_query_results_freeP13mdns_result_t"]], "mdns_query_srv\uff08c++ function\uff09": [[0, "_CPPv414mdns_query_srvPKcPKcPKc8uint32_tPP13mdns_result_t"]], "mdns_query_transmission_type_t::mdns_query_multicast\uff08c++ enumerator\uff09": [[0, "_CPPv4N30mdns_query_transmission_type_t20MDNS_QUERY_MULTICASTE"]], "mdns_query_transmission_type_t::mdns_query_unicast\uff08c++ enumerator\uff09": [[0, "_CPPv4N30mdns_query_transmission_type_t18MDNS_QUERY_UNICASTE"]], "mdns_query_transmission_type_t\uff08c++ enum\uff09": [[0, "_CPPv430mdns_query_transmission_type_t"]], "mdns_query_txt\uff08c++ function\uff09": [[0, "_CPPv414mdns_query_txtPKcPKcPKc8uint32_tPP13mdns_result_t"]], "mdns_query\uff08c++ function\uff09": [[0, "_CPPv410mdns_queryPKcPKcPKc8uint16_t8uint32_t6size_tPP13mdns_result_t"]], "mdns_register_netif\uff08c++ function\uff09": [[0, "_CPPv419mdns_register_netifP11esp_netif_t"]], "mdns_result_s::addr\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s4addrE"]], "mdns_result_s::esp_netif\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s9esp_netifE"]], "mdns_result_s::hostname\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s8hostnameE"]], "mdns_result_s::instance_name\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s13instance_nameE"]], "mdns_result_s::ip_protocol\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s11ip_protocolE"]], "mdns_result_s::next\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s4nextE"]], "mdns_result_s::port\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s4portE"]], "mdns_result_s::proto\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s5protoE"]], "mdns_result_s::service_type\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s12service_typeE"]], "mdns_result_s::ttl\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s3ttlE"]], "mdns_result_s::txt_count\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s9txt_countE"]], "mdns_result_s::txt_value_len\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s13txt_value_lenE"]], "mdns_result_s::txt\uff08c++ member\uff09": [[0, "_CPPv4N13mdns_result_s3txtE"]], "mdns_result_s\uff08c++ struct\uff09": [[0, "_CPPv413mdns_result_s"]], "mdns_result_t\uff08c++ type\uff09": [[0, "_CPPv413mdns_result_t"]], "mdns_search_once_t\uff08c++ type\uff09": [[0, "_CPPv418mdns_search_once_t"]], "mdns_service_add_for_host\uff08c++ function\uff09": [[0, "_CPPv425mdns_service_add_for_hostPKcPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t"]], "mdns_service_add\uff08c++ function\uff09": [[0, "_CPPv416mdns_service_addPKcPKcPKc8uint16_tA_15mdns_txt_item_t6size_t"]], "mdns_service_exists_with_instance\uff08c++ function\uff09": [[0, "_CPPv433mdns_service_exists_with_instancePKcPKcPKcPKc"]], "mdns_service_exists\uff08c++ function\uff09": [[0, "_CPPv419mdns_service_existsPKcPKcPKc"]], "mdns_service_instance_name_set_for_host\uff08c++ function\uff09": [[0, "_CPPv439mdns_service_instance_name_set_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_instance_name_set\uff08c++ function\uff09": [[0, "_CPPv430mdns_service_instance_name_setPKcPKcPKc"]], "mdns_service_port_set_for_host\uff08c++ function\uff09": [[0, "_CPPv430mdns_service_port_set_for_hostPKcPKcPKcPKc8uint16_t"]], "mdns_service_port_set\uff08c++ function\uff09": [[0, "_CPPv421mdns_service_port_setPKcPKc8uint16_t"]], "mdns_service_remove_all\uff08c++ function\uff09": [[0, "_CPPv423mdns_service_remove_allv"]], "mdns_service_remove_for_host\uff08c++ function\uff09": [[0, "_CPPv428mdns_service_remove_for_hostPKcPKcPKcPKc"]], "mdns_service_remove\uff08c++ function\uff09": [[0, "_CPPv419mdns_service_removePKcPKc"]], "mdns_service_subtype_add_for_host\uff08c++ function\uff09": [[0, "_CPPv433mdns_service_subtype_add_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_remove_for_host\uff08c++ function\uff09": [[0, "_CPPv437mdns_service_txt_item_remove_for_hostPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_remove\uff08c++ function\uff09": [[0, "_CPPv428mdns_service_txt_item_removePKcPKcPKc"]], "mdns_service_txt_item_set_for_host_with_explicit_value_len\uff08c++ function\uff09": [[0, "_CPPv458mdns_service_txt_item_set_for_host_with_explicit_value_lenPKcPKcPKcPKcPKcPKc7uint8_t"]], "mdns_service_txt_item_set_for_host\uff08c++ function\uff09": [[0, "_CPPv434mdns_service_txt_item_set_for_hostPKcPKcPKcPKcPKcPKc"]], "mdns_service_txt_item_set_with_explicit_value_len\uff08c++ function\uff09": [[0, "_CPPv449mdns_service_txt_item_set_with_explicit_value_lenPKcPKcPKcPKc7uint8_t"]], "mdns_service_txt_item_set\uff08c++ function\uff09": [[0, "_CPPv425mdns_service_txt_item_setPKcPKcPKcPKc"]], "mdns_service_txt_set_for_host\uff08c++ function\uff09": [[0, "_CPPv429mdns_service_txt_set_for_hostPKcPKcPKcPKcA_15mdns_txt_item_t7uint8_t"]], "mdns_service_txt_set\uff08c++ function\uff09": [[0, "_CPPv420mdns_service_txt_setPKcPKcA_15mdns_txt_item_t7uint8_t"]], "mdns_txt_item_t::key\uff08c++ member\uff09": [[0, "_CPPv4N15mdns_txt_item_t3keyE"]], "mdns_txt_item_t::value\uff08c++ member\uff09": [[0, "_CPPv4N15mdns_txt_item_t5valueE"]], "mdns_txt_item_t\uff08c++ struct\uff09": [[0, "_CPPv415mdns_txt_item_t"]], "mdns_unregister_netif\uff08c++ function\uff09": [[0, "_CPPv421mdns_unregister_netifP11esp_netif_t"]]}}) \ No newline at end of file

    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