forked from espressif/esp-protocols
Deploying to gh-pages from @ espressif/esp-protocols@467fec5c9b 🚀
This commit is contained in:
1 parent
4b9ce98431
commit
bbf20fdfa0
56 files changed
+1383
-975
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="C API Documentation" href="api_docs.html" />
|
||||
@@ -201,7 +202,7 @@ as a class derived from <code class="docutils literal notranslate"><span class="
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
+11
-119
@@ -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(
|
||||
'<p class="highlight-link">' +
|
||||
'<a href="javascript:Documentation.hideSearchWords()">' +
|
||||
Documentation.gettext("Hide Search Matches") +
|
||||
"</a></p>"
|
||||
)
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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(
|
||||
'<p class="highlight-link">' +
|
||||
'<a href="javascript:SphinxHighlight.hideSearchWords()">' +
|
||||
_("Hide Search Matches") +
|
||||
"</a></p>"
|
||||
)
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* 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);
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Internal design" href="internal_design.html" />
|
||||
@@ -288,7 +289,7 @@ a custom DTE object and supply it into <a class="reference internal" href="#dce-
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="C++ API Documentation" href="cxx_api_docs.html" />
|
||||
@@ -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 <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Advanced esp-modem use cases" href="advanced_api.html" />
|
||||
@@ -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 <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
@@ -129,7 +130,7 @@
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="#" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
@@ -607,7 +608,7 @@
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="ESP MODEM" href="README.html" />
|
||||
@@ -160,7 +161,7 @@
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="DCE Internal implementation" href="internal_docs.html" />
|
||||
@@ -146,7 +147,7 @@ to multiplex the terminal.</p>
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="prev" title="Internal design" href="internal_design.html" />
|
||||
@@ -1401,7 +1402,7 @@ Please refer to the <a class="reference internal" href="api_docs.html#c-api"><sp
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<script src="_static/sphinx_highlight.js"></script>
|
||||
<script src="_static/searchtools.js"></script>
|
||||
<script src="_static/language_data.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
@@ -116,7 +117,7 @@
|
||||
©2016 - 2021, Espressif Systems (Shanghai) Co., Ltd.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.1.1</a>
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 5.2.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -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], "stLine truncated
|
||||
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], "stLine truncated
|
||||
Reference in new issue
Block a user