refactoring storage and adding doxygen documentation

This commit is contained in:
abratchik 2022-12-04 09:03:20 +04:00
parent 563ecc8821
commit d152aec40b
241 changed files with 18966 additions and 174 deletions

13
API.md
View File

@ -76,11 +76,16 @@ Only for 3Mp+ camera modules:
#### Commands
These are commands; they can be sent by calling the `/control` URI with them as
the `<key>` *(a `<val>` must also be supplied, but can be any value and is ignored)*.
the `<key>` parameter.
```
save_prefs - Saves preferences file
clear_prefs - Deletes the preferences file
reboot - Reboots the board
* save_prefs - Saves preferences
`val=cam` or not specified will save camera preferences
`val=conn` will save network preferences
* clear_prefs - Deletes camera the preferences
`val=cam` or not specified will reset camera preferences
`val=conn` will reset network preferences. Attention! after this the server will boot as access point after restart, and all
connection settings will be lost.
* reboot - Reboots the board
```
## Examples

76
Docs/html/_a_p_i_8md.html Normal file
View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: API.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">API.md File Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CONTRIBUTING.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">CONTRIBUTING.md File Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: README.md File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">README.md File Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

89
Docs/html/annotated.html Normal file
View File

@ -0,0 +1,89 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structures</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_cam.html" target="_self">CLAppCam</a></td><td class="desc">Camera Manager Manages all interactions with camera </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_component.html" target="_self">CLAppComponent</a></td><td class="desc">Abstract root class for the appication components </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_conn.html" target="_self">CLAppConn</a></td><td class="desc">Connection Manager This class manages everything related to connectivity of the application: WiFi, OTA etc </td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_httpd.html" target="_self">CLAppHttpd</a></td><td class="desc">WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in the file system (can be SD card or LittleFS). <br />
</td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_storage.html" target="_self">CLStorage</a></td><td class="desc">Storage Manager Encapsulates access to the file system, which can be either external (SD card) or internal (LittleFS) </td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_static_i_p.html" target="_self">StaticIP</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_station.html" target="_self">Station</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_uri_mapping.html" target="_self">UriMapping</a></td><td class="desc">Static URI to path mapping </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,104 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_cam.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_cam.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="app__cam_8h_source.html">app_cam.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a2c40f09444d86a4ed61c53c20f0c9825"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_cam.html">CLAppCam</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__cam_8cpp.html#a2c40f09444d86a4ed61c53c20f0c9825">AppCam</a></td></tr>
<tr class="separator:a2c40f09444d86a4ed61c53c20f0c9825"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a2c40f09444d86a4ed61c53c20f0c9825" name="a2c40f09444d86a4ed61c53c20f0c9825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c40f09444d86a4ed61c53c20f0c9825">&#9670;&nbsp;</a></span>AppCam</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_cam.html">CLAppCam</a> AppCam</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

146
Docs/html/app__cam_8h.html Normal file
View File

@ -0,0 +1,146 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_cam.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_cam.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;esp_camera.h&gt;</code><br />
<code>#include &lt;esp_int_wdt.h&gt;</code><br />
<code>#include &lt;esp_task_wdt.h&gt;</code><br />
<code>#include &quot;<a class="el" href="app__component_8h_source.html">app_component.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="camera__pins_8h_source.html">camera_pins.h</a>&quot;</code><br />
</div>
<p><a href="app__cam_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html">CLAppCam</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Camera Manager Manages all interactions with camera. <a href="class_c_l_app_cam.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a8dcb31f6ec7707e22c63090318ca951f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">LAMP_DEFAULT</a>&#160;&#160;&#160;80</td></tr>
<tr class="separator:a8dcb31f6ec7707e22c63090318ca951f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a2c40f09444d86a4ed61c53c20f0c9825"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_cam.html">CLAppCam</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825">AppCam</a></td></tr>
<tr class="separator:a2c40f09444d86a4ed61c53c20f0c9825"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a8dcb31f6ec7707e22c63090318ca951f" name="a8dcb31f6ec7707e22c63090318ca951f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8dcb31f6ec7707e22c63090318ca951f">&#9670;&nbsp;</a></span>LAMP_DEFAULT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LAMP_DEFAULT&#160;&#160;&#160;80</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a2c40f09444d86a4ed61c53c20f0c9825" name="a2c40f09444d86a4ed61c53c20f0c9825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c40f09444d86a4ed61c53c20f0c9825">&#9670;&nbsp;</a></span>AppCam</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_cam.html">CLAppCam</a> AppCam</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">extern</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,212 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_cam.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_cam.h</div></div>
</div><!--header-->
<div class="contents">
<a href="app__cam_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef app_cam_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define app_cam_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;esp_camera.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;esp_int_wdt.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;esp_task_wdt.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;<a class="code" href="app__component_8h.html">app_component.h</a>&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;<a class="code" href="camera__pins_8h.html">camera_pins.h</a>&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"><a class="line" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f"> 11</a></span><span class="preprocessor">#define LAMP_DEFAULT 80 </span><span class="comment">// initial lamp value, range 0-100</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#if defined(LED_DISABLE)</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor"> #undef LED_PIN </span><span class="comment">// undefining this disables the notification LED</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html"> 22</a></span><span class="keyword">class </span><a class="code hl_class" href="class_c_l_app_cam.html">CLAppCam</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_c_l_app_component.html">CLAppComponent</a> {</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <a class="code hl_function" href="class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d">CLAppCam</a>();</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#af277f42041c7c0a561bd8c8b087f4b3a">start</a>();</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a8f1da94b3efb536a15419e5983fcac81">stop</a>(); </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df">loadPrefs</a>();</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a0f2bc29dea9609204871b7b5bc281c4f">savePrefs</a>();</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#a8cab0636ce5e566a7b89016c477aec2b">setLamp</a>(<span class="keywordtype">int</span> newVal = <a class="code hl_define" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">LAMP_DEFAULT</a>);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f"> 33</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f">getLamp</a>() {<span class="keywordflow">return</span> lampVal;};</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3"> 35</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3">setAutoLamp</a>(<span class="keywordtype">bool</span> val) {autoLamp = val;};</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b"> 36</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b">isAutoLamp</a>() { <span class="keywordflow">return</span> autoLamp;};</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5"> 38</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5">getSensorPID</a>() {<span class="keywordflow">return</span> (sensor?sensor-&gt;id.PID:0);};</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2"> 39</a></span> sensor_t * <a class="code hl_function" href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2">getSensor</a>() {<span class="keywordflow">return</span> sensor;};</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e"> 40</a></span> String <a class="code hl_function" href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e">getErr</a>() {<span class="keywordflow">return</span> critERR;};</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26"> 42</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26">getFrameRate</a>() {<span class="keywordflow">return</span> frameRate;};</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734"> 43</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734">setFrameRate</a>(<span class="keywordtype">int</span> newFrameRate) {frameRate = newFrameRate;};</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268"> 45</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268">setXclk</a>(<span class="keywordtype">int</span> val) {xclk = val;};</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa"> 46</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa">getXclk</a>() {<span class="keywordflow">return</span> xclk;};</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e"> 48</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e">setRotation</a>(<span class="keywordtype">int</span> val) {myRotation = val;};</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f"> 49</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f">getRotation</a>() {<span class="keywordflow">return</span> myRotation;};</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_cam.html#a89a7a39bd89130cab06fd7139fc9b6d9">snapToBufer</a>();</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f"> 52</a></span> uint8_t * <a class="code hl_function" href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f">getBuffer</a>() {<span class="keywordflow">return</span> fb-&gt;buf;};</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd"> 53</a></span> <span class="keywordtype">size_t</span> <a class="code hl_function" href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd">getBufferSize</a>() {<span class="keywordflow">return</span> fb-&gt;len;};</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381"> 54</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381">isJPEGinBuffer</a>() {<span class="keywordflow">return</span> fb-&gt;format == PIXFORMAT_JPEG;};</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c">releaseBuffer</a>(); </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// Camera config structure</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> camera_config_t config;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Camera module bus communications frequency.</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Originally: config.xclk_freq_mhz = 20000000, but this lead to visual artifacts on many modules.</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// See https://github.com/espressif/esp32-camera/issues/150#issuecomment-726473652 et al.</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Initial setting is configured in /default_prefs.json</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">int</span> xclk = 8;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// frame rate in FPS</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// default can be set in /default_prefs.json</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">int</span> frameRate = 25;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// Flash LED lamp parameters.</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">bool</span> autoLamp = <span class="keyword">false</span>; <span class="comment">// Automatic lamp (auto on while camera running)</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// Illumination LAMP and status LED</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor"> #if defined(LAMP_DISABLE)</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">int</span> lampVal = -1; <span class="comment">// lamp is disabled in config</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor"> #elif defined(LAMP_PIN)</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">int</span> lampVal = 0; </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor"> #else</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">int</span> lampVal = -1; <span class="comment">// no lamp pin assigned</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">int</span> lampChannel = 7; <span class="comment">// a free PWM channel (some channels used by camera)</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pwmfreq = 50000; <span class="comment">// 50K pwm frequency</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pwmresolution = 9; <span class="comment">// duty cycle bit range</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">const</span> <span class="keywordtype">int</span> pwmMax = pow(2,pwmresolution)-1;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Critical error string; if set during init (camera hardware failure) it</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// will be returned for stream and still image requests</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> String critERR = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// initial rotation</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// default can be set in /default_prefs.json</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">int</span> myRotation = 0;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// camera buffer pointer</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> camera_fb_t * fb = NULL;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// camera sensor</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> sensor_t * sensor;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span>};</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="keyword">extern</span> <a class="code hl_class" href="class_c_l_app_cam.html">CLAppCam</a> <a class="code hl_variable" href="app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825">AppCam</a>;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aapp__cam_8h_html_a2c40f09444d86a4ed61c53c20f0c9825"><div class="ttname"><a href="app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825">AppCam</a></div><div class="ttdeci">CLAppCam AppCam</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:233</div></div>
<div class="ttc" id="aapp__cam_8h_html_a8dcb31f6ec7707e22c63090318ca951f"><div class="ttname"><a href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">LAMP_DEFAULT</a></div><div class="ttdeci">#define LAMP_DEFAULT</div><div class="ttdef"><b>Definition:</b> app_cam.h:11</div></div>
<div class="ttc" id="aapp__component_8h_html"><div class="ttname"><a href="app__component_8h.html">app_component.h</a></div></div>
<div class="ttc" id="acamera__pins_8h_html"><div class="ttname"><a href="camera__pins_8h.html">camera_pins.h</a></div></div>
<div class="ttc" id="aclass_c_l_app_cam_html"><div class="ttname"><a href="class_c_l_app_cam.html">CLAppCam</a></div><div class="ttdoc">Camera Manager Manages all interactions with camera.</div><div class="ttdef"><b>Definition:</b> app_cam.h:22</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a0f2bc29dea9609204871b7b5bc281c4f"><div class="ttname"><a href="class_c_l_app_cam.html#a0f2bc29dea9609204871b7b5bc281c4f">CLAppCam::savePrefs</a></div><div class="ttdeci">int savePrefs()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:157</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a1f01a309f73eb36142ab8b449c81a381"><div class="ttname"><a href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381">CLAppCam::isJPEGinBuffer</a></div><div class="ttdeci">bool isJPEGinBuffer()</div><div class="ttdef"><b>Definition:</b> app_cam.h:54</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a26a9c706c7c9f86adbfa3cfb748760df"><div class="ttname"><a href="class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df">CLAppCam::loadPrefs</a></div><div class="ttdeci">int loadPrefs()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:98</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a27d4c05b87660b0e04b6a8902f0f173e"><div class="ttname"><a href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e">CLAppCam::setRotation</a></div><div class="ttdeci">void setRotation(int val)</div><div class="ttdef"><b>Definition:</b> app_cam.h:48</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a5489d93c51c1b4f3457af58970ff953d"><div class="ttname"><a href="class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d">CLAppCam::CLAppCam</a></div><div class="ttdeci">CLAppCam()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:3</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a6581e369883546817a1edaedf4af1734"><div class="ttname"><a href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734">CLAppCam::setFrameRate</a></div><div class="ttdeci">void setFrameRate(int newFrameRate)</div><div class="ttdef"><b>Definition:</b> app_cam.h:43</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a65918dca872c1d5bdcb0bb556451127f"><div class="ttname"><a href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f">CLAppCam::getRotation</a></div><div class="ttdeci">int getRotation()</div><div class="ttdef"><b>Definition:</b> app_cam.h:49</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a790db89fdbe6524175ad6f447b863c26"><div class="ttname"><a href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26">CLAppCam::getFrameRate</a></div><div class="ttdeci">int getFrameRate()</div><div class="ttdef"><b>Definition:</b> app_cam.h:42</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a84dc1e1b593b3d4b67889cc88893c92f"><div class="ttname"><a href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f">CLAppCam::getLamp</a></div><div class="ttdeci">int getLamp()</div><div class="ttdef"><b>Definition:</b> app_cam.h:33</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a89a7a39bd89130cab06fd7139fc9b6d9"><div class="ttname"><a href="class_c_l_app_cam.html#a89a7a39bd89130cab06fd7139fc9b6d9">CLAppCam::snapToBufer</a></div><div class="ttdeci">int snapToBufer()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:218</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a8cab0636ce5e566a7b89016c477aec2b"><div class="ttname"><a href="class_c_l_app_cam.html#a8cab0636ce5e566a7b89016c477aec2b">CLAppCam::setLamp</a></div><div class="ttdeci">void setLamp(int newVal=LAMP_DEFAULT)</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:85</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a8e19e1d337c7d7406d713a42615005aa"><div class="ttname"><a href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa">CLAppCam::getXclk</a></div><div class="ttdeci">int getXclk()</div><div class="ttdef"><b>Definition:</b> app_cam.h:46</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a8f1da94b3efb536a15419e5983fcac81"><div class="ttname"><a href="class_c_l_app_cam.html#a8f1da94b3efb536a15419e5983fcac81">CLAppCam::stop</a></div><div class="ttdeci">int stop()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:78</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a97ffe4ceb1fc0ae537d4e5f96cb7691e"><div class="ttname"><a href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e">CLAppCam::getErr</a></div><div class="ttdeci">String getErr()</div><div class="ttdef"><b>Definition:</b> app_cam.h:40</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_a9ccd0763eb8eeb559b46e747df25d268"><div class="ttname"><a href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268">CLAppCam::setXclk</a></div><div class="ttdeci">void setXclk(int val)</div><div class="ttdef"><b>Definition:</b> app_cam.h:45</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_aa0f1c434be24055bab3abb459a071abd"><div class="ttname"><a href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd">CLAppCam::getBufferSize</a></div><div class="ttdeci">size_t getBufferSize()</div><div class="ttdef"><b>Definition:</b> app_cam.h:53</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_aa5bd4f968fd8345d3d2a5d8a121586c3"><div class="ttname"><a href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3">CLAppCam::setAutoLamp</a></div><div class="ttdeci">void setAutoLamp(bool val)</div><div class="ttdef"><b>Definition:</b> app_cam.h:35</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_aa68f9714fa1c5bdf77708279c8da081b"><div class="ttname"><a href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b">CLAppCam::isAutoLamp</a></div><div class="ttdeci">bool isAutoLamp()</div><div class="ttdef"><b>Definition:</b> app_cam.h:36</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_aac54409dcd9344abbbe434b237dc505f"><div class="ttname"><a href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f">CLAppCam::getBuffer</a></div><div class="ttdeci">uint8_t * getBuffer()</div><div class="ttdef"><b>Definition:</b> app_cam.h:52</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_aaf9c6d7306c5122eb6766011b8fc4c4c"><div class="ttname"><a href="class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c">CLAppCam::releaseBuffer</a></div><div class="ttdeci">void releaseBuffer()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:224</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_ac20c8599dfc6112502b2ca9e446e6af5"><div class="ttname"><a href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5">CLAppCam::getSensorPID</a></div><div class="ttdeci">int getSensorPID()</div><div class="ttdef"><b>Definition:</b> app_cam.h:38</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_af277f42041c7c0a561bd8c8b087f4b3a"><div class="ttname"><a href="class_c_l_app_cam.html#af277f42041c7c0a561bd8c8b087f4b3a">CLAppCam::start</a></div><div class="ttdeci">int start()</div><div class="ttdef"><b>Definition:</b> app_cam.cpp:8</div></div>
<div class="ttc" id="aclass_c_l_app_cam_html_af812f50b9e35bcdb56af399c4fafd8f2"><div class="ttname"><a href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2">CLAppCam::getSensor</a></div><div class="ttdeci">sensor_t * getSensor()</div><div class="ttdef"><b>Definition:</b> app_cam.h:39</div></div>
<div class="ttc" id="aclass_c_l_app_component_html"><div class="ttname"><a href="class_c_l_app_component.html">CLAppComponent</a></div><div class="ttdoc">Abstract root class for the appication components.</div><div class="ttdef"><b>Definition:</b> app_component.h:14</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_component.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_component.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="app__component_8h_source.html">app_component.h</a>&quot;</code><br />
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,95 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_component.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> </div>
<div class="headertitle"><div class="title">app_component.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;json_generator.h&gt;</code><br />
<code>#include &lt;json_parser.h&gt;</code><br />
<code>#include &quot;<a class="el" href="app__config_8h_source.html">app_config.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="storage_8h_source.html">storage.h</a>&quot;</code><br />
</div>
<p><a href="app__component_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract root class for the appication components. <a href="class_c_l_app_component.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,146 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_component.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_component.h</div></div>
</div><!--header-->
<div class="contents">
<a href="app__component_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef app_component_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define app_component_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;json_generator.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;json_parser.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &quot;<a class="code" href="app__config_8h.html">app_config.h</a>&quot;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;<a class="code" href="storage_8h.html">storage.h</a>&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html"> 14</a></span><span class="keyword">class </span><a class="code hl_class" href="class_c_l_app_component.html">CLAppComponent</a> {</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Sketch Info</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5"> 18</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">start</a>(){<span class="keywordflow">return</span> OS_SUCCESS;};</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98"> 19</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">loadPrefs</a>(){<span class="keywordflow">return</span> OS_SUCCESS;};</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a"> 20</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">savePrefs</a>(){<span class="keywordflow">return</span> OS_SUCCESS;};</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">dumpPrefs</a>();</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">removePrefs</a>();</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">getPrefsFileName</a>(<span class="keywordtype">bool</span> forsave = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7"> 27</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">setDebugMode</a>(<span class="keywordtype">bool</span> val) {debug_mode = val;};</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30"> 28</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">isDebugMode</a>(){<span class="keywordflow">return</span> debug_mode;};</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101"> 30</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">getLastErr</a>() {<span class="keywordflow">return</span> last_err;};</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b"> 33</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">setTag</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *t) {tag = t;};</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40"> 35</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">setErr</a>(<span class="keywordtype">int</span> err_code) {last_err = err_code;};</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">readJsonIntVal</a>(jparse_ctx_t *jctx, <span class="keywordtype">char</span>* token);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">parsePrefs</a>(jparse_ctx_t *jctx);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// prefix for forming preference file name of this class</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * tag; </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">bool</span> debug_mode = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// error code of the last error</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">int</span> last_err = 0;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">char</span> prefs[20] = <span class="stringliteral">&quot;prefs.json&quot;</span>;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>};</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aapp__config_8h_html"><div class="ttname"><a href="app__config_8h.html">app_config.h</a></div></div>
<div class="ttc" id="aclass_c_l_app_component_html"><div class="ttname"><a href="class_c_l_app_component.html">CLAppComponent</a></div><div class="ttdoc">Abstract root class for the appication components.</div><div class="ttdef"><b>Definition:</b> app_component.h:14</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a0c99f78f5ea7090785c70864b8fd9101"><div class="ttname"><a href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">CLAppComponent::getLastErr</a></div><div class="ttdeci">int getLastErr()</div><div class="ttdef"><b>Definition:</b> app_component.h:30</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a300c0d2775ed4a082f63449826ee3b98"><div class="ttname"><a href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">CLAppComponent::loadPrefs</a></div><div class="ttdeci">int loadPrefs()</div><div class="ttdef"><b>Definition:</b> app_component.h:19</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a31a25b7869113a15e18f34b2c690189a"><div class="ttname"><a href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">CLAppComponent::savePrefs</a></div><div class="ttdeci">int savePrefs()</div><div class="ttdef"><b>Definition:</b> app_component.h:20</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a4891eef9a9970b158d528fef5dda8d30"><div class="ttname"><a href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">CLAppComponent::isDebugMode</a></div><div class="ttdeci">bool isDebugMode()</div><div class="ttdef"><b>Definition:</b> app_component.h:28</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a75a706c37e31c3083c845d304e3a519b"><div class="ttname"><a href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">CLAppComponent::setTag</a></div><div class="ttdeci">void setTag(const char *t)</div><div class="ttdef"><b>Definition:</b> app_component.h:33</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a7b23015c89977efd202896a19e7ca319"><div class="ttname"><a href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">CLAppComponent::parsePrefs</a></div><div class="ttdeci">int parsePrefs(jparse_ctx_t *jctx)</div><div class="ttdef"><b>Definition:</b> app_component.cpp:50</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a7e64a4c55bd1f3216c507101835392b5"><div class="ttname"><a href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">CLAppComponent::start</a></div><div class="ttdeci">int start()</div><div class="ttdef"><b>Definition:</b> app_component.h:18</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a9565596ad1c588c05e349d92b2476e40"><div class="ttname"><a href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">CLAppComponent::setErr</a></div><div class="ttdeci">void setErr(int err_code)</div><div class="ttdef"><b>Definition:</b> app_component.h:35</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_a9ab4a575691522178eb10d9bffcff5b7"><div class="ttname"><a href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">CLAppComponent::setDebugMode</a></div><div class="ttdeci">void setDebugMode(bool val)</div><div class="ttdef"><b>Definition:</b> app_component.h:27</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_aae2aee9e4a8001900d8b380adb66a8e3"><div class="ttname"><a href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">CLAppComponent::readJsonIntVal</a></div><div class="ttdeci">int readJsonIntVal(jparse_ctx_t *jctx, char *token)</div><div class="ttdoc">reads the Int value from JSON context by token.</div><div class="ttdef"><b>Definition:</b> app_component.cpp:28</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_ad90151113ffbbcc630e347580b3ee9fe"><div class="ttname"><a href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">CLAppComponent::dumpPrefs</a></div><div class="ttdeci">void dumpPrefs()</div><div class="ttdef"><b>Definition:</b> app_component.cpp:18</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_ada7959a912692cd2c03bd950faa8c5bc"><div class="ttname"><a href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">CLAppComponent::getPrefsFileName</a></div><div class="ttdeci">char * getPrefsFileName(bool forsave=false)</div><div class="ttdef"><b>Definition:</b> app_component.cpp:3</div></div>
<div class="ttc" id="aclass_c_l_app_component_html_af763174f3eed76761a2eeab9aa845e6a"><div class="ttname"><a href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">CLAppComponent::removePrefs</a></div><div class="ttdeci">int removePrefs()</div><div class="ttdef"><b>Definition:</b> app_component.cpp:36</div></div>
<div class="ttc" id="astorage_8h_html"><div class="ttname"><a href="storage_8h.html">storage.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,153 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_config.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle"><div class="title">app_config.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="app__config_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:acc59b7b9d083568456e1131e8492b5dd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd">CAM_NAME</a>&#160;&#160;&#160;&quot;ESP32 CAM Webserver&quot;</td></tr>
<tr class="separator:acc59b7b9d083568456e1131e8492b5dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7409e001dcdfa6d62c7266224556e6a3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__config_8h.html#a7409e001dcdfa6d62c7266224556e6a3">BASE_VERSION</a>&#160;&#160;&#160;&quot;5.0&quot;</td></tr>
<tr class="separator:a7409e001dcdfa6d62c7266224556e6a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe5fef12849f59923de575b49a6e222c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__config_8h.html#abe5fef12849f59923de575b49a6e222c">WIFI_WATCHDOG</a>&#160;&#160;&#160;15000</td></tr>
<tr class="separator:abe5fef12849f59923de575b49a6e222c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3ad6cce87c9d1876247f85e3cece96e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__config_8h.html#af3ad6cce87c9d1876247f85e3cece96e">CAMERA_MODEL_AI_THINKER</a></td></tr>
<tr class="separator:af3ad6cce87c9d1876247f85e3cece96e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a7409e001dcdfa6d62c7266224556e6a3" name="a7409e001dcdfa6d62c7266224556e6a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7409e001dcdfa6d62c7266224556e6a3">&#9670;&nbsp;</a></span>BASE_VERSION</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BASE_VERSION&#160;&#160;&#160;&quot;5.0&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc59b7b9d083568456e1131e8492b5dd" name="acc59b7b9d083568456e1131e8492b5dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc59b7b9d083568456e1131e8492b5dd">&#9670;&nbsp;</a></span>CAM_NAME</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAM_NAME&#160;&#160;&#160;&quot;ESP32 CAM Webserver&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af3ad6cce87c9d1876247f85e3cece96e" name="af3ad6cce87c9d1876247f85e3cece96e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3ad6cce87c9d1876247f85e3cece96e">&#9670;&nbsp;</a></span>CAMERA_MODEL_AI_THINKER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAMERA_MODEL_AI_THINKER</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abe5fef12849f59923de575b49a6e222c" name="abe5fef12849f59923de575b49a6e222c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe5fef12849f59923de575b49a6e222c">&#9670;&nbsp;</a></span>WIFI_WATCHDOG</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define WIFI_WATCHDOG&#160;&#160;&#160;15000</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,150 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_config.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_config.h</div></div>
</div><!--header-->
<div class="contents">
<a href="app__config_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef app_config_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define app_config_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">/* Give the camera a name for the web interface */</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"><a class="line" href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd"> 6</a></span><span class="preprocessor">#define CAM_NAME &quot;ESP32 CAM Webserver&quot;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">/* Base application version */</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"><a class="line" href="app__config_8h.html#a7409e001dcdfa6d62c7266224556e6a3"> 9</a></span><span class="preprocessor">#define BASE_VERSION &quot;5.0&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">/* Extended WiFi Settings */</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">/*</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * Wifi Watchdog defines how long we spend waiting for a connection before retrying,</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * and how often we check to see if we are still connected, milliseconds</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * You may wish to increase this if your WiFi is slow at conencting.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="app__config_8h.html#abe5fef12849f59923de575b49a6e222c"> 19</a></span><span class="preprocessor">#define WIFI_WATCHDOG 15000</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment">/*</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * Over The Air firmware updates can be disabled by uncommenting the folowing line</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * When enabled the device will advertise itself using the MDNS_NAME defined above</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> */</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">// #define NO_OTA</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment">/*</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> * Additional Features</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> */</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">// Uncomment to disable the notification LED on the module</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment">// #define LED_DISABLE</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">// Uncomment to disable the illumination lamp features</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">// #define LAMP_DISABLE</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment">// Uncomment this line to use LittleFS instead of SD. </span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment">// NOTE!</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment">// LittleFS is still experimental, not recommended. The &#39;official&#39; library installed from the Library Manager </span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment">// seems to be broken, but fixed in this PR: https://github.com/lorol/LITTLEFS/pull/56 </span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment">// To install it, please navigate to you /libraries sub-folder of your sketch location and then execute </span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">// git clone https://github.com/Michael2MacDonald/LITTLEFS.</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="comment">// #define USE_LittleFS</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">// Define the startup lamp power setting (as a percentage, defaults to 0%)</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment">// Saved user settings will override this</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment">// #define LAMP_DEFAULT 0</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="comment">/*</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment"> * Camera Hardware Selectiom</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment"> *</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"> * You must uncomment one, and only one, of the lines below to select your board model.</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * Remember to also select the board in the Boards Manager</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> * This is not optional</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> */</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="app__config_8h.html#af3ad6cce87c9d1876247f85e3cece96e"> 59</a></span><span class="preprocessor">#define CAMERA_MODEL_AI_THINKER </span><span class="comment">// default</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">// #define CAMERA_MODEL_WROVER_KIT</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">// #define CAMERA_MODEL_ESP_EYE</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">// #define CAMERA_MODEL_M5STACK_PSRAM</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">// #define CAMERA_MODEL_M5STACK_V2_PSRAM</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment">// #define CAMERA_MODEL_M5STACK_WIDE</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">// #define CAMERA_MODEL_M5STACK_ESP32CAM // Originally: CAMERA_MODEL_M5STACK_NO_PSRAM</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment">// #define CAMERA_MODEL_TTGO_T_JOURNAL</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment">// #define CAMERA_MODEL_ARDUCAM_ESP32S_UNO</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,104 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_conn.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_conn.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="app__conn_8h_source.html">app_conn.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a3fca6c2df3835192bdadfe6edde1e63b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_conn.html">CLAppConn</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8cpp.html#a3fca6c2df3835192bdadfe6edde1e63b">AppConn</a></td></tr>
<tr class="separator:a3fca6c2df3835192bdadfe6edde1e63b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a3fca6c2df3835192bdadfe6edde1e63b" name="a3fca6c2df3835192bdadfe6edde1e63b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fca6c2df3835192bdadfe6edde1e63b">&#9670;&nbsp;</a></span>AppConn</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_conn.html">CLAppConn</a> AppConn</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

202
Docs/html/app__conn_8h.html Normal file
View File

@ -0,0 +1,202 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_conn.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_conn.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;ArduinoOTA.h&gt;</code><br />
<code>#include &lt;WiFi.h&gt;</code><br />
<code>#include &lt;WiFiUdp.h&gt;</code><br />
<code>#include &lt;DNSServer.h&gt;</code><br />
<code>#include &lt;ESPmDNS.h&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &quot;<a class="el" href="parsebytes_8h_source.html">parsebytes.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="app__component_8h_source.html">app_component.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="app__cam_8h_source.html">app_cam.h</a>&quot;</code><br />
</div>
<p><a href="app__conn_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_station.html">Station</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_static_i_p.html">StaticIP</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html">CLAppConn</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connection Manager This class manages everything related to connectivity of the application: WiFi, OTA etc. <a href="class_c_l_app_conn.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a83592674d0318a8edd98e994f0fed16b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b">MAX_KNOWN_STATIONS</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:a83592674d0318a8edd98e994f0fed16b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a6985b24d084cef13acc6754ab4c3a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9">NTPSERVER</a>&#160;&#160;&#160;&quot;pool.ntp.org&quot;</td></tr>
<tr class="separator:a6a6985b24d084cef13acc6754ab4c3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c57373b84abca8b795c0a8dd84568a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9">NTP_GMT_OFFSET</a>&#160;&#160;&#160;14400</td></tr>
<tr class="separator:a2c57373b84abca8b795c0a8dd84568a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c6fa4af03ad17716da92c20fa8ff64b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b">NTP_DST_OFFSET</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a3c6fa4af03ad17716da92c20fa8ff64b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a3fca6c2df3835192bdadfe6edde1e63b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_conn.html">CLAppConn</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b">AppConn</a></td></tr>
<tr class="separator:a3fca6c2df3835192bdadfe6edde1e63b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a83592674d0318a8edd98e994f0fed16b" name="a83592674d0318a8edd98e994f0fed16b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83592674d0318a8edd98e994f0fed16b">&#9670;&nbsp;</a></span>MAX_KNOWN_STATIONS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_KNOWN_STATIONS&#160;&#160;&#160;5</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3c6fa4af03ad17716da92c20fa8ff64b" name="a3c6fa4af03ad17716da92c20fa8ff64b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c6fa4af03ad17716da92c20fa8ff64b">&#9670;&nbsp;</a></span>NTP_DST_OFFSET</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NTP_DST_OFFSET&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2c57373b84abca8b795c0a8dd84568a9" name="a2c57373b84abca8b795c0a8dd84568a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c57373b84abca8b795c0a8dd84568a9">&#9670;&nbsp;</a></span>NTP_GMT_OFFSET</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NTP_GMT_OFFSET&#160;&#160;&#160;14400</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6a6985b24d084cef13acc6754ab4c3a9" name="a6a6985b24d084cef13acc6754ab4c3a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a6985b24d084cef13acc6754ab4c3a9">&#9670;&nbsp;</a></span>NTPSERVER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NTPSERVER&#160;&#160;&#160;&quot;pool.ntp.org&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a3fca6c2df3835192bdadfe6edde1e63b" name="a3fca6c2df3835192bdadfe6edde1e63b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fca6c2df3835192bdadfe6edde1e63b">&#9670;&nbsp;</a></span>AppConn</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_conn.html">CLAppConn</a> AppConn</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">extern</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,245 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_conn.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_conn.h</div></div>
</div><!--header-->
<div class="contents">
<a href="app__conn_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef app_conn_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define app_conn_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;ArduinoOTA.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;WiFi.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;WiFiUdp.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;DNSServer.h&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;ESPmDNS.h&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;time.h&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;<a class="code" href="parsebytes_8h.html">parsebytes.h</a>&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &quot;<a class="code" href="app__component_8h.html">app_component.h</a>&quot;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="app__cam_8h.html">app_cam.h</a>&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b"> 15</a></span><span class="preprocessor">#define MAX_KNOWN_STATIONS 5</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">/* NTP</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * Uncomment the following to enable the on-board clock</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * Pick a nearby pool server from: https://www.ntppool.org/zone/@</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * Set the GMT offset to match your timezone IN SECONDS;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * see https://en.wikipedia.org/wiki/List_of_UTC_time_offsets</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * 1hr = 3600 seconds; do the math ;-)</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * Default is CET (Central European Time), eg GMT + 1hr</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * The DST offset is usually 1 hour (again, in seconds) if used in your country.</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> */</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9"> 26</a></span><span class="preprocessor">#define NTPSERVER &quot;pool.ntp.org&quot;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9"> 27</a></span><span class="preprocessor">#define NTP_GMT_OFFSET 14400</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b"> 28</a></span><span class="preprocessor">#define NTP_DST_OFFSET 0</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="struct_station.html#aae4e91ca19c2b2b799ca20891f95c651"> 31</a></span><span class="keyword">struct </span><a class="code hl_struct" href="struct_station.html">Station</a> { <span class="keywordtype">char</span> <a class="code hl_variable" href="struct_station.html#ad635bfe5333139b2596ace399fe5054e">ssid</a>[64]; <span class="keywordtype">char</span> <a class="code hl_variable" href="struct_station.html#adfce66aab835659fef7ab8501def3867">password</a>[64]; <span class="keywordtype">bool</span> <a class="code hl_variable" href="struct_station.html#aae4e91ca19c2b2b799ca20891f95c651">dhcp</a>;};</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d"> 33</a></span><span class="keyword">struct </span><a class="code hl_struct" href="struct_static_i_p.html">StaticIP</a> { IPAddress *<a class="code hl_variable" href="struct_static_i_p.html#a4cba6eec0917a4f531e3285d9e5f8529">ip</a>; IPAddress *<a class="code hl_variable" href="struct_static_i_p.html#ad8221b5210f6692fbeffb6735495a930">netmask</a>; IPAddress *<a class="code hl_variable" href="struct_static_i_p.html#a6bd38cab74299d715d64d1ea5a369913">gateway</a>; IPAddress *<a class="code hl_variable" href="struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d">dns1</a>; IPAddress *<a class="code hl_variable" href="struct_static_i_p.html#a61e727e8a383392a7f36820a22f1628d">dns2</a>; };</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html"> 40</a></span><span class="keyword">class </span><a class="code hl_class" href="class_c_l_app_conn.html">CLAppConn</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_c_l_app_component.html">CLAppComponent</a> {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <a class="code hl_function" href="class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58">CLAppConn</a>();</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f">loadPrefs</a>();</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_conn.html#ace5a052d85379ece71207129edc2a0f1">savePrefs</a>();</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_conn.html#a75a0c8c0ab160691ecf58e3c4ad58951">start</a>();</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25"> 47</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25">stop</a>() {<span class="keywordflow">return</span> WiFi.disconnect();};</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f">enableOTA</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03"> 50</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03">handleOTA</a>() {<span class="keywordflow">if</span>(otaEnabled) ArduinoOTA.handle();};</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39">configMDNS</a>();</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd"> 53</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd">handleDNSRequest</a>(){<span class="keywordflow">if</span> (captivePortal) dnsServer.processNextRequest();};</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2">configNTP</a>();</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251"> 57</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251">getNTPServer</a>() { <span class="keywordflow">return</span> ntpServer;};</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722"> 58</a></span> <span class="keywordtype">long</span> <a class="code hl_function" href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722">getGmtOffset_sec</a>() {<span class="keywordflow">return</span> gmtOffset_sec;};</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e"> 59</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e">getDaylightOffset_sec</a>() {<span class="keywordflow">return</span> daylightOffset_sec;};</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a"> 61</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a">isOTAEnabled</a>() {<span class="keywordflow">return</span> otaEnabled;};</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b"> 63</a></span> wl_status_t <a class="code hl_function" href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b">wifiStatus</a>() {<span class="keywordflow">return</span> (accesspoint?ap_status:WiFi.status());};</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f"> 65</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f">getHTTPUrl</a>(){ <span class="keywordflow">return</span> httpURL;};</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412"> 66</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412">getStreamUrl</a>(){ <span class="keywordflow">return</span> streamURL;};</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59"> 67</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59">getPort</a>() {<span class="keywordflow">return</span> httpPort;};</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9"> 69</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9">getApName</a>() {<span class="keywordflow">return</span> apName;};</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad"> 71</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad">isAccessPoint</a>() {<span class="keywordflow">return</span> accesspoint;};</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634"> 72</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634">isCaptivePortal</a>() {<span class="keywordflow">return</span> captivePortal;};</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0">getLocalTimeStr</a>();</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5">getUpTimeStr</a>();</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde">printLocalTime</a>(<span class="keywordtype">bool</span> extraData=<span class="keyword">false</span>);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> calcURLs();</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// Known networks structure. Max number of known stations limited for memory considerations</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_struct" href="struct_station.html">Station</a> *stationList[<a class="code hl_define" href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b">MAX_KNOWN_STATIONS</a>]; </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">int</span> stationCount = 0;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// Static IP structure</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_struct" href="struct_static_i_p.html">StaticIP</a> staticIP;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">char</span> mdnsName[20];</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">bool</span> accesspoint = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">char</span> apName[20];</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">char</span> apPass[20];</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">int</span> ap_channel=1;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_struct" href="struct_static_i_p.html">StaticIP</a> apIP;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">bool</span> ap_dhcp=<span class="keyword">true</span>;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> wl_status_t ap_status = WL_DISCONNECTED;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// DNS server</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">const</span> <span class="keywordtype">byte</span> DNS_PORT = 53;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> DNSServer dnsServer;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">bool</span> captivePortal = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// HOST_NAME</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">char</span> hostName[64]=<span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// The app and stream URLs (initialized during WiFi setup)</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordtype">char</span> httpURL[64];</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">char</span> streamURL[64];</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// HTTP Port. Can be overriden during IP setup</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">int</span> httpPort = 80;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// OTA parameters</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">bool</span> otaEnabled = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">char</span> otaPassword[20] = <span class="stringliteral">&quot;&quot;</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// NTP parameters</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">char</span> ntpServer[20] = <a class="code hl_define" href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9">NTPSERVER</a>;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordtype">long</span> gmtOffset_sec = <a class="code hl_define" href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9">NTP_GMT_OFFSET</a>;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">int</span> daylightOffset_sec = <a class="code hl_define" href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b">NTP_DST_OFFSET</a>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>};</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="keyword">extern</span> <a class="code hl_class" href="class_c_l_app_conn.html">CLAppConn</a> <a class="code hl_variable" href="app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b">AppConn</a>;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aapp__cam_8h_html"><div class="ttname"><a href="app__cam_8h.html">app_cam.h</a></div></div>
<div class="ttc" id="aapp__component_8h_html"><div class="ttname"><a href="app__component_8h.html">app_component.h</a></div></div>
<div class="ttc" id="aapp__conn_8h_html_a2c57373b84abca8b795c0a8dd84568a9"><div class="ttname"><a href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9">NTP_GMT_OFFSET</a></div><div class="ttdeci">#define NTP_GMT_OFFSET</div><div class="ttdef"><b>Definition:</b> app_conn.h:27</div></div>
<div class="ttc" id="aapp__conn_8h_html_a3c6fa4af03ad17716da92c20fa8ff64b"><div class="ttname"><a href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b">NTP_DST_OFFSET</a></div><div class="ttdeci">#define NTP_DST_OFFSET</div><div class="ttdef"><b>Definition:</b> app_conn.h:28</div></div>
<div class="ttc" id="aapp__conn_8h_html_a3fca6c2df3835192bdadfe6edde1e63b"><div class="ttname"><a href="app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b">AppConn</a></div><div class="ttdeci">CLAppConn AppConn</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:385</div></div>
<div class="ttc" id="aapp__conn_8h_html_a6a6985b24d084cef13acc6754ab4c3a9"><div class="ttname"><a href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9">NTPSERVER</a></div><div class="ttdeci">#define NTPSERVER</div><div class="ttdef"><b>Definition:</b> app_conn.h:26</div></div>
<div class="ttc" id="aapp__conn_8h_html_a83592674d0318a8edd98e994f0fed16b"><div class="ttname"><a href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b">MAX_KNOWN_STATIONS</a></div><div class="ttdeci">#define MAX_KNOWN_STATIONS</div><div class="ttdef"><b>Definition:</b> app_conn.h:15</div></div>
<div class="ttc" id="aclass_c_l_app_component_html"><div class="ttname"><a href="class_c_l_app_component.html">CLAppComponent</a></div><div class="ttdoc">Abstract root class for the appication components.</div><div class="ttdef"><b>Definition:</b> app_component.h:14</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html"><div class="ttname"><a href="class_c_l_app_conn.html">CLAppConn</a></div><div class="ttdoc">Connection Manager This class manages everything related to connectivity of the application: WiFi,...</div><div class="ttdef"><b>Definition:</b> app_conn.h:40</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a05b74d2731b9c2220c431e354b1b55a5"><div class="ttname"><a href="class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5">CLAppConn::getUpTimeStr</a></div><div class="ttdeci">char * getUpTimeStr()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:374</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a0e78e96c67968f486c71658925b53251"><div class="ttname"><a href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251">CLAppConn::getNTPServer</a></div><div class="ttdeci">char * getNTPServer()</div><div class="ttdef"><b>Definition:</b> app_conn.h:57</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a17ffc56321ce2e765ae90d1b27ed10e2"><div class="ttname"><a href="class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2">CLAppConn::configNTP</a></div><div class="ttdeci">void configNTP()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:352</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a2471ad68dc8303ebfd945c89151d6f03"><div class="ttname"><a href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03">CLAppConn::handleOTA</a></div><div class="ttdeci">void handleOTA()</div><div class="ttdef"><b>Definition:</b> app_conn.h:50</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a2d4395c692371a87b05ccb3e9b6b33d9"><div class="ttname"><a href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9">CLAppConn::getApName</a></div><div class="ttdeci">char * getApName()</div><div class="ttdef"><b>Definition:</b> app_conn.h:69</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a3b240d40a51a7d76f22be73b2563b412"><div class="ttname"><a href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412">CLAppConn::getStreamUrl</a></div><div class="ttdeci">char * getStreamUrl()</div><div class="ttdef"><b>Definition:</b> app_conn.h:66</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a40ab21138b6b3280000a139da9784f58"><div class="ttname"><a href="class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58">CLAppConn::CLAppConn</a></div><div class="ttdeci">CLAppConn()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:3</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a5e9975f7afdb88ae197fb3ad43942c7f"><div class="ttname"><a href="class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f">CLAppConn::enableOTA</a></div><div class="ttdeci">void enableOTA(bool enable=true)</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:276</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a6fa2c289453dd0849fe5d982d6b0ff59"><div class="ttname"><a href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59">CLAppConn::getPort</a></div><div class="ttdeci">int getPort()</div><div class="ttdef"><b>Definition:</b> app_conn.h:67</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a75a0c8c0ab160691ecf58e3c4ad58951"><div class="ttname"><a href="class_c_l_app_conn.html#a75a0c8c0ab160691ecf58e3c4ad58951">CLAppConn::start</a></div><div class="ttdeci">int start()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:7</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a790ba7c0b56edae2de159abf29f0127b"><div class="ttname"><a href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b">CLAppConn::wifiStatus</a></div><div class="ttdeci">wl_status_t wifiStatus()</div><div class="ttdef"><b>Definition:</b> app_conn.h:63</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a80277e357f23e4dd2de431aecdc326ad"><div class="ttname"><a href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad">CLAppConn::isAccessPoint</a></div><div class="ttdeci">bool isAccessPoint()</div><div class="ttdef"><b>Definition:</b> app_conn.h:71</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a841aff4dbe7c1b8f34a9eff36fa1b7fd"><div class="ttname"><a href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd">CLAppConn::handleDNSRequest</a></div><div class="ttdeci">void handleDNSRequest()</div><div class="ttdef"><b>Definition:</b> app_conn.h:53</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_a9a4f24949950433f1672c3db6af49dde"><div class="ttname"><a href="class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde">CLAppConn::printLocalTime</a></div><div class="ttdeci">void printLocalTime(bool extraData=false)</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:356</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_aa10f212281464764cf8b3057290d1722"><div class="ttname"><a href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722">CLAppConn::getGmtOffset_sec</a></div><div class="ttdeci">long getGmtOffset_sec()</div><div class="ttdef"><b>Definition:</b> app_conn.h:58</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_ab0a56d0491f5fd3fdce6028447183a25"><div class="ttname"><a href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25">CLAppConn::stop</a></div><div class="ttdeci">bool stop()</div><div class="ttdef"><b>Definition:</b> app_conn.h:47</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_ab12f6fe1f13192cdcf6c2243c0619a39"><div class="ttname"><a href="class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39">CLAppConn::configMDNS</a></div><div class="ttdeci">void configMDNS()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:338</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_abbde99435f66b7828a706c15c4317634"><div class="ttname"><a href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634">CLAppConn::isCaptivePortal</a></div><div class="ttdeci">bool isCaptivePortal()</div><div class="ttdef"><b>Definition:</b> app_conn.h:72</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_ace5a052d85379ece71207129edc2a0f1"><div class="ttname"><a href="class_c_l_app_conn.html#ace5a052d85379ece71207129edc2a0f1">CLAppConn::savePrefs</a></div><div class="ttdeci">int savePrefs()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:271</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_add0e97835e7204a17639eb8b4c07cfd0"><div class="ttname"><a href="class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0">CLAppConn::getLocalTimeStr</a></div><div class="ttdeci">char * getLocalTimeStr()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:364</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_ae243b486cbd9ac417ff050df27bab72f"><div class="ttname"><a href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f">CLAppConn::getHTTPUrl</a></div><div class="ttdeci">char * getHTTPUrl()</div><div class="ttdef"><b>Definition:</b> app_conn.h:65</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_ae2c05fac4c38fd444700b3f01eed931f"><div class="ttname"><a href="class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f">CLAppConn::loadPrefs</a></div><div class="ttdeci">int loadPrefs()</div><div class="ttdef"><b>Definition:</b> app_conn.cpp:179</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_aef2f2c99712b1c867b9d73f5abf4377e"><div class="ttname"><a href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e">CLAppConn::getDaylightOffset_sec</a></div><div class="ttdeci">int getDaylightOffset_sec()</div><div class="ttdef"><b>Definition:</b> app_conn.h:59</div></div>
<div class="ttc" id="aclass_c_l_app_conn_html_af5a7071604dbf2bc0ec8b1bdfabd538a"><div class="ttname"><a href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a">CLAppConn::isOTAEnabled</a></div><div class="ttdeci">bool isOTAEnabled()</div><div class="ttdef"><b>Definition:</b> app_conn.h:61</div></div>
<div class="ttc" id="aparsebytes_8h_html"><div class="ttname"><a href="parsebytes_8h.html">parsebytes.h</a></div></div>
<div class="ttc" id="astruct_static_i_p_html"><div class="ttname"><a href="struct_static_i_p.html">StaticIP</a></div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_static_i_p_html_a4cba6eec0917a4f531e3285d9e5f8529"><div class="ttname"><a href="struct_static_i_p.html#a4cba6eec0917a4f531e3285d9e5f8529">StaticIP::ip</a></div><div class="ttdeci">IPAddress * ip</div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_static_i_p_html_a61e727e8a383392a7f36820a22f1628d"><div class="ttname"><a href="struct_static_i_p.html#a61e727e8a383392a7f36820a22f1628d">StaticIP::dns2</a></div><div class="ttdeci">IPAddress * dns2</div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_static_i_p_html_a6257a5707d2a75fa38ef9d5064eb792d"><div class="ttname"><a href="struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d">StaticIP::dns1</a></div><div class="ttdeci">IPAddress * dns1</div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_static_i_p_html_a6bd38cab74299d715d64d1ea5a369913"><div class="ttname"><a href="struct_static_i_p.html#a6bd38cab74299d715d64d1ea5a369913">StaticIP::gateway</a></div><div class="ttdeci">IPAddress * gateway</div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_static_i_p_html_ad8221b5210f6692fbeffb6735495a930"><div class="ttname"><a href="struct_static_i_p.html#ad8221b5210f6692fbeffb6735495a930">StaticIP::netmask</a></div><div class="ttdeci">IPAddress * netmask</div><div class="ttdef"><b>Definition:</b> app_conn.h:33</div></div>
<div class="ttc" id="astruct_station_html"><div class="ttname"><a href="struct_station.html">Station</a></div><div class="ttdef"><b>Definition:</b> app_conn.h:31</div></div>
<div class="ttc" id="astruct_station_html_aae4e91ca19c2b2b799ca20891f95c651"><div class="ttname"><a href="struct_station.html#aae4e91ca19c2b2b799ca20891f95c651">Station::dhcp</a></div><div class="ttdeci">bool dhcp</div><div class="ttdef"><b>Definition:</b> app_conn.h:31</div></div>
<div class="ttc" id="astruct_station_html_ad635bfe5333139b2596ace399fe5054e"><div class="ttname"><a href="struct_station.html#ad635bfe5333139b2596ace399fe5054e">Station::ssid</a></div><div class="ttdeci">char ssid[64]</div><div class="ttdef"><b>Definition:</b> app_conn.h:31</div></div>
<div class="ttc" id="astruct_station_html_adfce66aab835659fef7ab8501def3867"><div class="ttname"><a href="struct_station.html#adfce66aab835659fef7ab8501def3867">Station::password</a></div><div class="ttdeci">char password[64]</div><div class="ttdef"><b>Definition:</b> app_conn.h:31</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,313 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_httpd.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_httpd.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="app__httpd_8h_source.html">app_httpd.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a1424ebf10d44b20fd79bb8102221a969"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a1424ebf10d44b20fd79bb8102221a969">onSnapTimer</a> (TimerHandle_t pxTimer)</td></tr>
<tr class="separator:a1424ebf10d44b20fd79bb8102221a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7064e9828984f378d3e04f9b7a47bcae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a7064e9828984f378d3e04f9b7a47bcae">onWsEvent</a> (AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len)</td></tr>
<tr class="separator:a7064e9828984f378d3e04f9b7a47bcae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c021f9721c3b479757f8e1b40624b6c"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a0c021f9721c3b479757f8e1b40624b6c">processor</a> (const String &amp;var)</td></tr>
<tr class="separator:a0c021f9721c3b479757f8e1b40624b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad15b6110c801dc234564fa2f8268a9ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#ad15b6110c801dc234564fa2f8268a9ab">onControl</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:ad15b6110c801dc234564fa2f8268a9ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad302c9a0a0e16505eef900b55250762e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#ad302c9a0a0e16505eef900b55250762e">onInfo</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:ad302c9a0a0e16505eef900b55250762e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc8d1122165362713f0823aeb3b25d1e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#acc8d1122165362713f0823aeb3b25d1e">onStatus</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:acc8d1122165362713f0823aeb3b25d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a31c0a3ca52126629c612c494b8d3c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a9a31c0a3ca52126629c612c494b8d3c6">onSystemStatus</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:a9a31c0a3ca52126629c612c494b8d3c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93682b89d59abe5dbad7f6d2a7fa8b8e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">dumpSystemStatusToJson</a> (char *buf, size_t size)</td></tr>
<tr class="separator:a93682b89d59abe5dbad7f6d2a7fa8b8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a0174a427778b574c2447cf5d8568f986"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html#a0174a427778b574c2447cf5d8568f986">AppHttpd</a></td></tr>
<tr class="separator:a0174a427778b574c2447cf5d8568f986"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a93682b89d59abe5dbad7f6d2a7fa8b8e" name="a93682b89d59abe5dbad7f6d2a7fa8b8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93682b89d59abe5dbad7f6d2a7fa8b8e">&#9670;&nbsp;</a></span>dumpSystemStatusToJson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dumpSystemStatusToJson </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad15b6110c801dc234564fa2f8268a9ab" name="ad15b6110c801dc234564fa2f8268a9ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad15b6110c801dc234564fa2f8268a9ab">&#9670;&nbsp;</a></span>onControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onControl </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad302c9a0a0e16505eef900b55250762e" name="ad302c9a0a0e16505eef900b55250762e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad302c9a0a0e16505eef900b55250762e">&#9670;&nbsp;</a></span>onInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onInfo </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1424ebf10d44b20fd79bb8102221a969" name="a1424ebf10d44b20fd79bb8102221a969"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1424ebf10d44b20fd79bb8102221a969">&#9670;&nbsp;</a></span>onSnapTimer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onSnapTimer </td>
<td>(</td>
<td class="paramtype">TimerHandle_t&#160;</td>
<td class="paramname"><em>pxTimer</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc8d1122165362713f0823aeb3b25d1e" name="acc8d1122165362713f0823aeb3b25d1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc8d1122165362713f0823aeb3b25d1e">&#9670;&nbsp;</a></span>onStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onStatus </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9a31c0a3ca52126629c612c494b8d3c6" name="a9a31c0a3ca52126629c612c494b8d3c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a31c0a3ca52126629c612c494b8d3c6">&#9670;&nbsp;</a></span>onSystemStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onSystemStatus </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7064e9828984f378d3e04f9b7a47bcae" name="a7064e9828984f378d3e04f9b7a47bcae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7064e9828984f378d3e04f9b7a47bcae">&#9670;&nbsp;</a></span>onWsEvent()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onWsEvent </td>
<td>(</td>
<td class="paramtype">AsyncWebSocket *&#160;</td>
<td class="paramname"><em>server</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AsyncWebSocketClient *&#160;</td>
<td class="paramname"><em>client</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AwsEventType&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0c021f9721c3b479757f8e1b40624b6c" name="a0c021f9721c3b479757f8e1b40624b6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c021f9721c3b479757f8e1b40624b6c">&#9670;&nbsp;</a></span>processor()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">String processor </td>
<td>(</td>
<td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>var</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a0174a427778b574c2447cf5d8568f986" name="a0174a427778b574c2447cf5d8568f986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0174a427778b574c2447cf5d8568f986">&#9670;&nbsp;</a></span>AppHttpd</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a> AppHttpd</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,407 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_httpd.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">app_httpd.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;esp_int_wdt.h&gt;</code><br />
<code>#include &lt;esp_task_wdt.h&gt;</code><br />
<code>#include &lt;freertos/timers.h&gt;</code><br />
<code>#include &quot;ESPAsyncWebServer.h&quot;</code><br />
<code>#include &quot;<a class="el" href="storage_8h_source.html">storage.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="app__conn_8h_source.html">app_conn.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="app__cam_8h_source.html">app_cam.h</a>&quot;</code><br />
</div>
<p><a href="app__httpd_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_uri_mapping.html">UriMapping</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Static URI to path mapping. <a href="struct_uri_mapping.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in the file system (can be SD card or LittleFS). <br />
<a href="class_c_l_app_httpd.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a637263863b33a51633c07ec542547fc1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1">MAX_URI_MAPPINGS</a>&#160;&#160;&#160;32</td></tr>
<tr class="separator:a637263863b33a51633c07ec542547fc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a4f1a58013e90714b6ff526f27933ad3d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> { <a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">CAPTURE_STILL</a>
, <a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40">CAPTURE_STREAM</a>
}</td></tr>
<tr class="separator:a4f1a58013e90714b6ff526f27933ad3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2188b2e5ed72e93782e0a6d59111a180"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180">temprature_sens_read</a> ()</td></tr>
<tr class="separator:a2188b2e5ed72e93782e0a6d59111a180"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c021f9721c3b479757f8e1b40624b6c"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c">processor</a> (const String &amp;var)</td></tr>
<tr class="separator:a0c021f9721c3b479757f8e1b40624b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a31c0a3ca52126629c612c494b8d3c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6">onSystemStatus</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:a9a31c0a3ca52126629c612c494b8d3c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc8d1122165362713f0823aeb3b25d1e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e">onStatus</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:acc8d1122165362713f0823aeb3b25d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad302c9a0a0e16505eef900b55250762e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e">onInfo</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:ad302c9a0a0e16505eef900b55250762e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad15b6110c801dc234564fa2f8268a9ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab">onControl</a> (AsyncWebServerRequest *request)</td></tr>
<tr class="separator:ad15b6110c801dc234564fa2f8268a9ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7064e9828984f378d3e04f9b7a47bcae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae">onWsEvent</a> (AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len)</td></tr>
<tr class="separator:a7064e9828984f378d3e04f9b7a47bcae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1424ebf10d44b20fd79bb8102221a969"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969">onSnapTimer</a> (TimerHandle_t pxTimer)</td></tr>
<tr class="separator:a1424ebf10d44b20fd79bb8102221a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93682b89d59abe5dbad7f6d2a7fa8b8e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">dumpSystemStatusToJson</a> (char *buf, size_t size)</td></tr>
<tr class="separator:a93682b89d59abe5dbad7f6d2a7fa8b8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a0174a427778b574c2447cf5d8568f986"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986">AppHttpd</a></td></tr>
<tr class="separator:a0174a427778b574c2447cf5d8568f986"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a637263863b33a51633c07ec542547fc1" name="a637263863b33a51633c07ec542547fc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a637263863b33a51633c07ec542547fc1">&#9670;&nbsp;</a></span>MAX_URI_MAPPINGS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MAX_URI_MAPPINGS&#160;&#160;&#160;32</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a4f1a58013e90714b6ff526f27933ad3d" name="a4f1a58013e90714b6ff526f27933ad3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f1a58013e90714b6ff526f27933ad3d">&#9670;&nbsp;</a></span>capture_mode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac" name="a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac"></a>CAPTURE_STILL&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40" name="a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40"></a>CAPTURE_STREAM&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a93682b89d59abe5dbad7f6d2a7fa8b8e" name="a93682b89d59abe5dbad7f6d2a7fa8b8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93682b89d59abe5dbad7f6d2a7fa8b8e">&#9670;&nbsp;</a></span>dumpSystemStatusToJson()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dumpSystemStatusToJson </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad15b6110c801dc234564fa2f8268a9ab" name="ad15b6110c801dc234564fa2f8268a9ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad15b6110c801dc234564fa2f8268a9ab">&#9670;&nbsp;</a></span>onControl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onControl </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad302c9a0a0e16505eef900b55250762e" name="ad302c9a0a0e16505eef900b55250762e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad302c9a0a0e16505eef900b55250762e">&#9670;&nbsp;</a></span>onInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onInfo </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1424ebf10d44b20fd79bb8102221a969" name="a1424ebf10d44b20fd79bb8102221a969"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1424ebf10d44b20fd79bb8102221a969">&#9670;&nbsp;</a></span>onSnapTimer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onSnapTimer </td>
<td>(</td>
<td class="paramtype">TimerHandle_t&#160;</td>
<td class="paramname"><em>pxTimer</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc8d1122165362713f0823aeb3b25d1e" name="acc8d1122165362713f0823aeb3b25d1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc8d1122165362713f0823aeb3b25d1e">&#9670;&nbsp;</a></span>onStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onStatus </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9a31c0a3ca52126629c612c494b8d3c6" name="a9a31c0a3ca52126629c612c494b8d3c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a31c0a3ca52126629c612c494b8d3c6">&#9670;&nbsp;</a></span>onSystemStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onSystemStatus </td>
<td>(</td>
<td class="paramtype">AsyncWebServerRequest *&#160;</td>
<td class="paramname"><em>request</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7064e9828984f378d3e04f9b7a47bcae" name="a7064e9828984f378d3e04f9b7a47bcae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7064e9828984f378d3e04f9b7a47bcae">&#9670;&nbsp;</a></span>onWsEvent()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void onWsEvent </td>
<td>(</td>
<td class="paramtype">AsyncWebSocket *&#160;</td>
<td class="paramname"><em>server</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AsyncWebSocketClient *&#160;</td>
<td class="paramname"><em>client</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AwsEventType&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0c021f9721c3b479757f8e1b40624b6c" name="a0c021f9721c3b479757f8e1b40624b6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c021f9721c3b479757f8e1b40624b6c">&#9670;&nbsp;</a></span>processor()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">String processor </td>
<td>(</td>
<td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>var</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2188b2e5ed72e93782e0a6d59111a180" name="a2188b2e5ed72e93782e0a6d59111a180"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2188b2e5ed72e93782e0a6d59111a180">&#9670;&nbsp;</a></span>temprature_sens_read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t temprature_sens_read </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a0174a427778b574c2447cf5d8568f986" name="a0174a427778b574c2447cf5d8568f986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0174a427778b574c2447cf5d8568f986">&#9670;&nbsp;</a></span>AppHttpd</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a> AppHttpd</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">extern</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,235 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/app_httpd.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">app_httpd.h</div></div>
</div><!--header-->
<div class="contents">
<a href="app__httpd_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef app_httpd_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define app_httpd_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;esp_int_wdt.h&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;esp_task_wdt.h&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;freertos/timers.h&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &quot;ESPAsyncWebServer.h&quot;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;<a class="code" href="storage_8h.html">storage.h</a>&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &quot;<a class="code" href="app__conn_8h.html">app_conn.h</a>&quot;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;<a class="code" href="app__cam_8h.html">app_cam.h</a>&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1"> 13</a></span><span class="preprocessor">#define MAX_URI_MAPPINGS 32</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180"> 18</a></span>uint8_t <a class="code hl_function" href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180">temprature_sens_read</a>();</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>}</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d"> 23</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> {<a class="code hl_enumvalue" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">CAPTURE_STILL</a>, <a class="code hl_enumvalue" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40">CAPTURE_STREAM</a>};</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>String <a class="code hl_function" href="app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c">processor</a>(<span class="keyword">const</span> String&amp; var);</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6">onSystemStatus</a>(AsyncWebServerRequest *request);</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e">onStatus</a>(AsyncWebServerRequest *request);</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e">onInfo</a>(AsyncWebServerRequest *request);</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab">onControl</a>(AsyncWebServerRequest *request);</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae">onWsEvent</a>(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, <span class="keywordtype">void</span> * arg, uint8_t *data, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969">onSnapTimer</a>(TimerHandle_t pxTimer);</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keywordtype">void</span> <a class="code hl_function" href="app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">dumpSystemStatusToJson</a>(<span class="keywordtype">char</span> * buf, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f"> 40</a></span><span class="keyword">struct </span><a class="code hl_struct" href="struct_uri_mapping.html">UriMapping</a> { <span class="keywordtype">char</span> <a class="code hl_variable" href="struct_uri_mapping.html#a9ce212b0da4d58af1f79b5476b68a7e8">uri</a>[32]; <span class="keywordtype">char</span> <a class="code hl_variable" href="struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f">path</a>[32];};</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html"> 48</a></span><span class="keyword">class </span><a class="code hl_class" href="class_c_l_app_httpd.html">CLAppHttpd</a> : <span class="keyword">public</span> <a class="code hl_class" href="class_c_l_app_component.html">CLAppComponent</a> {</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <a class="code hl_function" href="class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea">CLAppHttpd</a>();</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#aaf8a95884768b7ac3e1c04ea041ee514">start</a>();</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365">loadPrefs</a>();</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716"> 55</a></span> uint32_t <a class="code hl_function" href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716">getClientId</a>() {<span class="keywordflow">return</span> client_id;};</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c"> 57</a></span> int8_t <a class="code hl_function" href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c">getStreamCount</a>() {<span class="keywordflow">return</span> streamCount;};</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9"> 58</a></span> <span class="keywordtype">long</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9">getStreamsServed</a>() {<span class="keywordflow">return</span> streamsServed;};</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9"> 59</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9">getImagesServed</a>() {<span class="keywordflow">return</span> imagesServed;};</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3"> 60</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3">incImagesServed</a>(){imagesServed++;};</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9"> 62</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9">setStreamMode</a>(<a class="code hl_enumeration" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> mode) {streammode = mode;};</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82"> 63</a></span> <a class="code hl_enumeration" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> <a class="code hl_function" href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82">getStreamMode</a>() {<span class="keywordflow">return</span> streammode;};</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a4e52f72c1d20cf6420e2f17b0b521da4">snapToStream</a>(<span class="keywordtype">bool</span> debug = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#af836002eda44f3e400af0808bf9046c1">startStream</a>(uint32_t <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a4889a2a7ee9a0e5ab558b64983249e46">stopStream</a>(uint32_t <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29">updateSnapTimer</a>(<span class="keywordtype">int</span> frameRate);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a36be0ed79de4194e8d00b026fd4be4d0">serialSendCommand</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * cmd);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c"> 73</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c">getSketchSize</a>(){ <span class="keywordflow">return</span> sketchSize;};</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840"> 74</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840">getSketchSpace</a>() {<span class="keywordflow">return</span> sketchSpace;};</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e"> 75</a></span> String <a class="code hl_function" href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e">getSketchMD5</a>() {<span class="keywordflow">return</span> sketchMD5;};</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d"> 77</a></span> String <a class="code hl_function" href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d">getVersion</a>() {<span class="keywordflow">return</span> version;};</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846"> 79</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846">getName</a>() {<span class="keywordflow">return</span> myName;};</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8"> 81</a></span> <span class="keywordtype">char</span> * <a class="code hl_function" href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8">getSerialBuffer</a>() {<span class="keywordflow">return</span> serialBuffer;};</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_struct" href="struct_uri_mapping.html">UriMapping</a> *mappingList[<a class="code hl_define" href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1">MAX_URI_MAPPINGS</a>]; </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">int</span> mappingCount=0;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Name of the application used in web interface</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Can be re-defined in the httpd.json file</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">char</span> myName[20] = <a class="code hl_define" href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd">CAM_NAME</a>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">char</span> serialBuffer[64];</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> AsyncWebServer *server;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> AsyncWebSocket *ws; </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> uint32_t client_id = 0;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> TimerHandle_t snap_timer = NULL;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> int8_t streamCount=0;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">long</span> streamsServed=0;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> imagesServed;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// mode of the image capture</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <a class="code hl_enumeration" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> streammode = <a class="code hl_enumvalue" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">CAPTURE_STILL</a>;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// Sketch Info</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">int</span> sketchSize ;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">int</span> sketchSpace ;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> String sketchMD5;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">const</span> String version = __DATE__ <span class="stringliteral">&quot; @ &quot;</span> __TIME__;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>};</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="keyword">extern</span> <a class="code hl_class" href="class_c_l_app_httpd.html">CLAppHttpd</a> <a class="code hl_variable" href="app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986">AppHttpd</a>;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aapp__cam_8h_html"><div class="ttname"><a href="app__cam_8h.html">app_cam.h</a></div></div>
<div class="ttc" id="aapp__config_8h_html_acc59b7b9d083568456e1131e8492b5dd"><div class="ttname"><a href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd">CAM_NAME</a></div><div class="ttdeci">#define CAM_NAME</div><div class="ttdef"><b>Definition:</b> app_config.h:6</div></div>
<div class="ttc" id="aapp__conn_8h_html"><div class="ttname"><a href="app__conn_8h.html">app_conn.h</a></div></div>
<div class="ttc" id="aapp__httpd_8h_html_a0174a427778b574c2447cf5d8568f986"><div class="ttname"><a href="app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986">AppHttpd</a></div><div class="ttdeci">CLAppHttpd AppHttpd</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:507</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a0c021f9721c3b479757f8e1b40624b6c"><div class="ttname"><a href="app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c">processor</a></div><div class="ttdeci">String processor(const String &amp;var)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:128</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a1424ebf10d44b20fd79bb8102221a969"><div class="ttname"><a href="app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969">onSnapTimer</a></div><div class="ttdeci">void onSnapTimer(TimerHandle_t pxTimer)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:11</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a2188b2e5ed72e93782e0a6d59111a180"><div class="ttname"><a href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180">temprature_sens_read</a></div><div class="ttdeci">uint8_t temprature_sens_read()</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a4f1a58013e90714b6ff526f27933ad3d"><div class="ttname"><a href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a></div><div class="ttdeci">capture_mode</div><div class="ttdef"><b>Definition:</b> app_httpd.h:23</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac"><div class="ttname"><a href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">CAPTURE_STILL</a></div><div class="ttdeci">@ CAPTURE_STILL</div><div class="ttdef"><b>Definition:</b> app_httpd.h:23</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40"><div class="ttname"><a href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40">CAPTURE_STREAM</a></div><div class="ttdeci">@ CAPTURE_STREAM</div><div class="ttdef"><b>Definition:</b> app_httpd.h:23</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a637263863b33a51633c07ec542547fc1"><div class="ttname"><a href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1">MAX_URI_MAPPINGS</a></div><div class="ttdeci">#define MAX_URI_MAPPINGS</div><div class="ttdef"><b>Definition:</b> app_httpd.h:13</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a7064e9828984f378d3e04f9b7a47bcae"><div class="ttname"><a href="app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae">onWsEvent</a></div><div class="ttdeci">void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:93</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a93682b89d59abe5dbad7f6d2a7fa8b8e"><div class="ttname"><a href="app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">dumpSystemStatusToJson</a></div><div class="ttdeci">void dumpSystemStatusToJson(char *buf, size_t size)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:411</div></div>
<div class="ttc" id="aapp__httpd_8h_html_a9a31c0a3ca52126629c612c494b8d3c6"><div class="ttname"><a href="app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6">onSystemStatus</a></div><div class="ttdeci">void onSystemStatus(AsyncWebServerRequest *request)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:393</div></div>
<div class="ttc" id="aapp__httpd_8h_html_acc8d1122165362713f0823aeb3b25d1e"><div class="ttname"><a href="app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e">onStatus</a></div><div class="ttdeci">void onStatus(AsyncWebServerRequest *request)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:349</div></div>
<div class="ttc" id="aapp__httpd_8h_html_ad15b6110c801dc234564fa2f8268a9ab"><div class="ttname"><a href="app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab">onControl</a></div><div class="ttdeci">void onControl(AsyncWebServerRequest *request)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:223</div></div>
<div class="ttc" id="aapp__httpd_8h_html_ad302c9a0a0e16505eef900b55250762e"><div class="ttname"><a href="app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e">onInfo</a></div><div class="ttdeci">void onInfo(AsyncWebServerRequest *request)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:339</div></div>
<div class="ttc" id="aclass_c_l_app_component_html"><div class="ttname"><a href="class_c_l_app_component.html">CLAppComponent</a></div><div class="ttdoc">Abstract root class for the appication components.</div><div class="ttdef"><b>Definition:</b> app_component.h:14</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html"><div class="ttname"><a href="class_c_l_app_httpd.html">CLAppHttpd</a></div><div class="ttdoc">WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in t...</div><div class="ttdef"><b>Definition:</b> app_httpd.h:48</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a1682f0b927c3c3691a20c1298e9922c9"><div class="ttname"><a href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9">CLAppHttpd::getImagesServed</a></div><div class="ttdeci">unsigned long getImagesServed()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:59</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a2b63e9eb18e2d67fc3f352fec0b66cd9"><div class="ttname"><a href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9">CLAppHttpd::getStreamsServed</a></div><div class="ttdeci">long getStreamsServed()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:58</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a2db88a341da481eff2270d5fa8d607a3"><div class="ttname"><a href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3">CLAppHttpd::incImagesServed</a></div><div class="ttdeci">void incImagesServed()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:60</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a36be0ed79de4194e8d00b026fd4be4d0"><div class="ttname"><a href="class_c_l_app_httpd.html#a36be0ed79de4194e8d00b026fd4be4d0">CLAppHttpd::serialSendCommand</a></div><div class="ttdeci">void serialSendCommand(const char *cmd)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:469</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a3ba8f3dfa8888b198ac9ad69e88f1a5d"><div class="ttname"><a href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d">CLAppHttpd::getVersion</a></div><div class="ttdeci">String getVersion()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:77</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a40005188d09a72002252fd4b6e2cd2b9"><div class="ttname"><a href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9">CLAppHttpd::setStreamMode</a></div><div class="ttdeci">void setStreamMode(capture_mode mode)</div><div class="ttdef"><b>Definition:</b> app_httpd.h:62</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a4889a2a7ee9a0e5ab558b64983249e46"><div class="ttname"><a href="class_c_l_app_httpd.html#a4889a2a7ee9a0e5ab558b64983249e46">CLAppHttpd::stopStream</a></div><div class="ttdeci">int stopStream(uint32_t id)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:207</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a4be3e20152216b606c83ae09e74c3840"><div class="ttname"><a href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840">CLAppHttpd::getSketchSpace</a></div><div class="ttdeci">int getSketchSpace()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:74</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a4e52f72c1d20cf6420e2f17b0b521da4"><div class="ttname"><a href="class_c_l_app_httpd.html#a4e52f72c1d20cf6420e2f17b0b521da4">CLAppHttpd::snapToStream</a></div><div class="ttdeci">int snapToStream(bool debug=false)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:141</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a56a97b6250dd609d57e9c84128813846"><div class="ttname"><a href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846">CLAppHttpd::getName</a></div><div class="ttdeci">char * getName()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:79</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a58f5ed0635650911e1540f138df24b29"><div class="ttname"><a href="class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29">CLAppHttpd::updateSnapTimer</a></div><div class="ttdeci">void updateSnapTimer(int frameRate)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:334</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a5f8f1b5b6e4a1da9dbc9788a4442e00c"><div class="ttname"><a href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c">CLAppHttpd::getStreamCount</a></div><div class="ttdeci">int8_t getStreamCount()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:57</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a80c23913b0e693ae584b8177647cec6c"><div class="ttname"><a href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c">CLAppHttpd::getSketchSize</a></div><div class="ttdeci">int getSketchSize()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:73</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a86f5338752065817fabed08e118a8ff8"><div class="ttname"><a href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8">CLAppHttpd::getSerialBuffer</a></div><div class="ttdeci">char * getSerialBuffer()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:81</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_a9c73098b74bbc4bb1358c2723019e716"><div class="ttname"><a href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716">CLAppHttpd::getClientId</a></div><div class="ttdeci">uint32_t getClientId()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:55</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_aaf8a95884768b7ac3e1c04ea041ee514"><div class="ttname"><a href="class_c_l_app_httpd.html#aaf8a95884768b7ac3e1c04ea041ee514">CLAppHttpd::start</a></div><div class="ttdeci">int start()</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:15</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_ad921ac128d82e11c8170847b25970dea"><div class="ttname"><a href="class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea">CLAppHttpd::CLAppHttpd</a></div><div class="ttdeci">CLAppHttpd()</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:3</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_add4710263a9093fa4f57a2c26d97310e"><div class="ttname"><a href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e">CLAppHttpd::getSketchMD5</a></div><div class="ttdeci">String getSketchMD5()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:75</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_aeef90f323bd91eba9d00d0b464177c82"><div class="ttname"><a href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82">CLAppHttpd::getStreamMode</a></div><div class="ttdeci">capture_mode getStreamMode()</div><div class="ttdef"><b>Definition:</b> app_httpd.h:63</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_af530618baf6452852e39524efa4fd365"><div class="ttname"><a href="class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365">CLAppHttpd::loadPrefs</a></div><div class="ttdeci">int loadPrefs()</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:474</div></div>
<div class="ttc" id="aclass_c_l_app_httpd_html_af836002eda44f3e400af0808bf9046c1"><div class="ttname"><a href="class_c_l_app_httpd.html#af836002eda44f3e400af0808bf9046c1">CLAppHttpd::startStream</a></div><div class="ttdeci">int startStream(uint32_t id)</div><div class="ttdef"><b>Definition:</b> app_httpd.cpp:164</div></div>
<div class="ttc" id="astorage_8h_html"><div class="ttname"><a href="storage_8h.html">storage.h</a></div></div>
<div class="ttc" id="astruct_uri_mapping_html"><div class="ttname"><a href="struct_uri_mapping.html">UriMapping</a></div><div class="ttdoc">Static URI to path mapping.</div><div class="ttdef"><b>Definition:</b> app_httpd.h:40</div></div>
<div class="ttc" id="astruct_uri_mapping_html_a28b0be3b16e0a3d7f7bd4ecff420fa4f"><div class="ttname"><a href="struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f">UriMapping::path</a></div><div class="ttdeci">char path[32]</div><div class="ttdef"><b>Definition:</b> app_httpd.h:40</div></div>
<div class="ttc" id="astruct_uri_mapping_html_a9ce212b0da4d58af1f79b5476b68a7e8"><div class="ttname"><a href="struct_uri_mapping.html#a9ce212b0da4d58af1f79b5476b68a7e8">UriMapping::uri</a></div><div class="ttdeci">char uri[32]</div><div class="ttdef"><b>Definition:</b> app_httpd.h:40</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

BIN
Docs/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
Docs/html/bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/camera_pins.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">camera_pins.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="camera__pins_8h_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,324 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/camera_pins.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">camera_pins.h</div></div>
</div><!--header-->
<div class="contents">
<a href="camera__pins_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * Pin definitions for some common ESP-CAM modules</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * Select the module to use in myconfig.h</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Defaults to AI-THINKER CAM module</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> *</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> */</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#if defined(CAMERA_MODEL_AI_THINKER)</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// AI Thinker</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// https://github.com/SeeedDocument/forum_doc/raw/master/reg/ESP32_CAM_V1.6.pdf</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor"> #define PWDN_GPIO_NUM 32</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor"> #define RESET_GPIO_NUM -1</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor"> #define XCLK_GPIO_NUM 0</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor"> #define SIOD_GPIO_NUM 26</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor"> #define SIOC_GPIO_NUM 27</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor"> #define Y9_GPIO_NUM 35</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor"> #define Y8_GPIO_NUM 34</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor"> #define Y7_GPIO_NUM 39</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor"> #define Y6_GPIO_NUM 36</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor"> #define Y5_GPIO_NUM 21</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor"> #define Y4_GPIO_NUM 19</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor"> #define Y3_GPIO_NUM 18</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor"> #define Y2_GPIO_NUM 5</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 25</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor"> #define HREF_GPIO_NUM 23</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor"> #define PCLK_GPIO_NUM 22</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor"> #define LED_PIN 33 </span><span class="comment">// Status led</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor"> #define LED_ON LOW </span><span class="comment">// - Pin is inverted.</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor"> #define LED_OFF HIGH </span><span class="comment">//</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor"> #define LAMP_PIN 4 </span><span class="comment">// LED FloodLamp.</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#elif defined(CAMERA_MODEL_WROVER_KIT)</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// ESP WROVER</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// https://dl.espressif.com/dl/schematics/ESP-WROVER-KIT_SCH-2.pdf</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor"> #define RESET_GPIO_NUM -1</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor"> #define XCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor"> #define SIOD_GPIO_NUM 26</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor"> #define SIOC_GPIO_NUM 27</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor"> #define Y9_GPIO_NUM 35</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor"> #define Y8_GPIO_NUM 34</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor"> #define Y7_GPIO_NUM 39</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor"> #define Y6_GPIO_NUM 36</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor"> #define Y5_GPIO_NUM 19</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor"> #define Y4_GPIO_NUM 18</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor"> #define Y3_GPIO_NUM 5</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor"> #define Y2_GPIO_NUM 4</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 25</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor"> #define HREF_GPIO_NUM 23</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor"> #define PCLK_GPIO_NUM 22</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor"> #define LED_PIN 2 </span><span class="comment">// A status led on the RGB; could also use pin 0 or 4</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor"> #define LED_ON HIGH </span><span class="comment">//</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor"> #define LED_OFF LOW </span><span class="comment">//</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// #define LAMP_PIN x // No LED FloodLamp.</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#elif defined(CAMERA_MODEL_ESP_EYE)</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">//</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// ESP-EYE</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// https://twitter.com/esp32net/status/1085488403460882437</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor"> #define RESET_GPIO_NUM -1</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor"> #define XCLK_GPIO_NUM 4</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor"> #define SIOD_GPIO_NUM 18</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor"> #define Y9_GPIO_NUM 36</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor"> #define Y8_GPIO_NUM 37</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor"> #define Y7_GPIO_NUM 38</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor"> #define Y5_GPIO_NUM 35</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor"> #define Y4_GPIO_NUM 14</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor"> #define Y3_GPIO_NUM 13</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor"> #define Y2_GPIO_NUM 34</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 5</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor"> #define HREF_GPIO_NUM 27</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor"> #define PCLK_GPIO_NUM 25</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor"> #define LED_PIN 21 </span><span class="comment">// Status led</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor"> #define LED_ON HIGH </span><span class="comment">//</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="preprocessor"> #define LED_OFF LOW </span><span class="comment">//</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// #define LAMP_PIN x // No LED FloodLamp.</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="preprocessor">#elif defined(CAMERA_MODEL_M5STACK_PSRAM)</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">//</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// ESP32 M5STACK</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="comment">//</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor"> #define RESET_GPIO_NUM 15</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor"> #define XCLK_GPIO_NUM 27</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor"> #define SIOD_GPIO_NUM 25</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor"> #define Y9_GPIO_NUM 19</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor"> #define Y8_GPIO_NUM 36</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #define Y7_GPIO_NUM 18</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor"> #define Y5_GPIO_NUM 5</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor"> #define Y4_GPIO_NUM 34</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor"> #define Y3_GPIO_NUM 35</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor"> #define Y2_GPIO_NUM 32</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 22</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor"> #define HREF_GPIO_NUM 26</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor"> #define PCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// M5 Stack status/illumination LED details unknown/unclear</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// #define LED_PIN x // Status led</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// #define LED_ON HIGH //</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// #define LED_OFF LOW //</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// #define LAMP_PIN x // LED FloodLamp.</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="preprocessor">#elif defined(CAMERA_MODEL_M5STACK_V2_PSRAM)</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">//</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// ESP32 M5STACK V2</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">//</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="preprocessor"> #define RESET_GPIO_NUM 15</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor"> #define XCLK_GPIO_NUM 27</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="preprocessor"> #define SIOD_GPIO_NUM 22</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor"> #define Y9_GPIO_NUM 19</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor"> #define Y8_GPIO_NUM 36</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor"> #define Y7_GPIO_NUM 18</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor"> #define Y5_GPIO_NUM 5</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #define Y4_GPIO_NUM 34</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #define Y3_GPIO_NUM 35</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="preprocessor"> #define Y2_GPIO_NUM 32</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 25</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="preprocessor"> #define HREF_GPIO_NUM 26</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="preprocessor"> #define PCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// M5 Stack status/illumination LED details unknown/unclear</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// #define LED_PIN x // Status led</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// #define LED_ON HIGH //</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// #define LED_OFF LOW //</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// #define LAMP_PIN x // LED FloodLamp.</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="preprocessor">#elif defined(CAMERA_MODEL_M5STACK_WIDE)</span></div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">//</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// ESP32 M5STACK WIDE</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">//</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor"> #define RESET_GPIO_NUM 15</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="preprocessor"> #define XCLK_GPIO_NUM 27</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="preprocessor"> #define SIOD_GPIO_NUM 22</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="preprocessor"> #define Y9_GPIO_NUM 19</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="preprocessor"> #define Y8_GPIO_NUM 36</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="preprocessor"> #define Y7_GPIO_NUM 18</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor"> #define Y5_GPIO_NUM 5</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="preprocessor"> #define Y4_GPIO_NUM 34</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor"> #define Y3_GPIO_NUM 35</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="preprocessor"> #define Y2_GPIO_NUM 32</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 25</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor"> #define HREF_GPIO_NUM 26</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #define PCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// M5 Stack status/illumination LED details unknown/unclear</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// #define LED_PIN x // Status led</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// #define LED_ON HIGH //</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// #define LED_OFF LOW //</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// #define LAMP_PIN x // LED FloodLamp.</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor">#elif defined(CAMERA_MODEL_M5STACK_ESP32CAM)</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="comment">//</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="comment">// Common M5 Stack without PSRAM</span></div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">//</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor"> #define PWDN_GPIO_NUM -1</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="preprocessor"> #define RESET_GPIO_NUM 15</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor"> #define XCLK_GPIO_NUM 27</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor"> #define SIOD_GPIO_NUM 25</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor"> #define Y9_GPIO_NUM 19</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="preprocessor"> #define Y8_GPIO_NUM 36</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor"> #define Y7_GPIO_NUM 18</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor"> #define Y5_GPIO_NUM 5</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor"> #define Y4_GPIO_NUM 34</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor"> #define Y3_GPIO_NUM 35</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor"> #define Y2_GPIO_NUM 17</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 22</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor"> #define HREF_GPIO_NUM 26</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor"> #define PCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// Note NO PSRAM,; so maximum working resolution is XGA 1024×768</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// M5 Stack status/illumination LED details unknown/unclear</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// #define LED_PIN x // Status led</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// #define LED_ON HIGH //</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// #define LED_OFF LOW //</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// #define LAMP_PIN x // LED FloodLamp.</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor">#elif defined(CAMERA_MODEL_TTGO_T_JOURNAL)</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="comment">//</span></div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// LilyGO TTGO T-Journal ESP32; with OLED! but not used here.. :-(</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="preprocessor"> #define PWDN_GPIO_NUM 0</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor"> #define RESET_GPIO_NUM 15</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="preprocessor"> #define XCLK_GPIO_NUM 27</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor"> #define SIOD_GPIO_NUM 25</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor"> #define SIOC_GPIO_NUM 23</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="preprocessor"> #define Y9_GPIO_NUM 19</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor"> #define Y8_GPIO_NUM 36</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span><span class="preprocessor"> #define Y7_GPIO_NUM 18</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="preprocessor"> #define Y6_GPIO_NUM 39</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="preprocessor"> #define Y5_GPIO_NUM 5</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor"> #define Y4_GPIO_NUM 34</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> #define Y3_GPIO_NUM 35</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="preprocessor"> #define Y2_GPIO_NUM 17</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 22</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> #define HREF_GPIO_NUM 26</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="preprocessor"> #define PCLK_GPIO_NUM 21</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// TTGO T Journal status/illumination LED details unknown/unclear</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// #define LED_PIN 33 // Status led</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="comment">// #define LED_ON LOW // - Pin is inverted.</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// #define LED_OFF HIGH //</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// #define LAMP_PIN 4 // LED FloodLamp.</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#elif defined(CAMERA_MODEL_ARDUCAM_ESP32S_UNO)</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// Pins from user @rdragonrydr</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="comment">// https://github.com/ArduCAM/ArduCAM_ESP32S_UNO/</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="comment">// Based on AI-THINKER definitions</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor"> #define PWDN_GPIO_NUM 32</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor"> #define RESET_GPIO_NUM -1</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="preprocessor"> #define XCLK_GPIO_NUM 0</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor"> #define SIOD_GPIO_NUM 26</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor"> #define SIOC_GPIO_NUM 27</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor"> #define Y9_GPIO_NUM 35</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor"> #define Y8_GPIO_NUM 34</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor"> #define Y7_GPIO_NUM 39</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="preprocessor"> #define Y6_GPIO_NUM 36</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="preprocessor"> #define Y5_GPIO_NUM 21</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor"> #define Y4_GPIO_NUM 19</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"> #define Y3_GPIO_NUM 18</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="preprocessor"> #define Y2_GPIO_NUM 5</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor"> #define VSYNC_GPIO_NUM 25</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="preprocessor"> #define HREF_GPIO_NUM 23</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor"> #define PCLK_GPIO_NUM 22</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="preprocessor"> #define LED_PIN 2 </span><span class="comment">// Status led</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="preprocessor"> #define LED_ON HIGH </span><span class="comment">// - Pin is not inverted.</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="preprocessor"> #define LED_OFF LOW </span><span class="comment">//</span></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="comment">//#define LAMP_PIN x // No LED FloodLamp.</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// Well.</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// that went badly...</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor"> #error &quot;Camera model not selected, did you forget to uncomment it in myconfig?&quot;</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,698 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CLAppCam Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">CLAppCam Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Camera Manager Manages all interactions with camera.
<a href="class_c_l_app_cam.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="app__cam_8h_source.html">app_cam.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CLAppCam:</div>
<div class="dyncontent">
<div class="center">
<img src="class_c_l_app_cam.png" usemap="#CLAppCam_map" alt=""/>
<map id="CLAppCam_map" name="CLAppCam_map">
<area href="class_c_l_app_component.html" title="Abstract root class for the appication components." alt="CLAppComponent" shape="rect" coords="0,0,114,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5489d93c51c1b4f3457af58970ff953d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d">CLAppCam</a> ()</td></tr>
<tr class="separator:a5489d93c51c1b4f3457af58970ff953d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af277f42041c7c0a561bd8c8b087f4b3a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#af277f42041c7c0a561bd8c8b087f4b3a">start</a> ()</td></tr>
<tr class="separator:af277f42041c7c0a561bd8c8b087f4b3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f1da94b3efb536a15419e5983fcac81"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a8f1da94b3efb536a15419e5983fcac81">stop</a> ()</td></tr>
<tr class="separator:a8f1da94b3efb536a15419e5983fcac81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26a9c706c7c9f86adbfa3cfb748760df"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df">loadPrefs</a> ()</td></tr>
<tr class="separator:a26a9c706c7c9f86adbfa3cfb748760df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f2bc29dea9609204871b7b5bc281c4f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a0f2bc29dea9609204871b7b5bc281c4f">savePrefs</a> ()</td></tr>
<tr class="separator:a0f2bc29dea9609204871b7b5bc281c4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cab0636ce5e566a7b89016c477aec2b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a8cab0636ce5e566a7b89016c477aec2b">setLamp</a> (int newVal=<a class="el" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">LAMP_DEFAULT</a>)</td></tr>
<tr class="separator:a8cab0636ce5e566a7b89016c477aec2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84dc1e1b593b3d4b67889cc88893c92f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f">getLamp</a> ()</td></tr>
<tr class="separator:a84dc1e1b593b3d4b67889cc88893c92f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5bd4f968fd8345d3d2a5d8a121586c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3">setAutoLamp</a> (bool val)</td></tr>
<tr class="separator:aa5bd4f968fd8345d3d2a5d8a121586c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa68f9714fa1c5bdf77708279c8da081b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b">isAutoLamp</a> ()</td></tr>
<tr class="separator:aa68f9714fa1c5bdf77708279c8da081b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac20c8599dfc6112502b2ca9e446e6af5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5">getSensorPID</a> ()</td></tr>
<tr class="separator:ac20c8599dfc6112502b2ca9e446e6af5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af812f50b9e35bcdb56af399c4fafd8f2"><td class="memItemLeft" align="right" valign="top">sensor_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2">getSensor</a> ()</td></tr>
<tr class="separator:af812f50b9e35bcdb56af399c4fafd8f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ffe4ceb1fc0ae537d4e5f96cb7691e"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e">getErr</a> ()</td></tr>
<tr class="separator:a97ffe4ceb1fc0ae537d4e5f96cb7691e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a790db89fdbe6524175ad6f447b863c26"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26">getFrameRate</a> ()</td></tr>
<tr class="separator:a790db89fdbe6524175ad6f447b863c26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6581e369883546817a1edaedf4af1734"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734">setFrameRate</a> (int newFrameRate)</td></tr>
<tr class="separator:a6581e369883546817a1edaedf4af1734"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ccd0763eb8eeb559b46e747df25d268"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268">setXclk</a> (int val)</td></tr>
<tr class="separator:a9ccd0763eb8eeb559b46e747df25d268"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e19e1d337c7d7406d713a42615005aa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa">getXclk</a> ()</td></tr>
<tr class="separator:a8e19e1d337c7d7406d713a42615005aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27d4c05b87660b0e04b6a8902f0f173e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e">setRotation</a> (int val)</td></tr>
<tr class="separator:a27d4c05b87660b0e04b6a8902f0f173e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65918dca872c1d5bdcb0bb556451127f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f">getRotation</a> ()</td></tr>
<tr class="separator:a65918dca872c1d5bdcb0bb556451127f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89a7a39bd89130cab06fd7139fc9b6d9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a89a7a39bd89130cab06fd7139fc9b6d9">snapToBufer</a> ()</td></tr>
<tr class="separator:a89a7a39bd89130cab06fd7139fc9b6d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac54409dcd9344abbbe434b237dc505f"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f">getBuffer</a> ()</td></tr>
<tr class="separator:aac54409dcd9344abbbe434b237dc505f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0f1c434be24055bab3abb459a071abd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd">getBufferSize</a> ()</td></tr>
<tr class="separator:aa0f1c434be24055bab3abb459a071abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f01a309f73eb36142ab8b449c81a381"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381">isJPEGinBuffer</a> ()</td></tr>
<tr class="separator:a1f01a309f73eb36142ab8b449c81a381"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf9c6d7306c5122eb6766011b8fc4c4c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c">releaseBuffer</a> ()</td></tr>
<tr class="separator:aaf9c6d7306c5122eb6766011b8fc4c4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">start</a> ()</td></tr>
<tr class="separator:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">loadPrefs</a> ()</td></tr>
<tr class="separator:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">savePrefs</a> ()</td></tr>
<tr class="separator:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">dumpPrefs</a> ()</td></tr>
<tr class="separator:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">removePrefs</a> ()</td></tr>
<tr class="separator:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">getPrefsFileName</a> (bool forsave=false)</td></tr>
<tr class="separator:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">setDebugMode</a> (bool val)</td></tr>
<tr class="separator:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">isDebugMode</a> ()</td></tr>
<tr class="separator:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">getLastErr</a> ()</td></tr>
<tr class="separator:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">setTag</a> (const char *t)</td></tr>
<tr class="separator:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">setErr</a> (int err_code)</td></tr>
<tr class="separator:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">readJsonIntVal</a> (jparse_ctx_t *jctx, char *token)</td></tr>
<tr class="memdesc:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="mdescLeft">&#160;</td><td class="mdescRight">reads the Int value from JSON context by token. <a href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">More...</a><br /></td></tr>
<tr class="separator:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">parsePrefs</a> (jparse_ctx_t *jctx)</td></tr>
<tr class="separator:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Camera Manager Manages all interactions with camera. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a5489d93c51c1b4f3457af58970ff953d" name="a5489d93c51c1b4f3457af58970ff953d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5489d93c51c1b4f3457af58970ff953d">&#9670;&nbsp;</a></span>CLAppCam()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">CLAppCam::CLAppCam </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aac54409dcd9344abbbe434b237dc505f" name="aac54409dcd9344abbbe434b237dc505f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac54409dcd9344abbbe434b237dc505f">&#9670;&nbsp;</a></span>getBuffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t * CLAppCam::getBuffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa0f1c434be24055bab3abb459a071abd" name="aa0f1c434be24055bab3abb459a071abd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0f1c434be24055bab3abb459a071abd">&#9670;&nbsp;</a></span>getBufferSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t CLAppCam::getBufferSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a97ffe4ceb1fc0ae537d4e5f96cb7691e" name="a97ffe4ceb1fc0ae537d4e5f96cb7691e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97ffe4ceb1fc0ae537d4e5f96cb7691e">&#9670;&nbsp;</a></span>getErr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String CLAppCam::getErr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a790db89fdbe6524175ad6f447b863c26" name="a790db89fdbe6524175ad6f447b863c26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a790db89fdbe6524175ad6f447b863c26">&#9670;&nbsp;</a></span>getFrameRate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::getFrameRate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a84dc1e1b593b3d4b67889cc88893c92f" name="a84dc1e1b593b3d4b67889cc88893c92f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84dc1e1b593b3d4b67889cc88893c92f">&#9670;&nbsp;</a></span>getLamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::getLamp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a65918dca872c1d5bdcb0bb556451127f" name="a65918dca872c1d5bdcb0bb556451127f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65918dca872c1d5bdcb0bb556451127f">&#9670;&nbsp;</a></span>getRotation()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::getRotation </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af812f50b9e35bcdb56af399c4fafd8f2" name="af812f50b9e35bcdb56af399c4fafd8f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af812f50b9e35bcdb56af399c4fafd8f2">&#9670;&nbsp;</a></span>getSensor()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">sensor_t * CLAppCam::getSensor </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac20c8599dfc6112502b2ca9e446e6af5" name="ac20c8599dfc6112502b2ca9e446e6af5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac20c8599dfc6112502b2ca9e446e6af5">&#9670;&nbsp;</a></span>getSensorPID()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::getSensorPID </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8e19e1d337c7d7406d713a42615005aa" name="a8e19e1d337c7d7406d713a42615005aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e19e1d337c7d7406d713a42615005aa">&#9670;&nbsp;</a></span>getXclk()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::getXclk </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa68f9714fa1c5bdf77708279c8da081b" name="aa68f9714fa1c5bdf77708279c8da081b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa68f9714fa1c5bdf77708279c8da081b">&#9670;&nbsp;</a></span>isAutoLamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppCam::isAutoLamp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1f01a309f73eb36142ab8b449c81a381" name="a1f01a309f73eb36142ab8b449c81a381"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f01a309f73eb36142ab8b449c81a381">&#9670;&nbsp;</a></span>isJPEGinBuffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppCam::isJPEGinBuffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a26a9c706c7c9f86adbfa3cfb748760df" name="a26a9c706c7c9f86adbfa3cfb748760df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26a9c706c7c9f86adbfa3cfb748760df">&#9670;&nbsp;</a></span>loadPrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::loadPrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aaf9c6d7306c5122eb6766011b8fc4c4c" name="aaf9c6d7306c5122eb6766011b8fc4c4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf9c6d7306c5122eb6766011b8fc4c4c">&#9670;&nbsp;</a></span>releaseBuffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::releaseBuffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0f2bc29dea9609204871b7b5bc281c4f" name="a0f2bc29dea9609204871b7b5bc281c4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f2bc29dea9609204871b7b5bc281c4f">&#9670;&nbsp;</a></span>savePrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::savePrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa5bd4f968fd8345d3d2a5d8a121586c3" name="aa5bd4f968fd8345d3d2a5d8a121586c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5bd4f968fd8345d3d2a5d8a121586c3">&#9670;&nbsp;</a></span>setAutoLamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::setAutoLamp </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6581e369883546817a1edaedf4af1734" name="a6581e369883546817a1edaedf4af1734"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6581e369883546817a1edaedf4af1734">&#9670;&nbsp;</a></span>setFrameRate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::setFrameRate </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>newFrameRate</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8cab0636ce5e566a7b89016c477aec2b" name="a8cab0636ce5e566a7b89016c477aec2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cab0636ce5e566a7b89016c477aec2b">&#9670;&nbsp;</a></span>setLamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::setLamp </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>newVal</em> = <code><a class="el" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">LAMP_DEFAULT</a></code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a27d4c05b87660b0e04b6a8902f0f173e" name="a27d4c05b87660b0e04b6a8902f0f173e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27d4c05b87660b0e04b6a8902f0f173e">&#9670;&nbsp;</a></span>setRotation()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::setRotation </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9ccd0763eb8eeb559b46e747df25d268" name="a9ccd0763eb8eeb559b46e747df25d268"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ccd0763eb8eeb559b46e747df25d268">&#9670;&nbsp;</a></span>setXclk()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppCam::setXclk </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a89a7a39bd89130cab06fd7139fc9b6d9" name="a89a7a39bd89130cab06fd7139fc9b6d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89a7a39bd89130cab06fd7139fc9b6d9">&#9670;&nbsp;</a></span>snapToBufer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::snapToBufer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af277f42041c7c0a561bd8c8b087f4b3a" name="af277f42041c7c0a561bd8c8b087f4b3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af277f42041c7c0a561bd8c8b087f4b3a">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8f1da94b3efb536a15419e5983fcac81" name="a8f1da94b3efb536a15419e5983fcac81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f1da94b3efb536a15419e5983fcac81">&#9670;&nbsp;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppCam::stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="app__cam_8h_source.html">app_cam.h</a></li>
<li>src/<a class="el" href="app__cam_8cpp.html">app_cam.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

View File

@ -0,0 +1,463 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CLAppComponent Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">CLAppComponent Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Abstract root class for the appication components.
<a href="class_c_l_app_component.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="app__component_8h_source.html">app_component.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CLAppComponent:</div>
<div class="dyncontent">
<div class="center">
<img src="class_c_l_app_component.png" usemap="#CLAppComponent_map" alt=""/>
<map id="CLAppComponent_map" name="CLAppComponent_map">
<area href="class_c_l_app_cam.html" title="Camera Manager Manages all interactions with camera." alt="CLAppCam" shape="rect" coords="0,56,114,80"/>
<area href="class_c_l_app_conn.html" title="Connection Manager This class manages everything related to connectivity of the application: WiFi,..." alt="CLAppConn" shape="rect" coords="124,56,238,80"/>
<area href="class_c_l_app_httpd.html" title="WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in t..." alt="CLAppHttpd" shape="rect" coords="248,56,362,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7e64a4c55bd1f3216c507101835392b5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">start</a> ()</td></tr>
<tr class="separator:a7e64a4c55bd1f3216c507101835392b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300c0d2775ed4a082f63449826ee3b98"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">loadPrefs</a> ()</td></tr>
<tr class="separator:a300c0d2775ed4a082f63449826ee3b98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a25b7869113a15e18f34b2c690189a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">savePrefs</a> ()</td></tr>
<tr class="separator:a31a25b7869113a15e18f34b2c690189a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90151113ffbbcc630e347580b3ee9fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">dumpPrefs</a> ()</td></tr>
<tr class="separator:ad90151113ffbbcc630e347580b3ee9fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af763174f3eed76761a2eeab9aa845e6a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">removePrefs</a> ()</td></tr>
<tr class="separator:af763174f3eed76761a2eeab9aa845e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada7959a912692cd2c03bd950faa8c5bc"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">getPrefsFileName</a> (bool forsave=false)</td></tr>
<tr class="separator:ada7959a912692cd2c03bd950faa8c5bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ab4a575691522178eb10d9bffcff5b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">setDebugMode</a> (bool val)</td></tr>
<tr class="separator:a9ab4a575691522178eb10d9bffcff5b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4891eef9a9970b158d528fef5dda8d30"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">isDebugMode</a> ()</td></tr>
<tr class="separator:a4891eef9a9970b158d528fef5dda8d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c99f78f5ea7090785c70864b8fd9101"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">getLastErr</a> ()</td></tr>
<tr class="separator:a0c99f78f5ea7090785c70864b8fd9101"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a75a706c37e31c3083c845d304e3a519b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">setTag</a> (const char *t)</td></tr>
<tr class="separator:a75a706c37e31c3083c845d304e3a519b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9565596ad1c588c05e349d92b2476e40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">setErr</a> (int err_code)</td></tr>
<tr class="separator:a9565596ad1c588c05e349d92b2476e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae2aee9e4a8001900d8b380adb66a8e3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">readJsonIntVal</a> (jparse_ctx_t *jctx, char *token)</td></tr>
<tr class="memdesc:aae2aee9e4a8001900d8b380adb66a8e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">reads the Int value from JSON context by token. <a href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">More...</a><br /></td></tr>
<tr class="separator:aae2aee9e4a8001900d8b380adb66a8e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b23015c89977efd202896a19e7ca319"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">parsePrefs</a> (jparse_ctx_t *jctx)</td></tr>
<tr class="separator:a7b23015c89977efd202896a19e7ca319"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Abstract root class for the appication components. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ad90151113ffbbcc630e347580b3ee9fe" name="ad90151113ffbbcc630e347580b3ee9fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad90151113ffbbcc630e347580b3ee9fe">&#9670;&nbsp;</a></span>dumpPrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppComponent::dumpPrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0c99f78f5ea7090785c70864b8fd9101" name="a0c99f78f5ea7090785c70864b8fd9101"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c99f78f5ea7090785c70864b8fd9101">&#9670;&nbsp;</a></span>getLastErr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::getLastErr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ada7959a912692cd2c03bd950faa8c5bc" name="ada7959a912692cd2c03bd950faa8c5bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada7959a912692cd2c03bd950faa8c5bc">&#9670;&nbsp;</a></span>getPrefsFileName()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char * CLAppComponent::getPrefsFileName </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>forsave</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4891eef9a9970b158d528fef5dda8d30" name="a4891eef9a9970b158d528fef5dda8d30"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4891eef9a9970b158d528fef5dda8d30">&#9670;&nbsp;</a></span>isDebugMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppComponent::isDebugMode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a300c0d2775ed4a082f63449826ee3b98" name="a300c0d2775ed4a082f63449826ee3b98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a300c0d2775ed4a082f63449826ee3b98">&#9670;&nbsp;</a></span>loadPrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::loadPrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7b23015c89977efd202896a19e7ca319" name="a7b23015c89977efd202896a19e7ca319"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b23015c89977efd202896a19e7ca319">&#9670;&nbsp;</a></span>parsePrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::parsePrefs </td>
<td>(</td>
<td class="paramtype">jparse_ctx_t *&#160;</td>
<td class="paramname"><em>jctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aae2aee9e4a8001900d8b380adb66a8e3" name="aae2aee9e4a8001900d8b380adb66a8e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae2aee9e4a8001900d8b380adb66a8e3">&#9670;&nbsp;</a></span>readJsonIntVal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::readJsonIntVal </td>
<td>(</td>
<td class="paramtype">jparse_ctx_t *&#160;</td>
<td class="paramname"><em>jctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>token</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>reads the Int value from JSON context by token. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">jctx</td><td>JSON context pointer </td></tr>
<tr><td class="paramname">token</td><td>JSON field where the value is to be retrieved from </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>value, or 0 if fail </dd></dl>
</div>
</div>
<a id="af763174f3eed76761a2eeab9aa845e6a" name="af763174f3eed76761a2eeab9aa845e6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af763174f3eed76761a2eeab9aa845e6a">&#9670;&nbsp;</a></span>removePrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::removePrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a31a25b7869113a15e18f34b2c690189a" name="a31a25b7869113a15e18f34b2c690189a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31a25b7869113a15e18f34b2c690189a">&#9670;&nbsp;</a></span>savePrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::savePrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9ab4a575691522178eb10d9bffcff5b7" name="a9ab4a575691522178eb10d9bffcff5b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ab4a575691522178eb10d9bffcff5b7">&#9670;&nbsp;</a></span>setDebugMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppComponent::setDebugMode </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>val</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9565596ad1c588c05e349d92b2476e40" name="a9565596ad1c588c05e349d92b2476e40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9565596ad1c588c05e349d92b2476e40">&#9670;&nbsp;</a></span>setErr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppComponent::setErr </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>err_code</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a75a706c37e31c3083c845d304e3a519b" name="a75a706c37e31c3083c845d304e3a519b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75a706c37e31c3083c845d304e3a519b">&#9670;&nbsp;</a></span>setTag()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppComponent::setTag </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7e64a4c55bd1f3216c507101835392b5" name="a7e64a4c55bd1f3216c507101835392b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e64a4c55bd1f3216c507101835392b5">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppComponent::start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="app__component_8h_source.html">app_component.h</a></li>
<li>src/<a class="el" href="app__component_8cpp.html">app_component.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

View File

@ -0,0 +1,706 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CLAppConn Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">CLAppConn Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Connection Manager This class manages everything related to connectivity of the application: WiFi, OTA etc.
<a href="class_c_l_app_conn.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="app__conn_8h_source.html">app_conn.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CLAppConn:</div>
<div class="dyncontent">
<div class="center">
<img src="class_c_l_app_conn.png" usemap="#CLAppConn_map" alt=""/>
<map id="CLAppConn_map" name="CLAppConn_map">
<area href="class_c_l_app_component.html" title="Abstract root class for the appication components." alt="CLAppComponent" shape="rect" coords="0,0,114,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a40ab21138b6b3280000a139da9784f58"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58">CLAppConn</a> ()</td></tr>
<tr class="separator:a40ab21138b6b3280000a139da9784f58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2c05fac4c38fd444700b3f01eed931f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f">loadPrefs</a> ()</td></tr>
<tr class="separator:ae2c05fac4c38fd444700b3f01eed931f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace5a052d85379ece71207129edc2a0f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#ace5a052d85379ece71207129edc2a0f1">savePrefs</a> ()</td></tr>
<tr class="separator:ace5a052d85379ece71207129edc2a0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75a0c8c0ab160691ecf58e3c4ad58951"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a75a0c8c0ab160691ecf58e3c4ad58951">start</a> ()</td></tr>
<tr class="separator:a75a0c8c0ab160691ecf58e3c4ad58951"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0a56d0491f5fd3fdce6028447183a25"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25">stop</a> ()</td></tr>
<tr class="separator:ab0a56d0491f5fd3fdce6028447183a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e9975f7afdb88ae197fb3ad43942c7f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f">enableOTA</a> (bool enable=true)</td></tr>
<tr class="separator:a5e9975f7afdb88ae197fb3ad43942c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2471ad68dc8303ebfd945c89151d6f03"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03">handleOTA</a> ()</td></tr>
<tr class="separator:a2471ad68dc8303ebfd945c89151d6f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab12f6fe1f13192cdcf6c2243c0619a39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39">configMDNS</a> ()</td></tr>
<tr class="separator:ab12f6fe1f13192cdcf6c2243c0619a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a841aff4dbe7c1b8f34a9eff36fa1b7fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd">handleDNSRequest</a> ()</td></tr>
<tr class="separator:a841aff4dbe7c1b8f34a9eff36fa1b7fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17ffc56321ce2e765ae90d1b27ed10e2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2">configNTP</a> ()</td></tr>
<tr class="separator:a17ffc56321ce2e765ae90d1b27ed10e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e78e96c67968f486c71658925b53251"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251">getNTPServer</a> ()</td></tr>
<tr class="separator:a0e78e96c67968f486c71658925b53251"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa10f212281464764cf8b3057290d1722"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722">getGmtOffset_sec</a> ()</td></tr>
<tr class="separator:aa10f212281464764cf8b3057290d1722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef2f2c99712b1c867b9d73f5abf4377e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e">getDaylightOffset_sec</a> ()</td></tr>
<tr class="separator:aef2f2c99712b1c867b9d73f5abf4377e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5a7071604dbf2bc0ec8b1bdfabd538a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a">isOTAEnabled</a> ()</td></tr>
<tr class="separator:af5a7071604dbf2bc0ec8b1bdfabd538a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a790ba7c0b56edae2de159abf29f0127b"><td class="memItemLeft" align="right" valign="top">wl_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b">wifiStatus</a> ()</td></tr>
<tr class="separator:a790ba7c0b56edae2de159abf29f0127b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae243b486cbd9ac417ff050df27bab72f"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f">getHTTPUrl</a> ()</td></tr>
<tr class="separator:ae243b486cbd9ac417ff050df27bab72f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b240d40a51a7d76f22be73b2563b412"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412">getStreamUrl</a> ()</td></tr>
<tr class="separator:a3b240d40a51a7d76f22be73b2563b412"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fa2c289453dd0849fe5d982d6b0ff59"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59">getPort</a> ()</td></tr>
<tr class="separator:a6fa2c289453dd0849fe5d982d6b0ff59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d4395c692371a87b05ccb3e9b6b33d9"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9">getApName</a> ()</td></tr>
<tr class="separator:a2d4395c692371a87b05ccb3e9b6b33d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80277e357f23e4dd2de431aecdc326ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad">isAccessPoint</a> ()</td></tr>
<tr class="separator:a80277e357f23e4dd2de431aecdc326ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbde99435f66b7828a706c15c4317634"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634">isCaptivePortal</a> ()</td></tr>
<tr class="separator:abbde99435f66b7828a706c15c4317634"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add0e97835e7204a17639eb8b4c07cfd0"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0">getLocalTimeStr</a> ()</td></tr>
<tr class="separator:add0e97835e7204a17639eb8b4c07cfd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05b74d2731b9c2220c431e354b1b55a5"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5">getUpTimeStr</a> ()</td></tr>
<tr class="separator:a05b74d2731b9c2220c431e354b1b55a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4f24949950433f1672c3db6af49dde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde">printLocalTime</a> (bool extraData=false)</td></tr>
<tr class="separator:a9a4f24949950433f1672c3db6af49dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">start</a> ()</td></tr>
<tr class="separator:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">loadPrefs</a> ()</td></tr>
<tr class="separator:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">savePrefs</a> ()</td></tr>
<tr class="separator:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">dumpPrefs</a> ()</td></tr>
<tr class="separator:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">removePrefs</a> ()</td></tr>
<tr class="separator:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">getPrefsFileName</a> (bool forsave=false)</td></tr>
<tr class="separator:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">setDebugMode</a> (bool val)</td></tr>
<tr class="separator:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">isDebugMode</a> ()</td></tr>
<tr class="separator:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">getLastErr</a> ()</td></tr>
<tr class="separator:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">setTag</a> (const char *t)</td></tr>
<tr class="separator:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">setErr</a> (int err_code)</td></tr>
<tr class="separator:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">readJsonIntVal</a> (jparse_ctx_t *jctx, char *token)</td></tr>
<tr class="memdesc:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="mdescLeft">&#160;</td><td class="mdescRight">reads the Int value from JSON context by token. <a href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">More...</a><br /></td></tr>
<tr class="separator:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">parsePrefs</a> (jparse_ctx_t *jctx)</td></tr>
<tr class="separator:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Connection Manager This class manages everything related to connectivity of the application: WiFi, OTA etc. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a40ab21138b6b3280000a139da9784f58" name="a40ab21138b6b3280000a139da9784f58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40ab21138b6b3280000a139da9784f58">&#9670;&nbsp;</a></span>CLAppConn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">CLAppConn::CLAppConn </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ab12f6fe1f13192cdcf6c2243c0619a39" name="ab12f6fe1f13192cdcf6c2243c0619a39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab12f6fe1f13192cdcf6c2243c0619a39">&#9670;&nbsp;</a></span>configMDNS()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::configMDNS </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a17ffc56321ce2e765ae90d1b27ed10e2" name="a17ffc56321ce2e765ae90d1b27ed10e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17ffc56321ce2e765ae90d1b27ed10e2">&#9670;&nbsp;</a></span>configNTP()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::configNTP </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5e9975f7afdb88ae197fb3ad43942c7f" name="a5e9975f7afdb88ae197fb3ad43942c7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e9975f7afdb88ae197fb3ad43942c7f">&#9670;&nbsp;</a></span>enableOTA()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::enableOTA </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em> = <code>true</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2d4395c692371a87b05ccb3e9b6b33d9" name="a2d4395c692371a87b05ccb3e9b6b33d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d4395c692371a87b05ccb3e9b6b33d9">&#9670;&nbsp;</a></span>getApName()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getApName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aef2f2c99712b1c867b9d73f5abf4377e" name="aef2f2c99712b1c867b9d73f5abf4377e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef2f2c99712b1c867b9d73f5abf4377e">&#9670;&nbsp;</a></span>getDaylightOffset_sec()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppConn::getDaylightOffset_sec </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa10f212281464764cf8b3057290d1722" name="aa10f212281464764cf8b3057290d1722"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa10f212281464764cf8b3057290d1722">&#9670;&nbsp;</a></span>getGmtOffset_sec()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long CLAppConn::getGmtOffset_sec </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae243b486cbd9ac417ff050df27bab72f" name="ae243b486cbd9ac417ff050df27bab72f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae243b486cbd9ac417ff050df27bab72f">&#9670;&nbsp;</a></span>getHTTPUrl()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getHTTPUrl </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="add0e97835e7204a17639eb8b4c07cfd0" name="add0e97835e7204a17639eb8b4c07cfd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add0e97835e7204a17639eb8b4c07cfd0">&#9670;&nbsp;</a></span>getLocalTimeStr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getLocalTimeStr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0e78e96c67968f486c71658925b53251" name="a0e78e96c67968f486c71658925b53251"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e78e96c67968f486c71658925b53251">&#9670;&nbsp;</a></span>getNTPServer()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getNTPServer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6fa2c289453dd0849fe5d982d6b0ff59" name="a6fa2c289453dd0849fe5d982d6b0ff59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fa2c289453dd0849fe5d982d6b0ff59">&#9670;&nbsp;</a></span>getPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppConn::getPort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3b240d40a51a7d76f22be73b2563b412" name="a3b240d40a51a7d76f22be73b2563b412"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b240d40a51a7d76f22be73b2563b412">&#9670;&nbsp;</a></span>getStreamUrl()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getStreamUrl </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a05b74d2731b9c2220c431e354b1b55a5" name="a05b74d2731b9c2220c431e354b1b55a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05b74d2731b9c2220c431e354b1b55a5">&#9670;&nbsp;</a></span>getUpTimeStr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char * CLAppConn::getUpTimeStr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a841aff4dbe7c1b8f34a9eff36fa1b7fd" name="a841aff4dbe7c1b8f34a9eff36fa1b7fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a841aff4dbe7c1b8f34a9eff36fa1b7fd">&#9670;&nbsp;</a></span>handleDNSRequest()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::handleDNSRequest </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2471ad68dc8303ebfd945c89151d6f03" name="a2471ad68dc8303ebfd945c89151d6f03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2471ad68dc8303ebfd945c89151d6f03">&#9670;&nbsp;</a></span>handleOTA()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::handleOTA </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a80277e357f23e4dd2de431aecdc326ad" name="a80277e357f23e4dd2de431aecdc326ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80277e357f23e4dd2de431aecdc326ad">&#9670;&nbsp;</a></span>isAccessPoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppConn::isAccessPoint </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abbde99435f66b7828a706c15c4317634" name="abbde99435f66b7828a706c15c4317634"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbde99435f66b7828a706c15c4317634">&#9670;&nbsp;</a></span>isCaptivePortal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppConn::isCaptivePortal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af5a7071604dbf2bc0ec8b1bdfabd538a" name="af5a7071604dbf2bc0ec8b1bdfabd538a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5a7071604dbf2bc0ec8b1bdfabd538a">&#9670;&nbsp;</a></span>isOTAEnabled()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppConn::isOTAEnabled </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae2c05fac4c38fd444700b3f01eed931f" name="ae2c05fac4c38fd444700b3f01eed931f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2c05fac4c38fd444700b3f01eed931f">&#9670;&nbsp;</a></span>loadPrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppConn::loadPrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9a4f24949950433f1672c3db6af49dde" name="a9a4f24949950433f1672c3db6af49dde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a4f24949950433f1672c3db6af49dde">&#9670;&nbsp;</a></span>printLocalTime()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppConn::printLocalTime </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>extraData</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ace5a052d85379ece71207129edc2a0f1" name="ace5a052d85379ece71207129edc2a0f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace5a052d85379ece71207129edc2a0f1">&#9670;&nbsp;</a></span>savePrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppConn::savePrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a75a0c8c0ab160691ecf58e3c4ad58951" name="a75a0c8c0ab160691ecf58e3c4ad58951"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75a0c8c0ab160691ecf58e3c4ad58951">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppConn::start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab0a56d0491f5fd3fdce6028447183a25" name="ab0a56d0491f5fd3fdce6028447183a25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0a56d0491f5fd3fdce6028447183a25">&#9670;&nbsp;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLAppConn::stop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a790ba7c0b56edae2de159abf29f0127b" name="a790ba7c0b56edae2de159abf29f0127b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a790ba7c0b56edae2de159abf29f0127b">&#9670;&nbsp;</a></span>wifiStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">wl_status_t CLAppConn::wifiStatus </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="app__conn_8h_source.html">app_conn.h</a></li>
<li>src/<a class="el" href="app__conn_8cpp.html">app_conn.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

View File

@ -0,0 +1,647 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CLAppHttpd Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">CLAppHttpd Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in the file system (can be SD card or LittleFS). <br />
<a href="class_c_l_app_httpd.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="app__httpd_8h_source.html">app_httpd.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CLAppHttpd:</div>
<div class="dyncontent">
<div class="center">
<img src="class_c_l_app_httpd.png" usemap="#CLAppHttpd_map" alt=""/>
<map id="CLAppHttpd_map" name="CLAppHttpd_map">
<area href="class_c_l_app_component.html" title="Abstract root class for the appication components." alt="CLAppComponent" shape="rect" coords="0,0,114,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad921ac128d82e11c8170847b25970dea"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea">CLAppHttpd</a> ()</td></tr>
<tr class="separator:ad921ac128d82e11c8170847b25970dea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf8a95884768b7ac3e1c04ea041ee514"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#aaf8a95884768b7ac3e1c04ea041ee514">start</a> ()</td></tr>
<tr class="separator:aaf8a95884768b7ac3e1c04ea041ee514"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af530618baf6452852e39524efa4fd365"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365">loadPrefs</a> ()</td></tr>
<tr class="separator:af530618baf6452852e39524efa4fd365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c73098b74bbc4bb1358c2723019e716"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716">getClientId</a> ()</td></tr>
<tr class="separator:a9c73098b74bbc4bb1358c2723019e716"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f8f1b5b6e4a1da9dbc9788a4442e00c"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c">getStreamCount</a> ()</td></tr>
<tr class="separator:a5f8f1b5b6e4a1da9dbc9788a4442e00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b63e9eb18e2d67fc3f352fec0b66cd9"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9">getStreamsServed</a> ()</td></tr>
<tr class="separator:a2b63e9eb18e2d67fc3f352fec0b66cd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1682f0b927c3c3691a20c1298e9922c9"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9">getImagesServed</a> ()</td></tr>
<tr class="separator:a1682f0b927c3c3691a20c1298e9922c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2db88a341da481eff2270d5fa8d607a3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3">incImagesServed</a> ()</td></tr>
<tr class="separator:a2db88a341da481eff2270d5fa8d607a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40005188d09a72002252fd4b6e2cd2b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9">setStreamMode</a> (<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> mode)</td></tr>
<tr class="separator:a40005188d09a72002252fd4b6e2cd2b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeef90f323bd91eba9d00d0b464177c82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82">getStreamMode</a> ()</td></tr>
<tr class="separator:aeef90f323bd91eba9d00d0b464177c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e52f72c1d20cf6420e2f17b0b521da4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a4e52f72c1d20cf6420e2f17b0b521da4">snapToStream</a> (bool debug=false)</td></tr>
<tr class="separator:a4e52f72c1d20cf6420e2f17b0b521da4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af836002eda44f3e400af0808bf9046c1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#af836002eda44f3e400af0808bf9046c1">startStream</a> (uint32_t id)</td></tr>
<tr class="separator:af836002eda44f3e400af0808bf9046c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4889a2a7ee9a0e5ab558b64983249e46"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a4889a2a7ee9a0e5ab558b64983249e46">stopStream</a> (uint32_t id)</td></tr>
<tr class="separator:a4889a2a7ee9a0e5ab558b64983249e46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58f5ed0635650911e1540f138df24b29"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29">updateSnapTimer</a> (int frameRate)</td></tr>
<tr class="separator:a58f5ed0635650911e1540f138df24b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36be0ed79de4194e8d00b026fd4be4d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a36be0ed79de4194e8d00b026fd4be4d0">serialSendCommand</a> (const char *cmd)</td></tr>
<tr class="separator:a36be0ed79de4194e8d00b026fd4be4d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80c23913b0e693ae584b8177647cec6c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c">getSketchSize</a> ()</td></tr>
<tr class="separator:a80c23913b0e693ae584b8177647cec6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4be3e20152216b606c83ae09e74c3840"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840">getSketchSpace</a> ()</td></tr>
<tr class="separator:a4be3e20152216b606c83ae09e74c3840"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add4710263a9093fa4f57a2c26d97310e"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e">getSketchMD5</a> ()</td></tr>
<tr class="separator:add4710263a9093fa4f57a2c26d97310e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ba8f3dfa8888b198ac9ad69e88f1a5d"><td class="memItemLeft" align="right" valign="top">String&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d">getVersion</a> ()</td></tr>
<tr class="separator:a3ba8f3dfa8888b198ac9ad69e88f1a5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a97b6250dd609d57e9c84128813846"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846">getName</a> ()</td></tr>
<tr class="separator:a56a97b6250dd609d57e9c84128813846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86f5338752065817fabed08e118a8ff8"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8">getSerialBuffer</a> ()</td></tr>
<tr class="separator:a86f5338752065817fabed08e118a8ff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">start</a> ()</td></tr>
<tr class="separator:a7e64a4c55bd1f3216c507101835392b5 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">loadPrefs</a> ()</td></tr>
<tr class="separator:a300c0d2775ed4a082f63449826ee3b98 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">savePrefs</a> ()</td></tr>
<tr class="separator:a31a25b7869113a15e18f34b2c690189a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">dumpPrefs</a> ()</td></tr>
<tr class="separator:ad90151113ffbbcc630e347580b3ee9fe inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">removePrefs</a> ()</td></tr>
<tr class="separator:af763174f3eed76761a2eeab9aa845e6a inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">getPrefsFileName</a> (bool forsave=false)</td></tr>
<tr class="separator:ada7959a912692cd2c03bd950faa8c5bc inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">setDebugMode</a> (bool val)</td></tr>
<tr class="separator:a9ab4a575691522178eb10d9bffcff5b7 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">isDebugMode</a> ()</td></tr>
<tr class="separator:a4891eef9a9970b158d528fef5dda8d30 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">getLastErr</a> ()</td></tr>
<tr class="separator:a0c99f78f5ea7090785c70864b8fd9101 inherit pub_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_class_c_l_app_component"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_c_l_app_component')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_c_l_app_component.html">CLAppComponent</a></td></tr>
<tr class="memitem:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">setTag</a> (const char *t)</td></tr>
<tr class="separator:a75a706c37e31c3083c845d304e3a519b inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">setErr</a> (int err_code)</td></tr>
<tr class="separator:a9565596ad1c588c05e349d92b2476e40 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">readJsonIntVal</a> (jparse_ctx_t *jctx, char *token)</td></tr>
<tr class="memdesc:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="mdescLeft">&#160;</td><td class="mdescRight">reads the Int value from JSON context by token. <a href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">More...</a><br /></td></tr>
<tr class="separator:aae2aee9e4a8001900d8b380adb66a8e3 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">parsePrefs</a> (jparse_ctx_t *jctx)</td></tr>
<tr class="separator:a7b23015c89977efd202896a19e7ca319 inherit pro_methods_class_c_l_app_component"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in the file system (can be SD card or LittleFS). <br />
</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad921ac128d82e11c8170847b25970dea" name="ad921ac128d82e11c8170847b25970dea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad921ac128d82e11c8170847b25970dea">&#9670;&nbsp;</a></span>CLAppHttpd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">CLAppHttpd::CLAppHttpd </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9c73098b74bbc4bb1358c2723019e716" name="a9c73098b74bbc4bb1358c2723019e716"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c73098b74bbc4bb1358c2723019e716">&#9670;&nbsp;</a></span>getClientId()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t CLAppHttpd::getClientId </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1682f0b927c3c3691a20c1298e9922c9" name="a1682f0b927c3c3691a20c1298e9922c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1682f0b927c3c3691a20c1298e9922c9">&#9670;&nbsp;</a></span>getImagesServed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned long CLAppHttpd::getImagesServed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a56a97b6250dd609d57e9c84128813846" name="a56a97b6250dd609d57e9c84128813846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a97b6250dd609d57e9c84128813846">&#9670;&nbsp;</a></span>getName()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppHttpd::getName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a86f5338752065817fabed08e118a8ff8" name="a86f5338752065817fabed08e118a8ff8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86f5338752065817fabed08e118a8ff8">&#9670;&nbsp;</a></span>getSerialBuffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">char * CLAppHttpd::getSerialBuffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="add4710263a9093fa4f57a2c26d97310e" name="add4710263a9093fa4f57a2c26d97310e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add4710263a9093fa4f57a2c26d97310e">&#9670;&nbsp;</a></span>getSketchMD5()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String CLAppHttpd::getSketchMD5 </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a80c23913b0e693ae584b8177647cec6c" name="a80c23913b0e693ae584b8177647cec6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80c23913b0e693ae584b8177647cec6c">&#9670;&nbsp;</a></span>getSketchSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::getSketchSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4be3e20152216b606c83ae09e74c3840" name="a4be3e20152216b606c83ae09e74c3840"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4be3e20152216b606c83ae09e74c3840">&#9670;&nbsp;</a></span>getSketchSpace()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::getSketchSpace </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5f8f1b5b6e4a1da9dbc9788a4442e00c" name="a5f8f1b5b6e4a1da9dbc9788a4442e00c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f8f1b5b6e4a1da9dbc9788a4442e00c">&#9670;&nbsp;</a></span>getStreamCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int8_t CLAppHttpd::getStreamCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aeef90f323bd91eba9d00d0b464177c82" name="aeef90f323bd91eba9d00d0b464177c82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeef90f323bd91eba9d00d0b464177c82">&#9670;&nbsp;</a></span>getStreamMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a> CLAppHttpd::getStreamMode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2b63e9eb18e2d67fc3f352fec0b66cd9" name="a2b63e9eb18e2d67fc3f352fec0b66cd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b63e9eb18e2d67fc3f352fec0b66cd9">&#9670;&nbsp;</a></span>getStreamsServed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">long CLAppHttpd::getStreamsServed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3ba8f3dfa8888b198ac9ad69e88f1a5d" name="a3ba8f3dfa8888b198ac9ad69e88f1a5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ba8f3dfa8888b198ac9ad69e88f1a5d">&#9670;&nbsp;</a></span>getVersion()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">String CLAppHttpd::getVersion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2db88a341da481eff2270d5fa8d607a3" name="a2db88a341da481eff2270d5fa8d607a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2db88a341da481eff2270d5fa8d607a3">&#9670;&nbsp;</a></span>incImagesServed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppHttpd::incImagesServed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af530618baf6452852e39524efa4fd365" name="af530618baf6452852e39524efa4fd365"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af530618baf6452852e39524efa4fd365">&#9670;&nbsp;</a></span>loadPrefs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::loadPrefs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a36be0ed79de4194e8d00b026fd4be4d0" name="a36be0ed79de4194e8d00b026fd4be4d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36be0ed79de4194e8d00b026fd4be4d0">&#9670;&nbsp;</a></span>serialSendCommand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppHttpd::serialSendCommand </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>cmd</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a40005188d09a72002252fd4b6e2cd2b9" name="a40005188d09a72002252fd4b6e2cd2b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40005188d09a72002252fd4b6e2cd2b9">&#9670;&nbsp;</a></span>setStreamMode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void CLAppHttpd::setStreamMode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">capture_mode</a>&#160;</td>
<td class="paramname"><em>mode</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4e52f72c1d20cf6420e2f17b0b521da4" name="a4e52f72c1d20cf6420e2f17b0b521da4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e52f72c1d20cf6420e2f17b0b521da4">&#9670;&nbsp;</a></span>snapToStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::snapToStream </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>debug</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aaf8a95884768b7ac3e1c04ea041ee514" name="aaf8a95884768b7ac3e1c04ea041ee514"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf8a95884768b7ac3e1c04ea041ee514">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af836002eda44f3e400af0808bf9046c1" name="af836002eda44f3e400af0808bf9046c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af836002eda44f3e400af0808bf9046c1">&#9670;&nbsp;</a></span>startStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::startStream </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4889a2a7ee9a0e5ab558b64983249e46" name="a4889a2a7ee9a0e5ab558b64983249e46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4889a2a7ee9a0e5ab558b64983249e46">&#9670;&nbsp;</a></span>stopStream()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLAppHttpd::stopStream </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>id</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a58f5ed0635650911e1540f138df24b29" name="a58f5ed0635650911e1540f138df24b29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58f5ed0635650911e1540f138df24b29">&#9670;&nbsp;</a></span>updateSnapTimer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLAppHttpd::updateSnapTimer </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>frameRate</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="app__httpd_8h_source.html">app_httpd.h</a></li>
<li>src/<a class="el" href="app__httpd_8cpp.html">app_httpd.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

View File

@ -0,0 +1,379 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: CLStorage Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">CLStorage Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Storage Manager Encapsulates access to the file system, which can be either external (SD card) or internal (LittleFS).
<a href="class_c_l_storage.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="storage_8h_source.html">storage.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a837b93ce2190684b5f17cc5b9da6f6ba"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a837b93ce2190684b5f17cc5b9da6f6ba">readFileToString</a> (char *path, String *s)</td></tr>
<tr class="memdesc:a837b93ce2190684b5f17cc5b9da6f6ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a file to a String. <a href="class_c_l_storage.html#a837b93ce2190684b5f17cc5b9da6f6ba">More...</a><br /></td></tr>
<tr class="separator:a837b93ce2190684b5f17cc5b9da6f6ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad93b1e36f1c529d89352699ade07e9d7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#ad93b1e36f1c529d89352699ade07e9d7">init</a> ()</td></tr>
<tr class="separator:ad93b1e36f1c529d89352699ade07e9d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad57cc509fd60ff11bfc55a47b96be9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#aad57cc509fd60ff11bfc55a47b96be9f">listDir</a> (const char *dirname, uint8_t levels)</td></tr>
<tr class="memdesc:aad57cc509fd60ff11bfc55a47b96be9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">dumps the folder content to the Serial output. <a href="class_c_l_storage.html#aad57cc509fd60ff11bfc55a47b96be9f">More...</a><br /></td></tr>
<tr class="separator:aad57cc509fd60ff11bfc55a47b96be9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74a864f262e8143d1b82f4c823a7bb45"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a74a864f262e8143d1b82f4c823a7bb45">getSize</a> ()</td></tr>
<tr class="separator:a74a864f262e8143d1b82f4c823a7bb45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9effb4148704bbc571acce5214e5dd74"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a9effb4148704bbc571acce5214e5dd74">getUsed</a> ()</td></tr>
<tr class="separator:a9effb4148704bbc571acce5214e5dd74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a287d73a832226a938cc114b21bf52fb7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a287d73a832226a938cc114b21bf52fb7">capacityUnits</a> ()</td></tr>
<tr class="separator:a287d73a832226a938cc114b21bf52fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a867f099568b8c4f18f0135ad14260a01"><td class="memItemLeft" align="right" valign="top">File&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a867f099568b8c4f18f0135ad14260a01">open</a> (const String &amp;path, const char *mode=&quot;r&quot;, const bool create=false)</td></tr>
<tr class="separator:a867f099568b8c4f18f0135ad14260a01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5b081483af1fcf83fca0573cc1c6f44"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#aa5b081483af1fcf83fca0573cc1c6f44">exists</a> (const String &amp;path)</td></tr>
<tr class="separator:aa5b081483af1fcf83fca0573cc1c6f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa5139f3590aba42b3de2c8e1786a43b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#afa5139f3590aba42b3de2c8e1786a43b">remove</a> (const String &amp;path)</td></tr>
<tr class="separator:afa5139f3590aba42b3de2c8e1786a43b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a163976b7c12700a887fe33d797380d36"><td class="memItemLeft" align="right" valign="top">fs::SDMMCFS &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_l_storage.html#a163976b7c12700a887fe33d797380d36">getFS</a> ()</td></tr>
<tr class="separator:a163976b7c12700a887fe33d797380d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >Storage Manager Encapsulates access to the file system, which can be either external (SD card) or internal (LittleFS). </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a287d73a832226a938cc114b21bf52fb7" name="a287d73a832226a938cc114b21bf52fb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a287d73a832226a938cc114b21bf52fb7">&#9670;&nbsp;</a></span>capacityUnits()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLStorage::capacityUnits </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa5b081483af1fcf83fca0573cc1c6f44" name="aa5b081483af1fcf83fca0573cc1c6f44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5b081483af1fcf83fca0573cc1c6f44">&#9670;&nbsp;</a></span>exists()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLStorage::exists </td>
<td>(</td>
<td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a163976b7c12700a887fe33d797380d36" name="a163976b7c12700a887fe33d797380d36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a163976b7c12700a887fe33d797380d36">&#9670;&nbsp;</a></span>getFS()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">fs::SDMMCFS &amp; CLStorage::getFS </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a74a864f262e8143d1b82f4c823a7bb45" name="a74a864f262e8143d1b82f4c823a7bb45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74a864f262e8143d1b82f4c823a7bb45">&#9670;&nbsp;</a></span>getSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLStorage::getSize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9effb4148704bbc571acce5214e5dd74" name="a9effb4148704bbc571acce5214e5dd74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9effb4148704bbc571acce5214e5dd74">&#9670;&nbsp;</a></span>getUsed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLStorage::getUsed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad93b1e36f1c529d89352699ade07e9d7" name="ad93b1e36f1c529d89352699ade07e9d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad93b1e36f1c529d89352699ade07e9d7">&#9670;&nbsp;</a></span>init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool CLStorage::init </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aad57cc509fd60ff11bfc55a47b96be9f" name="aad57cc509fd60ff11bfc55a47b96be9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad57cc509fd60ff11bfc55a47b96be9f">&#9670;&nbsp;</a></span>listDir()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void CLStorage::listDir </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>dirname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>levels</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>dumps the folder content to the Serial output. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dirname</td><td></td></tr>
<tr><td class="paramname">levels</td><td><br />
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a867f099568b8c4f18f0135ad14260a01" name="a867f099568b8c4f18f0135ad14260a01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a867f099568b8c4f18f0135ad14260a01">&#9670;&nbsp;</a></span>open()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">File CLStorage::open </td>
<td>(</td>
<td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>mode</em> = <code>&quot;r&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>create</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a837b93ce2190684b5f17cc5b9da6f6ba" name="a837b93ce2190684b5f17cc5b9da6f6ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a837b93ce2190684b5f17cc5b9da6f6ba">&#9670;&nbsp;</a></span>readFileToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int CLStorage::readFileToString </td>
<td>(</td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">String *&#160;</td>
<td class="paramname"><em>s</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Load a file to a String. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>file name </td></tr>
<tr><td class="paramname">s</td><td>pointer to the String buffer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>OK(0) or FAIL(1) </dd></dl>
</div>
</div>
<a id="afa5139f3590aba42b3de2c8e1786a43b" name="afa5139f3590aba42b3de2c8e1786a43b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa5139f3590aba42b3de2c8e1786a43b">&#9670;&nbsp;</a></span>remove()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool CLStorage::remove </td>
<td>(</td>
<td class="paramtype">const String &amp;&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="storage_8h_source.html">storage.h</a></li>
<li>src/<a class="el" href="storage_8cpp.html">storage.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

88
Docs/html/classes.html Normal file
View File

@ -0,0 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structure Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
<dd><a class="el" href="class_c_l_app_cam.html">CLAppCam</a></dd><dd><a class="el" href="class_c_l_app_component.html">CLAppComponent</a></dd><dd><a class="el" href="class_c_l_app_conn.html">CLAppConn</a></dd><dd><a class="el" href="class_c_l_app_httpd.html">CLAppHttpd</a></dd><dd><a class="el" href="class_c_l_storage.html">CLStorage</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="struct_static_i_p.html">StaticIP</a></dd><dd><a class="el" href="struct_station.html">Station</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
<dd><a class="el" href="struct_uri_mapping.html">UriMapping</a></dd></dl>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

BIN
Docs/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@ -0,0 +1,112 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">src Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__cam_8cpp.html">app_cam.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__cam_8h.html">app_cam.h</a> <a href="app__cam_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__component_8cpp.html">app_component.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__component_8h.html">app_component.h</a> <a href="app__component_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__config_8h.html">app_config.h</a> <a href="app__config_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8cpp.html">app_conn.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__conn_8h.html">app_conn.h</a> <a href="app__conn_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8cpp.html">app_httpd.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="app__httpd_8h.html">app_httpd.h</a> <a href="app__httpd_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera__pins_8h.html">camera_pins.h</a> <a href="camera__pins_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parsebytes_8cpp.html">parsebytes.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parsebytes_8h.html">parsebytes.h</a> <a href="parsebytes_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="storage_8cpp.html">storage.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="storage_8h.html">storage.h</a> <a href="storage_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

BIN
Docs/html/doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

1841
Docs/html/doxygen.css Normal file

File diff suppressed because it is too large Load Diff

26
Docs/html/doxygen.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

121
Docs/html/dynsections.js Normal file
View File

@ -0,0 +1,121 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}
/* @license-end */

95
Docs/html/files.html Normal file
View File

@ -0,0 +1,95 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle"><div class="title">File List</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="app__cam_8cpp.html" target="_self">app_cam.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="app__cam_8h_source.html"><span class="icondoc"></span></a><a class="el" href="app__cam_8h.html" target="_self">app_cam.h</a></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="app__component_8cpp.html" target="_self">app_component.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="app__component_8h_source.html"><span class="icondoc"></span></a><a class="el" href="app__component_8h.html" target="_self">app_component.h</a></td><td class="desc"></td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="app__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="app__config_8h.html" target="_self">app_config.h</a></td><td class="desc"></td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="app__conn_8cpp.html" target="_self">app_conn.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="app__conn_8h_source.html"><span class="icondoc"></span></a><a class="el" href="app__conn_8h.html" target="_self">app_conn.h</a></td><td class="desc"></td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="app__httpd_8cpp.html" target="_self">app_httpd.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="app__httpd_8h_source.html"><span class="icondoc"></span></a><a class="el" href="app__httpd_8h.html" target="_self">app_httpd.h</a></td><td class="desc"></td></tr>
<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="camera__pins_8h_source.html"><span class="icondoc"></span></a><a class="el" href="camera__pins_8h.html" target="_self">camera_pins.h</a></td><td class="desc"></td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="parsebytes_8cpp.html" target="_self">parsebytes.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="parsebytes_8h_source.html"><span class="icondoc"></span></a><a class="el" href="parsebytes_8h.html" target="_self">parsebytes.h</a></td><td class="desc"></td></tr>
<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="storage_8cpp.html" target="_self">storage.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="storage_8h_source.html"><span class="icondoc"></span></a><a class="el" href="storage_8h.html" target="_self">storage.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

BIN
Docs/html/folderclosed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

BIN
Docs/html/folderopen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

221
Docs/html/functions.html Normal file
View File

@ -0,0 +1,221 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div>
<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>capacityUnits()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a287d73a832226a938cc114b21bf52fb7">CLStorage</a></li>
<li>CLAppCam()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d">CLAppCam</a></li>
<li>CLAppConn()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58">CLAppConn</a></li>
<li>CLAppHttpd()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea">CLAppHttpd</a></li>
<li>configMDNS()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39">CLAppConn</a></li>
<li>configNTP()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2">CLAppConn</a></li>
</ul>
<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>dhcp&#160;:&#160;<a class="el" href="struct_station.html#aae4e91ca19c2b2b799ca20891f95c651">Station</a></li>
<li>dns1&#160;:&#160;<a class="el" href="struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d">StaticIP</a></li>
<li>dns2&#160;:&#160;<a class="el" href="struct_static_i_p.html#a61e727e8a383392a7f36820a22f1628d">StaticIP</a></li>
<li>dumpPrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">CLAppComponent</a></li>
</ul>
<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>enableOTA()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f">CLAppConn</a></li>
<li>exists()&#160;:&#160;<a class="el" href="class_c_l_storage.html#aa5b081483af1fcf83fca0573cc1c6f44">CLStorage</a></li>
</ul>
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>gateway&#160;:&#160;<a class="el" href="struct_static_i_p.html#a6bd38cab74299d715d64d1ea5a369913">StaticIP</a></li>
<li>getApName()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9">CLAppConn</a></li>
<li>getBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f">CLAppCam</a></li>
<li>getBufferSize()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd">CLAppCam</a></li>
<li>getClientId()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716">CLAppHttpd</a></li>
<li>getDaylightOffset_sec()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e">CLAppConn</a></li>
<li>getErr()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e">CLAppCam</a></li>
<li>getFrameRate()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26">CLAppCam</a></li>
<li>getFS()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a163976b7c12700a887fe33d797380d36">CLStorage</a></li>
<li>getGmtOffset_sec()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722">CLAppConn</a></li>
<li>getHTTPUrl()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f">CLAppConn</a></li>
<li>getImagesServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9">CLAppHttpd</a></li>
<li>getLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f">CLAppCam</a></li>
<li>getLastErr()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">CLAppComponent</a></li>
<li>getLocalTimeStr()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0">CLAppConn</a></li>
<li>getName()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846">CLAppHttpd</a></li>
<li>getNTPServer()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251">CLAppConn</a></li>
<li>getPort()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59">CLAppConn</a></li>
<li>getPrefsFileName()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">CLAppComponent</a></li>
<li>getRotation()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f">CLAppCam</a></li>
<li>getSensor()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2">CLAppCam</a></li>
<li>getSensorPID()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5">CLAppCam</a></li>
<li>getSerialBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8">CLAppHttpd</a></li>
<li>getSize()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a74a864f262e8143d1b82f4c823a7bb45">CLStorage</a></li>
<li>getSketchMD5()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e">CLAppHttpd</a></li>
<li>getSketchSize()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c">CLAppHttpd</a></li>
<li>getSketchSpace()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840">CLAppHttpd</a></li>
<li>getStreamCount()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c">CLAppHttpd</a></li>
<li>getStreamMode()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82">CLAppHttpd</a></li>
<li>getStreamsServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9">CLAppHttpd</a></li>
<li>getStreamUrl()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412">CLAppConn</a></li>
<li>getUpTimeStr()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5">CLAppConn</a></li>
<li>getUsed()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a9effb4148704bbc571acce5214e5dd74">CLStorage</a></li>
<li>getVersion()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d">CLAppHttpd</a></li>
<li>getXclk()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa">CLAppCam</a></li>
</ul>
<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>handleDNSRequest()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd">CLAppConn</a></li>
<li>handleOTA()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03">CLAppConn</a></li>
</ul>
<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>incImagesServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3">CLAppHttpd</a></li>
<li>init()&#160;:&#160;<a class="el" href="class_c_l_storage.html#ad93b1e36f1c529d89352699ade07e9d7">CLStorage</a></li>
<li>ip&#160;:&#160;<a class="el" href="struct_static_i_p.html#a4cba6eec0917a4f531e3285d9e5f8529">StaticIP</a></li>
<li>isAccessPoint()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad">CLAppConn</a></li>
<li>isAutoLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b">CLAppCam</a></li>
<li>isCaptivePortal()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634">CLAppConn</a></li>
<li>isDebugMode()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">CLAppComponent</a></li>
<li>isJPEGinBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381">CLAppCam</a></li>
<li>isOTAEnabled()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a">CLAppConn</a></li>
</ul>
<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>listDir()&#160;:&#160;<a class="el" href="class_c_l_storage.html#aad57cc509fd60ff11bfc55a47b96be9f">CLStorage</a></li>
<li>loadPrefs()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f">CLAppConn</a>, <a class="el" href="class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365">CLAppHttpd</a></li>
</ul>
<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>netmask&#160;:&#160;<a class="el" href="struct_static_i_p.html#ad8221b5210f6692fbeffb6735495a930">StaticIP</a></li>
</ul>
<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
<li>open()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a867f099568b8c4f18f0135ad14260a01">CLStorage</a></li>
</ul>
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parsePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">CLAppComponent</a></li>
<li>password&#160;:&#160;<a class="el" href="struct_station.html#adfce66aab835659fef7ab8501def3867">Station</a></li>
<li>path&#160;:&#160;<a class="el" href="struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f">UriMapping</a></li>
<li>printLocalTime()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde">CLAppConn</a></li>
</ul>
<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>readFileToString()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a837b93ce2190684b5f17cc5b9da6f6ba">CLStorage</a></li>
<li>readJsonIntVal()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">CLAppComponent</a></li>
<li>releaseBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c">CLAppCam</a></li>
<li>remove()&#160;:&#160;<a class="el" href="class_c_l_storage.html#afa5139f3590aba42b3de2c8e1786a43b">CLStorage</a></li>
<li>removePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">CLAppComponent</a></li>
</ul>
<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>savePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a0f2bc29dea9609204871b7b5bc281c4f">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#ace5a052d85379ece71207129edc2a0f1">CLAppConn</a></li>
<li>serialSendCommand()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a36be0ed79de4194e8d00b026fd4be4d0">CLAppHttpd</a></li>
<li>setAutoLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3">CLAppCam</a></li>
<li>setDebugMode()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">CLAppComponent</a></li>
<li>setErr()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">CLAppComponent</a></li>
<li>setFrameRate()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734">CLAppCam</a></li>
<li>setLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8cab0636ce5e566a7b89016c477aec2b">CLAppCam</a></li>
<li>setRotation()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e">CLAppCam</a></li>
<li>setStreamMode()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9">CLAppHttpd</a></li>
<li>setTag()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">CLAppComponent</a></li>
<li>setXclk()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268">CLAppCam</a></li>
<li>snapToBufer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a89a7a39bd89130cab06fd7139fc9b6d9">CLAppCam</a></li>
<li>snapToStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4e52f72c1d20cf6420e2f17b0b521da4">CLAppHttpd</a></li>
<li>ssid&#160;:&#160;<a class="el" href="struct_station.html#ad635bfe5333139b2596ace399fe5054e">Station</a></li>
<li>start()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#af277f42041c7c0a561bd8c8b087f4b3a">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#a75a0c8c0ab160691ecf58e3c4ad58951">CLAppConn</a>, <a class="el" href="class_c_l_app_httpd.html#aaf8a95884768b7ac3e1c04ea041ee514">CLAppHttpd</a></li>
<li>startStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#af836002eda44f3e400af0808bf9046c1">CLAppHttpd</a></li>
<li>stop()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8f1da94b3efb536a15419e5983fcac81">CLAppCam</a>, <a class="el" href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25">CLAppConn</a></li>
<li>stopStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4889a2a7ee9a0e5ab558b64983249e46">CLAppHttpd</a></li>
</ul>
<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>updateSnapTimer()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29">CLAppHttpd</a></li>
<li>uri&#160;:&#160;<a class="el" href="struct_uri_mapping.html#a9ce212b0da4d58af1f79b5476b68a7e8">UriMapping</a></li>
</ul>
<h3><a id="index_w" name="index_w"></a>- w -</h3><ul>
<li>wifiStatus()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b">CLAppConn</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Data Fields - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;
<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>capacityUnits()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a287d73a832226a938cc114b21bf52fb7">CLStorage</a></li>
<li>CLAppCam()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d">CLAppCam</a></li>
<li>CLAppConn()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58">CLAppConn</a></li>
<li>CLAppHttpd()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea">CLAppHttpd</a></li>
<li>configMDNS()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39">CLAppConn</a></li>
<li>configNTP()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2">CLAppConn</a></li>
</ul>
<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>dumpPrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe">CLAppComponent</a></li>
</ul>
<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
<li>enableOTA()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f">CLAppConn</a></li>
<li>exists()&#160;:&#160;<a class="el" href="class_c_l_storage.html#aa5b081483af1fcf83fca0573cc1c6f44">CLStorage</a></li>
</ul>
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>getApName()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9">CLAppConn</a></li>
<li>getBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f">CLAppCam</a></li>
<li>getBufferSize()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd">CLAppCam</a></li>
<li>getClientId()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716">CLAppHttpd</a></li>
<li>getDaylightOffset_sec()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e">CLAppConn</a></li>
<li>getErr()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e">CLAppCam</a></li>
<li>getFrameRate()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26">CLAppCam</a></li>
<li>getFS()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a163976b7c12700a887fe33d797380d36">CLStorage</a></li>
<li>getGmtOffset_sec()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722">CLAppConn</a></li>
<li>getHTTPUrl()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f">CLAppConn</a></li>
<li>getImagesServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9">CLAppHttpd</a></li>
<li>getLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f">CLAppCam</a></li>
<li>getLastErr()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101">CLAppComponent</a></li>
<li>getLocalTimeStr()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0">CLAppConn</a></li>
<li>getName()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846">CLAppHttpd</a></li>
<li>getNTPServer()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251">CLAppConn</a></li>
<li>getPort()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59">CLAppConn</a></li>
<li>getPrefsFileName()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc">CLAppComponent</a></li>
<li>getRotation()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f">CLAppCam</a></li>
<li>getSensor()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2">CLAppCam</a></li>
<li>getSensorPID()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5">CLAppCam</a></li>
<li>getSerialBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8">CLAppHttpd</a></li>
<li>getSize()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a74a864f262e8143d1b82f4c823a7bb45">CLStorage</a></li>
<li>getSketchMD5()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e">CLAppHttpd</a></li>
<li>getSketchSize()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c">CLAppHttpd</a></li>
<li>getSketchSpace()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840">CLAppHttpd</a></li>
<li>getStreamCount()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c">CLAppHttpd</a></li>
<li>getStreamMode()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82">CLAppHttpd</a></li>
<li>getStreamsServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9">CLAppHttpd</a></li>
<li>getStreamUrl()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412">CLAppConn</a></li>
<li>getUpTimeStr()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5">CLAppConn</a></li>
<li>getUsed()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a9effb4148704bbc571acce5214e5dd74">CLStorage</a></li>
<li>getVersion()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d">CLAppHttpd</a></li>
<li>getXclk()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa">CLAppCam</a></li>
</ul>
<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
<li>handleDNSRequest()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd">CLAppConn</a></li>
<li>handleOTA()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03">CLAppConn</a></li>
</ul>
<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
<li>incImagesServed()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3">CLAppHttpd</a></li>
<li>init()&#160;:&#160;<a class="el" href="class_c_l_storage.html#ad93b1e36f1c529d89352699ade07e9d7">CLStorage</a></li>
<li>isAccessPoint()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad">CLAppConn</a></li>
<li>isAutoLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b">CLAppCam</a></li>
<li>isCaptivePortal()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634">CLAppConn</a></li>
<li>isDebugMode()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30">CLAppComponent</a></li>
<li>isJPEGinBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381">CLAppCam</a></li>
<li>isOTAEnabled()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a">CLAppConn</a></li>
</ul>
<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>listDir()&#160;:&#160;<a class="el" href="class_c_l_storage.html#aad57cc509fd60ff11bfc55a47b96be9f">CLStorage</a></li>
<li>loadPrefs()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f">CLAppConn</a>, <a class="el" href="class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365">CLAppHttpd</a></li>
</ul>
<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
<li>open()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a867f099568b8c4f18f0135ad14260a01">CLStorage</a></li>
</ul>
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parsePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319">CLAppComponent</a></li>
<li>printLocalTime()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde">CLAppConn</a></li>
</ul>
<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>readFileToString()&#160;:&#160;<a class="el" href="class_c_l_storage.html#a837b93ce2190684b5f17cc5b9da6f6ba">CLStorage</a></li>
<li>readJsonIntVal()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3">CLAppComponent</a></li>
<li>releaseBuffer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c">CLAppCam</a></li>
<li>remove()&#160;:&#160;<a class="el" href="class_c_l_storage.html#afa5139f3590aba42b3de2c8e1786a43b">CLStorage</a></li>
<li>removePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a">CLAppComponent</a></li>
</ul>
<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>savePrefs()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a0f2bc29dea9609204871b7b5bc281c4f">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a31a25b7869113a15e18f34b2c690189a">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#ace5a052d85379ece71207129edc2a0f1">CLAppConn</a></li>
<li>serialSendCommand()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a36be0ed79de4194e8d00b026fd4be4d0">CLAppHttpd</a></li>
<li>setAutoLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#aa5bd4f968fd8345d3d2a5d8a121586c3">CLAppCam</a></li>
<li>setDebugMode()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a9ab4a575691522178eb10d9bffcff5b7">CLAppComponent</a></li>
<li>setErr()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a9565596ad1c588c05e349d92b2476e40">CLAppComponent</a></li>
<li>setFrameRate()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a6581e369883546817a1edaedf4af1734">CLAppCam</a></li>
<li>setLamp()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8cab0636ce5e566a7b89016c477aec2b">CLAppCam</a></li>
<li>setRotation()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a27d4c05b87660b0e04b6a8902f0f173e">CLAppCam</a></li>
<li>setStreamMode()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a40005188d09a72002252fd4b6e2cd2b9">CLAppHttpd</a></li>
<li>setTag()&#160;:&#160;<a class="el" href="class_c_l_app_component.html#a75a706c37e31c3083c845d304e3a519b">CLAppComponent</a></li>
<li>setXclk()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a9ccd0763eb8eeb559b46e747df25d268">CLAppCam</a></li>
<li>snapToBufer()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a89a7a39bd89130cab06fd7139fc9b6d9">CLAppCam</a></li>
<li>snapToStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4e52f72c1d20cf6420e2f17b0b521da4">CLAppHttpd</a></li>
<li>start()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#af277f42041c7c0a561bd8c8b087f4b3a">CLAppCam</a>, <a class="el" href="class_c_l_app_component.html#a7e64a4c55bd1f3216c507101835392b5">CLAppComponent</a>, <a class="el" href="class_c_l_app_conn.html#a75a0c8c0ab160691ecf58e3c4ad58951">CLAppConn</a>, <a class="el" href="class_c_l_app_httpd.html#aaf8a95884768b7ac3e1c04ea041ee514">CLAppHttpd</a></li>
<li>startStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#af836002eda44f3e400af0808bf9046c1">CLAppHttpd</a></li>
<li>stop()&#160;:&#160;<a class="el" href="class_c_l_app_cam.html#a8f1da94b3efb536a15419e5983fcac81">CLAppCam</a>, <a class="el" href="class_c_l_app_conn.html#ab0a56d0491f5fd3fdce6028447183a25">CLAppConn</a></li>
<li>stopStream()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a4889a2a7ee9a0e5ab558b64983249e46">CLAppHttpd</a></li>
</ul>
<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
<li>updateSnapTimer()&#160;:&#160;<a class="el" href="class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29">CLAppHttpd</a></li>
</ul>
<h3><a id="index_w" name="index_w"></a>- w -</h3><ul>
<li>wifiStatus()&#160;:&#160;<a class="el" href="class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b">CLAppConn</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>dhcp&#160;:&#160;<a class="el" href="struct_station.html#aae4e91ca19c2b2b799ca20891f95c651">Station</a></li>
<li>dns1&#160;:&#160;<a class="el" href="struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d">StaticIP</a></li>
<li>dns2&#160;:&#160;<a class="el" href="struct_static_i_p.html#a61e727e8a383392a7f36820a22f1628d">StaticIP</a></li>
<li>gateway&#160;:&#160;<a class="el" href="struct_static_i_p.html#a6bd38cab74299d715d64d1ea5a369913">StaticIP</a></li>
<li>ip&#160;:&#160;<a class="el" href="struct_static_i_p.html#a4cba6eec0917a4f531e3285d9e5f8529">StaticIP</a></li>
<li>netmask&#160;:&#160;<a class="el" href="struct_static_i_p.html#ad8221b5210f6692fbeffb6735495a930">StaticIP</a></li>
<li>password&#160;:&#160;<a class="el" href="struct_station.html#adfce66aab835659fef7ab8501def3867">Station</a></li>
<li>path&#160;:&#160;<a class="el" href="struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f">UriMapping</a></li>
<li>ssid&#160;:&#160;<a class="el" href="struct_station.html#ad635bfe5333139b2596ace399fe5054e">Station</a></li>
<li>uri&#160;:&#160;<a class="el" href="struct_uri_mapping.html#a9ce212b0da4d58af1f79b5476b68a7e8">UriMapping</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

151
Docs/html/globals.html Normal file
View File

@ -0,0 +1,151 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
<li>AppCam&#160;:&#160;<a class="el" href="app__cam_8cpp.html#a2c40f09444d86a4ed61c53c20f0c9825">app_cam.cpp</a>, <a class="el" href="app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825">app_cam.h</a></li>
<li>AppConn&#160;:&#160;<a class="el" href="app__conn_8cpp.html#a3fca6c2df3835192bdadfe6edde1e63b">app_conn.cpp</a>, <a class="el" href="app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b">app_conn.h</a></li>
<li>AppHttpd&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a0174a427778b574c2447cf5d8568f986">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986">app_httpd.h</a></li>
</ul>
<h3><a id="index_b" name="index_b"></a>- b -</h3><ul>
<li>BASE_VERSION&#160;:&#160;<a class="el" href="app__config_8h.html#a7409e001dcdfa6d62c7266224556e6a3">app_config.h</a></li>
</ul>
<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>CAM_NAME&#160;:&#160;<a class="el" href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd">app_config.h</a></li>
<li>CAMERA_MODEL_AI_THINKER&#160;:&#160;<a class="el" href="app__config_8h.html#af3ad6cce87c9d1876247f85e3cece96e">app_config.h</a></li>
<li>capture_mode&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">app_httpd.h</a></li>
<li>CAPTURE_STILL&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">app_httpd.h</a></li>
<li>CAPTURE_STREAM&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40">app_httpd.h</a></li>
</ul>
<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
<li>dumpSystemStatusToJson()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">app_httpd.h</a></li>
</ul>
<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
<li>LAMP_DEFAULT&#160;:&#160;<a class="el" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">app_cam.h</a></li>
</ul>
<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
<li>MAX_KNOWN_STATIONS&#160;:&#160;<a class="el" href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b">app_conn.h</a></li>
<li>MAX_URI_MAPPINGS&#160;:&#160;<a class="el" href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1">app_httpd.h</a></li>
</ul>
<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
<li>NTP_DST_OFFSET&#160;:&#160;<a class="el" href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b">app_conn.h</a></li>
<li>NTP_GMT_OFFSET&#160;:&#160;<a class="el" href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9">app_conn.h</a></li>
<li>NTPSERVER&#160;:&#160;<a class="el" href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9">app_conn.h</a></li>
</ul>
<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
<li>onControl()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#ad15b6110c801dc234564fa2f8268a9ab">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab">app_httpd.h</a></li>
<li>onInfo()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#ad302c9a0a0e16505eef900b55250762e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e">app_httpd.h</a></li>
<li>onSnapTimer()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a1424ebf10d44b20fd79bb8102221a969">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969">app_httpd.h</a></li>
<li>onStatus()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#acc8d1122165362713f0823aeb3b25d1e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e">app_httpd.h</a></li>
<li>onSystemStatus()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a9a31c0a3ca52126629c612c494b8d3c6">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6">app_httpd.h</a></li>
<li>onWsEvent()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a7064e9828984f378d3e04f9b7a47bcae">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae">app_httpd.h</a></li>
</ul>
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>parseBytes()&#160;:&#160;<a class="el" href="parsebytes_8cpp.html#a4d8e6d226a4ee77982a2810ca02a8b77">parsebytes.cpp</a>, <a class="el" href="parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77">parsebytes.h</a></li>
<li>processor()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a0c021f9721c3b479757f8e1b40624b6c">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c">app_httpd.h</a></li>
</ul>
<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
<li>Storage&#160;:&#160;<a class="el" href="storage_8cpp.html#a47c5a522666eb276db609c3d8049238a">storage.cpp</a>, <a class="el" href="storage_8h.html#a47c5a522666eb276db609c3d8049238a">storage.h</a></li>
<li>STORAGE_UNITS&#160;:&#160;<a class="el" href="storage_8h.html#a41be8b1964027c1f9ddfc1e01af3f261">storage.h</a></li>
<li>STORAGE_UNITS_BT&#160;:&#160;<a class="el" href="storage_8h.html#a58de0b755f7c8d4e84b9be13013c03d2">storage.h</a></li>
<li>STORAGE_UNITS_MB&#160;:&#160;<a class="el" href="storage_8h.html#acfefb2c2a43c05d5c979ef54f7030a34">storage.h</a></li>
</ul>
<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
<li>temprature_sens_read()&#160;:&#160;<a class="el" href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180">app_httpd.h</a></li>
</ul>
<h3><a id="index_w" name="index_w"></a>- w -</h3><ul>
<li>WIFI_WATCHDOG&#160;:&#160;<a class="el" href="app__config_8h.html#abe5fef12849f59923de575b49a6e222c">app_config.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>BASE_VERSION&#160;:&#160;<a class="el" href="app__config_8h.html#a7409e001dcdfa6d62c7266224556e6a3">app_config.h</a></li>
<li>CAM_NAME&#160;:&#160;<a class="el" href="app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd">app_config.h</a></li>
<li>CAMERA_MODEL_AI_THINKER&#160;:&#160;<a class="el" href="app__config_8h.html#af3ad6cce87c9d1876247f85e3cece96e">app_config.h</a></li>
<li>LAMP_DEFAULT&#160;:&#160;<a class="el" href="app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f">app_cam.h</a></li>
<li>MAX_KNOWN_STATIONS&#160;:&#160;<a class="el" href="app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b">app_conn.h</a></li>
<li>MAX_URI_MAPPINGS&#160;:&#160;<a class="el" href="app__httpd_8h.html#a637263863b33a51633c07ec542547fc1">app_httpd.h</a></li>
<li>NTP_DST_OFFSET&#160;:&#160;<a class="el" href="app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b">app_conn.h</a></li>
<li>NTP_GMT_OFFSET&#160;:&#160;<a class="el" href="app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9">app_conn.h</a></li>
<li>NTPSERVER&#160;:&#160;<a class="el" href="app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9">app_conn.h</a></li>
<li>STORAGE_UNITS&#160;:&#160;<a class="el" href="storage_8h.html#a41be8b1964027c1f9ddfc1e01af3f261">storage.h</a></li>
<li>STORAGE_UNITS_BT&#160;:&#160;<a class="el" href="storage_8h.html#a58de0b755f7c8d4e84b9be13013c03d2">storage.h</a></li>
<li>STORAGE_UNITS_MB&#160;:&#160;<a class="el" href="storage_8h.html#acfefb2c2a43c05d5c979ef54f7030a34">storage.h</a></li>
<li>WIFI_WATCHDOG&#160;:&#160;<a class="el" href="app__config_8h.html#abe5fef12849f59923de575b49a6e222c">app_config.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>capture_mode&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d">app_httpd.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>CAPTURE_STILL&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac">app_httpd.h</a></li>
<li>CAPTURE_STREAM&#160;:&#160;<a class="el" href="app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40">app_httpd.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>dumpSystemStatusToJson()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e">app_httpd.h</a></li>
<li>onControl()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#ad15b6110c801dc234564fa2f8268a9ab">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab">app_httpd.h</a></li>
<li>onInfo()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#ad302c9a0a0e16505eef900b55250762e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e">app_httpd.h</a></li>
<li>onSnapTimer()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a1424ebf10d44b20fd79bb8102221a969">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969">app_httpd.h</a></li>
<li>onStatus()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#acc8d1122165362713f0823aeb3b25d1e">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e">app_httpd.h</a></li>
<li>onSystemStatus()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a9a31c0a3ca52126629c612c494b8d3c6">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6">app_httpd.h</a></li>
<li>onWsEvent()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a7064e9828984f378d3e04f9b7a47bcae">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae">app_httpd.h</a></li>
<li>parseBytes()&#160;:&#160;<a class="el" href="parsebytes_8cpp.html#a4d8e6d226a4ee77982a2810ca02a8b77">parsebytes.cpp</a>, <a class="el" href="parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77">parsebytes.h</a></li>
<li>processor()&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a0c021f9721c3b479757f8e1b40624b6c">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c">app_httpd.h</a></li>
<li>temprature_sens_read()&#160;:&#160;<a class="el" href="app__httpd_8h.html#a2188b2e5ed72e93782e0a6d59111a180">app_httpd.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>AppCam&#160;:&#160;<a class="el" href="app__cam_8cpp.html#a2c40f09444d86a4ed61c53c20f0c9825">app_cam.cpp</a>, <a class="el" href="app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825">app_cam.h</a></li>
<li>AppConn&#160;:&#160;<a class="el" href="app__conn_8cpp.html#a3fca6c2df3835192bdadfe6edde1e63b">app_conn.cpp</a>, <a class="el" href="app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b">app_conn.h</a></li>
<li>AppHttpd&#160;:&#160;<a class="el" href="app__httpd_8cpp.html#a0174a427778b574c2447cf5d8568f986">app_httpd.cpp</a>, <a class="el" href="app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986">app_httpd.h</a></li>
<li>Storage&#160;:&#160;<a class="el" href="storage_8cpp.html#a47c5a522666eb276db609c3d8049238a">storage.cpp</a>, <a class="el" href="storage_8h.html#a47c5a522666eb276db609c3d8049238a">storage.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

89
Docs/html/hierarchy.html Normal file
View File

@ -0,0 +1,89 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Class Hierarchy</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle"><div class="title">Class Hierarchy</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_component.html" target="_self">CLAppComponent</a></td><td class="desc">Abstract root class for the appication components </td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_cam.html" target="_self">CLAppCam</a></td><td class="desc">Camera Manager Manages all interactions with camera </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_conn.html" target="_self">CLAppConn</a></td><td class="desc">Connection Manager This class manages everything related to connectivity of the application: WiFi, OTA etc </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_app_httpd.html" target="_self">CLAppHttpd</a></td><td class="desc">WebServer Manager Class for handling web server requests. The web pages are assumed to be stored in the file system (can be SD card or LittleFS). <br />
</td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_c_l_storage.html" target="_self">CLStorage</a></td><td class="desc">Storage Manager Encapsulates access to the file system, which can be either external (SD card) or internal (LittleFS) </td></tr>
<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_static_i_p.html" target="_self">StaticIP</a></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_station.html" target="_self">Station</a></td><td class="desc"></td></tr>
<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_uri_mapping.html" target="_self">UriMapping</a></td><td class="desc">Static URI to path mapping </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

221
Docs/html/index.html Normal file
View File

@ -0,0 +1,221 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: ESP32-CAM WebCam Server &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">ESP32-CAM WebCam Server &#160;&#160;&#160; &#160;&#160; </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p ><a class="anchor" id="md_README"></a><span title="ESP EYE"><img src="data/www/img/logo.svg" alt="ESP-EYE logo" style="pointer-events: none;" class="inline"/></span></p>
<p >This sketch is a fully customizable webcam server based on ESP32-based board with camera. It can be used as a starting point for your own webcam solution.</p>
<h2><a class="anchor" id="autotoc_md17"></a>
Key features:</h2>
<ul>
<li>Extended options for default network and camera settings</li>
<li>Save and restore settings in JSON configuration files</li>
<li>Dedicated standalone stream viewer</li>
<li>Over The Air firmware updates</li>
<li>Optimizing the way how the video stream is processed, thus allowing higher frame rates on high resolution.</li>
<li>Using just one IP port instead of two.</li>
<li>Porting the web server to <a href="https://github.com/me-no-dev/ESPAsyncWebServer">ESP Async Web Server</a>.</li>
<li>Storing web pages as separate HTML/CSS/JS files on the SD drive, which greatly simplifies development of the interface. Basically, you can swap the face of this project just by replacing files on SD card.</li>
<li>Reduced size of the sketch and improving memory utilization</li>
<li>Porting the code from basic C to C++ object hierarchy, eliminating extensive use of global variables</li>
<li>Lots of minor fixes and tweaks, documentation etc.</li>
</ul>
<h2><a class="anchor" id="autotoc_md18"></a>
Key principles</h2>
<p >There are many other variants of a webcam server for these modules online, but most are created for a specific scenario and not good for general, casual, webcam use.</p>
<p >Hopefully this expanded example is more useful for those users who wish to set up a simple ESP32 based webcam using the cheap(ish) modules freely available online.</p>
<h2><a class="anchor" id="autotoc_md19"></a>
Summary of reductions</h2>
<p >When re-desiginig and refactoring the original ESP32 Camera web server example from Espressve, the following key principles were followed:</p>
<ol type="1">
<li>Any idea can be killed by unnecessary features</li>
<li>See <a href="https://www.youtube.com/watch?v=iMULJIXPxK4">this tutorial video</a>.</li>
</ol>
<p >Given the above, face recognition feature was removed. The main purpose of this sketch is to make the camera web server easily configurable and reusable.</p>
<p >The original example, is a bit incomprehensible and hard to modify as supplied. It is very focused on showing off the face recognition capabilities, and forgets the 'webcam' part.</p>
<h2><a class="anchor" id="autotoc_md20"></a>
Supported development boards</h2>
<p >The sketch has been tested on the <a href="https://github.com/raphaelbs/esp32-cam-ai-thinker/blob/master/assets/ESP32-CAM_Product_Specification.pdf">AI Thinker ESP32-CAM</a> module. Other ESP32 boards equipped with camera may be compatible but not guaranteed.</p>
<h2><a class="anchor" id="autotoc_md21"></a>
Known Issues</h2>
<p >The ESP32 itself is susceptible to the usual list of WiFi problems, not helped by having small antennas, older designs, congested airwaves and demanding users. The majority of disconnects, stutters and other communication problems are simply due to 'WiFi issues'.</p>
<p >The AI-THINKER camera module &amp; esp32 combination is quite susceptible to power supply problems affecting both WiFi conctivity and Video quality; short cabling and decent power supplies are your friend here; also well cooled cases and, if you have the time, decoupling capacitors on the power lines.</p>
<p >A basic limitation of the sketch is that it can can only support one stream at a time. If you try to connect to a cam that is already streaming (or attempting to stream, the first steam will freeze.</p>
<p >Currently, camera modules other than ov2640 are not supported.</p>
<h1><a class="anchor" id="autotoc_md22"></a>
Setup:</h1>
<ul>
<li>For programming you will need a suitable development environment. Possible options include Visual Studio Code, Arduino Studio or Espressif development environment .</li>
</ul>
<h2><a class="anchor" id="autotoc_md23"></a>
Wiring for AI-THINKER Boards (and similar clone-alikes)</h2>
<p >Is pretty simple, You just need jumper wires, no soldering really required, see the diagram below. <img src="Docs/hookup.png" alt="Hoockup" class="inline"/></p><ul>
<li>Connect the <b>RX</b> line from the serial adapter to the <b>TX</b> pin on ESP32</li>
<li>The adapters <b>TX</b> line goes to the ESP32 <b>RX</b> pin</li>
<li>The <b>GPIO0</b> pin of the ESP32 must be held LOW (to ground) when the unit is powered up to allow it to enter it's programming mode. This can be done with simple jumper cable connected at poweron, fitting a switch for this is useful if you will be reprogramming a lot.</li>
<li>You will to supply 5v to the ESP32 in order to power it during programming; the FTDI board alone fails to supply this sometimes. The ESP32 CAM board is very sensitive to the quality of power source. Decoupling capacitors are very much recommended.</li>
</ul>
<h2><a class="anchor" id="autotoc_md24"></a>
Download the Sketch, Unpack and Rename</h2>
<p >Download the latest release of the sketch this repository. Once you have done that you can open the sketch in the IDE by going to the <code>esp32-cam-webserver</code> sketch folder and selecting <code>esp32-cam-webserver.ino</code>.</p>
<p >You also need to copy the content of the <b>data</b> folder from this repository to a micro SD flash memory card (must be formatted as FAT32) and insert it into the micro SD slot of the board.</p>
<p >Without the SD card, the sketch will not start. Please ensure the size of the card does not exceed 4GB, which is a maximum supported capacity for ESP32-CAM board. Higher capacity SD card may not work.</p>
<h2><a class="anchor" id="autotoc_md25"></a>
Config</h2>
<p >You will need to configure the web server with your WiFi settings. In order to do so, you will need to create a config file in the root folder of your SD card named <code>conn.json</code> and format it as follows:</p>
<div class="fragment"><div class="line">{ </div>
<div class="line"> &quot;mdns_name&quot;:&quot;YOUR_MDNS_NAME&quot;,</div>
<div class="line"> &quot;stations&quot;:[</div>
<div class="line"> {&quot;ssid&quot;: &quot;YOUR_SSID&quot;, &quot;pass&quot;:&quot;YOUR_WIFI_PASSWORD&quot;, &quot;dhcp&quot;: true}</div>
<div class="line"> ],</div>
<div class="line"> &quot;http_port&quot;:80,</div>
<div class="line"> &quot;ota_enabled&quot;:true,</div>
<div class="line"> &quot;ota_password&quot;:&quot;YOUR_OTA_PASSWORD&quot;,</div>
<div class="line"> &quot;ap_ssid&quot;:&quot;esp32cam&quot;,</div>
<div class="line"> &quot;ap_pass&quot;:&quot;123456789&quot;,</div>
<div class="line"> &quot;ap_ip&quot;: {&quot;ip&quot;:&quot;192.168.4.1&quot;, &quot;netmask&quot;:&quot;255.255.255.0&quot;},</div>
<div class="line"> &quot;ap_dhcp&quot;:true,</div>
<div class="line"> &quot;ntp_server&quot;:&quot;pool.ntp.org&quot;,</div>
<div class="line"> &quot;gmt_offset&quot;:14400,</div>
<div class="line"> &quot;dst_offset&quot;:0,</div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><p> Replace the WiFi and OTA parameters with your settings and save. PLease note that the sketch will not boot properly if WiFi connection is established.</p>
<p >Web server name can configured by creating another config file, <code>httpd.json</code>, in the root folder of the SD card:</p>
<div class="fragment"><div class="line">{</div>
<div class="line"> &quot;my_name&quot;: &quot;MY_NAME&quot;,</div>
<div class="line"> &quot;mapping&quot;:[ {&quot;uri&quot;:&quot;/dump&quot;, &quot;path&quot;: &quot;/www/dump.html&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/img&quot;, &quot;path&quot;: &quot;/www/img&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/css&quot;, &quot;path&quot;: &quot;/www/css&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/js&quot;, &quot;path&quot;: &quot;/www/js&quot;}],</div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><p >The parameter <code>mapping</code> allows to configure folders with static content for the web server.</p>
<p >Similarly, default camera configuration parameters can be set by creating the file <code>cam.json</code>:</p>
<div class="fragment"><div class="line">{ </div>
<div class="line"> &quot;lamp&quot;:-1,</div>
<div class="line"> &quot;autolamp&quot;:0,</div>
<div class="line"> &quot;framesize&quot;:8,</div>
<div class="line"> &quot;quality&quot;:12,</div>
<div class="line"> &quot;xclk&quot;:8,</div>
<div class="line"> &quot;frame_rate&quot;:25,</div>
<div class="line"> &quot;brightness&quot;:0,</div>
<div class="line"> &quot;contrast&quot;:0,</div>
<div class="line"> &quot;saturation&quot;:0,</div>
<div class="line"> &quot;special_effect&quot;:0,</div>
<div class="line"> &quot;wb_mode&quot;:0,&quot;awb&quot;:1,</div>
<div class="line"> &quot;awb_gain&quot;:1,</div>
<div class="line"> &quot;aec&quot;:1,</div>
<div class="line"> &quot;aec2&quot;:0,</div>
<div class="line"> &quot;ae_level&quot;:0,</div>
<div class="line"> &quot;aec_value&quot;:204,</div>
<div class="line"> &quot;agc&quot;:1,</div>
<div class="line"> &quot;agc_gain&quot;:0,</div>
<div class="line"> &quot;gainceiling&quot;:0,</div>
<div class="line"> &quot;bpc&quot;:0,</div>
<div class="line"> &quot;wpc&quot;:1,</div>
<div class="line"> &quot;raw_gma&quot;:1,</div>
<div class="line"> &quot;lenc&quot;:1,</div>
<div class="line"> &quot;vflip&quot;:0,</div>
<div class="line"> &quot;hmirror&quot;:0,</div>
<div class="line"> &quot;dcw&quot;:1,</div>
<div class="line"> &quot;colorbar&quot;:0,</div>
<div class="line"> &quot;rotate&quot;:&quot;0&quot;, </div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md26"></a>
Programming</h2>
<p >Assuming you are using the latest Espressif Arduino core the <code>ESP32 Dev Module</code> board will appear in the ESP32 Arduino section of the boards list. Select this (do not use the <code>AI-THINKER</code> entry listed in the boiards menu, it is not OTA compatible, and will cause the module to crash and reboot rather than updating if you use it. <img src="Docs/ota-board-selection.png" alt="IDE board config" class="inline"/></p>
<p >Make sure you select the <code>Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)</code> partition cheme and turn <code>PSRAM</code> on.</p>
<p >The first time you program (or if OTA is failing) you need to compile and upload the code from the IDE, and when the <code>Connecting...</code> appears in the console reboot the ESP32 module while keeping <b>GPIO0</b> grounded. You can release GPO0 once the sketch is uploading, most boards have a 'boot' button to trigger a reboot.</p>
<p >Once the upload completes (be patient, it can be a bit slow) open the serial monitor in the IDE and reboot the board again without GPIO0 grounded. In the serial monitor you should see the board start, connect to the wifi and then report the IP address it has been assigned.</p>
<p >Once you have the initial upload done and the board is connected to the wifi network you should see it appearing in the <code>network ports</code> list of the IDE, and you can upload wirelessly.</p>
<p >If you have a status LED configured it will give a double flash when it begins attempting to conenct to WiFi, and five short flashes once it has succeeded. It will also flash briefly when you access the camera to change settings.</p>
<p >Go to the URL given in the serial output, the web UI should appear with the settings panel open. Click away!</p>
<h2><a class="anchor" id="autotoc_md27"></a>
API</h2>
<p >The communications between the web browser and the camera module can also be used to send commands directly to the camera (eg to automate it, etc) and form, in effect, an API for the camera.</p><ul>
<li><a class="el" href="md__a_p_i.html">ESP32 Camera Web Server JSON API</a>.</li>
</ul>
<h1><a class="anchor" id="autotoc_md28"></a>
Contributing</h1>
<p >Contributions are welcome; please see the <a class="el" href="md__c_o_n_t_r_i_b_u_t_i_n_g.html">Contribution guidelines</a>.</p>
<h1><a class="anchor" id="autotoc_md29"></a>
Future plans</h1>
<ol type="1">
<li>Support of LittleFS.</li>
<li>Support of other boards and cameras.</li>
<li>Explore how to improve the video quality and further reduce requirements to resources. </li>
</ol>
</div></div><!-- PageDoc -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

35
Docs/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

184
Docs/html/md__a_p_i.html Normal file
View File

@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Basic HTTP Commands;</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">Basic HTTP Commands; </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p >The WebUI and camera server communicate entirely via HTTP requests and responses; this makes controlling all functions of the camera via GET requests possible.</p>
<h1><a class="anchor" id="autotoc_md1"></a>
URI's</h1>
<h2><a class="anchor" id="autotoc_md2"></a>
Web UI pages</h2>
<ul>
<li><code>/</code> or <code>/portal</code> - Default index (portal)</li>
<li><code>/view?mode=full|simple|stream|still</code> - Go direct to specific page:</li>
<li>- full: taking still and video with complete set of camera controls</li>
<li>- simple: taking still and video with limited set of camera controls</li>
<li>- stream: starting video capture with full screen mode</li>
<li>- still: taking a still image with full screen mode</li>
<li><code>/dump</code> - Status page (automatically refreshed every 5 sec)</li>
</ul>
<h2><a class="anchor" id="autotoc_md3"></a>
Special &lt;em&gt;key / val&lt;/em&gt; settings and commands</h2>
<ul>
<li><code>/control?var=&lt;key&gt;&amp;val=&lt;val&gt;</code> - Set a Control Variable specified by <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code></li>
<li><code>/status</code> - JSON response containing camera settings</li>
<li><code>/system</code> - JSON response containing all parameters displayed on the <code>/dump</code> page</li>
</ul>
<h3><a class="anchor" id="autotoc_md4"></a>
Supported Control Variables:</h3>
<div class="fragment"><div class="line">lamp - Lamp value in percent; integer, 0 - 100 (-1 = disabled)</div>
<div class="line">framesize - See below</div>
<div class="line">frame_rate - Frame rate in FPS. Must be positive integer</div>
<div class="line">quality - 10 to 63 (ov3660: 4 to 10)</div>
<div class="line">contrast - -2 to 2 (ov3660: -3 to 3)</div>
<div class="line">brightness - -2 to 2 (ov3660: -3 to 3)</div>
<div class="line">saturation - -2 to 2 (ov3660: -4 to 4)</div>
<div class="line">sharpness - (ov3660: -3 to 3)</div>
<div class="line">denoise - (ov3660: 0 to 8)</div>
<div class="line">ae_level - (ov3660: -5 to 5)</div>
<div class="line">special_effect - 0=No Effect, 1=Negative, 2=Grayscale, 3=Red Tint, 4=Green Tint, 5=Blue Tint, 6=Sepia</div>
<div class="line">awb - 0 = disable, 1 = enable</div>
<div class="line">awb_gain - 0 = disable, 1 = enable</div>
<div class="line">wb_mode - if awb enabled: 0=Auto, 1=Sunny, 2=Cloudy, 3=Office, 4=Home</div>
<div class="line">aec - 0 = disable, 1 = enable</div>
<div class="line">aec_value - 0 to 1200 (ov3660: 0 to 1536)</div>
<div class="line">aec2 - 0 = disable, 1 = enable</div>
<div class="line">ae_level - -2 to 2 (not ov3660)</div>
<div class="line">agc - 0 = disable, 1 = enable</div>
<div class="line">agc_gain - 0 to 30 (ov3660: 0 to 64)</div>
<div class="line">gainceiling - 0 to 6 (ov3660: 0 to 511)</div>
<div class="line">bpc - 0 = disable, 1 = enable</div>
<div class="line">wpc - 0 = disable, 1 = enable</div>
<div class="line">raw_gma - 0 = disable, 1 = enable</div>
<div class="line">lenc - 0 = disable, 1 = enable</div>
<div class="line">hmirror - 0 = disable, 1 = enable</div>
<div class="line">vflip - 0 = disable, 1 = enable</div>
<div class="line">rotate - Rotation Angle; integer, only -90, 0, 90 values are recognised</div>
<div class="line">dcw - 0 = disable, 1 = enable</div>
<div class="line">colorbar - Overlays a color test pattern on the stream; integer, 1 = enabled</div>
<div class="line">face_detect - Face Detection; 1 = enabled, Only settable if framesize &lt;= 4 (CIF)</div>
<div class="line">face_recognize - Face recognition; 1 = enabled, only settable if Face detection is already enabled</div>
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md5"></a>
Framesize values</h4>
<p >These may vary between different ESP framework releases </p><div class="fragment"><div class="line"> 0 - THUMB (96x96)</div>
<div class="line"> 1 - QQVGA (160x120)</div>
<div class="line"> 3 - HQVGA (240x176)</div>
<div class="line"> 5 - QVGA (320x240)</div>
<div class="line"> 6 - CIF (400x296)</div>
<div class="line"> 7 - HVGA (480x320)</div>
<div class="line"> 8 - VGA (640x480)</div>
<div class="line"> 9 - SVGA (800x600)</div>
<div class="line">10 - XGA (1024x768)</div>
<div class="line">11 - HD (1280x720)</div>
<div class="line">12 - SXGA (1280x1024)</div>
<div class="line">13 - UXGA (1600x1200)</div>
<div class="line">Only for 3Mp+ camera modules:</div>
<div class="line">14 - FHD (1920x1080)</div>
<div class="line">17 - QXGA (2048x1536)</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md6"></a>
Commands</h3>
<p >These are commands; they can be sent by calling the <code>/control</code> URI with them as the <code>&lt;key&gt;</code> parameter. </p><div class="fragment"><div class="line">* save_prefs - Saves preferences</div>
<div class="line"> `val=cam` or not specified will save camera preferences</div>
<div class="line"> `val=conn` will save network preferences</div>
<div class="line">* clear_prefs - Deletes camera the preferences</div>
<div class="line"> `val=cam` or not specified will reset camera preferences</div>
<div class="line"> `val=conn` will reset network preferences. Attention! after this the server will boot as access point after restart, and all</div>
<div class="line"> connection settings will be lost. </div>
<div class="line">* reboot - Reboots the board</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md7"></a>
Examples</h1>
<ul>
<li>Flash light: on/mid/off<ul>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/control?var=lamp&amp;val=100</code></li>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/control?var=lamp&amp;val=50</code></li>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/control?var=lamp&amp;val=0</code></li>
</ul>
</li>
<li>Set resolution to VGA<ul>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/control?var=framesize&amp;val=8</code></li>
</ul>
</li>
<li>Show camera details and settings<ul>
<li>All settings are returned via single <code>status</code> call in <a href="https://www.json.org/">JSON</a> format.</li>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/status</code></li>
<li>Returns: <code>{"lamp":0,"autolamp":0,"frame_rate":0,"framesize":9,"quality":10,"xclk":8,"brightness":0,"contrast":0,"saturation":0,"sharpness":0,"special_effect":0,"wb_mode":0,"awb":1,"awb_gain":1,"aec":1,"aec2":0,"ae_level":0,"aec_value":204,"agc":1,"agc_gain":0,"gainceiling":0,"bpc":0,"wpc":1,"raw_gma":1,"lenc":1,"vflip":1,"hmirror":1,"dcw":1,"colorbar":0,"cam_name":"ESP32 test camera","code_ver":"Mar 10 2022 @ 14:00:45","rotate":"0","stream_url":"ws://&lt;IP-ADDRESS&gt;/ws"}</code></li>
</ul>
</li>
<li>Reboot the camera<ul>
<li><code><a href="http://">http://</a>&lt;IP-ADDRESS&gt;/control?var=reboot&amp;val=0</code></li>
</ul>
</li>
</ul>
<p >You can try these yourself in a browser address bar, from the commandline with <code>curl</code> and co. or use them programatically from your scripting language of choice. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Contributing to ESP32-CAM revisited</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">Contributing to ESP32-CAM revisited </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p >We love your input and want to make contributing to this project as easy and transparent as possible, whether it's:</p>
<ul>
<li>Reporting a bug</li>
<li>Discussing the current state of the code</li>
<li>Submitting a fix</li>
<li>Proposing new features</li>
<li>Becoming a maintainer</li>
</ul>
<h1><a class="anchor" id="autotoc_md9"></a>
We Develop with Github</h1>
<p >We use github to host code, to track issues and feature requests, as well as accept pull requests.</p>
<h1><a class="anchor" id="autotoc_md10"></a>
We Use &lt;a href="https://guides.github.com/introduction/flow/index.html" &gt;Github Flow&lt;/a&gt;</h1>
<p >So All Code Changes Happen Through Pull Requests. Pull requests are the best way to propose changes to the codebase (use <a href="https://guides.github.com/introduction/flow/index.html">Github Flow</a>). We actively welcome your pull requests:</p>
<ol type="1">
<li>Fork the repo and create your branch from <code>master</code>.</li>
<li>Give your branch a clear descriptive name and do your changes there.</li>
<li>If you've changed the HTTP APIs, update the documentation.</li>
<li>Issue a pull request against the master branch in the main repo.</li>
<li>Clearly describe your changes and the reason for them in the pull request.</li>
</ol>
<h1><a class="anchor" id="autotoc_md11"></a>
Any contributions you make will be under the GNU Lesser General Public License v2.1</h1>
<p >In short, when you submit code changes, your submissions are understood to be under the same <a href="./LICENSE">License</a> that covers the project.</p>
<h1><a class="anchor" id="autotoc_md12"></a>
Report bugs using Github's issues</h1>
<p >We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!</p>
<h1><a class="anchor" id="autotoc_md13"></a>
Write bug reports with detail, background, and sample code</h1>
<p ><b>Great Bug Reports</b> tend to have:</p>
<ul>
<li>A quick summary and/or background</li>
<li>Steps to reproduce<ul>
<li>Be specific!</li>
</ul>
</li>
<li>What you expected would happen</li>
<li>What actually happens</li>
<li>Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)</li>
</ul>
<h1><a class="anchor" id="autotoc_md14"></a>
Use a Consistent Coding Style</h1>
<ul>
<li>4 spaces for indentation rather than tabs in the main code</li>
</ul>
<h1><a class="anchor" id="autotoc_md15"></a>
License</h1>
<p >By contributing, you agree that your contributions will be licensed under its GNU Lesser General Public License v2.1 </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,221 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: ESP32-CAM WebCam Server &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">ESP32-CAM WebCam Server &#160;&#160;&#160; &#160;&#160; </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p ><span title="ESP EYE"><img src="data/www/img/logo.svg" alt="ESP-EYE logo" style="pointer-events: none;" class="inline"/></span></p>
<p >This sketch is a fully customizable webcam server based on ESP32-based board with camera. It can be used as a starting point for your own webcam solution.</p>
<h2><a class="anchor" id="autotoc_md17"></a>
Key features:</h2>
<ul>
<li>Extended options for default network and camera settings</li>
<li>Save and restore settings in JSON configuration files</li>
<li>Dedicated standalone stream viewer</li>
<li>Over The Air firmware updates</li>
<li>Optimizing the way how the video stream is processed, thus allowing higher frame rates on high resolution.</li>
<li>Using just one IP port instead of two.</li>
<li>Porting the web server to <a href="https://github.com/me-no-dev/ESPAsyncWebServer">ESP Async Web Server</a>.</li>
<li>Storing web pages as separate HTML/CSS/JS files on the SD drive, which greatly simplifies development of the interface. Basically, you can swap the face of this project just by replacing files on SD card.</li>
<li>Reduced size of the sketch and improving memory utilization</li>
<li>Porting the code from basic C to C++ object hierarchy, eliminating extensive use of global variables</li>
<li>Lots of minor fixes and tweaks, documentation etc.</li>
</ul>
<h2><a class="anchor" id="autotoc_md18"></a>
Key principles</h2>
<p >There are many other variants of a webcam server for these modules online, but most are created for a specific scenario and not good for general, casual, webcam use.</p>
<p >Hopefully this expanded example is more useful for those users who wish to set up a simple ESP32 based webcam using the cheap(ish) modules freely available online.</p>
<h2><a class="anchor" id="autotoc_md19"></a>
Summary of reductions</h2>
<p >When re-desiginig and refactoring the original ESP32 Camera web server example from Espressve, the following key principles were followed:</p>
<ol type="1">
<li>Any idea can be killed by unnecessary features</li>
<li>See <a href="https://www.youtube.com/watch?v=iMULJIXPxK4">this tutorial video</a>.</li>
</ol>
<p >Given the above, face recognition feature was removed. The main purpose of this sketch is to make the camera web server easily configurable and reusable.</p>
<p >The original example, is a bit incomprehensible and hard to modify as supplied. It is very focused on showing off the face recognition capabilities, and forgets the 'webcam' part.</p>
<h2><a class="anchor" id="autotoc_md20"></a>
Supported development boards</h2>
<p >The sketch has been tested on the <a href="https://github.com/raphaelbs/esp32-cam-ai-thinker/blob/master/assets/ESP32-CAM_Product_Specification.pdf">AI Thinker ESP32-CAM</a> module. Other ESP32 boards equipped with camera may be compatible but not guaranteed.</p>
<h2><a class="anchor" id="autotoc_md21"></a>
Known Issues</h2>
<p >The ESP32 itself is susceptible to the usual list of WiFi problems, not helped by having small antennas, older designs, congested airwaves and demanding users. The majority of disconnects, stutters and other communication problems are simply due to 'WiFi issues'.</p>
<p >The AI-THINKER camera module &amp; esp32 combination is quite susceptible to power supply problems affecting both WiFi conctivity and Video quality; short cabling and decent power supplies are your friend here; also well cooled cases and, if you have the time, decoupling capacitors on the power lines.</p>
<p >A basic limitation of the sketch is that it can can only support one stream at a time. If you try to connect to a cam that is already streaming (or attempting to stream, the first steam will freeze.</p>
<p >Currently, camera modules other than ov2640 are not supported.</p>
<h1><a class="anchor" id="autotoc_md22"></a>
Setup:</h1>
<ul>
<li>For programming you will need a suitable development environment. Possible options include Visual Studio Code, Arduino Studio or Espressif development environment .</li>
</ul>
<h2><a class="anchor" id="autotoc_md23"></a>
Wiring for AI-THINKER Boards (and similar clone-alikes)</h2>
<p >Is pretty simple, You just need jumper wires, no soldering really required, see the diagram below. <img src="Docs/hookup.png" alt="Hoockup" class="inline"/></p><ul>
<li>Connect the <b>RX</b> line from the serial adapter to the <b>TX</b> pin on ESP32</li>
<li>The adapters <b>TX</b> line goes to the ESP32 <b>RX</b> pin</li>
<li>The <b>GPIO0</b> pin of the ESP32 must be held LOW (to ground) when the unit is powered up to allow it to enter it's programming mode. This can be done with simple jumper cable connected at poweron, fitting a switch for this is useful if you will be reprogramming a lot.</li>
<li>You will to supply 5v to the ESP32 in order to power it during programming; the FTDI board alone fails to supply this sometimes. The ESP32 CAM board is very sensitive to the quality of power source. Decoupling capacitors are very much recommended.</li>
</ul>
<h2><a class="anchor" id="autotoc_md24"></a>
Download the Sketch, Unpack and Rename</h2>
<p >Download the latest release of the sketch this repository. Once you have done that you can open the sketch in the IDE by going to the <code>esp32-cam-webserver</code> sketch folder and selecting <code>esp32-cam-webserver.ino</code>.</p>
<p >You also need to copy the content of the <b>data</b> folder from this repository to a micro SD flash memory card (must be formatted as FAT32) and insert it into the micro SD slot of the board.</p>
<p >Without the SD card, the sketch will not start. Please ensure the size of the card does not exceed 4GB, which is a maximum supported capacity for ESP32-CAM board. Higher capacity SD card may not work.</p>
<h2><a class="anchor" id="autotoc_md25"></a>
Config</h2>
<p >You will need to configure the web server with your WiFi settings. In order to do so, you will need to create a config file in the root folder of your SD card named <code>conn.json</code> and format it as follows:</p>
<div class="fragment"><div class="line">{ </div>
<div class="line"> &quot;mdns_name&quot;:&quot;YOUR_MDNS_NAME&quot;,</div>
<div class="line"> &quot;stations&quot;:[</div>
<div class="line"> {&quot;ssid&quot;: &quot;YOUR_SSID&quot;, &quot;pass&quot;:&quot;YOUR_WIFI_PASSWORD&quot;, &quot;dhcp&quot;: true}</div>
<div class="line"> ],</div>
<div class="line"> &quot;http_port&quot;:80,</div>
<div class="line"> &quot;ota_enabled&quot;:true,</div>
<div class="line"> &quot;ota_password&quot;:&quot;YOUR_OTA_PASSWORD&quot;,</div>
<div class="line"> &quot;ap_ssid&quot;:&quot;esp32cam&quot;,</div>
<div class="line"> &quot;ap_pass&quot;:&quot;123456789&quot;,</div>
<div class="line"> &quot;ap_ip&quot;: {&quot;ip&quot;:&quot;192.168.4.1&quot;, &quot;netmask&quot;:&quot;255.255.255.0&quot;},</div>
<div class="line"> &quot;ap_dhcp&quot;:true,</div>
<div class="line"> &quot;ntp_server&quot;:&quot;pool.ntp.org&quot;,</div>
<div class="line"> &quot;gmt_offset&quot;:14400,</div>
<div class="line"> &quot;dst_offset&quot;:0,</div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><p> Replace the WiFi and OTA parameters with your settings and save. PLease note that the sketch will not boot properly if WiFi connection is established.</p>
<p >Web server name can configured by creating another config file, <code>httpd.json</code>, in the root folder of the SD card:</p>
<div class="fragment"><div class="line">{</div>
<div class="line"> &quot;my_name&quot;: &quot;MY_NAME&quot;,</div>
<div class="line"> &quot;mapping&quot;:[ {&quot;uri&quot;:&quot;/dump&quot;, &quot;path&quot;: &quot;/www/dump.html&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/img&quot;, &quot;path&quot;: &quot;/www/img&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/css&quot;, &quot;path&quot;: &quot;/www/css&quot;},</div>
<div class="line"> {&quot;uri&quot;:&quot;/js&quot;, &quot;path&quot;: &quot;/www/js&quot;}],</div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><p >The parameter <code>mapping</code> allows to configure folders with static content for the web server.</p>
<p >Similarly, default camera configuration parameters can be set by creating the file <code>cam.json</code>:</p>
<div class="fragment"><div class="line">{ </div>
<div class="line"> &quot;lamp&quot;:-1,</div>
<div class="line"> &quot;autolamp&quot;:0,</div>
<div class="line"> &quot;framesize&quot;:8,</div>
<div class="line"> &quot;quality&quot;:12,</div>
<div class="line"> &quot;xclk&quot;:8,</div>
<div class="line"> &quot;frame_rate&quot;:25,</div>
<div class="line"> &quot;brightness&quot;:0,</div>
<div class="line"> &quot;contrast&quot;:0,</div>
<div class="line"> &quot;saturation&quot;:0,</div>
<div class="line"> &quot;special_effect&quot;:0,</div>
<div class="line"> &quot;wb_mode&quot;:0,&quot;awb&quot;:1,</div>
<div class="line"> &quot;awb_gain&quot;:1,</div>
<div class="line"> &quot;aec&quot;:1,</div>
<div class="line"> &quot;aec2&quot;:0,</div>
<div class="line"> &quot;ae_level&quot;:0,</div>
<div class="line"> &quot;aec_value&quot;:204,</div>
<div class="line"> &quot;agc&quot;:1,</div>
<div class="line"> &quot;agc_gain&quot;:0,</div>
<div class="line"> &quot;gainceiling&quot;:0,</div>
<div class="line"> &quot;bpc&quot;:0,</div>
<div class="line"> &quot;wpc&quot;:1,</div>
<div class="line"> &quot;raw_gma&quot;:1,</div>
<div class="line"> &quot;lenc&quot;:1,</div>
<div class="line"> &quot;vflip&quot;:0,</div>
<div class="line"> &quot;hmirror&quot;:0,</div>
<div class="line"> &quot;dcw&quot;:1,</div>
<div class="line"> &quot;colorbar&quot;:0,</div>
<div class="line"> &quot;rotate&quot;:&quot;0&quot;, </div>
<div class="line"> &quot;debug_mode&quot;: false</div>
<div class="line">}</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md26"></a>
Programming</h2>
<p >Assuming you are using the latest Espressif Arduino core the <code>ESP32 Dev Module</code> board will appear in the ESP32 Arduino section of the boards list. Select this (do not use the <code>AI-THINKER</code> entry listed in the boiards menu, it is not OTA compatible, and will cause the module to crash and reboot rather than updating if you use it. <img src="Docs/ota-board-selection.png" alt="IDE board config" class="inline"/></p>
<p >Make sure you select the <code>Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)</code> partition cheme and turn <code>PSRAM</code> on.</p>
<p >The first time you program (or if OTA is failing) you need to compile and upload the code from the IDE, and when the <code>Connecting...</code> appears in the console reboot the ESP32 module while keeping <b>GPIO0</b> grounded. You can release GPO0 once the sketch is uploading, most boards have a 'boot' button to trigger a reboot.</p>
<p >Once the upload completes (be patient, it can be a bit slow) open the serial monitor in the IDE and reboot the board again without GPIO0 grounded. In the serial monitor you should see the board start, connect to the wifi and then report the IP address it has been assigned.</p>
<p >Once you have the initial upload done and the board is connected to the wifi network you should see it appearing in the <code>network ports</code> list of the IDE, and you can upload wirelessly.</p>
<p >If you have a status LED configured it will give a double flash when it begins attempting to conenct to WiFi, and five short flashes once it has succeeded. It will also flash briefly when you access the camera to change settings.</p>
<p >Go to the URL given in the serial output, the web UI should appear with the settings panel open. Click away!</p>
<h2><a class="anchor" id="autotoc_md27"></a>
API</h2>
<p >The communications between the web browser and the camera module can also be used to send commands directly to the camera (eg to automate it, etc) and form, in effect, an API for the camera.</p><ul>
<li><a class="el" href="md__a_p_i.html">ESP32 Camera Web Server JSON API</a>.</li>
</ul>
<h1><a class="anchor" id="autotoc_md28"></a>
Contributing</h1>
<p >Contributions are welcome; please see the <a class="el" href="md__c_o_n_t_r_i_b_u_t_i_n_g.html">Contribution guidelines</a>.</p>
<h1><a class="anchor" id="autotoc_md29"></a>
Future plans</h1>
<ol type="1">
<li>Support of LittleFS.</li>
<li>Support of other boards and cameras.</li>
<li>Explore how to improve the video quality and further reduce requirements to resources. </li>
</ol>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

127
Docs/html/menu.js Normal file
View File

@ -0,0 +1,127 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
function makeTree(data,relPath) {
var result='';
if ('children' in data) {
result+='<ul>';
for (var i in data.children) {
result+='<li><a href="'+relPath+data.children[i].url+'">'+
data.children[i].text+'</a>'+
makeTree(data.children[i],relPath)+'</li>';
}
result+='</ul>';
}
return result;
}
var searchBox;
if (searchEnabled) {
if (serverSide) {
searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
'<div class="left">'+
'<form id="FSearchBox" action="'+relPath+searchPage+
'" method="get"><img id="MSearchSelect" src="'+
relPath+'search/mag.svg" alt=""/>'+
'<input type="text" id="MSearchField" name="query" value="'+search+
'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
' onblur="searchBox.OnSearchFieldFocus(false)">'+
'</form>'+
'</div>'+
'<div class="right"></div>'+
'</div>';
} else {
searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
'<span class="left">'+
'<img id="MSearchSelect" src="'+relPath+
'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()"'+
' onmouseout="return searchBox.OnSearchSelectHide()" alt=""/>'+
'<input type="text" id="MSearchField" value="'+search+
'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
'onblur="searchBox.OnSearchFieldFocus(false)" '+
'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
'</span>'+
'<span class="right"><a id="MSearchClose" '+
'href="javascript:searchBox.CloseResultsWindow()">'+
'<img id="MSearchCloseImg" border="0" src="'+relPath+
'search/close.svg" alt=""/></a>'
'</span>'
'</div>';
}
}
$('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
'<label class="main-menu-btn" for="main-menu-state">'+
'<span class="main-menu-btn-icon"></span> '+
'Toggle main menu visibility</label>'+
'<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
'</div>');
$('#main-nav').append(makeTree(menudata,relPath));
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
if (searchBox) {
$('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
}
var $mainMenuState = $('#main-menu-state');
var prevWidth = 0;
if ($mainMenuState.length) {
function initResizableIfExists() {
if (typeof initResizable==='function') initResizable();
}
// animate mobile menu
$mainMenuState.change(function(e) {
var $menu = $('#main-menu');
var options = { duration: 250, step: initResizableIfExists };
if (this.checked) {
options['complete'] = function() { $menu.css('display', 'block') };
$menu.hide().slideDown(options);
} else {
options['complete'] = function() { $menu.css('display', 'none') };
$menu.show().slideUp(options);
}
});
// set default menu visibility
function resetState() {
var $menu = $('#main-menu');
var $mainMenuState = $('#main-menu-state');
var newWidth = $(window).outerWidth();
if (newWidth!=prevWidth) {
if ($(window).outerWidth()<768) {
$mainMenuState.prop('checked',false); $menu.hide();
$('#searchBoxPos1').html(searchBox);
$('#searchBoxPos2').hide();
} else {
$menu.show();
$('#searchBoxPos1').empty();
$('#searchBoxPos2').html(searchBox);
$('#searchBoxPos2').show();
}
prevWidth = newWidth;
}
}
$(window).ready(function() { resetState(); initResizableIfExists(); });
$(window).resize(resetState);
}
$('#main-menu').smartmenus();
}
/* @license-end */

83
Docs/html/menudata.js Normal file
View File

@ -0,0 +1,83 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
var menudata={children:[
{text:"Main Page",url:"index.html"},
{text:"Related Pages",url:"pages.html"},
{text:"Data Structures",url:"annotated.html",children:[
{text:"Data Structures",url:"annotated.html"},
{text:"Data Structure Index",url:"classes.html"},
{text:"Class Hierarchy",url:"hierarchy.html"},
{text:"Data Fields",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"c",url:"functions.html#index_c"},
{text:"d",url:"functions.html#index_d"},
{text:"e",url:"functions.html#index_e"},
{text:"g",url:"functions.html#index_g"},
{text:"h",url:"functions.html#index_h"},
{text:"i",url:"functions.html#index_i"},
{text:"l",url:"functions.html#index_l"},
{text:"n",url:"functions.html#index_n"},
{text:"o",url:"functions.html#index_o"},
{text:"p",url:"functions.html#index_p"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"u",url:"functions.html#index_u"},
{text:"w",url:"functions.html#index_w"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"c",url:"functions_func.html#index_c"},
{text:"d",url:"functions_func.html#index_d"},
{text:"e",url:"functions_func.html#index_e"},
{text:"g",url:"functions_func.html#index_g"},
{text:"h",url:"functions_func.html#index_h"},
{text:"i",url:"functions_func.html#index_i"},
{text:"l",url:"functions_func.html#index_l"},
{text:"o",url:"functions_func.html#index_o"},
{text:"p",url:"functions_func.html#index_p"},
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"u",url:"functions_func.html#index_u"},
{text:"w",url:"functions_func.html#index_w"}]},
{text:"Variables",url:"functions_vars.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"},
{text:"Globals",url:"globals.html",children:[
{text:"All",url:"globals.html",children:[
{text:"a",url:"globals.html#index_a"},
{text:"b",url:"globals.html#index_b"},
{text:"c",url:"globals.html#index_c"},
{text:"d",url:"globals.html#index_d"},
{text:"l",url:"globals.html#index_l"},
{text:"m",url:"globals.html#index_m"},
{text:"n",url:"globals.html#index_n"},
{text:"o",url:"globals.html#index_o"},
{text:"p",url:"globals.html#index_p"},
{text:"s",url:"globals.html#index_s"},
{text:"t",url:"globals.html#index_t"},
{text:"w",url:"globals.html#index_w"}]},
{text:"Functions",url:"globals_func.html"},
{text:"Variables",url:"globals_vars.html"},
{text:"Enumerations",url:"globals_enum.html"},
{text:"Enumerator",url:"globals_eval.html"},
{text:"Macros",url:"globals_defs.html"}]}]}]}

BIN
Docs/html/nav_f.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

BIN
Docs/html/nav_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
Docs/html/nav_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

BIN
Docs/html/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

82
Docs/html/pages.html Normal file
View File

@ -0,0 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: Related Pages</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle"><div class="title">Related Pages</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md__a_p_i.html" target="_self">Basic HTTP Commands;</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="md__c_o_n_t_r_i_b_u_t_i_n_g.html" target="_self">Contributing to ESP32-CAM revisited</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,136 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/parsebytes.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">parsebytes.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;Arduino.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4d8e6d226a4ee77982a2810ca02a8b77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parsebytes_8cpp.html#a4d8e6d226a4ee77982a2810ca02a8b77">parseBytes</a> (const char *str, char sep, byte *bytes, int maxBytes, int base)</td></tr>
<tr class="separator:a4d8e6d226a4ee77982a2810ca02a8b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a4d8e6d226a4ee77982a2810ca02a8b77" name="a4d8e6d226a4ee77982a2810ca02a8b77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d8e6d226a4ee77982a2810ca02a8b77">&#9670;&nbsp;</a></span>parseBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void parseBytes </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char&#160;</td>
<td class="paramname"><em>sep</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte *&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>maxBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/parsebytes.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">parsebytes.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="parsebytes_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4d8e6d226a4ee77982a2810ca02a8b77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77">parseBytes</a> (const char *str, char sep, byte *bytes, int maxBytes, int base)</td></tr>
<tr class="separator:a4d8e6d226a4ee77982a2810ca02a8b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a4d8e6d226a4ee77982a2810ca02a8b77" name="a4d8e6d226a4ee77982a2810ca02a8b77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d8e6d226a4ee77982a2810ca02a8b77">&#9670;&nbsp;</a></span>parseBytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void parseBytes </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char&#160;</td>
<td class="paramname"><em>sep</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">byte *&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>maxBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32 WebCam Server: src/parsebytes.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="logo.svg"/></td>
<td id="projectalign">
<div id="projectname">ESP32 WebCam Server<span id="projectnumber">&#160;5.0</span>
</div>
<div id="projectbrief">Fully customizable WebCam server based on Espressif ESP32-based board with a camera.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">parsebytes.h</div></div>
</div><!--header-->
<div class="contents">
<a href="parsebytes_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef parsebytes_h</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define parsebytes_h</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77">parseBytes</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span> sep, <span class="keywordtype">byte</span>* bytes, <span class="keywordtype">int</span> maxBytes, <span class="keywordtype">int</span> base);</div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span> </div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aparsebytes_8h_html_a4d8e6d226a4ee77982a2810ca02a8b77"><div class="ttname"><a href="parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77">parseBytes</a></div><div class="ttdeci">void parseBytes(const char *str, char sep, byte *bytes, int maxBytes, int base)</div><div class="ttdef"><b>Definition:</b> parsebytes.cpp:7</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

16
Docs/html/search/all_0.js Normal file
View File

@ -0,0 +1,16 @@
var searchData=
[
['api_2emd_0',['API.md',['../_a_p_i_8md.html',1,'']]],
['app_5fcam_2ecpp_1',['app_cam.cpp',['../app__cam_8cpp.html',1,'']]],
['app_5fcam_2eh_2',['app_cam.h',['../app__cam_8h.html',1,'']]],
['app_5fcomponent_2ecpp_3',['app_component.cpp',['../app__component_8cpp.html',1,'']]],
['app_5fcomponent_2eh_4',['app_component.h',['../app__component_8h.html',1,'']]],
['app_5fconfig_2eh_5',['app_config.h',['../app__config_8h.html',1,'']]],
['app_5fconn_2ecpp_6',['app_conn.cpp',['../app__conn_8cpp.html',1,'']]],
['app_5fconn_2eh_7',['app_conn.h',['../app__conn_8h.html',1,'']]],
['app_5fhttpd_2ecpp_8',['app_httpd.cpp',['../app__httpd_8cpp.html',1,'']]],
['app_5fhttpd_2eh_9',['app_httpd.h',['../app__httpd_8h.html',1,'']]],
['appcam_10',['AppCam',['../app__cam_8cpp.html#a2c40f09444d86a4ed61c53c20f0c9825',1,'AppCam():&#160;app_cam.cpp'],['../app__cam_8h.html#a2c40f09444d86a4ed61c53c20f0c9825',1,'AppCam():&#160;app_cam.cpp']]],
['appconn_11',['AppConn',['../app__conn_8cpp.html#a3fca6c2df3835192bdadfe6edde1e63b',1,'AppConn():&#160;app_conn.cpp'],['../app__conn_8h.html#a3fca6c2df3835192bdadfe6edde1e63b',1,'AppConn():&#160;app_conn.cpp']]],
['apphttpd_12',['AppHttpd',['../app__httpd_8cpp.html#a0174a427778b574c2447cf5d8568f986',1,'AppHttpd():&#160;app_httpd.cpp'],['../app__httpd_8h.html#a0174a427778b574c2447cf5d8568f986',1,'AppHttpd():&#160;app_httpd.cpp']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['base_5fversion_0',['BASE_VERSION',['../app__config_8h.html#a7409e001dcdfa6d62c7266224556e6a3',1,'app_config.h']]],
['basic_20http_20commands_3b_1',['Basic HTTP Commands;',['../md__a_p_i.html',1,'']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_10.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var searchData=
[
['updatesnaptimer_0',['updateSnapTimer',['../class_c_l_app_httpd.html#a58f5ed0635650911e1540f138df24b29',1,'CLAppHttpd']]],
['uri_1',['uri',['../struct_uri_mapping.html#a9ce212b0da4d58af1f79b5476b68a7e8',1,'UriMapping']]],
['urimapping_2',['UriMapping',['../struct_uri_mapping.html',1,'']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_11.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['wifi_5fwatchdog_0',['WIFI_WATCHDOG',['../app__config_8h.html#abe5fef12849f59923de575b49a6e222c',1,'app_config.h']]],
['wifistatus_1',['wifiStatus',['../class_c_l_app_conn.html#a790ba7c0b56edae2de159abf29f0127b',1,'CLAppConn']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

19
Docs/html/search/all_2.js Normal file
View File

@ -0,0 +1,19 @@
var searchData=
[
['cam_5fname_0',['CAM_NAME',['../app__config_8h.html#acc59b7b9d083568456e1131e8492b5dd',1,'app_config.h']]],
['camera_5fmodel_5fai_5fthinker_1',['CAMERA_MODEL_AI_THINKER',['../app__config_8h.html#af3ad6cce87c9d1876247f85e3cece96e',1,'app_config.h']]],
['camera_5fpins_2eh_2',['camera_pins.h',['../camera__pins_8h.html',1,'']]],
['capacityunits_3',['capacityUnits',['../class_c_l_storage.html#a287d73a832226a938cc114b21bf52fb7',1,'CLStorage']]],
['capture_5fmode_4',['capture_mode',['../app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3d',1,'app_httpd.h']]],
['capture_5fstill_5',['CAPTURE_STILL',['../app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3daa95e79ced3f093812e4ada2d4642d0ac',1,'app_httpd.h']]],
['capture_5fstream_6',['CAPTURE_STREAM',['../app__httpd_8h.html#a4f1a58013e90714b6ff526f27933ad3dae34cdf188185e5606a30deb938e20b40',1,'app_httpd.h']]],
['clappcam_7',['CLAppCam',['../class_c_l_app_cam.html',1,'CLAppCam'],['../class_c_l_app_cam.html#a5489d93c51c1b4f3457af58970ff953d',1,'CLAppCam::CLAppCam()']]],
['clappcomponent_8',['CLAppComponent',['../class_c_l_app_component.html',1,'']]],
['clappconn_9',['CLAppConn',['../class_c_l_app_conn.html',1,'CLAppConn'],['../class_c_l_app_conn.html#a40ab21138b6b3280000a139da9784f58',1,'CLAppConn::CLAppConn()']]],
['clapphttpd_10',['CLAppHttpd',['../class_c_l_app_httpd.html',1,'CLAppHttpd'],['../class_c_l_app_httpd.html#ad921ac128d82e11c8170847b25970dea',1,'CLAppHttpd::CLAppHttpd()']]],
['clstorage_11',['CLStorage',['../class_c_l_storage.html',1,'']]],
['configmdns_12',['configMDNS',['../class_c_l_app_conn.html#ab12f6fe1f13192cdcf6c2243c0619a39',1,'CLAppConn']]],
['configntp_13',['configNTP',['../class_c_l_app_conn.html#a17ffc56321ce2e765ae90d1b27ed10e2',1,'CLAppConn']]],
['contributing_20to_20esp32_2dcam_20revisited_14',['Contributing to ESP32-CAM revisited',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]],
['contributing_2emd_15',['CONTRIBUTING.md',['../_c_o_n_t_r_i_b_u_t_i_n_g_8md.html',1,'']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,8 @@
var searchData=
[
['dhcp_0',['dhcp',['../struct_station.html#aae4e91ca19c2b2b799ca20891f95c651',1,'Station']]],
['dns1_1',['dns1',['../struct_static_i_p.html#a6257a5707d2a75fa38ef9d5064eb792d',1,'StaticIP']]],
['dns2_2',['dns2',['../struct_static_i_p.html#a61e727e8a383392a7f36820a22f1628d',1,'StaticIP']]],
['dumpprefs_3',['dumpPrefs',['../class_c_l_app_component.html#ad90151113ffbbcc630e347580b3ee9fe',1,'CLAppComponent']]],
['dumpsystemstatustojson_4',['dumpSystemStatusToJson',['../app__httpd_8cpp.html#a93682b89d59abe5dbad7f6d2a7fa8b8e',1,'dumpSystemStatusToJson(char *buf, size_t size):&#160;app_httpd.cpp'],['../app__httpd_8h.html#a93682b89d59abe5dbad7f6d2a7fa8b8e',1,'dumpSystemStatusToJson(char *buf, size_t size):&#160;app_httpd.cpp']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var searchData=
[
['enableota_0',['enableOTA',['../class_c_l_app_conn.html#a5e9975f7afdb88ae197fb3ad43942c7f',1,'CLAppConn']]],
['esp32_2dcam_20webcam_20server_20_26nbsp_3b_26nbsp_3b_26nbsp_3b_20_20_26nbsp_3b_26nbsp_3b_1',['ESP32-CAM WebCam Server &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;',['../index.html',1,'']]],
['exists_2',['exists',['../class_c_l_storage.html#aa5b081483af1fcf83fca0573cc1c6f44',1,'CLStorage']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

38
Docs/html/search/all_5.js Normal file
View File

@ -0,0 +1,38 @@
var searchData=
[
['gateway_0',['gateway',['../struct_static_i_p.html#a6bd38cab74299d715d64d1ea5a369913',1,'StaticIP']]],
['getapname_1',['getApName',['../class_c_l_app_conn.html#a2d4395c692371a87b05ccb3e9b6b33d9',1,'CLAppConn']]],
['getbuffer_2',['getBuffer',['../class_c_l_app_cam.html#aac54409dcd9344abbbe434b237dc505f',1,'CLAppCam']]],
['getbuffersize_3',['getBufferSize',['../class_c_l_app_cam.html#aa0f1c434be24055bab3abb459a071abd',1,'CLAppCam']]],
['getclientid_4',['getClientId',['../class_c_l_app_httpd.html#a9c73098b74bbc4bb1358c2723019e716',1,'CLAppHttpd']]],
['getdaylightoffset_5fsec_5',['getDaylightOffset_sec',['../class_c_l_app_conn.html#aef2f2c99712b1c867b9d73f5abf4377e',1,'CLAppConn']]],
['geterr_6',['getErr',['../class_c_l_app_cam.html#a97ffe4ceb1fc0ae537d4e5f96cb7691e',1,'CLAppCam']]],
['getframerate_7',['getFrameRate',['../class_c_l_app_cam.html#a790db89fdbe6524175ad6f447b863c26',1,'CLAppCam']]],
['getfs_8',['getFS',['../class_c_l_storage.html#a163976b7c12700a887fe33d797380d36',1,'CLStorage']]],
['getgmtoffset_5fsec_9',['getGmtOffset_sec',['../class_c_l_app_conn.html#aa10f212281464764cf8b3057290d1722',1,'CLAppConn']]],
['gethttpurl_10',['getHTTPUrl',['../class_c_l_app_conn.html#ae243b486cbd9ac417ff050df27bab72f',1,'CLAppConn']]],
['getimagesserved_11',['getImagesServed',['../class_c_l_app_httpd.html#a1682f0b927c3c3691a20c1298e9922c9',1,'CLAppHttpd']]],
['getlamp_12',['getLamp',['../class_c_l_app_cam.html#a84dc1e1b593b3d4b67889cc88893c92f',1,'CLAppCam']]],
['getlasterr_13',['getLastErr',['../class_c_l_app_component.html#a0c99f78f5ea7090785c70864b8fd9101',1,'CLAppComponent']]],
['getlocaltimestr_14',['getLocalTimeStr',['../class_c_l_app_conn.html#add0e97835e7204a17639eb8b4c07cfd0',1,'CLAppConn']]],
['getname_15',['getName',['../class_c_l_app_httpd.html#a56a97b6250dd609d57e9c84128813846',1,'CLAppHttpd']]],
['getntpserver_16',['getNTPServer',['../class_c_l_app_conn.html#a0e78e96c67968f486c71658925b53251',1,'CLAppConn']]],
['getport_17',['getPort',['../class_c_l_app_conn.html#a6fa2c289453dd0849fe5d982d6b0ff59',1,'CLAppConn']]],
['getprefsfilename_18',['getPrefsFileName',['../class_c_l_app_component.html#ada7959a912692cd2c03bd950faa8c5bc',1,'CLAppComponent']]],
['getrotation_19',['getRotation',['../class_c_l_app_cam.html#a65918dca872c1d5bdcb0bb556451127f',1,'CLAppCam']]],
['getsensor_20',['getSensor',['../class_c_l_app_cam.html#af812f50b9e35bcdb56af399c4fafd8f2',1,'CLAppCam']]],
['getsensorpid_21',['getSensorPID',['../class_c_l_app_cam.html#ac20c8599dfc6112502b2ca9e446e6af5',1,'CLAppCam']]],
['getserialbuffer_22',['getSerialBuffer',['../class_c_l_app_httpd.html#a86f5338752065817fabed08e118a8ff8',1,'CLAppHttpd']]],
['getsize_23',['getSize',['../class_c_l_storage.html#a74a864f262e8143d1b82f4c823a7bb45',1,'CLStorage']]],
['getsketchmd5_24',['getSketchMD5',['../class_c_l_app_httpd.html#add4710263a9093fa4f57a2c26d97310e',1,'CLAppHttpd']]],
['getsketchsize_25',['getSketchSize',['../class_c_l_app_httpd.html#a80c23913b0e693ae584b8177647cec6c',1,'CLAppHttpd']]],
['getsketchspace_26',['getSketchSpace',['../class_c_l_app_httpd.html#a4be3e20152216b606c83ae09e74c3840',1,'CLAppHttpd']]],
['getstreamcount_27',['getStreamCount',['../class_c_l_app_httpd.html#a5f8f1b5b6e4a1da9dbc9788a4442e00c',1,'CLAppHttpd']]],
['getstreammode_28',['getStreamMode',['../class_c_l_app_httpd.html#aeef90f323bd91eba9d00d0b464177c82',1,'CLAppHttpd']]],
['getstreamsserved_29',['getStreamsServed',['../class_c_l_app_httpd.html#a2b63e9eb18e2d67fc3f352fec0b66cd9',1,'CLAppHttpd']]],
['getstreamurl_30',['getStreamUrl',['../class_c_l_app_conn.html#a3b240d40a51a7d76f22be73b2563b412',1,'CLAppConn']]],
['getuptimestr_31',['getUpTimeStr',['../class_c_l_app_conn.html#a05b74d2731b9c2220c431e354b1b55a5',1,'CLAppConn']]],
['getused_32',['getUsed',['../class_c_l_storage.html#a9effb4148704bbc571acce5214e5dd74',1,'CLStorage']]],
['getversion_33',['getVersion',['../class_c_l_app_httpd.html#a3ba8f3dfa8888b198ac9ad69e88f1a5d',1,'CLAppHttpd']]],
['getxclk_34',['getXclk',['../class_c_l_app_cam.html#a8e19e1d337c7d7406d713a42615005aa',1,'CLAppCam']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['handlednsrequest_0',['handleDNSRequest',['../class_c_l_app_conn.html#a841aff4dbe7c1b8f34a9eff36fa1b7fd',1,'CLAppConn']]],
['handleota_1',['handleOTA',['../class_c_l_app_conn.html#a2471ad68dc8303ebfd945c89151d6f03',1,'CLAppConn']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

12
Docs/html/search/all_7.js Normal file
View File

@ -0,0 +1,12 @@
var searchData=
[
['incimagesserved_0',['incImagesServed',['../class_c_l_app_httpd.html#a2db88a341da481eff2270d5fa8d607a3',1,'CLAppHttpd']]],
['init_1',['init',['../class_c_l_storage.html#ad93b1e36f1c529d89352699ade07e9d7',1,'CLStorage']]],
['ip_2',['ip',['../struct_static_i_p.html#a4cba6eec0917a4f531e3285d9e5f8529',1,'StaticIP']]],
['isaccesspoint_3',['isAccessPoint',['../class_c_l_app_conn.html#a80277e357f23e4dd2de431aecdc326ad',1,'CLAppConn']]],
['isautolamp_4',['isAutoLamp',['../class_c_l_app_cam.html#aa68f9714fa1c5bdf77708279c8da081b',1,'CLAppCam']]],
['iscaptiveportal_5',['isCaptivePortal',['../class_c_l_app_conn.html#abbde99435f66b7828a706c15c4317634',1,'CLAppConn']]],
['isdebugmode_6',['isDebugMode',['../class_c_l_app_component.html#a4891eef9a9970b158d528fef5dda8d30',1,'CLAppComponent']]],
['isjpeginbuffer_7',['isJPEGinBuffer',['../class_c_l_app_cam.html#a1f01a309f73eb36142ab8b449c81a381',1,'CLAppCam']]],
['isotaenabled_8',['isOTAEnabled',['../class_c_l_app_conn.html#af5a7071604dbf2bc0ec8b1bdfabd538a',1,'CLAppConn']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var searchData=
[
['lamp_5fdefault_0',['LAMP_DEFAULT',['../app__cam_8h.html#a8dcb31f6ec7707e22c63090318ca951f',1,'app_cam.h']]],
['listdir_1',['listDir',['../class_c_l_storage.html#aad57cc509fd60ff11bfc55a47b96be9f',1,'CLStorage']]],
['loadprefs_2',['loadPrefs',['../class_c_l_app_cam.html#a26a9c706c7c9f86adbfa3cfb748760df',1,'CLAppCam::loadPrefs()'],['../class_c_l_app_component.html#a300c0d2775ed4a082f63449826ee3b98',1,'CLAppComponent::loadPrefs()'],['../class_c_l_app_conn.html#ae2c05fac4c38fd444700b3f01eed931f',1,'CLAppConn::loadPrefs()'],['../class_c_l_app_httpd.html#af530618baf6452852e39524efa4fd365',1,'CLAppHttpd::loadPrefs()']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var searchData=
[
['max_5fknown_5fstations_0',['MAX_KNOWN_STATIONS',['../app__conn_8h.html#a83592674d0318a8edd98e994f0fed16b',1,'app_conn.h']]],
['max_5furi_5fmappings_1',['MAX_URI_MAPPINGS',['../app__httpd_8h.html#a637263863b33a51633c07ec542547fc1',1,'app_httpd.h']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var searchData=
[
['netmask_0',['netmask',['../struct_static_i_p.html#ad8221b5210f6692fbeffb6735495a930',1,'StaticIP']]],
['ntp_5fdst_5foffset_1',['NTP_DST_OFFSET',['../app__conn_8h.html#a3c6fa4af03ad17716da92c20fa8ff64b',1,'app_conn.h']]],
['ntp_5fgmt_5foffset_2',['NTP_GMT_OFFSET',['../app__conn_8h.html#a2c57373b84abca8b795c0a8dd84568a9',1,'app_conn.h']]],
['ntpserver_3',['NTPSERVER',['../app__conn_8h.html#a6a6985b24d084cef13acc6754ab4c3a9',1,'app_conn.h']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

10
Docs/html/search/all_b.js Normal file
View File

@ -0,0 +1,10 @@
var searchData=
[
['oncontrol_0',['onControl',['../app__httpd_8cpp.html#ad15b6110c801dc234564fa2f8268a9ab',1,'onControl(AsyncWebServerRequest *request):&#160;app_httpd.cpp'],['../app__httpd_8h.html#ad15b6110c801dc234564fa2f8268a9ab',1,'onControl(AsyncWebServerRequest *request):&#160;app_httpd.cpp']]],
['oninfo_1',['onInfo',['../app__httpd_8cpp.html#ad302c9a0a0e16505eef900b55250762e',1,'onInfo(AsyncWebServerRequest *request):&#160;app_httpd.cpp'],['../app__httpd_8h.html#ad302c9a0a0e16505eef900b55250762e',1,'onInfo(AsyncWebServerRequest *request):&#160;app_httpd.cpp']]],
['onsnaptimer_2',['onSnapTimer',['../app__httpd_8cpp.html#a1424ebf10d44b20fd79bb8102221a969',1,'onSnapTimer(TimerHandle_t pxTimer):&#160;app_httpd.cpp'],['../app__httpd_8h.html#a1424ebf10d44b20fd79bb8102221a969',1,'onSnapTimer(TimerHandle_t pxTimer):&#160;app_httpd.cpp']]],
['onstatus_3',['onStatus',['../app__httpd_8cpp.html#acc8d1122165362713f0823aeb3b25d1e',1,'onStatus(AsyncWebServerRequest *request):&#160;app_httpd.cpp'],['../app__httpd_8h.html#acc8d1122165362713f0823aeb3b25d1e',1,'onStatus(AsyncWebServerRequest *request):&#160;app_httpd.cpp']]],
['onsystemstatus_4',['onSystemStatus',['../app__httpd_8cpp.html#a9a31c0a3ca52126629c612c494b8d3c6',1,'onSystemStatus(AsyncWebServerRequest *request):&#160;app_httpd.cpp'],['../app__httpd_8h.html#a9a31c0a3ca52126629c612c494b8d3c6',1,'onSystemStatus(AsyncWebServerRequest *request):&#160;app_httpd.cpp']]],
['onwsevent_5',['onWsEvent',['../app__httpd_8cpp.html#a7064e9828984f378d3e04f9b7a47bcae',1,'onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len):&#160;app_httpd.cpp'],['../app__httpd_8h.html#a7064e9828984f378d3e04f9b7a47bcae',1,'onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len):&#160;app_httpd.cpp']]],
['open_6',['open',['../class_c_l_storage.html#a867f099568b8c4f18f0135ad14260a01',1,'CLStorage']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_c.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

11
Docs/html/search/all_c.js Normal file
View File

@ -0,0 +1,11 @@
var searchData=
[
['parsebytes_0',['parseBytes',['../parsebytes_8cpp.html#a4d8e6d226a4ee77982a2810ca02a8b77',1,'parseBytes(const char *str, char sep, byte *bytes, int maxBytes, int base):&#160;parsebytes.cpp'],['../parsebytes_8h.html#a4d8e6d226a4ee77982a2810ca02a8b77',1,'parseBytes(const char *str, char sep, byte *bytes, int maxBytes, int base):&#160;parsebytes.cpp']]],
['parsebytes_2ecpp_1',['parsebytes.cpp',['../parsebytes_8cpp.html',1,'']]],
['parsebytes_2eh_2',['parsebytes.h',['../parsebytes_8h.html',1,'']]],
['parseprefs_3',['parsePrefs',['../class_c_l_app_component.html#a7b23015c89977efd202896a19e7ca319',1,'CLAppComponent']]],
['password_4',['password',['../struct_station.html#adfce66aab835659fef7ab8501def3867',1,'Station']]],
['path_5',['path',['../struct_uri_mapping.html#a28b0be3b16e0a3d7f7bd4ecff420fa4f',1,'UriMapping']]],
['printlocaltime_6',['printLocalTime',['../class_c_l_app_conn.html#a9a4f24949950433f1672c3db6af49dde',1,'CLAppConn']]],
['processor_7',['processor',['../app__httpd_8cpp.html#a0c021f9721c3b479757f8e1b40624b6c',1,'processor(const String &amp;var):&#160;app_httpd.cpp'],['../app__httpd_8h.html#a0c021f9721c3b479757f8e1b40624b6c',1,'processor(const String &amp;var):&#160;app_httpd.cpp']]]
];

View File

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_d.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
createResults();
/* @license-end */
</script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
window.addEventListener("message", function(event) {
if (event.data == "take_focus") {
var elem = searchResults.NavNext(0);
if (elem) elem.focus();
}
});
/* @license-end */
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,9 @@
var searchData=
[
['readfiletostring_0',['readFileToString',['../class_c_l_storage.html#a837b93ce2190684b5f17cc5b9da6f6ba',1,'CLStorage']]],
['readjsonintval_1',['readJsonIntVal',['../class_c_l_app_component.html#aae2aee9e4a8001900d8b380adb66a8e3',1,'CLAppComponent']]],
['readme_2emd_2',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]],
['releasebuffer_3',['releaseBuffer',['../class_c_l_app_cam.html#aaf9c6d7306c5122eb6766011b8fc4c4c',1,'CLAppCam']]],
['remove_4',['remove',['../class_c_l_storage.html#afa5139f3590aba42b3de2c8e1786a43b',1,'CLStorage']]],
['removeprefs_5',['removePrefs',['../class_c_l_app_component.html#af763174f3eed76761a2eeab9aa845e6a',1,'CLAppComponent']]]
];

Some files were not shown because too many files have changed in this diff Show More