Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
01e1f04e3This file is pinned to the selected release. Download the original to open it in your design tool.
<!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" lang="en-US">
<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.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>tRacket Sensor: noisemeter-device/storage.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="projectalign">
<div id="projectname">tRacket Sensor<span id="projectnumber"> 0.2.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "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&dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_640a2e73a782d0e2711002117fcf2017.html">noisemeter-device</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">storage.h</div></div>
</div><!--header-->
<div class="contents">
<a href="storage_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> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">/* noisemeter-device - Firmware for CivicTechTO's Noisemeter Device</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * Copyright (C) 2024 Clyne Sullivan, Nick Barnard</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * This program is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * it under the terms of the GNU General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * This program is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * GNU General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</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"> 19</span><span class="preprocessor">#ifndef STORAGE_H</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#define STORAGE_H</span></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="preprocessor">#include "<a class="code" href="secret-store_8h.html">secret-store.h</a>"</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include <EEPROM.h></span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include <cstdint></span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="foldopen" id="foldopen00032" data-start="{" data-end="};">
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classStorage.html"> 32</a></span><span class="keyword">class </span><a class="code hl_class" href="classStorage.html">Storage</a> : <span class="keyword">protected</span> EEPROMClass</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492"> 35</a></span> <span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">StringSize</a> = 64;</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="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00039" data-start="{" data-end="};">
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5"> 39</a></span> <span class="keyword">enum class</span> <a class="code hl_enumeration" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5">Entry</a> : <span class="keywordtype">unsigned</span> {</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> Checksum = 0, </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a0d09d7b23e604623465e83b0dc113f4d">SSID</a> = Checksum + <span class="keyword">sizeof</span>(uint32_t), </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a816da2672a1205347a4ae8e9eb25f0bd">Passkey</a> = <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a0d09d7b23e604623465e83b0dc113f4d">SSID</a> + <a class="code hl_variable" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">StringSize</a>, </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a459a6f79ad9b13cbcb5f692d2cc7a94d">Token</a> = <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a816da2672a1205347a4ae8e9eb25f0bd">Passkey</a> + <a class="code hl_variable" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">StringSize</a>, </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a92e592d90b9548016776a6fb68dccded">Unused</a> = <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a459a6f79ad9b13cbcb5f692d2cc7a94d">Token</a> + <a class="code hl_variable" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">StringSize</a>, </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5af7ecf3708a4c33dfa5b3f7404ace4110">TotalSize</a> = <a class="code hl_enumvalue" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a92e592d90b9548016776a6fb68dccded">Unused</a> + <a class="code hl_variable" href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">StringSize</a> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> };</div>
</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="classStorage.html#a1613d528077e2fa1a0113a3783f4c2a4"> 52</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classStorage.html#a1613d528077e2fa1a0113a3783f4c2a4">begin</a>(<a class="code hl_class" href="classUUID.html">UUID</a> key);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classStorage.html#a23acb6693b153e7f0651bf6433027eea"> 58</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classStorage.html#a23acb6693b153e7f0651bf6433027eea">valid</a>() const noexcept;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classStorage.html#a92598fba0896671741dd2cfc84e0de9a"> 65</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classStorage.html#a92598fba0896671741dd2cfc84e0de9a">canStore</a>(String str) const noexcept;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classStorage.html#a2b42a101bad0d80e63041e9cef14afad"> 70</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classStorage.html#a2b42a101bad0d80e63041e9cef14afad">clear</a>() noexcept;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="classStorage.html#a35b9610f482751d825659d425d2b998d"> 77</a></span> String <a class="code hl_function" href="classStorage.html#a35b9610f482751d825659d425d2b998d">get</a>(<a class="code hl_enumeration" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5">Entry</a> entry) const noexcept;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="classStorage.html#a774cc4081547c3abdb3eb207b849eb9d"> 84</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classStorage.html#a774cc4081547c3abdb3eb207b849eb9d">set</a>(<a class="code hl_enumeration" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5">Entry</a> entry, String str) noexcept;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="classStorage.html#a5424cf1c5a001208f294f422b3acb1ef"> 89</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classStorage.html#a5424cf1c5a001208f294f422b3acb1ef">commit</a>() noexcept;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#ifdef STORAGE_SHOW_CREDENTIALS</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">operator</span> String() const noexcept;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#endif</span></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="keyword">private</span>:</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="classStorage.html#ae2e7ffce92412bfe84950e835cc5e9e3"> 100</a></span> <a class="code hl_struct" href="structSecretStore.html">SecretStore</a> <a class="code hl_variable" href="classStorage.html#ae2e7ffce92412bfe84950e835cc5e9e3">secret</a>;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="classStorage.html#a5a7c100ffe2d38f12f6698dfdc8a474c"> 106</a></span> uint32_t <a class="code hl_function" href="classStorage.html#a5a7c100ffe2d38f12f6698dfdc8a474c">calculateChecksum</a>() const noexcept;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="foldopen" id="foldopen00113" data-start="{" data-end="}">
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="classStorage.html#a81ece27227086e0a7b88ea1a27fceacd"> 113</a></span> constexpr <span class="keywordtype">unsigned</span> <a class="code hl_function" href="classStorage.html#a81ece27227086e0a7b88ea1a27fceacd">addrOf</a>(<a class="code hl_enumeration" href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5">Entry</a> entry) const noexcept {</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(entry);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> }</div>
</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span>};</div>
</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="preprocessor">#endif </span><span class="comment">// STORAGE_H</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="ttc" id="aclassStorage_html"><div class="ttname"><a href="classStorage.html">Storage</a></div><div class="ttdoc">Manages the storage of persistent settings.</div><div class="ttdef"><b>Definition</b> <a href="storage_8h_source.html#l00032">storage.h:33</a></div></div>
<div class="ttc" id="aclassStorage_html_a1613d528077e2fa1a0113a3783f4c2a4"><div class="ttname"><a href="classStorage.html#a1613d528077e2fa1a0113a3783f4c2a4">Storage::begin</a></div><div class="ttdeci">void begin(UUID key)</div><div class="ttdoc">Initializes the instance and prepares flash memory for access.</div></div>
<div class="ttc" id="aclassStorage_html_a23acb6693b153e7f0651bf6433027eea"><div class="ttname"><a href="classStorage.html#a23acb6693b153e7f0651bf6433027eea">Storage::valid</a></div><div class="ttdeci">bool valid() const noexcept</div><div class="ttdoc">Validates the stored settings against the stored checksum.</div></div>
<div class="ttc" id="aclassStorage_html_a2b42a101bad0d80e63041e9cef14afad"><div class="ttname"><a href="classStorage.html#a2b42a101bad0d80e63041e9cef14afad">Storage::clear</a></div><div class="ttdeci">void clear() noexcept</div><div class="ttdoc">Clears/wipes all stored settings.</div></div>
<div class="ttc" id="aclassStorage_html_a35b9610f482751d825659d425d2b998d"><div class="ttname"><a href="classStorage.html#a35b9610f482751d825659d425d2b998d">Storage::get</a></div><div class="ttdeci">String get(Entry entry) const noexcept</div><div class="ttdoc">Gets the string value of the stored entry.</div></div>
<div class="ttc" id="aclassStorage_html_a5424cf1c5a001208f294f422b3acb1ef"><div class="ttname"><a href="classStorage.html#a5424cf1c5a001208f294f422b3acb1ef">Storage::commit</a></div><div class="ttdeci">void commit() noexcept</div><div class="ttdoc">Commits all settings to flash and recalculates the checksum.</div></div>
<div class="ttc" id="aclassStorage_html_a5a7c100ffe2d38f12f6698dfdc8a474c"><div class="ttname"><a href="classStorage.html#a5a7c100ffe2d38f12f6698dfdc8a474c">Storage::calculateChecksum</a></div><div class="ttdeci">uint32_t calculateChecksum() const noexcept</div><div class="ttdoc">Calculates a CRC32 checksum of all stored settings.</div></div>
<div class="ttc" id="aclassStorage_html_a774cc4081547c3abdb3eb207b849eb9d"><div class="ttname"><a href="classStorage.html#a774cc4081547c3abdb3eb207b849eb9d">Storage::set</a></div><div class="ttdeci">void set(Entry entry, String str) noexcept</div><div class="ttdoc">Sets the value of the given entry.</div></div>
<div class="ttc" id="aclassStorage_html_a81ece27227086e0a7b88ea1a27fceacd"><div class="ttname"><a href="classStorage.html#a81ece27227086e0a7b88ea1a27fceacd">Storage::addrOf</a></div><div class="ttdeci">constexpr unsigned addrOf(Entry entry) const noexcept</div><div class="ttdoc">Gets the memory address/offset of the given entry.</div><div class="ttdef"><b>Definition</b> <a href="storage_8h_source.html#l00113">storage.h:113</a></div></div>
<div class="ttc" id="aclassStorage_html_a92598fba0896671741dd2cfc84e0de9a"><div class="ttname"><a href="classStorage.html#a92598fba0896671741dd2cfc84e0de9a">Storage::canStore</a></div><div class="ttdeci">bool canStore(String str) const noexcept</div><div class="ttdoc">Checks if the given string can be stored via Storage.</div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5">Storage::Entry</a></div><div class="ttdeci">Entry</div><div class="ttdoc">Tags to identify the stored settings.</div><div class="ttdef"><b>Definition</b> <a href="storage_8h_source.html#l00039">storage.h:39</a></div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5a0d09d7b23e604623465e83b0dc113f4d"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a0d09d7b23e604623465e83b0dc113f4d">Storage::Entry::SSID</a></div><div class="ttdeci">@ SSID</div><div class="ttdoc">Storage CRC32 Checksum.</div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5a459a6f79ad9b13cbcb5f692d2cc7a94d"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a459a6f79ad9b13cbcb5f692d2cc7a94d">Storage::Entry::Token</a></div><div class="ttdeci">@ Token</div><div class="ttdoc">User's WiFi passkey.</div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5a816da2672a1205347a4ae8e9eb25f0bd"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a816da2672a1205347a4ae8e9eb25f0bd">Storage::Entry::Passkey</a></div><div class="ttdeci">@ Passkey</div><div class="ttdoc">User's WiFi SSID.</div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5a92e592d90b9548016776a6fb68dccded"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5a92e592d90b9548016776a6fb68dccded">Storage::Entry::Unused</a></div><div class="ttdeci">@ Unused</div><div class="ttdoc">Device API token.</div></div>
<div class="ttc" id="aclassStorage_html_ab298f0c46e684cb9ef430e15de050cc5af7ecf3708a4c33dfa5b3f7404ace4110"><div class="ttname"><a href="classStorage.html#ab298f0c46e684cb9ef430e15de050cc5af7ecf3708a4c33dfa5b3f7404ace4110">Storage::Entry::TotalSize</a></div><div class="ttdeci">@ TotalSize</div><div class="ttdoc">Unused (used to be email)</div></div>
<div class="ttc" id="aclassStorage_html_ade49773964d9ae44f580bf39d1ba1492"><div class="ttname"><a href="classStorage.html#ade49773964d9ae44f580bf39d1ba1492">Storage::StringSize</a></div><div class="ttdeci">static constexpr unsigned StringSize</div><div class="ttdoc">Maximum length of a stored String.</div><div class="ttdef"><b>Definition</b> <a href="storage_8h_source.html#l00035">storage.h:35</a></div></div>
<div class="ttc" id="aclassStorage_html_ae2e7ffce92412bfe84950e835cc5e9e3"><div class="ttname"><a href="classStorage.html#ae2e7ffce92412bfe84950e835cc5e9e3">Storage::secret</a></div><div class="ttdeci">SecretStore secret</div><div class="ttdoc">Encryption instance.</div><div class="ttdef"><b>Definition</b> <a href="storage_8h_source.html#l00100">storage.h:100</a></div></div>
<div class="ttc" id="aclassUUID_html"><div class="ttname"><a href="classUUID.html">UUID</a></div><div class="ttdef"><b>Definition</b> <a href="UUID_8h_source.html#l00034">UUID.h:35</a></div></div>
<div class="ttc" id="asecret-store_8h_html"><div class="ttname"><a href="secret-store_8h.html">secret-store.h</a></div><div class="ttdoc">Facilities for encrypting sensitive stored data.</div></div>
<div class="ttc" id="astructSecretStore_html"><div class="ttname"><a href="structSecretStore.html">SecretStore</a></div><div class="ttdef"><b>Definition</b> <a href="secret-store_8h_source.html#l00024">secret-store.h:25</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>