summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoeycastillo <joeycastillo@users.noreply.github.com>2021-12-14 17:06:59 +0000
committerjoeycastillo <joeycastillo@users.noreply.github.com>2021-12-14 17:06:59 +0000
commit46c14a44e8e889bbdd317895492b70b179070441 (patch)
treeaa5b27da7d69f720f321f85ec974ef6c7474a41a
downloadSensor-Watch-46c14a44e8e889bbdd317895492b70b179070441.tar.gz
Sensor-Watch-46c14a44e8e889bbdd317895492b70b179070441.tar.bz2
Sensor-Watch-46c14a44e8e889bbdd317895492b70b179070441.zip
deploy: e8e9a0e2d86d37fa0354b3475c907eae1bf5a6dd
-rw-r--r--.nojekyll0
-rw-r--r--annotated.html81
-rw-r--r--bc_s.pngbin0 -> 676 bytes
-rw-r--r--bdwn.pngbin0 -> 147 bytes
-rw-r--r--classes.html82
-rw-r--r--closed.pngbin0 -> 132 bytes
-rw-r--r--dir_9dad893af07e666757bee97778571595.html86
-rw-r--r--dir_f1a087a6659d970f5756e21fc1ac4961.html84
-rw-r--r--doc.pngbin0 -> 746 bytes
-rw-r--r--doxygen.css1793
-rw-r--r--doxygen.svg26
-rw-r--r--dynsections.js121
-rw-r--r--files.html97
-rw-r--r--folderclosed.pngbin0 -> 616 bytes
-rw-r--r--folderopen.pngbin0 -> 597 bytes
-rw-r--r--globals.html77
-rw-r--r--globals_func.html77
-rw-r--r--group__adc.html354
-rw-r--r--group__app.html208
-rw-r--r--group__buttons.html178
-rw-r--r--group__buzzer.html559
-rw-r--r--group__debug.html122
-rw-r--r--group__deepsleep.html325
-rw-r--r--group__gpio.html332
-rw-r--r--group__i2c.html404
-rw-r--r--group__led.html260
-rw-r--r--group__rtc.html431
-rw-r--r--group__slcd.html541
-rw-r--r--group__utility.html347
-rw-r--r--index.html90
-rw-r--r--jquery.js35
-rw-r--r--menu.js51
-rw-r--r--menudata.js35
-rw-r--r--modules.html92
-rw-r--r--nav_f.pngbin0 -> 153 bytes
-rw-r--r--nav_g.pngbin0 -> 95 bytes
-rw-r--r--nav_h.pngbin0 -> 98 bytes
-rw-r--r--open.pngbin0 -> 123 bytes
-rw-r--r--search/all_0.html37
-rw-r--r--search/all_0.js5
-rw-r--r--search/all_1.html37
-rw-r--r--search/all_1.js11
-rw-r--r--search/all_2.html37
-rw-r--r--search/all_2.js94
-rw-r--r--search/all_3.html37
-rw-r--r--search/all_3.js5
-rw-r--r--search/all_4.html37
-rw-r--r--search/all_4.js4
-rw-r--r--search/all_5.html37
-rw-r--r--search/all_5.js4
-rw-r--r--search/all_6.html37
-rw-r--r--search/all_6.js4
-rw-r--r--search/all_7.html37
-rw-r--r--search/all_7.js4
-rw-r--r--search/all_8.html37
-rw-r--r--search/all_8.js6
-rw-r--r--search/all_9.html37
-rw-r--r--search/all_9.js4
-rw-r--r--search/all_a.html37
-rw-r--r--search/all_a.js91
-rw-r--r--search/classes_0.html37
-rw-r--r--search/classes_0.js4
-rw-r--r--search/close.svg31
-rw-r--r--search/enums_0.html37
-rw-r--r--search/enums_0.js4
-rw-r--r--search/enums_1.html37
-rw-r--r--search/enums_1.js5
-rw-r--r--search/enumvalues_0.html37
-rw-r--r--search/enumvalues_0.js91
-rw-r--r--search/enumvalues_1.html37
-rw-r--r--search/enumvalues_1.js8
-rw-r--r--search/files_0.html37
-rw-r--r--search/files_0.js4
-rw-r--r--search/functions_0.html37
-rw-r--r--search/functions_0.js5
-rw-r--r--search/functions_1.html37
-rw-r--r--search/functions_1.js9
-rw-r--r--search/functions_2.html37
-rw-r--r--search/functions_2.js82
-rw-r--r--search/groups_0.html37
-rw-r--r--search/groups_0.js5
-rw-r--r--search/groups_1.html37
-rw-r--r--search/groups_1.js5
-rw-r--r--search/groups_2.html37
-rw-r--r--search/groups_2.js5
-rw-r--r--search/groups_3.html37
-rw-r--r--search/groups_3.js4
-rw-r--r--search/groups_4.html37
-rw-r--r--search/groups_4.js4
-rw-r--r--search/groups_5.html37
-rw-r--r--search/groups_5.js4
-rw-r--r--search/groups_6.html37
-rw-r--r--search/groups_6.js5
-rw-r--r--search/groups_7.html37
-rw-r--r--search/groups_7.js4
-rw-r--r--search/mag_sel.svg74
-rw-r--r--search/nomatches.html13
-rw-r--r--search/pages_0.html37
-rw-r--r--search/pages_0.js4
-rw-r--r--search/search.css257
-rw-r--r--search/search.js816
-rw-r--r--search/search_l.pngbin0 -> 567 bytes
-rw-r--r--search/search_m.pngbin0 -> 158 bytes
-rw-r--r--search/search_r.pngbin0 -> 553 bytes
-rw-r--r--search/searchdata.js42
-rw-r--r--search/typedefs_0.html37
-rw-r--r--search/typedefs_0.js4
-rw-r--r--search/typedefs_1.html37
-rw-r--r--search/typedefs_1.js5
-rw-r--r--search/variables_0.html37
-rw-r--r--search/variables_0.js4
-rw-r--r--splitbar.pngbin0 -> 314 bytes
-rw-r--r--sync_off.pngbin0 -> 853 bytes
-rw-r--r--sync_on.pngbin0 -> 845 bytes
-rw-r--r--tab_a.pngbin0 -> 142 bytes
-rw-r--r--tab_b.pngbin0 -> 169 bytes
-rw-r--r--tab_h.pngbin0 -> 177 bytes
-rw-r--r--tab_s.pngbin0 -> 184 bytes
-rw-r--r--tabs.css1
-rw-r--r--tusb__config_8h_source.html171
-rw-r--r--unionwatch__date__time.html110
-rw-r--r--watch_8h.html128
-rw-r--r--watch_8h_source.html128
-rw-r--r--watch__adc_8h_source.html146
-rw-r--r--watch__app_8h_source.html126
-rw-r--r--watch__buzzer_8h_source.html312
-rw-r--r--watch__deepsleep_8h_source.html142
-rw-r--r--watch__extint_8h_source.html134
-rw-r--r--watch__gpio_8h_source.html134
-rw-r--r--watch__i2c_8h_source.html138
-rw-r--r--watch__led_8h_source.html137
-rw-r--r--watch__private_8h_source.html126
-rw-r--r--watch__rtc_8h_source.html174
-rw-r--r--watch__slcd_8h_source.html169
-rw-r--r--watch__uart_8h_source.html120
-rw-r--r--watch__utility_8h_source.html128
136 files changed, 12326 insertions, 0 deletions
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.nojekyll
diff --git a/annotated.html b/annotated.html
new file mode 100644
index 00000000..db844a91
--- /dev/null
+++ b/annotated.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="unionwatch__date__time.html" target="_self">watch_date_time</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.1
+</small></address>
+</body>
+</html>
diff --git a/bc_s.png b/bc_s.png
new file mode 100644
index 00000000..224b29aa
--- /dev/null
+++ b/bc_s.png
Binary files differ
diff --git a/bdwn.png b/bdwn.png
new file mode 100644
index 00000000..940a0b95
--- /dev/null
+++ b/bdwn.png
Binary files differ
diff --git a/classes.html b/classes.html
new file mode 100644
index 00000000..211762b3
--- /dev/null
+++ b/classes.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_W">W</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a name="letter_W">W</a></dt>
+<dd><a class="el" href="unionwatch__date__time.html">watch_date_time</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.1
+</small></address>
+</body>
+</html>
diff --git a/closed.png b/closed.png
new file mode 100644
index 00000000..98cc2c90
--- /dev/null
+++ b/closed.png
Binary files differ
diff --git a/dir_9dad893af07e666757bee97778571595.html b/dir_9dad893af07e666757bee97778571595.html
new file mode 100644
index 00000000..b4576c7a
--- /dev/null
+++ b/dir_9dad893af07e666757bee97778571595.html
@@ -0,0 +1,86 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:watch_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="watch_8h.html">watch.h</a> <a href="watch_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.1
+</small></address>
+</body>
+</html>
diff --git a/dir_f1a087a6659d970f5756e21fc1ac4961.html b/dir_f1a087a6659d970f5756e21fc1ac4961.html
new file mode 100644
index 00000000..e68ac90c
--- /dev/null
+++ b/dir_f1a087a6659d970f5756e21fc1ac4961.html
@@ -0,0 +1,84 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch-library Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></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.1
+</small></address>
+</body>
+</html>
diff --git a/doc.png b/doc.png
new file mode 100644
index 00000000..17edabff
--- /dev/null
+++ b/doc.png
Binary files differ
diff --git a/doxygen.css b/doxygen.css
new file mode 100644
index 00000000..ffbff022
--- /dev/null
+++ b/doxygen.css
@@ -0,0 +1,1793 @@
+/* The standard CSS for doxygen 1.9.1 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+ column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+th p.starttd, th p.intertd, th p.endtd {
+ font-size: 100%;
+ font-weight: 700;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.navtab {
+ border-right: 1px solid #A3B4D7;
+ padding-right: 15px;
+ text-align: right;
+ line-height: 110%;
+}
+
+div.navtab table {
+ border-spacing: 0;
+}
+
+td.navtab {
+ padding-right: 6px;
+ padding-left: 6px;
+}
+td.navtabHL {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ padding-right: 6px;
+ padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+a.navtab {
+ font-weight: bold;
+}
+
+div.qindex{
+ text-align: center;
+ width: 100%;
+ line-height: 140%;
+ font-size: 130%;
+ color: #A0A0A0;
+}
+
+dt.alphachar{
+ font-size: 180%;
+ font-weight: bold;
+}
+
+.alphachar a{
+ color: black;
+}
+
+.alphachar a:hover, .alphachar a:visited{
+ text-decoration: none;
+}
+
+.classindex dl {
+ padding: 25px;
+ column-count:1
+}
+
+.classindex dd {
+ display:inline-block;
+ margin-left: 50px;
+ width: 90%;
+ line-height: 1.15em;
+}
+
+.classindex dl.odd {
+ background-color: #F8F9FC;
+}
+
+@media(min-width: 1120px) {
+ .classindex dl {
+ column-count:2
+ }
+}
+
+@media(min-width: 1320px) {
+ .classindex dl {
+ column-count:3
+ }
+}
+
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.contents a.qindexHL:visited {
+ color: #FFFFFF;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+ul {
+ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+ text-align: left;
+ direction: ltr;
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+ overflow-y: hidden;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #FFFFFF;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl, img.inline {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+ border-left: 0;
+ border-right: 2px solid #9CAFD4;
+ margin: 0 4px 0 24px;
+ padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+ text-align: right;
+ direction: rtl;
+}
+
+dl {
+ padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+ margin-right: 0px;
+ padding-right: 0px;
+}
+
+dl.note {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #505050;
+}
+
+dl.todo {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+ text-align:right;
+ width:52px;
+}
+
+dl.citelist dd {
+ margin:2px 0 2px 72px;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+ float: left !important;
+ text-align: right;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+ background-position-x: right !important;
+ padding-left: 0 !important;
+ padding-right: 10px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+span.emoji {
+ /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
+ * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
+ */
+}
+
+.PageDocRTL-title div.toc li.level1 {
+ margin-left: 0 !important;
+ margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+ margin-left: 0 !important;
+ margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+ margin-left: 0 !important;
+ margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+ margin-left: 0 !important;
+ margin-right: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+.DocNodeRTL {
+ text-align: right;
+ direction: rtl;
+}
+
+.DocNodeLTR {
+ text-align: left;
+ direction: ltr;
+}
+
+table.DocNodeRTL {
+ width: auto;
+ margin-right: 0;
+ margin-left: auto;
+}
+
+table.DocNodeLTR {
+ width: auto;
+ margin-right: auto;
+ margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+ display: inline-block;
+ direction:ltr;
+}
+/* @end */
+
+u {
+ text-decoration: underline;
+}
+
diff --git a/doxygen.svg b/doxygen.svg
new file mode 100644
index 00000000..d42dad52
--- /dev/null
+++ b/doxygen.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="a">
+ <stop stop-color="#5373B4" offset="0"/>
+ <stop stop-color="#7C95C6" offset="1"/>
+ </linearGradient>
+ <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#C0CCE3" offset="0"/>
+ <stop stop-color="#EEF1F7" offset="1"/>
+ </linearGradient>
+ <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+ <feGaussianBlur stdDeviation="0.45293203"/>
+ </filter>
+ </defs>
+ <g>
+ <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
+ <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+ <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+ <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+ <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/dynsections.js b/dynsections.js
new file mode 100644
index 00000000..3174bd7b
--- /dev/null
+++ b/dynsections.js
@@ -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 */
diff --git a/files.html b/files.html
new file mode 100644
index 00000000..d3f4bc91
--- /dev/null
+++ b/files.html
@@ -0,0 +1,97 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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 documented 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><span onclick="javascript:toggleLevel(3);">3</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_f1a087a6659d970f5756e21fc1ac4961.html" target="_self">watch-library</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_9dad893af07e666757bee97778571595.html" target="_self">watch</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="tusb__config_8h_source.html"><span class="icondoc"></span></a><b>tusb_config.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch_8h_source.html"><span class="icondoc"></span></a><a class="el" href="watch_8h.html" target="_self">watch.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__adc_8h_source.html"><span class="icondoc"></span></a><b>watch_adc.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__app_8h_source.html"><span class="icondoc"></span></a><b>watch_app.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__buzzer_8h_source.html"><span class="icondoc"></span></a><b>watch_buzzer.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__deepsleep_8h_source.html"><span class="icondoc"></span></a><b>watch_deepsleep.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__extint_8h_source.html"><span class="icondoc"></span></a><b>watch_extint.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__gpio_8h_source.html"><span class="icondoc"></span></a><b>watch_gpio.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__i2c_8h_source.html"><span class="icondoc"></span></a><b>watch_i2c.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__led_8h_source.html"><span class="icondoc"></span></a><b>watch_led.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__private_8h_source.html"><span class="icondoc"></span></a><b>watch_private.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_11_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__rtc_8h_source.html"><span class="icondoc"></span></a><b>watch_rtc.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__slcd_8h_source.html"><span class="icondoc"></span></a><b>watch_slcd.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_13_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__uart_8h_source.html"><span class="icondoc"></span></a><b>watch_uart.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_14_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="watch__utility_8h_source.html"><span class="icondoc"></span></a><b>watch_utility.h</b></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.1
+</small></address>
+</body>
+</html>
diff --git a/folderclosed.png b/folderclosed.png
new file mode 100644
index 00000000..bb8ab35e
--- /dev/null
+++ b/folderclosed.png
Binary files differ
diff --git a/folderopen.png b/folderopen.png
new file mode 100644
index 00000000..d6c7f676
--- /dev/null
+++ b/folderopen.png
Binary files differ
diff --git a/globals.html b/globals.html
new file mode 100644
index 00000000..002a1311
--- /dev/null
+++ b/globals.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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 documented functions, variables, defines, enums, and typedefs with links to the documentation:</div><ul>
+<li>watch_is_battery_low()
+: <a class="el" href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/globals_func.html b/globals_func.html
new file mode 100644
index 00000000..ef231ff3
--- /dev/null
+++ b/globals_func.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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>watch_is_battery_low()
+: <a class="el" href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/group__adc.html b/group__adc.html
new file mode 100644
index 00000000..4718ef4a
--- /dev/null
+++ b/group__adc.html
@@ -0,0 +1,354 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Analog Input</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Analog Input</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the SAM L22's analog-to-digital converter, as well as configuring and reading values from the five analog-capable pins on the 9-pin connector.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga844283c184c3510635199e50c64304c8"><td class="memItemLeft" align="right" valign="top"><a id="ga844283c184c3510635199e50c64304c8"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>watch_adc_reference_voltage</b> { <b>ADC_REFERENCE_INTREF</b> = ADC_REFCTRL_REFSEL_INTREF_Val
+, <b>ADC_REFERENCE_VCC_DIV1POINT6</b> = ADC_REFCTRL_REFSEL_INTVCC0_Val
+, <b>ADC_REFERENCE_VCC_DIV2</b> = ADC_REFCTRL_REFSEL_INTVCC1_Val
+, <b>ADC_REFERENCE_VCC</b> = ADC_REFCTRL_REFSEL_INTVCC2_Val
+ }</td></tr>
+<tr class="separator:ga844283c184c3510635199e50c64304c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga908b5334af677309b03d7679d77aaa02"><td class="memItemLeft" align="right" valign="top"><a id="ga908b5334af677309b03d7679d77aaa02"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga908b5334af677309b03d7679d77aaa02">watch_enable_adc</a> (void)</td></tr>
+<tr class="memdesc:ga908b5334af677309b03d7679d77aaa02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the ADC peripheral. You must call this before attempting to read a value from an analog pin. <br /></td></tr>
+<tr class="separator:ga908b5334af677309b03d7679d77aaa02"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga30a491e9cab049a2812f75862a613aa8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga30a491e9cab049a2812f75862a613aa8">watch_enable_analog_input</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:ga30a491e9cab049a2812f75862a613aa8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the selected pin for analog input. <a href="group__adc.html#ga30a491e9cab049a2812f75862a613aa8">More...</a><br /></td></tr>
+<tr class="separator:ga30a491e9cab049a2812f75862a613aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2064244f68cff87a1df08f6b07183069"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga2064244f68cff87a1df08f6b07183069">watch_get_analog_pin_level</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:ga2064244f68cff87a1df08f6b07183069"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads an analog value from one of the pins. <a href="group__adc.html#ga2064244f68cff87a1df08f6b07183069">More...</a><br /></td></tr>
+<tr class="separator:ga2064244f68cff87a1df08f6b07183069"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90bac58a3fa935d8fd640f4b58c8037d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d">watch_set_analog_num_samples</a> (uint16_t samples)</td></tr>
+<tr class="memdesc:ga90bac58a3fa935d8fd640f4b58c8037d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of samples to accumulate when measuring a pin level. Default is 16. <a href="group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d">More...</a><br /></td></tr>
+<tr class="separator:ga90bac58a3fa935d8fd640f4b58c8037d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae9f9ed34e8752e211c1692af473a88dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#gae9f9ed34e8752e211c1692af473a88dc">watch_set_analog_sampling_length</a> (uint8_t cycles)</td></tr>
+<tr class="memdesc:gae9f9ed34e8752e211c1692af473a88dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the length of time spent sampling, which allows measurement of higher impedance inputs. Default is 1. <a href="group__adc.html#gae9f9ed34e8752e211c1692af473a88dc">More...</a><br /></td></tr>
+<tr class="separator:gae9f9ed34e8752e211c1692af473a88dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ea7b8aef4573f02ff3adafcf891cd93"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93">watch_set_analog_reference_voltage</a> (watch_adc_reference_voltage reference)</td></tr>
+<tr class="memdesc:ga9ea7b8aef4573f02ff3adafcf891cd93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the reference voltage to use for analog readings. Default is ADC_REFERENCE_VCC. <a href="group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93">More...</a><br /></td></tr>
+<tr class="separator:ga9ea7b8aef4573f02ff3adafcf891cd93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga465fcb058492d350d29fe4403df85b14"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#ga465fcb058492d350d29fe4403df85b14">watch_get_vcc_voltage</a> (void)</td></tr>
+<tr class="memdesc:ga465fcb058492d350d29fe4403df85b14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the voltage of the VCC supply in millivolts (i.e. 3000 mV == 3.0 V). If running on a coin cell, this will be the battery voltage. <a href="group__adc.html#ga465fcb058492d350d29fe4403df85b14">More...</a><br /></td></tr>
+<tr class="separator:ga465fcb058492d350d29fe4403df85b14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae38e15840bc5f3eca16ccb782dbb1c31"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31">watch_disable_analog_input</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:gae38e15840bc5f3eca16ccb782dbb1c31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the analog circuitry on the selected pin. <a href="group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31">More...</a><br /></td></tr>
+<tr class="separator:gae38e15840bc5f3eca16ccb782dbb1c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf443c79008bec5ceecbd21ad401d52cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb">watch_disable_adc</a> (void)</td></tr>
+<tr class="memdesc:gaf443c79008bec5ceecbd21ad401d52cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the ADC peripheral. <a href="group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb">More...</a><br /></td></tr>
+<tr class="separator:gaf443c79008bec5ceecbd21ad401d52cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the SAM L22's analog-to-digital converter, as well as configuring and reading values from the five analog-capable pins on the 9-pin connector. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaf443c79008bec5ceecbd21ad401d52cb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf443c79008bec5ceecbd21ad401d52cb">&#9670;&nbsp;</a></span>watch_disable_adc()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_adc </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</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">
+
+<p>Disables the ADC peripheral. </p>
+<dl class="section note"><dt>Note</dt><dd>You will need to call watch_enable_adc to re-enable the ADC peripheral. When you do, it will have the default settings of 16 samples and 1 measurement cycle; if you customized these parameters, you will need to set them up again. </dd></dl>
+
+</div>
+</div>
+<a id="gae38e15840bc5f3eca16ccb782dbb1c31"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae38e15840bc5f3eca16ccb782dbb1c31">&#9670;&nbsp;</a></span>watch_disable_analog_input()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_analog_input </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</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">
+
+<p>Disables the analog circuitry on the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>One of pins A0-A4. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga30a491e9cab049a2812f75862a613aa8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga30a491e9cab049a2812f75862a613aa8">&#9670;&nbsp;</a></span>watch_enable_analog_input()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_analog_input </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Configures the selected pin for analog input. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>One of pins A0-A4. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga2064244f68cff87a1df08f6b07183069"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2064244f68cff87a1df08f6b07183069">&#9670;&nbsp;</a></span>watch_get_analog_pin_level()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint16_t watch_get_analog_pin_level </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Reads an analog value from one of the pins. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>One of pins A0-A4. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>a 16-bit unsigned integer from 0-65535 representing the sampled value, unless you have changed the number of samples. </dd></dl>
+<dl class="section see"><dt>See also</dt><dd>watch_set_num_analog_samples for details on how that function changes the values returned from this one. </dd></dl>
+
+</div>
+</div>
+<a id="ga465fcb058492d350d29fe4403df85b14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga465fcb058492d350d29fe4403df85b14">&#9670;&nbsp;</a></span>watch_get_vcc_voltage()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint16_t watch_get_vcc_voltage </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the voltage of the VCC supply in millivolts (i.e. 3000 mV == 3.0 V). If running on a coin cell, this will be the battery voltage. </p>
+<p>Unlike other ADC functions, this function does not return a raw value from the ADC, but rather scales it to an actual number of millivolts. This is because the ADC doesn't let us measure VCC per se; it instead lets us measure VCC / 4, and we choose to measure it against the internal reference voltage of 1.024 V. In short, the ADC gives us a number that's complicated to deal with, so we just turn it into a useful number for you :) </p><dl class="section note"><dt>Note</dt><dd>This function depends on INTREF being 1.024V. If you have changed it by poking at the supply controller's VREF.SEL bits, this function will return inaccurate values. </dd></dl>
+
+</div>
+</div>
+<a id="ga90bac58a3fa935d8fd640f4b58c8037d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga90bac58a3fa935d8fd640f4b58c8037d">&#9670;&nbsp;</a></span>watch_set_analog_num_samples()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_analog_num_samples </td>
+ <td>(</td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>samples</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the number of samples to accumulate when measuring a pin level. Default is 16. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">samples</td><td>A power of 2 &lt;= 1024. Specifically: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 or 1024. Any other value will be ignored.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>The SAM L22's ADC has a resolution of 12 bits. By default, the watch configures the ADC to take 16 samples of the analog input and accumulate them in the result register; this effectively gives us a 16-bit resolution, at the cost of taking 16 ADC cycles to complete a measurement. If you are measuring a slowly changing signal like a thermistor output or an ambient light sensor this is probably fine, even desirable. If you are measuring something a bit more fast-paced, like an analog accelerometer, you may wish to exchange precision for speed. In this case you may call this function to configure the ADC to accumulate fewer samples. HOWEVER! Note that this may change the range of values returned from watch_get_analog_pin_level:</p><ul>
+<li>For watch_set_num_analog_samples(1), the returned value will be 12 bits (0-4095).</li>
+<li>For watch_set_num_analog_samples(2), the returned value will be 13 bits (0-8191).</li>
+<li>For watch_set_num_analog_samples(4), the returned value will be 14 bits (0-16383).</li>
+<li>For watch_set_num_analog_samples(8), the returned value will be 15 bits (0-32767). For sampling values over 16, the returned value will still be 16 bits (0-65535); the ADC will automatically divide the measured value by whatever factor is necessary to fit the result in 16 bits. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__adc.html#ga2064244f68cff87a1df08f6b07183069" title="Reads an analog value from one of the pins.">watch_get_analog_pin_level</a> </dd></dl>
+</li>
+</ul>
+
+</div>
+</div>
+<a id="ga9ea7b8aef4573f02ff3adafcf891cd93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9ea7b8aef4573f02ff3adafcf891cd93">&#9670;&nbsp;</a></span>watch_set_analog_reference_voltage()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_analog_reference_voltage </td>
+ <td>(</td>
+ <td class="paramtype">watch_adc_reference_voltage&#160;</td>
+ <td class="paramname"><em>reference</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Selects the reference voltage to use for analog readings. Default is ADC_REFERENCE_VCC. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">reference</td><td>One of ADC_REFERENCE_VCC, ADC_REFERENCE_VCC_DIV1POINT6, ADC_REFERENCE_VCC_DIV2 or ADC_REFERENCE_INTREF.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>In order to turn an analog voltage into a 16-bit integer, the ADC needs to compare the measured voltage to a reference point. For example, if you were powering the watch with VCC == 3.0V and you had two 10K resistors connected in series from 3V to GND, you could expect to get 3 volts when you measure the top of the voltage divider, 0 volts at the bottom, and 1.5 volts in the middle. If you read these values uising a reference voltage of ADC_REFERENCE_VCC, the top value would be about 65535, the bottom about 0, and the middle about 32768. However! If we used ADC_REFERENCE_VCC_DIV2 as our reference, we would expect to get 65535 both at the top and the middle, because the largest value the ADC can measure in this configutation is 1.5V (VCC / 2).</p>
+<p>By changing the reference voltage from ADC_REFERENCE_VCC to ADC_REFERENCE_VCC_DIV1POINT6 or ADC_REFERENCE_VCC_DIV2, you can get more resolution when measuring small voltages (i.e. a phototransistor circuit in low light).</p>
+<p>There is also a special reference voltage called ADC_REFERENCE_INTREF. The SAM L22's Supply Controller provides a selectable voltage reference (by default, 1.024 V) that you can select as a reference voltage for ADC conversions. Unlike the three references we talked about in the last paragraph, this reference voltage does not depend on VCC, which makes it very useful for measuring the battery voltage (since you can't really compare VCC to itself). You can change the INTREF voltage to 2.048 or 4.096 V by poking at the supply controller's VREF register, but the watch library does not support this use case. </p>
+
+</div>
+</div>
+<a id="gae9f9ed34e8752e211c1692af473a88dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae9f9ed34e8752e211c1692af473a88dc">&#9670;&nbsp;</a></span>watch_set_analog_sampling_length()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_analog_sampling_length </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>cycles</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the length of time spent sampling, which allows measurement of higher impedance inputs. Default is 1. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">cycles</td><td>The number of ADC cycles to sample, between 1 and 64. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd>this article by Thea Flowers: <a href="https://blog.thea.codes/getting-the-most-out-of-the-samd21-adc/">https://blog.thea.codes/getting-the-most-out-of-the-samd21-adc/</a> which is where I learned all of this.</dd></dl>
+<p>To measure an analog value, the SAM L22 must charge a capacitor to the analog voltage presented at the input. This takes time. Importantly, the higher the input impedance, the more time this takes. As a basic example: if you are using a thermistor tied to VCC to measure temperature, the capacitor has to charge through the thermistor. The higher the resistor value, the higher the input impedance, and the more time we need to allow for the measurement. By default, the ADC is configured to run on a 500 kHz clock with a sample time of one cycle. This is appropriate for an input impedance up to about 28kΩ. Setting the sampling time to 4 cycles allows for an input impedance up to 123kΩ. Setting the sampling time to the maximum of 64 cycles theoretically allows for input impedance up to 2 MΩ. (I based these numbers on the calculator in the linked blog post; it also has a ton of great info on the SAM D21 ADC, which is similar to the SAM L22's). </p>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__app.html b/group__app.html
new file mode 100644
index 00000000..a2cea10c
--- /dev/null
+++ b/group__app.html
@@ -0,0 +1,208 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Application Framework</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Application Framework</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers the functions that you will implement in your app.c file when designing a Sensor Watch app.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gadd3190cf715f513666f4be42874d91e2"><td class="memItemLeft" align="right" valign="top"><a id="gadd3190cf715f513666f4be42874d91e2"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gadd3190cf715f513666f4be42874d91e2">app_init</a> (void)</td></tr>
+<tr class="memdesc:gadd3190cf715f513666f4be42874d91e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function you will implement to initialize your application state. The app_init function is called before anything else. Use it to set up any internal data structures or application state required by your app, but don't configure any peripherals just yet. <br /></td></tr>
+<tr class="separator:gadd3190cf715f513666f4be42874d91e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab6a9f08ba879ce8d28fb19ca2882890a"><td class="memItemLeft" align="right" valign="top"><a id="gab6a9f08ba879ce8d28fb19ca2882890a"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a">app_wake_from_backup</a> (void)</td></tr>
+<tr class="memdesc:gab6a9f08ba879ce8d28fb19ca2882890a"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function you will implement to wake from BACKUP mode, which wipes the system's RAM, and with it, your application's state. You may have chosen to store some important application state in the RTC's backup registers prior to entering this mode. You may restore that state here. <br /></td></tr>
+<tr class="separator:gab6a9f08ba879ce8d28fb19ca2882890a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacce192accedbd296eb8d2182f8101f16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gacce192accedbd296eb8d2182f8101f16">app_setup</a> (void)</td></tr>
+<tr class="memdesc:gacce192accedbd296eb8d2182f8101f16"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function you will implement to set up your application. The app_setup function is like setup() in Arduino. It is called once when the program begins. You should set pin modes and enable any peripherals you want to set up (real-time clock, I2C, etc.) Depending on your application, you may or may not want to configure sensors on your sensor board here. For example, a low-power accelerometer that will run at all times should be configured here, whereas you may want to enable a more power-hungry sensor only when you need it. <a href="group__app.html#gacce192accedbd296eb8d2182f8101f16">More...</a><br /></td></tr>
+<tr class="separator:gacce192accedbd296eb8d2182f8101f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1cfce0ef962cd2afe2d8b2d2d13482a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a">app_loop</a> (void)</td></tr>
+<tr class="memdesc:gad1cfce0ef962cd2afe2d8b2d2d13482a"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from sleep. <a href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a">More...</a><br /></td></tr>
+<tr class="separator:gad1cfce0ef962cd2afe2d8b2d2d13482a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaee30a1614f76afc41117f7176fb30165"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gaee30a1614f76afc41117f7176fb30165">app_prepare_for_standby</a> (void)</td></tr>
+<tr class="memdesc:gaee30a1614f76afc41117f7176fb30165"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function you will implement to prepare to enter STANDBY mode. The app_prepare_for_standby function is called after your app_loop function returns true, and just before the watch enters STANDBY mode. In this mode most peripherals are shut down, and no code will run until the watch receives an interrupt (generally either the 1Hz tick or a press on one of the buttons). <a href="group__app.html#gaee30a1614f76afc41117f7176fb30165">More...</a><br /></td></tr>
+<tr class="separator:gaee30a1614f76afc41117f7176fb30165"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacc7e7ff6108524545ab4183110811874"><td class="memItemLeft" align="right" valign="top"><a id="gacc7e7ff6108524545ab4183110811874"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app.html#gacc7e7ff6108524545ab4183110811874">app_wake_from_standby</a> (void)</td></tr>
+<tr class="memdesc:gacc7e7ff6108524545ab4183110811874"><td class="mdescLeft">&#160;</td><td class="mdescRight">A method you will implement to configure the app after waking from STANDBY mode. <br /></td></tr>
+<tr class="separator:gacc7e7ff6108524545ab4183110811874"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers the functions that you will implement in your app.c file when designing a Sensor Watch app. </p>
+<p>You should be able to write a watch app by simply implementing these functions and declaring callbacks for various GPIO and peripheral interrupts. The main.c file takes care of calling these functions for you. The general flow:</p>
+<ol type="1">
+<li>Your <a class="el" href="group__app.html#gadd3190cf715f513666f4be42874d91e2" title="A function you will implement to initialize your application state. The app_init function is called b...">app_init()</a> function is called.<ul>
+<li>This method should only be used to set your initial application state.</li>
+</ul>
+</li>
+<li>If your app is waking from BACKUP, <a class="el" href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a" title="A function you will implement to wake from BACKUP mode, which wipes the system&#39;s RAM,...">app_wake_from_backup()</a> is called.<ul>
+<li>If you saved state in the RTC's backup registers, you can restore it here.</li>
+</ul>
+</li>
+<li>Your <a class="el" href="group__app.html#gacce192accedbd296eb8d2182f8101f16" title="A function you will implement to set up your application. The app_setup function is like setup() in A...">app_setup()</a> method is called.<ul>
+<li>You may wish to enable some functionality and peripherals here.</li>
+<li>You should definitely set up some interrupts here.</li>
+</ul>
+</li>
+<li>The main run loop begins: your <a class="el" href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a" title="A function you will implement to serve as the app&#39;s main run loop. This method will be called repeate...">app_loop()</a> function is called.<ul>
+<li>Run code and update your UI here.</li>
+<li>Return true if your app is prepared to enter STANDBY mode.</li>
+</ul>
+</li>
+<li>This step differs depending on the value returned by app_loop:<ul>
+<li>If you returned false, execution resumes at (4).</li>
+<li>If you returned true, <a class="el" href="group__app.html#gaee30a1614f76afc41117f7176fb30165" title="A function you will implement to prepare to enter STANDBY mode. The app_prepare_for_standby function ...">app_prepare_for_standby()</a> is called; execution moves on to (6).</li>
+</ul>
+</li>
+<li>The microcontroller enters STANDBY mode.<ul>
+<li>No user code will run, and the watch will enter a low power mode.</li>
+<li>The watch will remain in this state until an interrupt wakes it.</li>
+</ul>
+</li>
+<li>Once woken from STANDBY, your <a class="el" href="group__app.html#gacc7e7ff6108524545ab4183110811874" title="A method you will implement to configure the app after waking from STANDBY mode.">app_wake_from_standby()</a> function is called.<ul>
+<li>After this, execution resumes at (4). </li>
+</ul>
+</li>
+</ol>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gad1cfce0ef962cd2afe2d8b2d2d13482a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad1cfce0ef962cd2afe2d8b2d2d13482a">&#9670;&nbsp;</a></span>app_loop()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool app_loop </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from sleep. </p>
+<dl class="section return"><dt>Returns</dt><dd>You should return true if your app is prepared to enter STANDBY mode. If you return false, your app's app_loop method will be called again immediately. Note that in STANDBY mode, the watch will consume only about 95 microamperes of power, whereas if you return false and keep the app awake, it will consume about 355 microamperes. This is the difference between months of battery life and days. As much as possible, you should limit the amount of time your app spends awake. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>Only the RTC, the segment LCD controller and the external interrupt controller run in STANDBY mode. If you are using, e.g. the PWM function to set a custom LED color, you should return false here until you are finished with that operation. Note however that the peripherals will continue running after waking up, so e.g. the I2C controller, if configured, will sleep in STANDBY. But you can use it again as soon as your app wakes up. </dd></dl>
+
+</div>
+</div>
+<a id="gaee30a1614f76afc41117f7176fb30165"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaee30a1614f76afc41117f7176fb30165">&#9670;&nbsp;</a></span>app_prepare_for_standby()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void app_prepare_for_standby </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>A function you will implement to prepare to enter STANDBY mode. The app_prepare_for_standby function is called after your app_loop function returns true, and just before the watch enters STANDBY mode. In this mode most peripherals are shut down, and no code will run until the watch receives an interrupt (generally either the 1Hz tick or a press on one of the buttons). </p>
+<dl class="section note"><dt>Note</dt><dd>If you are PWM'ing the LED or playing a sound on the buzzer, the TC/TCC peripherals that drive those operations will not run in STANDBY. BUT! the output pins will retain the state they had when entering standby. This means you could end up entering standby with an LED on and draining power, or with a DC potential across the piezo buzzer that could damage it if left in this state. If your app_loop does not prevent sleep during these activities, you should make sure to disable these outputs in app_prepare_for_standby. </dd></dl>
+
+</div>
+</div>
+<a id="gacce192accedbd296eb8d2182f8101f16"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacce192accedbd296eb8d2182f8101f16">&#9670;&nbsp;</a></span>app_setup()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void app_setup </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>A function you will implement to set up your application. The app_setup function is like setup() in Arduino. It is called once when the program begins. You should set pin modes and enable any peripherals you want to set up (real-time clock, I2C, etc.) Depending on your application, you may or may not want to configure sensors on your sensor board here. For example, a low-power accelerometer that will run at all times should be configured here, whereas you may want to enable a more power-hungry sensor only when you need it. </p>
+<dl class="section note"><dt>Note</dt><dd>If your app enters the ultra-low power BACKUP sleep mode, this function will be called again when it wakes from that deep sleep state. In this state, the RTC will still be configured with the correct date and time. </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__buttons.html b/group__buttons.html
new file mode 100644
index 00000000..0a9633fb
--- /dev/null
+++ b/group__buttons.html
@@ -0,0 +1,178 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Buttons &amp; External Interrupts</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#typedef-members">Typedefs</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">Buttons &amp; External Interrupts</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the three buttons: Light, Mode and Alarm, as well as external interrupts from devices on the nine-pin connector.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:gadee2b304ce34a8aec5aedabd75934c1b"><td class="memItemLeft" align="right" valign="top"><a id="gadee2b304ce34a8aec5aedabd75934c1b"></a>
+typedef enum <a class="el" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gadee2b304ce34a8aec5aedabd75934c1b">watch_interrupt_trigger</a></td></tr>
+<tr class="memdesc:gadee2b304ce34a8aec5aedabd75934c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">An enum defining the types of interrupt trigger you wish to scan for. <br /></td></tr>
+<tr class="separator:gadee2b304ce34a8aec5aedabd75934c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga0454ca577b6fcc7a7cb03039cb5150d8"><td class="memItemLeft" align="right" valign="top"><a id="ga0454ca577b6fcc7a7cb03039cb5150d8"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a> { <b>INTERRUPT_TRIGGER_NONE</b> = 0
+, <b>INTERRUPT_TRIGGER_RISING</b>
+, <b>INTERRUPT_TRIGGER_FALLING</b>
+, <b>INTERRUPT_TRIGGER_BOTH</b>
+ }</td></tr>
+<tr class="memdesc:ga0454ca577b6fcc7a7cb03039cb5150d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">An enum defining the types of interrupt trigger you wish to scan for. <br /></td></tr>
+<tr class="separator:ga0454ca577b6fcc7a7cb03039cb5150d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga9bcddd56ef2065183697b471a5fff6d2"><td class="memItemLeft" align="right" valign="top"><a id="ga9bcddd56ef2065183697b471a5fff6d2"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2">watch_enable_external_interrupts</a> (void)</td></tr>
+<tr class="memdesc:ga9bcddd56ef2065183697b471a5fff6d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the external interrupt controller. <br /></td></tr>
+<tr class="separator:ga9bcddd56ef2065183697b471a5fff6d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga14c8fd8d92e4535012fb939ca8f12084"><td class="memItemLeft" align="right" valign="top"><a id="ga14c8fd8d92e4535012fb939ca8f12084"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084">watch_disable_external_interrupts</a> (void)</td></tr>
+<tr class="memdesc:ga14c8fd8d92e4535012fb939ca8f12084"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the external interrupt controller. <br /></td></tr>
+<tr class="separator:ga14c8fd8d92e4535012fb939ca8f12084"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae40d2f73d0412680d83c26b8a0e1d31c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c">watch_register_interrupt_callback</a> (const uint8_t pin, ext_irq_cb_t callback, <a class="el" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a> trigger)</td></tr>
+<tr class="memdesc:gae40d2f73d0412680d83c26b8a0e1d31c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures an external interrupt callback on one of the external interrupt pins. <a href="group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c">More...</a><br /></td></tr>
+<tr class="separator:gae40d2f73d0412680d83c26b8a0e1d31c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabb98ef2a5bedc045ad2151302719bfea"><td class="memItemLeft" align="right" valign="top"><a id="gabb98ef2a5bedc045ad2151302719bfea"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c">watch_register_interrupt_callback</a> or <a class="el" href="group__deepsleep.html#gacad726423f5f38697c87474ab25244ca">watch_register_extwake_callback</a> instead&quot;))) void watch_register_button_callback(const uint8_t pin</td></tr>
+<tr class="separator:gabb98ef2a5bedc045ad2151302719bfea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d4f747fa7699e83a72ec8d6b8d8f8fc"><td class="memItemLeft" align="right" valign="top"><a id="ga3d4f747fa7699e83a72ec8d6b8d8f8fc"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2">watch_enable_external_interrupts</a> instead&quot;))) void watch_enable_buttons(void)</td></tr>
+<tr class="separator:ga3d4f747fa7699e83a72ec8d6b8d8f8fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:ga9d5607684bd75c0f8b06d31fee6bb08c"><td class="memItemLeft" align="right" valign="top"><a id="ga9d5607684bd75c0f8b06d31fee6bb08c"></a>
+ext_irq_cb_t&#160;</td><td class="memItemRight" valign="bottom"><b>callback</b></td></tr>
+<tr class="separator:ga9d5607684bd75c0f8b06d31fee6bb08c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the three buttons: Light, Mode and Alarm, as well as external interrupts from devices on the nine-pin connector. </p>
+<p>The buttons are the core input UI of the watch, and the way the user will interact with your application. They are active high, pulled down by the microcontroller, and triggered when one of the "pushers" brings a tab from the metal frame into contact with the edge of the board. Note that the buttons can only wake the watch from STANDBY mode, at least as of the current SAM L22 silicon revision. The external interrupt controller runs in STANDBY mode, but it does not run in BACKUP mode; to wake from BACKUP, buttons will not cut it. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gae40d2f73d0412680d83c26b8a0e1d31c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae40d2f73d0412680d83c26b8a0e1d31c">&#9670;&nbsp;</a></span>watch_register_interrupt_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_register_interrupt_callback </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ext_irq_cb_t&#160;</td>
+ <td class="paramname"><em>callback</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a>&#160;</td>
+ <td class="paramname"><em>trigger</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Configures an external interrupt callback on one of the external interrupt pins. </p>
+<p>You can set one interrupt callback per pin, and you can monitor for a rising condition, a falling condition, or both. If you just want to detect a button press, register your interrupt with INTERRUPT_TRIGGER_RISING; if you want to detect an active-low interrupt signal from a device on the nine-pin connector, use INTERRUPT_TRIGGER_FALLING. If you want to detect both rising and falling conditions (i.e. button down and button up), use INTERRUPT_TRIGGER_BOTH and use watch_get_pin_level to check the pin level in your callback to determine which condition caused the interrupt. </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>One of BTN_LIGHT, BTN_MODE, BTN_ALARM, A0, A1, A3 or A4. If the pin parameter matches one of the three button pins, this function will also enable an internal pull-down resistor. If the pin parameter is A0-A4, you are responsible for setting any required pull configuration using watch_enable_pull_up or watch_enable_pull_down. </td></tr>
+ <tr><td class="paramname">callback</td><td>The function you wish to have called when the button is pressed. </td></tr>
+ <tr><td class="paramname">trigger</td><td>The condition on which you wish to trigger: rising, falling or both. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>Pins A2 and A4 can also generate interrupts via the watch_register_extwake_callback function, which will allow them to trigger even when the watch is in deep sleep mode. </dd></dl>
+<dl class="section warning"><dt>Warning</dt><dd>As of now, A2 is not usable via the watch_register_interrupt_callback function. To enable an external interrupt on pin A2, use the watch_register_extwake_callback function. This issue will be addressed in a future revision of the watch library. </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__buzzer.html b/group__buzzer.html
new file mode 100644
index 00000000..7d9a1ed2
--- /dev/null
+++ b/group__buzzer.html
@@ -0,0 +1,559 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Buzzer</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#typedef-members">Typedefs</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">Buzzer</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the piezo buzzer embedded in the F-91W's back plate.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:gafa12cf05739781d774798dab6b8a3fed"><td class="memItemLeft" align="right" valign="top"><a id="gafa12cf05739781d774798dab6b8a3fed"></a>
+typedef enum <a class="el" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#gafa12cf05739781d774798dab6b8a3fed">BuzzerNote</a></td></tr>
+<tr class="memdesc:gafa12cf05739781d774798dab6b8a3fed"><td class="mdescLeft">&#160;</td><td class="mdescRight">87 notes for use with watch_buzzer_play_note <br /></td></tr>
+<tr class="separator:gafa12cf05739781d774798dab6b8a3fed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga1bb9e9b72fb691b87708ed14f79491d6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a> { <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab">BUZZER_NOTE_A1</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d">BUZZER_NOTE_A1SHARP_B1FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d">BUZZER_NOTE_B1</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465">BUZZER_NOTE_C2</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232">BUZZER_NOTE_C2SHARP_D2FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119">BUZZER_NOTE_D2</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a">BUZZER_NOTE_D2SHARP_E2FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b">BUZZER_NOTE_E2</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1">BUZZER_NOTE_F2</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447">BUZZER_NOTE_F2SHARP_G2FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3">BUZZER_NOTE_G2</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f">BUZZER_NOTE_G2SHARP_A2FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e">BUZZER_NOTE_A2</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9">BUZZER_NOTE_A2SHARP_B2FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6">BUZZER_NOTE_B2</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb">BUZZER_NOTE_C3</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08">BUZZER_NOTE_C3SHARP_D3FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935">BUZZER_NOTE_D3</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0">BUZZER_NOTE_D3SHARP_E3FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1">BUZZER_NOTE_E3</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30">BUZZER_NOTE_F3</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a">BUZZER_NOTE_F3SHARP_G3FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd">BUZZER_NOTE_G3</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31">BUZZER_NOTE_G3SHARP_A3FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1">BUZZER_NOTE_A3</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc">BUZZER_NOTE_A3SHARP_B3FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56">BUZZER_NOTE_B3</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115">BUZZER_NOTE_C4</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086">BUZZER_NOTE_C4SHARP_D4FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53">BUZZER_NOTE_D4</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2">BUZZER_NOTE_D4SHARP_E4FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c">BUZZER_NOTE_E4</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31">BUZZER_NOTE_F4</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086">BUZZER_NOTE_F4SHARP_G4FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8">BUZZER_NOTE_G4</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8">BUZZER_NOTE_G4SHARP_A4FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5">BUZZER_NOTE_A4</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23">BUZZER_NOTE_A4SHARP_B4FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a">BUZZER_NOTE_B4</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3">BUZZER_NOTE_C5</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96">BUZZER_NOTE_C5SHARP_D5FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd">BUZZER_NOTE_D5</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b">BUZZER_NOTE_D5SHARP_E5FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431">BUZZER_NOTE_E5</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77">BUZZER_NOTE_F5</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838">BUZZER_NOTE_F5SHARP_G5FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e">BUZZER_NOTE_G5</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c">BUZZER_NOTE_G5SHARP_A5FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7">BUZZER_NOTE_A5</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57">BUZZER_NOTE_A5SHARP_B5FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4">BUZZER_NOTE_B5</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5">BUZZER_NOTE_C6</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2">BUZZER_NOTE_C6SHARP_D6FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f">BUZZER_NOTE_D6</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f">BUZZER_NOTE_D6SHARP_E6FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c">BUZZER_NOTE_E6</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae">BUZZER_NOTE_F6</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0">BUZZER_NOTE_F6SHARP_G6FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2">BUZZER_NOTE_G6</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849">BUZZER_NOTE_G6SHARP_A6FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db">BUZZER_NOTE_A6</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d">BUZZER_NOTE_A6SHARP_B6FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80">BUZZER_NOTE_B6</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569">BUZZER_NOTE_C7</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908">BUZZER_NOTE_C7SHARP_D7FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0">BUZZER_NOTE_D7</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542">BUZZER_NOTE_D7SHARP_E7FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392">BUZZER_NOTE_E7</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90">BUZZER_NOTE_F7</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b">BUZZER_NOTE_F7SHARP_G7FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd">BUZZER_NOTE_G7</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a">BUZZER_NOTE_G7SHARP_A7FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1">BUZZER_NOTE_A7</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab">BUZZER_NOTE_A7SHARP_B7FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629">BUZZER_NOTE_B7</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b">BUZZER_NOTE_C8</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67">BUZZER_NOTE_C8SHARP_D8FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894">BUZZER_NOTE_D8</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2">BUZZER_NOTE_D8SHARP_E8FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615">BUZZER_NOTE_E8</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5">BUZZER_NOTE_F8</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5">BUZZER_NOTE_F8SHARP_G8FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c">BUZZER_NOTE_G8</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436">BUZZER_NOTE_G8SHARP_A8FLAT</a>
+, <br />
+&#160;&#160;<a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681">BUZZER_NOTE_A8</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6">BUZZER_NOTE_A8SHARP_B8FLAT</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20">BUZZER_NOTE_B8</a>
+, <a class="el" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad">BUZZER_NOTE_REST</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:ga1bb9e9b72fb691b87708ed14f79491d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">87 notes for use with watch_buzzer_play_note <a href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">More...</a><br /></td></tr>
+<tr class="separator:ga1bb9e9b72fb691b87708ed14f79491d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga84d2f603c4f87f2199ebc102439fb204"><td class="memItemLeft" align="right" valign="top"><a id="ga84d2f603c4f87f2199ebc102439fb204"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204">watch_enable_buzzer</a> (void)</td></tr>
+<tr class="memdesc:ga84d2f603c4f87f2199ebc102439fb204"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the TCC peripheral, which drives the buzzer. <br /></td></tr>
+<tr class="separator:ga84d2f603c4f87f2199ebc102439fb204"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga77f213418f48937de73bfe7ac5fc58c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9">watch_set_buzzer_period</a> (uint32_t period)</td></tr>
+<tr class="memdesc:ga77f213418f48937de73bfe7ac5fc58c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the period of the buzzer. <a href="group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9">More...</a><br /></td></tr>
+<tr class="separator:ga77f213418f48937de73bfe7ac5fc58c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga24cef76bc304371e7914c7c5bb579f93"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93">watch_disable_buzzer</a> (void)</td></tr>
+<tr class="memdesc:ga24cef76bc304371e7914c7c5bb579f93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the TCC peripheral that drives the buzzer. <a href="group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93">More...</a><br /></td></tr>
+<tr class="separator:ga24cef76bc304371e7914c7c5bb579f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6a2d48712d70aff4a1ab463afe6fdd98"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98">watch_set_buzzer_on</a> (void)</td></tr>
+<tr class="memdesc:ga6a2d48712d70aff4a1ab463afe6fdd98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns the buzzer output on. It will emit a continuous sound at the given frequency. <a href="group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98">More...</a><br /></td></tr>
+<tr class="separator:ga6a2d48712d70aff4a1ab463afe6fdd98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga803568f5bc5f6b77ea9efa5299c6d9f4"><td class="memItemLeft" align="right" valign="top"><a id="ga803568f5bc5f6b77ea9efa5299c6d9f4"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4">watch_set_buzzer_off</a> (void)</td></tr>
+<tr class="memdesc:ga803568f5bc5f6b77ea9efa5299c6d9f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns the buzzer output off. <br /></td></tr>
+<tr class="separator:ga803568f5bc5f6b77ea9efa5299c6d9f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1b6ece8107c1f2bedf80d5584d204b80"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80">watch_buzzer_play_note</a> (<a class="el" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a> note, uint16_t duration_ms)</td></tr>
+<tr class="memdesc:ga1b6ece8107c1f2bedf80d5584d204b80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Plays the given note for a set duration. <a href="group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80">More...</a><br /></td></tr>
+<tr class="separator:ga1b6ece8107c1f2bedf80d5584d204b80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:ga747b4014093d6a71b6d8fba2db41696b"><td class="memItemLeft" align="right" valign="top"><a id="ga747b4014093d6a71b6d8fba2db41696b"></a>
+const uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b">NotePeriods</a> [108]</td></tr>
+<tr class="memdesc:ga747b4014093d6a71b6d8fba2db41696b"><td class="mdescLeft">&#160;</td><td class="mdescRight">An array of periods for all the notes on a piano, corresponding to the names in BuzzerNote. <br /></td></tr>
+<tr class="separator:ga747b4014093d6a71b6d8fba2db41696b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the piezo buzzer embedded in the F-91W's back plate. </p>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="ga1bb9e9b72fb691b87708ed14f79491d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1bb9e9b72fb691b87708ed14f79491d6">&#9670;&nbsp;</a></span>BuzzerNote</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>87 notes for use with watch_buzzer_play_note </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab"></a>BUZZER_NOTE_A1&#160;</td><td class="fielddoc"><p>55.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d"></a>BUZZER_NOTE_A1SHARP_B1FLAT&#160;</td><td class="fielddoc"><p>58.27 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d"></a>BUZZER_NOTE_B1&#160;</td><td class="fielddoc"><p>61.74 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465"></a>BUZZER_NOTE_C2&#160;</td><td class="fielddoc"><p>65.41 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232"></a>BUZZER_NOTE_C2SHARP_D2FLAT&#160;</td><td class="fielddoc"><p>69.30 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119"></a>BUZZER_NOTE_D2&#160;</td><td class="fielddoc"><p>73.42 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a"></a>BUZZER_NOTE_D2SHARP_E2FLAT&#160;</td><td class="fielddoc"><p>77.78 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b"></a>BUZZER_NOTE_E2&#160;</td><td class="fielddoc"><p>82.41 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1"></a>BUZZER_NOTE_F2&#160;</td><td class="fielddoc"><p>87.31 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447"></a>BUZZER_NOTE_F2SHARP_G2FLAT&#160;</td><td class="fielddoc"><p>92.50 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3"></a>BUZZER_NOTE_G2&#160;</td><td class="fielddoc"><p>98.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f"></a>BUZZER_NOTE_G2SHARP_A2FLAT&#160;</td><td class="fielddoc"><p>103.83 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e"></a>BUZZER_NOTE_A2&#160;</td><td class="fielddoc"><p>110.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9"></a>BUZZER_NOTE_A2SHARP_B2FLAT&#160;</td><td class="fielddoc"><p>116.54 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6"></a>BUZZER_NOTE_B2&#160;</td><td class="fielddoc"><p>123.47 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb"></a>BUZZER_NOTE_C3&#160;</td><td class="fielddoc"><p>130.81 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08"></a>BUZZER_NOTE_C3SHARP_D3FLAT&#160;</td><td class="fielddoc"><p>138.59 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935"></a>BUZZER_NOTE_D3&#160;</td><td class="fielddoc"><p>146.83 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0"></a>BUZZER_NOTE_D3SHARP_E3FLAT&#160;</td><td class="fielddoc"><p>155.56 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1"></a>BUZZER_NOTE_E3&#160;</td><td class="fielddoc"><p>164.81 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30"></a>BUZZER_NOTE_F3&#160;</td><td class="fielddoc"><p>174.61 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a"></a>BUZZER_NOTE_F3SHARP_G3FLAT&#160;</td><td class="fielddoc"><p>185.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd"></a>BUZZER_NOTE_G3&#160;</td><td class="fielddoc"><p>196.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31"></a>BUZZER_NOTE_G3SHARP_A3FLAT&#160;</td><td class="fielddoc"><p>207.65 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1"></a>BUZZER_NOTE_A3&#160;</td><td class="fielddoc"><p>220.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc"></a>BUZZER_NOTE_A3SHARP_B3FLAT&#160;</td><td class="fielddoc"><p>233.08 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56"></a>BUZZER_NOTE_B3&#160;</td><td class="fielddoc"><p>246.94 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115"></a>BUZZER_NOTE_C4&#160;</td><td class="fielddoc"><p>261.63 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086"></a>BUZZER_NOTE_C4SHARP_D4FLAT&#160;</td><td class="fielddoc"><p>277.18 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53"></a>BUZZER_NOTE_D4&#160;</td><td class="fielddoc"><p>293.66 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2"></a>BUZZER_NOTE_D4SHARP_E4FLAT&#160;</td><td class="fielddoc"><p>311.13 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c"></a>BUZZER_NOTE_E4&#160;</td><td class="fielddoc"><p>329.63 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31"></a>BUZZER_NOTE_F4&#160;</td><td class="fielddoc"><p>349.23 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086"></a>BUZZER_NOTE_F4SHARP_G4FLAT&#160;</td><td class="fielddoc"><p>369.99 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8"></a>BUZZER_NOTE_G4&#160;</td><td class="fielddoc"><p>392.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8"></a>BUZZER_NOTE_G4SHARP_A4FLAT&#160;</td><td class="fielddoc"><p>415.30 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5"></a>BUZZER_NOTE_A4&#160;</td><td class="fielddoc"><p>440.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23"></a>BUZZER_NOTE_A4SHARP_B4FLAT&#160;</td><td class="fielddoc"><p>466.16 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a"></a>BUZZER_NOTE_B4&#160;</td><td class="fielddoc"><p>493.88 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3"></a>BUZZER_NOTE_C5&#160;</td><td class="fielddoc"><p>523.25 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96"></a>BUZZER_NOTE_C5SHARP_D5FLAT&#160;</td><td class="fielddoc"><p>554.37 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd"></a>BUZZER_NOTE_D5&#160;</td><td class="fielddoc"><p>587.33 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b"></a>BUZZER_NOTE_D5SHARP_E5FLAT&#160;</td><td class="fielddoc"><p>622.25 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431"></a>BUZZER_NOTE_E5&#160;</td><td class="fielddoc"><p>659.25 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77"></a>BUZZER_NOTE_F5&#160;</td><td class="fielddoc"><p>698.46 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838"></a>BUZZER_NOTE_F5SHARP_G5FLAT&#160;</td><td class="fielddoc"><p>739.99 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e"></a>BUZZER_NOTE_G5&#160;</td><td class="fielddoc"><p>783.99 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c"></a>BUZZER_NOTE_G5SHARP_A5FLAT&#160;</td><td class="fielddoc"><p>830.61 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7"></a>BUZZER_NOTE_A5&#160;</td><td class="fielddoc"><p>880.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57"></a>BUZZER_NOTE_A5SHARP_B5FLAT&#160;</td><td class="fielddoc"><p>932.33 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4"></a>BUZZER_NOTE_B5&#160;</td><td class="fielddoc"><p>987.77 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5"></a>BUZZER_NOTE_C6&#160;</td><td class="fielddoc"><p>1046.50 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2"></a>BUZZER_NOTE_C6SHARP_D6FLAT&#160;</td><td class="fielddoc"><p>1108.73 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f"></a>BUZZER_NOTE_D6&#160;</td><td class="fielddoc"><p>1174.66 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f"></a>BUZZER_NOTE_D6SHARP_E6FLAT&#160;</td><td class="fielddoc"><p>1244.51 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c"></a>BUZZER_NOTE_E6&#160;</td><td class="fielddoc"><p>1318.51 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae"></a>BUZZER_NOTE_F6&#160;</td><td class="fielddoc"><p>1396.91 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0"></a>BUZZER_NOTE_F6SHARP_G6FLAT&#160;</td><td class="fielddoc"><p>1479.98 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2"></a>BUZZER_NOTE_G6&#160;</td><td class="fielddoc"><p>1567.98 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849"></a>BUZZER_NOTE_G6SHARP_A6FLAT&#160;</td><td class="fielddoc"><p>1661.22 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db"></a>BUZZER_NOTE_A6&#160;</td><td class="fielddoc"><p>1760.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d"></a>BUZZER_NOTE_A6SHARP_B6FLAT&#160;</td><td class="fielddoc"><p>1864.66 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80"></a>BUZZER_NOTE_B6&#160;</td><td class="fielddoc"><p>1975.53 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569"></a>BUZZER_NOTE_C7&#160;</td><td class="fielddoc"><p>2093.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908"></a>BUZZER_NOTE_C7SHARP_D7FLAT&#160;</td><td class="fielddoc"><p>2217.46 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0"></a>BUZZER_NOTE_D7&#160;</td><td class="fielddoc"><p>2349.32 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542"></a>BUZZER_NOTE_D7SHARP_E7FLAT&#160;</td><td class="fielddoc"><p>2489.02 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392"></a>BUZZER_NOTE_E7&#160;</td><td class="fielddoc"><p>2637.02 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90"></a>BUZZER_NOTE_F7&#160;</td><td class="fielddoc"><p>2793.83 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b"></a>BUZZER_NOTE_F7SHARP_G7FLAT&#160;</td><td class="fielddoc"><p>2959.96 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd"></a>BUZZER_NOTE_G7&#160;</td><td class="fielddoc"><p>3135.96 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a"></a>BUZZER_NOTE_G7SHARP_A7FLAT&#160;</td><td class="fielddoc"><p>3322.44 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1"></a>BUZZER_NOTE_A7&#160;</td><td class="fielddoc"><p>3520.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab"></a>BUZZER_NOTE_A7SHARP_B7FLAT&#160;</td><td class="fielddoc"><p>3729.31 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629"></a>BUZZER_NOTE_B7&#160;</td><td class="fielddoc"><p>3951.07 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b"></a>BUZZER_NOTE_C8&#160;</td><td class="fielddoc"><p>4186.01 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67"></a>BUZZER_NOTE_C8SHARP_D8FLAT&#160;</td><td class="fielddoc"><p>4434.92 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894"></a>BUZZER_NOTE_D8&#160;</td><td class="fielddoc"><p>4698.63 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2"></a>BUZZER_NOTE_D8SHARP_E8FLAT&#160;</td><td class="fielddoc"><p>4978.03 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615"></a>BUZZER_NOTE_E8&#160;</td><td class="fielddoc"><p>5274.04 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5"></a>BUZZER_NOTE_F8&#160;</td><td class="fielddoc"><p>5587.65 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5"></a>BUZZER_NOTE_F8SHARP_G8FLAT&#160;</td><td class="fielddoc"><p>5919.91 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c"></a>BUZZER_NOTE_G8&#160;</td><td class="fielddoc"><p>6271.93 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436"></a>BUZZER_NOTE_G8SHARP_A8FLAT&#160;</td><td class="fielddoc"><p>6644.88 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681"></a>BUZZER_NOTE_A8&#160;</td><td class="fielddoc"><p>7040.00 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6"></a>BUZZER_NOTE_A8SHARP_B8FLAT&#160;</td><td class="fielddoc"><p>7458.62 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20"></a>BUZZER_NOTE_B8&#160;</td><td class="fielddoc"><p>7902.13 Hz </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad"></a>BUZZER_NOTE_REST&#160;</td><td class="fielddoc"><p>no sound </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga1b6ece8107c1f2bedf80d5584d204b80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1b6ece8107c1f2bedf80d5584d204b80">&#9670;&nbsp;</a></span>watch_buzzer_play_note()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_buzzer_play_note </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a>&#160;</td>
+ <td class="paramname"><em>note</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>duration_ms</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Plays the given note for a set duration. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">note</td><td>The note you wish to play, or BUZZER_NOTE_REST to disable output for the given duration. </td></tr>
+ <tr><td class="paramname">duration_ms</td><td>The duration of the note. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>Note that this will block your UI for the duration of the note's play time, and it will after this call, the buzzer period will be set to the period of this note. </dd></dl>
+
+</div>
+</div>
+<a id="ga24cef76bc304371e7914c7c5bb579f93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga24cef76bc304371e7914c7c5bb579f93">&#9670;&nbsp;</a></span>watch_disable_buzzer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_buzzer </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Disables the TCC peripheral that drives the buzzer. </p>
+<dl class="section note"><dt>Note</dt><dd>If you are using PWM to set custom LED colors, this method will also disable the LED PWM driver, since the buzzer and LED both make use of the same peripheral to drive their PWM behavior. </dd></dl>
+
+</div>
+</div>
+<a id="ga6a2d48712d70aff4a1ab463afe6fdd98"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6a2d48712d70aff4a1ab463afe6fdd98">&#9670;&nbsp;</a></span>watch_set_buzzer_on()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_buzzer_on </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</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">
+
+<p>Turns the buzzer output on. It will emit a continuous sound at the given frequency. </p>
+<dl class="section note"><dt>Note</dt><dd>The TCC peripheral that drives the buzzer does not run in standby mode; if you wish for buzzer output to continue, you should prevent your app from going to sleep. </dd></dl>
+
+</div>
+</div>
+<a id="ga77f213418f48937de73bfe7ac5fc58c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga77f213418f48937de73bfe7ac5fc58c9">&#9670;&nbsp;</a></span>watch_set_buzzer_period()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_buzzer_period </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>period</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">
+
+<p>Sets the period of the buzzer. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">period</td><td>The period of a single cycle for the TCC peripheral. You can determine the period for a desired frequency with the following formula: period = 1000000 / freq </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__debug.html b/group__debug.html
new file mode 100644
index 00000000..fa063a4a
--- /dev/null
+++ b/group__debug.html
@@ -0,0 +1,122 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Debug UART</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Debug UART</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the debug UART, available on pin D1 of the 9-pin connector.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga2014a199fbd2a6d7cecb24628576722c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">__attribute__</a> ((deprecated(&quot;Use printf to log debug messages over USB.&quot;))) void watch_enable_debug_uart(uint32_t baud)</td></tr>
+<tr class="memdesc:ga2014a199fbd2a6d7cecb24628576722c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the debug UART. <a href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">More...</a><br /></td></tr>
+<tr class="separator:ga2014a199fbd2a6d7cecb24628576722c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the debug UART, available on pin D1 of the 9-pin connector. </p>
+<dl class="section warning"><dt>Warning</dt><dd>These functions were used early on in development, before the TinyUSB CDC was implemented. You can now print debug messages to the USB console using printf, rendering this bit irrelevant. These methods will likely be refactored out in the future, in favor of a more full-featured UART on the nine-pin connector. </dd></dl>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga2014a199fbd2a6d7cecb24628576722c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2014a199fbd2a6d7cecb24628576722c">&#9670;&nbsp;</a></span>__attribute__()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">__attribute__ </td>
+ <td>(</td>
+ <td class="paramtype">(deprecated(&quot;Use printf to log debug messages over USB.&quot;))&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Initializes the debug UART. </p>
+<p>Outputs a string on the debug UART.</p>
+<p>Outputs a single character on the debug UART.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">baud</td><td>The baud rate</td></tr>
+ <tr><td class="paramname">c</td><td>The character you wish to output.</td></tr>
+ <tr><td class="paramname">s</td><td>A null-terminated string. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__deepsleep.html b/group__deepsleep.html
new file mode 100644
index 00000000..e95bd01c
--- /dev/null
+++ b/group__deepsleep.html
@@ -0,0 +1,325 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Sleep Control</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Sleep Control</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the various sleep modes available to the watch, including Sleep, Deep Sleep, and BACKUP mode.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gacad726423f5f38697c87474ab25244ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#gacad726423f5f38697c87474ab25244ca">watch_register_extwake_callback</a> (uint8_t pin, ext_irq_cb_t callback, bool level)</td></tr>
+<tr class="memdesc:gacad726423f5f38697c87474ab25244ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a callback on one of the RTC's external wake pins, which can wake the device from Sleep, Deep Sleep and BACKUP modes (but see warning re: BACKUP mode). <a href="group__deepsleep.html#gacad726423f5f38697c87474ab25244ca">More...</a><br /></td></tr>
+<tr class="separator:gacad726423f5f38697c87474ab25244ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaae4dfbad44338b179a7b2d8a286bacbe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe">watch_disable_extwake_interrupt</a> (uint8_t pin)</td></tr>
+<tr class="memdesc:gaae4dfbad44338b179a7b2d8a286bacbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregisters the RTC interrupt on one of the EXTWAKE pins. This will prevent a value change on one of these pins from waking the device. <a href="group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe">More...</a><br /></td></tr>
+<tr class="separator:gaae4dfbad44338b179a7b2d8a286bacbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga385b36922ec76c5fe697772f97a05846"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846">watch_store_backup_data</a> (uint32_t data, uint8_t reg)</td></tr>
+<tr class="memdesc:ga385b36922ec76c5fe697772f97a05846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores data in one of the RTC's backup registers, which retain their data in BACKUP mode. <a href="group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846">More...</a><br /></td></tr>
+<tr class="separator:ga385b36922ec76c5fe697772f97a05846"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2de1f1012475654c4741f60808581196"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#ga2de1f1012475654c4741f60808581196">watch_get_backup_data</a> (uint8_t reg)</td></tr>
+<tr class="memdesc:ga2de1f1012475654c4741f60808581196"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets 32 bits of data from the RTC's BACKUP register. <a href="group__deepsleep.html#ga2de1f1012475654c4741f60808581196">More...</a><br /></td></tr>
+<tr class="separator:ga2de1f1012475654c4741f60808581196"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f7a625290748f0df6ba2ceb27e0d81b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b">watch_enter_sleep_mode</a> (void)</td></tr>
+<tr class="memdesc:ga9f7a625290748f0df6ba2ceb27e0d81b"><td class="mdescLeft">&#160;</td><td class="mdescRight">enters Sleep Mode by disabling all pins and peripherals except the RTC and the LCD. <a href="group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b">More...</a><br /></td></tr>
+<tr class="separator:ga9f7a625290748f0df6ba2ceb27e0d81b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaea469761889ff203385f3bfd88bb2451"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451">watch_enter_deep_sleep_mode</a> (void)</td></tr>
+<tr class="memdesc:gaea469761889ff203385f3bfd88bb2451"><td class="mdescLeft">&#160;</td><td class="mdescRight">enters Deep Sleep Mode by disabling all pins and peripherals except the RTC. <a href="group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451">More...</a><br /></td></tr>
+<tr class="separator:gaea469761889ff203385f3bfd88bb2451"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga50dda38a8a83d7d957e3bb2bf13aa3ef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">watch_enter_backup_mode</a> (void)</td></tr>
+<tr class="memdesc:ga50dda38a8a83d7d957e3bb2bf13aa3ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enters the SAM L22's lowest-power mode, BACKUP. <a href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">More...</a><br /></td></tr>
+<tr class="separator:ga50dda38a8a83d7d957e3bb2bf13aa3ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadad1beebe4b8c560187177cb4513240b"><td class="memItemLeft" align="right" valign="top"><a id="gadad1beebe4b8c560187177cb4513240b"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b">watch_enter_sleep_mode</a> or <a class="el" href="group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451">watch_enter_deep_sleep_mode</a> instead&quot;))) void watch_enter_shallow_sleep(bool display_on)</td></tr>
+<tr class="separator:gadad1beebe4b8c560187177cb4513240b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga77094010477e7af9456b3b871ec30807"><td class="memItemLeft" align="right" valign="top"><a id="ga77094010477e7af9456b3b871ec30807"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">watch_enter_backup_mode</a> instead&quot;))) void watch_enter_deep_sleep(void)</td></tr>
+<tr class="separator:ga77094010477e7af9456b3b871ec30807"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the various sleep modes available to the watch, including Sleep, Deep Sleep, and BACKUP mode. </p>
+<p>These terms changed meaning a bit over the course of development; if you are coming to this documentation after having worked with an earlier version of the library, these definitions should clarify the terminology. Terms in all caps are modes of the SAM L22; terms in Title Case are specific implementations in this library.</p><ul>
+<li>ACTIVE mode is the mode the SAM L22 is in when both the main clock and the CPU are running. It is the most power-hungry mode. If you ever call delay_ms to wait a beat, the watch will remain in ACTIVE mode while taking that delay. In addition, whenever your <code>app_loop</code> function returns false, the device will remain in ACTIVE mode and call your <code>app_loop</code> function again.</li>
+<li>STANDBY mode turns off the main clock and halts the CPU. Since the PWM driver is run from the main clock, it also stops the buzzer and any dimming of the LEDs. In this mode, the watch can wake from any interrupt source. Whenever your <code>app_loop</code> function returns true, the watch enters STANDBY mode until the next tick or other interrupt. This mode uses much less power than ACTIVE mode.</li>
+<li>Sleep Mode is a special case of STANDBY mode. In this mode, the watch turns off almost all peripherals (including the external interrupt controller), and disables all pins except for the external wake pins. In this mode the watch can only wake from the RTC alarm interrupt or an external wake pin (A2, A4 or the alarm button), but the display remains on and your app's state is retained. You can enter this mode by calling <code>watch_enter_sleep_mode</code>. It consumes an order of magnitude less power than STANDBY mode.</li>
+<li>Deep Sleep Mode is identical to sleep mode, but it also turns off the LCD to save a bit more power. You can enter this mode by calling <code>watch_enter_deep_sleep_mode</code>.</li>
+<li>BACKUP mode is the lowest possible power mode on the SAM L22. It turns off all pins and peripherals except for the RTC. It also turns off the RAM, obliterating your application's state. The only way to wake from this mode is by setting an external wake interrupt on pin A2 or pin A4, and when you do wake it will be much like a wake from reset. You can enter this mode by calling <code>watch_enter_backup_mode</code>. </li>
+</ul>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaae4dfbad44338b179a7b2d8a286bacbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaae4dfbad44338b179a7b2d8a286bacbe">&#9670;&nbsp;</a></span>watch_disable_extwake_interrupt()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_extwake_interrupt </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Unregisters the RTC interrupt on one of the EXTWAKE pins. This will prevent a value change on one of these pins from waking the device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>Either pin BTN_ALARM, A2, or A4. If the pin is BTN_ALARM, this function DOES NOT disable the internal pull down on that pin. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga50dda38a8a83d7d957e3bb2bf13aa3ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga50dda38a8a83d7d957e3bb2bf13aa3ef">&#9670;&nbsp;</a></span>watch_enter_backup_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enter_backup_mode </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Enters the SAM L22's lowest-power mode, BACKUP. </p>
+<p>This function does some housekeeping before entering BACKUP mode. It first disables all pins and peripherals except for the RTC, and disables the tick interrupt (since that would wake us up from BACKUP mode). Once again, if you wish to wake from the A2 or the A4 interrupt, you must first configure this by calling watch_register_extwake_callback. </p><dl class="section note"><dt>Note</dt><dd>If you have a callback set for an external wake interrupt, it will be called if triggered while in ACTIVE, STANDBY, Sleep and Deep Sleep modes, but it <em>will not be called</em> when waking from BACKUP mode. Waking from backup is effectively like waking from reset, except that your <a class="el" href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a">app_wake_from_backup</a> function will be called. </dd></dl>
+<dl class="section warning"><dt>Warning</dt><dd>On current revisions of the SAM L22 silicon, the ALARM_BTN pin (PA02 RTC/IN2) cannot wake the device from deep sleep mode. There is an errata note (Reference: 15010) that says that due to a silicon bug, RTC/IN2 is not functional in BACKUP. As a result, you should not call this function unless you have a device on the nine-pin connector with an external interrupt on pin A2 or A4 (i.e. an accelerometer with an interrupt pin). </dd></dl>
+
+</div>
+</div>
+<a id="gaea469761889ff203385f3bfd88bb2451"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaea469761889ff203385f3bfd88bb2451">&#9670;&nbsp;</a></span>watch_enter_deep_sleep_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enter_deep_sleep_mode </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>enters Deep Sleep Mode by disabling all pins and peripherals except the RTC. </p>
+<p>Short of BACKUP mode, this is the lowest power mode you can enter while retaining your application state (and the ability to wake with the alarm button). Just note that the display will be completely off, so you should document to the user of your application that they will need to press the alarm button to wake the device, or use a sensor board with support for an external wake pin.</p>
+<p>All notes from watch_enter_sleep_mode apply here, except for power consumption. You can estimate the power consumption of this mode to be on the order of 12 microwatts (about 4µA at 3 V). </p>
+
+</div>
+</div>
+<a id="ga9f7a625290748f0df6ba2ceb27e0d81b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9f7a625290748f0df6ba2ceb27e0d81b">&#9670;&nbsp;</a></span>watch_enter_sleep_mode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enter_sleep_mode </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>enters Sleep Mode by disabling all pins and peripherals except the RTC and the LCD. </p>
+<p>This sleep mode is not the lowest power mode available, but it has the benefit of allowing you to display a message to the user while asleep. You can also set an alarm interrupt to wake at a configfurable interval (every minute, hour or day) to update the display. You can wake from this mode by pressing the ALARM button, if you registered an extwake callback on the ALARM button. Also note that when your app wakes from this sleep mode, your app_setup method will be called again, since this function will have disabled things you set up there.</p>
+<p>Note that to wake from either the ALARM button, the A2 interrupt or the A4 interrupt, you must first configure this by calling watch_register_extwake_callback.</p>
+<p>You can estimate the power consumption of this mode to be on the order of 30 microwatts (about 10 µA at 3 V). </p>
+
+</div>
+</div>
+<a id="ga2de1f1012475654c4741f60808581196"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2de1f1012475654c4741f60808581196">&#9670;&nbsp;</a></span>watch_get_backup_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t watch_get_backup_data </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Gets 32 bits of data from the RTC's BACKUP register. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">reg</td><td>A register from 0-7. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An unsigned 32 bit integer with the from the backup register. </dd></dl>
+
+</div>
+</div>
+<a id="gacad726423f5f38697c87474ab25244ca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacad726423f5f38697c87474ab25244ca">&#9670;&nbsp;</a></span>watch_register_extwake_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_register_extwake_callback </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ext_irq_cb_t&#160;</td>
+ <td class="paramname"><em>callback</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>level</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Registers a callback on one of the RTC's external wake pins, which can wake the device from Sleep, Deep Sleep and BACKUP modes (but see warning re: BACKUP mode). </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>Either pin BTN_ALARM, A2, or A4. These are the three external wake pins. If the pin is BTN_ALARM, this function also enables an internal pull down on that pin. </td></tr>
+ <tr><td class="paramname">callback</td><td>The callback to be called if this pin triggers outside of BACKUP mode. If this is NULL, no callback will be called even in normal modes, but the interrupt will still be enabled so that it can wake the device. </td></tr>
+ <tr><td class="paramname">level</td><td>The level you wish to scan for: true for rising, false for falling. Note that you cannot scan for both rising and falling edges like you can with the external interrupt pins; with the external wake interrupt, you can only get one or the other. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>When in ACTIVE, STANDBY and Sleep / Deep sleep modes, this will function much like a standard external interrupt situation: these pins will wake the device, and your callback will be called. However, if the device enters BACKUP mode and one of these pins wakes the device, your callback WILL NOT be called, as the device is basically waking from reset at that point. </dd></dl>
+<dl class="section warning"><dt>Warning</dt><dd>As of the current SAM L22 silicon revision (rev B), the BTN_ALARM pin cannot wake the device from BACKUP mode. You can still use this function to register a BTN_ALARM interrupt in normal or deep sleep mode, but to wake from BACKUP, you will need to use pin A2 or A4. </dd></dl>
+
+</div>
+</div>
+<a id="ga385b36922ec76c5fe697772f97a05846"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga385b36922ec76c5fe697772f97a05846">&#9670;&nbsp;</a></span>watch_store_backup_data()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_store_backup_data </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Stores data in one of the RTC's backup registers, which retain their data in BACKUP mode. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">data</td><td>An unsigned 32 bit integer with the data you wish to store. </td></tr>
+ <tr><td class="paramname">reg</td><td>A register from 0-7. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__gpio.html b/group__gpio.html
new file mode 100644
index 00000000..abce3977
--- /dev/null
+++ b/group__gpio.html
@@ -0,0 +1,332 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Digital Input and Output</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Digital Input and Output</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to general-purpose input and output signals.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga8f6035dc4a5226fa34504e8a5a930e0c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c">watch_enable_digital_input</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:ga8f6035dc4a5226fa34504e8a5a930e0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the selected pin for digital input. <a href="group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c">More...</a><br /></td></tr>
+<tr class="separator:ga8f6035dc4a5226fa34504e8a5a930e0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae58e015e96f9e9c42a664b69185265b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#gae58e015e96f9e9c42a664b69185265b9">watch_disable_digital_input</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:gae58e015e96f9e9c42a664b69185265b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables any digital input, along with any pull-up or pull-down configuration. <a href="group__gpio.html#gae58e015e96f9e9c42a664b69185265b9">More...</a><br /></td></tr>
+<tr class="separator:gae58e015e96f9e9c42a664b69185265b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga55a16884f634ee0eb2c981d1b9a06a4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d">watch_enable_pull_up</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:ga55a16884f634ee0eb2c981d1b9a06a4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables a pull-up resistor on the selected pin. <a href="group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d">More...</a><br /></td></tr>
+<tr class="separator:ga55a16884f634ee0eb2c981d1b9a06a4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae974fce4ac5d38ffe256186a84c63ff9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9">watch_enable_pull_down</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:gae974fce4ac5d38ffe256186a84c63ff9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables a pull-down resistor on the selected pin. <a href="group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9">More...</a><br /></td></tr>
+<tr class="separator:gae974fce4ac5d38ffe256186a84c63ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacc7c5e867c05cd03f5955e8e8036b879"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879">watch_get_pin_level</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:gacc7c5e867c05cd03f5955e8e8036b879"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the level of the selected pin. <a href="group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879">More...</a><br /></td></tr>
+<tr class="separator:gacc7c5e867c05cd03f5955e8e8036b879"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf73a6405eb90bc6de32fb66f512fe4a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9">watch_enable_digital_output</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:gaf73a6405eb90bc6de32fb66f512fe4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the selected pin for digital output. <a href="group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9">More...</a><br /></td></tr>
+<tr class="separator:gaf73a6405eb90bc6de32fb66f512fe4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga15b40170b4225ac6a927da1d76e4fd3d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d">watch_disable_digital_output</a> (const uint8_t pin)</td></tr>
+<tr class="memdesc:ga15b40170b4225ac6a927da1d76e4fd3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables digital output on the selected pin. <a href="group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d">More...</a><br /></td></tr>
+<tr class="separator:ga15b40170b4225ac6a927da1d76e4fd3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2e781c7e15045d2270f0cb3f87d619d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6">watch_set_pin_level</a> (const uint8_t pin, const bool level)</td></tr>
+<tr class="memdesc:ga2e781c7e15045d2270f0cb3f87d619d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the level of the selected pin. <a href="group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6">More...</a><br /></td></tr>
+<tr class="separator:ga2e781c7e15045d2270f0cb3f87d619d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to general-purpose input and output signals. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gae58e015e96f9e9c42a664b69185265b9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae58e015e96f9e9c42a664b69185265b9">&#9670;&nbsp;</a></span>watch_disable_digital_input()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_digital_input </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Disables any digital input, along with any pull-up or pull-down configuration. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish to disable. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga15b40170b4225ac6a927da1d76e4fd3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga15b40170b4225ac6a927da1d76e4fd3d">&#9670;&nbsp;</a></span>watch_disable_digital_output()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_digital_output </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Disables digital output on the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish disable. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga8f6035dc4a5226fa34504e8a5a930e0c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8f6035dc4a5226fa34504e8a5a930e0c">&#9670;&nbsp;</a></span>watch_enable_digital_input()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_digital_input </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Configures the selected pin for digital input. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish to act as an input. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaf73a6405eb90bc6de32fb66f512fe4a9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf73a6405eb90bc6de32fb66f512fe4a9">&#9670;&nbsp;</a></span>watch_enable_digital_output()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_digital_output </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Configures the selected pin for digital output. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish to act as an output. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="gae974fce4ac5d38ffe256186a84c63ff9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae974fce4ac5d38ffe256186a84c63ff9">&#9670;&nbsp;</a></span>watch_enable_pull_down()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_pull_down </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Enables a pull-down resistor on the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish to configure. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga55a16884f634ee0eb2c981d1b9a06a4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga55a16884f634ee0eb2c981d1b9a06a4d">&#9670;&nbsp;</a></span>watch_enable_pull_up()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_pull_up </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Enables a pull-up resistor on the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin that you wish to configure. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="gacc7c5e867c05cd03f5955e8e8036b879"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacc7c5e867c05cd03f5955e8e8036b879">&#9670;&nbsp;</a></span>watch_get_pin_level()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool watch_get_pin_level </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Gets the level of the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin whose value you wish to read. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>true if the pin was logic high; otherwise, false. </dd></dl>
+
+</div>
+</div>
+<a id="ga2e781c7e15045d2270f0cb3f87d619d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2e781c7e15045d2270f0cb3f87d619d6">&#9670;&nbsp;</a></span>watch_set_pin_level()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_pin_level </td>
+ <td>(</td>
+ <td class="paramtype">const uint8_t&#160;</td>
+ <td class="paramname"><em>pin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const bool&#160;</td>
+ <td class="paramname"><em>level</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the level of the selected pin. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">pin</td><td>The pin whose value you wish to set. </td></tr>
+ <tr><td class="paramname">level</td><td>The level you wish to set: true for high, false for low. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__i2c.html b/group__i2c.html
new file mode 100644
index 00000000..af989f8d
--- /dev/null
+++ b/group__i2c.html
@@ -0,0 +1,404 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: I2C Controller Driver</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">I2C Controller Driver</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the SAM L22's built-I2C driver, including configuring the I2C bus, putting values directly on the bus and reading data from registers on I2C devices.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gab9f25517d9dc3c32a707266dfd413e5b"><td class="memItemLeft" align="right" valign="top"><a id="gab9f25517d9dc3c32a707266dfd413e5b"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b">watch_enable_i2c</a> (void)</td></tr>
+<tr class="memdesc:gab9f25517d9dc3c32a707266dfd413e5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the I2C peripheral. Call this before attempting to interface with I2C devices. <br /></td></tr>
+<tr class="separator:gab9f25517d9dc3c32a707266dfd413e5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2189bdff3dcb40f451d0aa988ea99760"><td class="memItemLeft" align="right" valign="top"><a id="ga2189bdff3dcb40f451d0aa988ea99760"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760">watch_disable_i2c</a> (void)</td></tr>
+<tr class="memdesc:ga2189bdff3dcb40f451d0aa988ea99760"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the I2C peripheral. <br /></td></tr>
+<tr class="separator:ga2189bdff3dcb40f451d0aa988ea99760"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8b44030f78c30dd4026b349fc0c8cf08"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08">watch_i2c_send</a> (int16_t addr, uint8_t *buf, uint16_t length)</td></tr>
+<tr class="memdesc:ga8b44030f78c30dd4026b349fc0c8cf08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a series of values to a device on the I2C bus. <a href="group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08">More...</a><br /></td></tr>
+<tr class="separator:ga8b44030f78c30dd4026b349fc0c8cf08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga426971387b87286c8decca7342c06b4b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#ga426971387b87286c8decca7342c06b4b">watch_i2c_receive</a> (int16_t addr, uint8_t *buf, uint16_t length)</td></tr>
+<tr class="memdesc:ga426971387b87286c8decca7342c06b4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receives a series of values from a device on the I2C bus. <a href="group__i2c.html#ga426971387b87286c8decca7342c06b4b">More...</a><br /></td></tr>
+<tr class="separator:ga426971387b87286c8decca7342c06b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf0a4c78215cbd85ab557fc6c786eb6ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad">watch_i2c_write8</a> (int16_t addr, uint8_t reg, uint8_t data)</td></tr>
+<tr class="memdesc:gaf0a4c78215cbd85ab557fc6c786eb6ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a byte to a register in an I2C device. <a href="group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad">More...</a><br /></td></tr>
+<tr class="separator:gaf0a4c78215cbd85ab557fc6c786eb6ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac5644140ddda98198f9d5deabbeaf781"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gac5644140ddda98198f9d5deabbeaf781">watch_i2c_read8</a> (int16_t addr, uint8_t reg)</td></tr>
+<tr class="memdesc:gac5644140ddda98198f9d5deabbeaf781"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a byte from a register in an I2C device. <a href="group__i2c.html#gac5644140ddda98198f9d5deabbeaf781">More...</a><br /></td></tr>
+<tr class="separator:gac5644140ddda98198f9d5deabbeaf781"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed749d3ca5e6e3aedcf1aefed3d7663e"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e">watch_i2c_read16</a> (int16_t addr, uint8_t reg)</td></tr>
+<tr class="memdesc:gaed749d3ca5e6e3aedcf1aefed3d7663e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads an unsigned little-endian word from a register in an I2C device. <a href="group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e">More...</a><br /></td></tr>
+<tr class="separator:gaed749d3ca5e6e3aedcf1aefed3d7663e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6732b5655fdada88d083e4b4d05d1ca8"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8">watch_i2c_read24</a> (int16_t addr, uint8_t reg)</td></tr>
+<tr class="memdesc:ga6732b5655fdada88d083e4b4d05d1ca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads three bytes as an unsigned little-endian int from a register in an I2C device. <a href="group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8">More...</a><br /></td></tr>
+<tr class="separator:ga6732b5655fdada88d083e4b4d05d1ca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d1c750d1b228b11333d10fc9647d651"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651">watch_i2c_read32</a> (int16_t addr, uint8_t reg)</td></tr>
+<tr class="memdesc:ga3d1c750d1b228b11333d10fc9647d651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads an unsigned little-endian int from a register in an I2C device. <a href="group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651">More...</a><br /></td></tr>
+<tr class="separator:ga3d1c750d1b228b11333d10fc9647d651"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the SAM L22's built-I2C driver, including configuring the I2C bus, putting values directly on the bus and reading data from registers on I2C devices. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaed749d3ca5e6e3aedcf1aefed3d7663e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaed749d3ca5e6e3aedcf1aefed3d7663e">&#9670;&nbsp;</a></span>watch_i2c_read16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint16_t watch_i2c_read16 </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Reads an unsigned little-endian word from a register in an I2C device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to address. </td></tr>
+ <tr><td class="paramname">reg</td><td>The register on the device that you wish to read. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An unsigned word representing the value of the register that was read. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>This reads two bytes into the word in bus order. If the device returns the LSB first and then the MSB, you can use this value as returned. If the device returns the data in big-endian order or uses some other kind of fancy bit packing, you may need to shuffle some bits around. </dd></dl>
+
+</div>
+</div>
+<a id="ga6732b5655fdada88d083e4b4d05d1ca8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6732b5655fdada88d083e4b4d05d1ca8">&#9670;&nbsp;</a></span>watch_i2c_read24()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t watch_i2c_read24 </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Reads three bytes as an unsigned little-endian int from a register in an I2C device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to address. </td></tr>
+ <tr><td class="paramname">reg</td><td>The register on the device that you wish to read. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An unsigned word representing the value of the register that was read. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>This reads three bytes into the word in bus order. If the device returns these bytes LSB first, you can use this value as returned. If there is a sign bit, the device returns the data in big-endian order, or it uses some other kind of fancy bit packing, you may need to shuffle some bits around. </dd></dl>
+
+</div>
+</div>
+<a id="ga3d1c750d1b228b11333d10fc9647d651"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3d1c750d1b228b11333d10fc9647d651">&#9670;&nbsp;</a></span>watch_i2c_read32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t watch_i2c_read32 </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Reads an unsigned little-endian int from a register in an I2C device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to address. </td></tr>
+ <tr><td class="paramname">reg</td><td>The register on the device that you wish to read. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An unsigned word representing the value of the register that was read. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>This reads three bytes into the word in bus order. If the device returns these bytes LSB first, you can use this value as returned. If the device returns the data in big-endian order, or it uses some other kind of fancy bit packing, you may need to shuffle some bits around. </dd></dl>
+
+</div>
+</div>
+<a id="gac5644140ddda98198f9d5deabbeaf781"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac5644140ddda98198f9d5deabbeaf781">&#9670;&nbsp;</a></span>watch_i2c_read8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint8_t watch_i2c_read8 </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Reads a byte from a register in an I2C device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to address. </td></tr>
+ <tr><td class="paramname">reg</td><td>The register on the device that you wish to read. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An unsigned byte representing the value of the register that was read. </dd></dl>
+
+</div>
+</div>
+<a id="ga426971387b87286c8decca7342c06b4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga426971387b87286c8decca7342c06b4b">&#9670;&nbsp;</a></span>watch_i2c_receive()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_i2c_receive </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t *&#160;</td>
+ <td class="paramname"><em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>length</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Receives a series of values from a device on the I2C bus. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to hear from. </td></tr>
+ <tr><td class="paramname">buf</td><td>Storage for the incoming bytes; on return, it will contain the received data. </td></tr>
+ <tr><td class="paramname">length</td><td>The number of bytes that you wish to receive. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga8b44030f78c30dd4026b349fc0c8cf08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8b44030f78c30dd4026b349fc0c8cf08">&#9670;&nbsp;</a></span>watch_i2c_send()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_i2c_send </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t *&#160;</td>
+ <td class="paramname"><em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>length</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sends a series of values to a device on the I2C bus. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to talk to. </td></tr>
+ <tr><td class="paramname">buf</td><td>A series of unsigned bytes; the data you wish to transmit. </td></tr>
+ <tr><td class="paramname">length</td><td>The number of bytes in buf that you wish to send. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="gaf0a4c78215cbd85ab557fc6c786eb6ad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf0a4c78215cbd85ab557fc6c786eb6ad">&#9670;&nbsp;</a></span>watch_i2c_write8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_i2c_write8 </td>
+ <td>(</td>
+ <td class="paramtype">int16_t&#160;</td>
+ <td class="paramname"><em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>reg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Writes a byte to a register in an I2C device. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">addr</td><td>The address of the device you wish to address. </td></tr>
+ <tr><td class="paramname">reg</td><td>The register on the device that you wish to set. </td></tr>
+ <tr><td class="paramname">data</td><td>The value that you wish to set the register to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__led.html b/group__led.html
new file mode 100644
index 00000000..f21e92c1
--- /dev/null
+++ b/group__led.html
@@ -0,0 +1,260 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: LED Control</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">LED Control</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the bi-color red/green LED mounted behind the LCD.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga86ce31dc95137ed41983fb7c6af5502a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga86ce31dc95137ed41983fb7c6af5502a">watch_enable_leds</a> (void)</td></tr>
+<tr class="memdesc:ga86ce31dc95137ed41983fb7c6af5502a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the bi-color LED. <a href="group__led.html#ga86ce31dc95137ed41983fb7c6af5502a">More...</a><br /></td></tr>
+<tr class="separator:ga86ce31dc95137ed41983fb7c6af5502a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga883bf171196fb5a7a57ef727dca6e04a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">watch_disable_leds</a> (void)</td></tr>
+<tr class="memdesc:ga883bf171196fb5a7a57ef727dca6e04a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the LEDs. <a href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">More...</a><br /></td></tr>
+<tr class="separator:ga883bf171196fb5a7a57ef727dca6e04a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga042bcc9220ab05d1de8389cf0067511b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga042bcc9220ab05d1de8389cf0067511b">watch_set_led_color</a> (uint8_t red, uint8_t green)</td></tr>
+<tr class="memdesc:ga042bcc9220ab05d1de8389cf0067511b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the LED to a custom color by modulating each output's duty cycle. <a href="group__led.html#ga042bcc9220ab05d1de8389cf0067511b">More...</a><br /></td></tr>
+<tr class="separator:ga042bcc9220ab05d1de8389cf0067511b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga36d89031d8e8813dfab5f6cff9c6ee40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40">watch_set_led_red</a> (void)</td></tr>
+<tr class="memdesc:ga36d89031d8e8813dfab5f6cff9c6ee40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the red LED to full brightness, and turns the green LED off. <a href="group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40">More...</a><br /></td></tr>
+<tr class="separator:ga36d89031d8e8813dfab5f6cff9c6ee40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab01a29900ddc5315c0e752e63d748f41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#gab01a29900ddc5315c0e752e63d748f41">watch_set_led_green</a> (void)</td></tr>
+<tr class="memdesc:gab01a29900ddc5315c0e752e63d748f41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the green LED to full brightness, and turns the red LED off. <a href="group__led.html#gab01a29900ddc5315c0e752e63d748f41">More...</a><br /></td></tr>
+<tr class="separator:gab01a29900ddc5315c0e752e63d748f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga51ba53c3281ad8724d98af27eacc3de0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga51ba53c3281ad8724d98af27eacc3de0">watch_set_led_yellow</a> (void)</td></tr>
+<tr class="memdesc:ga51ba53c3281ad8724d98af27eacc3de0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets both red and green LEDs to full brightness. <a href="group__led.html#ga51ba53c3281ad8724d98af27eacc3de0">More...</a><br /></td></tr>
+<tr class="separator:ga51ba53c3281ad8724d98af27eacc3de0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8619f040ff7364285398412a4c420cae"><td class="memItemLeft" align="right" valign="top"><a id="ga8619f040ff7364285398412a4c420cae"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__led.html#ga8619f040ff7364285398412a4c420cae">watch_set_led_off</a> (void)</td></tr>
+<tr class="memdesc:ga8619f040ff7364285398412a4c420cae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns both the red and the green LEDs off. <br /></td></tr>
+<tr class="separator:ga8619f040ff7364285398412a4c420cae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga510b8e59dc64c9880c3eda27270722d8"><td class="memItemLeft" align="right" valign="top"><a id="ga510b8e59dc64c9880c3eda27270722d8"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__led.html#ga86ce31dc95137ed41983fb7c6af5502a">watch_enable_leds</a> instead&quot;))) void watch_enable_led(bool unused)</td></tr>
+<tr class="separator:ga510b8e59dc64c9880c3eda27270722d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaca8285070363eed34dbb31c470d9d5bb"><td class="memItemLeft" align="right" valign="top"><a id="gaca8285070363eed34dbb31c470d9d5bb"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>__attribute__</b> ((deprecated(&quot;Use <a class="el" href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">watch_disable_leds</a> instead&quot;))) void watch_disable_led(bool unused)</td></tr>
+<tr class="separator:gaca8285070363eed34dbb31c470d9d5bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the bi-color red/green LED mounted behind the LCD. </p>
+<p>The SAM L22 is an exceedingly power efficient chip, whereas the LED's are relatively power- hungry. The green LED, at full power, consumes more power than the whole chip in active mode, and the red LED consumes about twelve times as much power! The LED's should thus be used only sparingly in order to preserve battery life. </p><dl class="section note"><dt>Note</dt><dd>Some watches use a red/blue LED instead of a red/green LED. You will be able to determine this easily when you double tap the reset button: if the pulsing bootloader LED is red, you have a red/green edition; if it is blue, you have a red/blue edition. For red/blue watches, build your project with the command <code>make LED=BLUE</code>, and the watch library will automatically swap the pins so that watch_set_led_red sets the red LED, and watch_set_led_green sets the blue one. </dd></dl>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga883bf171196fb5a7a57ef727dca6e04a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga883bf171196fb5a7a57ef727dca6e04a">&#9670;&nbsp;</a></span>watch_disable_leds()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_disable_leds </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Disables the LEDs. </p>
+<dl class="section note"><dt>Note</dt><dd>This method will also disable the buzzer, since the buzzer and LED both make use of the same peripheral to drive their PWM behavior. </dd></dl>
+
+</div>
+</div>
+<a id="ga86ce31dc95137ed41983fb7c6af5502a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga86ce31dc95137ed41983fb7c6af5502a">&#9670;&nbsp;</a></span>watch_enable_leds()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_enable_leds </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Enables the bi-color LED. </p>
+<dl class="section note"><dt>Note</dt><dd>The TCC peripheral that drives the LEDs does not run in STANDBY mode — but the outputs do! This means that if you set either red, green or both LEDs to full power, they will shine even when your app is asleep. If, however, you set a custom color using watch_set_led_color, the color will not display correctly in STANDBY mode. You will need to keep your app running while the LED is on. </dd></dl>
+
+</div>
+</div>
+<a id="ga042bcc9220ab05d1de8389cf0067511b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga042bcc9220ab05d1de8389cf0067511b">&#9670;&nbsp;</a></span>watch_set_led_color()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_led_color </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>red</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>green</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the LED to a custom color by modulating each output's duty cycle. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">red</td><td>The red value from 0-255. </td></tr>
+ <tr><td class="paramname">green</td><td>The green value from 0-255. If your watch has a red/blue LED, this will be the blue value. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>If you are displaying a custom color, you will need to prevent your app from going to sleep while the LED is on; otherwise, the color will not display correctly. You can do this by returning false in your app_loop method. </dd></dl>
+
+</div>
+</div>
+<a id="gab01a29900ddc5315c0e752e63d748f41"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab01a29900ddc5315c0e752e63d748f41">&#9670;&nbsp;</a></span>watch_set_led_green()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_led_green </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the green LED to full brightness, and turns the red LED off. </p>
+<p>Of the two LED's in the RG bi-color LED, the green LED is the more power-efficient one (~0.44 mA). </p><dl class="section note"><dt>Note</dt><dd>If your watch has a red/blue LED, this method will set the LED to blue. </dd></dl>
+
+</div>
+</div>
+<a id="ga36d89031d8e8813dfab5f6cff9c6ee40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga36d89031d8e8813dfab5f6cff9c6ee40">&#9670;&nbsp;</a></span>watch_set_led_red()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_led_red </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the red LED to full brightness, and turns the green LED off. </p>
+<p>Of the two LED's in the RG bi-color LED, the red LED is the less power-efficient one (~4.5 mA). </p>
+
+</div>
+</div>
+<a id="ga51ba53c3281ad8724d98af27eacc3de0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga51ba53c3281ad8724d98af27eacc3de0">&#9670;&nbsp;</a></span>watch_set_led_yellow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_led_yellow </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets both red and green LEDs to full brightness. </p>
+<p>The total current draw between the two LED's in this mode will be ~5 mA, which is more than the watch draws in any other mode. Take care not to drain the battery. </p><dl class="section note"><dt>Note</dt><dd>If your watch has a red/blue LED, this method will set the LED to pink. </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__rtc.html b/group__rtc.html
new file mode 100644
index 00000000..e7c63354
--- /dev/null
+++ b/group__rtc.html
@@ -0,0 +1,431 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Real-Time Clock</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Real-Time Clock</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the SAM L22's real-time clock peripheral, including date, time and alarm functions.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionwatch__date__time.html">watch_date_time</a></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 name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga9bc41a324472cc3c2f39679849e3a4e9"><td class="memItemLeft" align="right" valign="top"><a id="ga9bc41a324472cc3c2f39679849e3a4e9"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>WATCH_RTC_REFERENCE_YEAR</b>&#160;&#160;&#160;(2020)</td></tr>
+<tr class="separator:ga9bc41a324472cc3c2f39679849e3a4e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga13ec58aba1f66d56e859e6b64dc0b47a"><td class="memItemLeft" align="right" valign="top"><a id="ga13ec58aba1f66d56e859e6b64dc0b47a"></a>
+typedef enum watch_rtc_alarm_match&#160;</td><td class="memItemRight" valign="bottom"><b>watch_rtc_alarm_match</b></td></tr>
+<tr class="separator:ga13ec58aba1f66d56e859e6b64dc0b47a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:gaa0a79638c3b14ee82798ca18fbb2014a"><td class="memItemLeft" align="right" valign="top"><a id="gaa0a79638c3b14ee82798ca18fbb2014a"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>watch_rtc_alarm_match</b> { <b>ALARM_MATCH_DISABLED</b> = 0
+, <b>ALARM_MATCH_SS</b>
+, <b>ALARM_MATCH_MMSS</b>
+, <b>ALARM_MATCH_HHMMSS</b>
+ }</td></tr>
+<tr class="separator:gaa0a79638c3b14ee82798ca18fbb2014a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga3ac65a314540ae8b7be5b9015785d565"><td class="memItemLeft" align="right" valign="top"><a id="ga3ac65a314540ae8b7be5b9015785d565"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565">_watch_rtc_is_enabled</a> (void)</td></tr>
+<tr class="memdesc:ga3ac65a314540ae8b7be5b9015785d565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by main.c to check if the RTC is enabled. You may call this function, but outside of app_init, it should always return true. <br /></td></tr>
+<tr class="separator:ga3ac65a314540ae8b7be5b9015785d565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadfcc143db9d71e95c2d2dc45732ab4e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">watch_rtc_set_date_time</a> (<a class="el" href="unionwatch__date__time.html">watch_date_time</a> date_time)</td></tr>
+<tr class="memdesc:gadfcc143db9d71e95c2d2dc45732ab4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the date and time. <a href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">More...</a><br /></td></tr>
+<tr class="separator:gadfcc143db9d71e95c2d2dc45732ab4e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga166b575563d39a0061dc9a28ad0309a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a> (void)</td></tr>
+<tr class="memdesc:ga166b575563d39a0061dc9a28ad0309a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the date and time. <a href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">More...</a><br /></td></tr>
+<tr class="separator:ga166b575563d39a0061dc9a28ad0309a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa5220d0d7f542a0bc6c9bef176d6d83b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b">watch_rtc_register_alarm_callback</a> (ext_irq_cb_t callback, <a class="el" href="unionwatch__date__time.html">watch_date_time</a> alarm_time, watch_rtc_alarm_match mask)</td></tr>
+<tr class="memdesc:gaa5220d0d7f542a0bc6c9bef176d6d83b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers an alarm callback that will be called when the RTC time matches the target time, as masked by the provided mask. <a href="group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b">More...</a><br /></td></tr>
+<tr class="separator:gaa5220d0d7f542a0bc6c9bef176d6d83b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga836cade77c24e93c06bf534eaded55bf"><td class="memItemLeft" align="right" valign="top"><a id="ga836cade77c24e93c06bf534eaded55bf"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga836cade77c24e93c06bf534eaded55bf">watch_rtc_disable_alarm_callback</a> (void)</td></tr>
+<tr class="memdesc:ga836cade77c24e93c06bf534eaded55bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the alarm callback. <br /></td></tr>
+<tr class="separator:ga836cade77c24e93c06bf534eaded55bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga969ea57aaedf13d4950edbeacff3f2be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a> (ext_irq_cb_t callback)</td></tr>
+<tr class="memdesc:ga969ea57aaedf13d4950edbeacff3f2be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a "tick" callback that will be called once per second. <a href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">More...</a><br /></td></tr>
+<tr class="separator:ga969ea57aaedf13d4950edbeacff3f2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga685f2afb2e99dfebf8d2ef058a5bc19d"><td class="memItemLeft" align="right" valign="top"><a id="ga685f2afb2e99dfebf8d2ef058a5bc19d"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d">watch_rtc_disable_tick_callback</a> (void)</td></tr>
+<tr class="memdesc:ga685f2afb2e99dfebf8d2ef058a5bc19d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the tick callback for the given period. <br /></td></tr>
+<tr class="separator:ga685f2afb2e99dfebf8d2ef058a5bc19d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeb4e67aa0062e39eaff465aeebc24f53"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53">watch_rtc_register_periodic_callback</a> (ext_irq_cb_t callback, uint8_t frequency)</td></tr>
+<tr class="memdesc:gaeb4e67aa0062e39eaff465aeebc24f53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a callback that will be called at a configurable period. <a href="group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53">More...</a><br /></td></tr>
+<tr class="separator:gaeb4e67aa0062e39eaff465aeebc24f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e025485bb50e1c93abd4a185447705f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga4e025485bb50e1c93abd4a185447705f">watch_rtc_disable_periodic_callback</a> (uint8_t frequency)</td></tr>
+<tr class="memdesc:ga4e025485bb50e1c93abd4a185447705f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the tick callback for the given period. <a href="group__rtc.html#ga4e025485bb50e1c93abd4a185447705f">More...</a><br /></td></tr>
+<tr class="separator:ga4e025485bb50e1c93abd4a185447705f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0150da34307ba61e44f1a00aa90a7f0f"><td class="memItemLeft" align="right" valign="top"><a id="ga0150da34307ba61e44f1a00aa90a7f0f"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f">watch_rtc_disable_all_periodic_callbacks</a> (void)</td></tr>
+<tr class="memdesc:ga0150da34307ba61e44f1a00aa90a7f0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables all periodic callbacks, including the once-per-second tick callback. <br /></td></tr>
+<tr class="separator:ga0150da34307ba61e44f1a00aa90a7f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga98366c1b71e09089b441d704193bb0d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">__attribute__</a> ((deprecated(&quot;Use <a class="el" href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">watch_rtc_set_date_time</a> function instead&quot;))) void watch_set_date_time(struct calendar_date_time date_time)</td></tr>
+<tr class="memdesc:ga98366c1b71e09089b441d704193bb0d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the system date and time. <a href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">More...</a><br /></td></tr>
+<tr class="separator:ga98366c1b71e09089b441d704193bb0d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7ce8c01a25eb364efb7ae6ed6dbca373"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga7ce8c01a25eb364efb7ae6ed6dbca373">__attribute__</a> ((deprecated(&quot;Use the <a class="el" href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a> function instead&quot;))) void watch_get_date_time(struct calendar_date_time *date_time)</td></tr>
+<tr class="memdesc:ga7ce8c01a25eb364efb7ae6ed6dbca373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the system date and time in the provided struct. <a href="group__rtc.html#ga7ce8c01a25eb364efb7ae6ed6dbca373">More...</a><br /></td></tr>
+<tr class="separator:ga7ce8c01a25eb364efb7ae6ed6dbca373"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga811201003a3985a040f1f6bd3c5a69eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rtc.html#ga811201003a3985a040f1f6bd3c5a69eb">__attribute__</a> ((deprecated(&quot;Use the <a class="el" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a> function instead&quot;))) void watch_register_tick_callback(ext_irq_cb_t callback)</td></tr>
+<tr class="memdesc:ga811201003a3985a040f1f6bd3c5a69eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a "tick" callback that will be called once per second. <a href="group__rtc.html#ga811201003a3985a040f1f6bd3c5a69eb">More...</a><br /></td></tr>
+<tr class="separator:ga811201003a3985a040f1f6bd3c5a69eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the SAM L22's real-time clock peripheral, including date, time and alarm functions. </p>
+<p>The real-time clock is the only peripheral that main.c enables for you. It is the cornerstone of low power operation on the watch, and it is required for several key functions that we assume will be available, namely the wake from BACKUP mode and the callback on the ALARM button. It is also required for the operation of the 1 Hz tick interrupt, which you will most likely use to wake from STANDBY mode. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga7ce8c01a25eb364efb7ae6ed6dbca373"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7ce8c01a25eb364efb7ae6ed6dbca373">&#9670;&nbsp;</a></span>__attribute__() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">__attribute__ </td>
+ <td>(</td>
+ <td class="paramtype">(deprecated(&quot;Use the <a class="el" href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a> function instead&quot;))&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the system date and time in the provided struct. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>A pointer to a calendar_date_time struct. It will have with the correct date and time on return. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga811201003a3985a040f1f6bd3c5a69eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga811201003a3985a040f1f6bd3c5a69eb">&#9670;&nbsp;</a></span>__attribute__() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">__attribute__ </td>
+ <td>(</td>
+ <td class="paramtype">(deprecated(&quot;Use the <a class="el" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a> function instead&quot;))&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Registers a "tick" callback that will be called once per second. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">callback</td><td>The function you wish to have called when the clock ticks. If you pass in NULL, the tick interrupt will still be enabled, but no callback function will be called. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga98366c1b71e09089b441d704193bb0d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga98366c1b71e09089b441d704193bb0d4">&#9670;&nbsp;</a></span>__attribute__() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">__attribute__ </td>
+ <td>(</td>
+ <td class="paramtype">(deprecated(&quot;Use <a class="el" href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">watch_rtc_set_date_time</a> function instead&quot;))&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the system date and time. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>A struct representing the date and time you wish to set. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga4e025485bb50e1c93abd4a185447705f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4e025485bb50e1c93abd4a185447705f">&#9670;&nbsp;</a></span>watch_rtc_disable_periodic_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_rtc_disable_periodic_callback </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>frequency</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Disables the tick callback for the given period. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">frequency</td><td>The frequency of the tick you wish to disable, in Hz. <b>Must be a power of 2</b>, from 1 to 128. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga166b575563d39a0061dc9a28ad0309a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga166b575563d39a0061dc9a28ad0309a7">&#9670;&nbsp;</a></span>watch_rtc_get_date_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="unionwatch__date__time.html">watch_date_time</a> watch_rtc_get_date_time </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the date and time. </p>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="unionwatch__date__time.html">watch_date_time</a> with the current date and time, with a year value from 0-63 representing 2020-2083. </dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5" title="Sets the date and time.">watch_rtc_set_date_time</a> for notes about how the year is stored. </dd></dl>
+
+</div>
+</div>
+<a id="gaa5220d0d7f542a0bc6c9bef176d6d83b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa5220d0d7f542a0bc6c9bef176d6d83b">&#9670;&nbsp;</a></span>watch_rtc_register_alarm_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_rtc_register_alarm_callback </td>
+ <td>(</td>
+ <td class="paramtype">ext_irq_cb_t&#160;</td>
+ <td class="paramname"><em>callback</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td>
+ <td class="paramname"><em>alarm_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">watch_rtc_alarm_match&#160;</td>
+ <td class="paramname"><em>mask</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Registers an alarm callback that will be called when the RTC time matches the target time, as masked by the provided mask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">callback</td><td>The function you wish to have called when the alarm fires. If this value is NULL, the alarm interrupt will still be enabled, but no callback function will be called. </td></tr>
+ <tr><td class="paramname">alarm_time</td><td>The time that you wish to match. The date is currently ignored. </td></tr>
+ <tr><td class="paramname">mask</td><td>One of the values in watch_rtc_alarm_match indicating which values to check.</td></tr>
+ </table>
+ </dd>
+</dl>
+<p>The alarm interrupt is a versatile tool for scheduling events in the future, especially since it can wake the device from all sleep modes. The key to its versatility is the mask parameter. Suppose we set an alarm for midnight, 00:00:00.</p><ul>
+<li>if mask is ALARM_MATCH_SS, the alarm will fire every minute when the clock ticks to seconds == 0.</li>
+<li>with ALARM_MATCH_MMSS, the alarm will once an hour, at the top of each hour.</li>
+<li>with ALARM_MATCH_HHMMSS, the alarm will fire at midnight every day. In theory the SAM L22's alarm function can match on days, months and even years, but I have not had success with this yet; as such, I am omitting these options for now. </li>
+</ul>
+
+</div>
+</div>
+<a id="gaeb4e67aa0062e39eaff465aeebc24f53"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeb4e67aa0062e39eaff465aeebc24f53">&#9670;&nbsp;</a></span>watch_rtc_register_periodic_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_rtc_register_periodic_callback </td>
+ <td>(</td>
+ <td class="paramtype">ext_irq_cb_t&#160;</td>
+ <td class="paramname"><em>callback</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>frequency</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Registers a callback that will be called at a configurable period. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">callback</td><td>The function you wish to have called at the specified period. If you pass in NULL, the periodic interrupt will still be enabled, but no callback function will be called. </td></tr>
+ <tr><td class="paramname">frequency</td><td>The frequency of the tick in Hz. <b>Must be a power of 2</b>, from 1 to 128 inclusive. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>A 1 Hz tick (</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be" title="Registers a &quot;tick&quot; callback that will be called once per second.">watch_rtc_register_tick_callback</a>) is suitable for most applications, in that it gives you a chance to update the display once a second — an ideal update rate for a watch! If however you are displaying a value (such as an accelerometer output) that updates more frequently than once per second, you may want to tick at 16 or 32 Hz to update the screen more quickly. Just remember that the more frequent the tick, the more power your <a class="el" href="group__app.html" title="This section covers the functions that you will implement in your app.c file when designing a Sensor ...">Application Framework</a> will consume. Ideally you should enable the fast tick only when the user requires it (i.e. in response to an input event), and move back to the slow tick after some time.</dd></dl>
+<p>Also note that the RTC peripheral does not have sub-second resolution, so even if you set a 2 or 4 Hz interval, the system will not have any way of telling you where you are within a given second; watch_rtc_get_date_time will return the exact same timestamp until the second ticks over. </p>
+
+</div>
+</div>
+<a id="ga969ea57aaedf13d4950edbeacff3f2be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga969ea57aaedf13d4950edbeacff3f2be">&#9670;&nbsp;</a></span>watch_rtc_register_tick_callback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_rtc_register_tick_callback </td>
+ <td>(</td>
+ <td class="paramtype">ext_irq_cb_t&#160;</td>
+ <td class="paramname"><em>callback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Registers a "tick" callback that will be called once per second. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">callback</td><td>The function you wish to have called when the clock ticks. If you pass in NULL, the tick interrupt will still be enabled, but no callback function will be called. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>this is equivalent to calling watch_rtc_register_periodic_callback with a frequency of 1. It can be disabled with either <a class="el" href="group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d" title="Disables the tick callback for the given period.">watch_rtc_disable_tick_callback()</a> or watch_rtc_disable_periodic_callback(1), and will also be disabled when watch_rtc_disable_all_periodic_callbacks is called. </dd></dl>
+
+</div>
+</div>
+<a id="gadfcc143db9d71e95c2d2dc45732ab4e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadfcc143db9d71e95c2d2dc45732ab4e5">&#9670;&nbsp;</a></span>watch_rtc_set_date_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_rtc_set_date_time </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td>
+ <td class="paramname"><em>date_time</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the date and time. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>The date and time you wish to set, with a year value from 0-63 representing 2020-2083. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>The SAM L22 stores the year as six bits representing a value from 0 to 63. It treats this as a year offset from a reference year, which must be a leap year. Since 2020 was a leap year, and it allows useful dates through 2083, it is assumed that watch apps will use 2020 as the reference year; thus 1 means 2021, 2 means 2022, etc. <b>You will be responsible for handling this offset in your code</b>, if the calendar year is needed for timestamp calculation logic or display purposes. </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__slcd.html b/group__slcd.html
new file mode 100644
index 00000000..945e3fcc
--- /dev/null
+++ b/group__slcd.html
@@ -0,0 +1,541 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Segment LCD Display</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Segment LCD Display</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers functions related to the Segment LCD display driver, which is responsible for displaying strings of characters and indicators on the main watch display.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga12f90dd93f63366e5a08f161e5f6c9f5"><td class="memItemLeft" align="right" valign="top"><a id="ga12f90dd93f63366e5a08f161e5f6c9f5"></a>
+typedef enum <a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga12f90dd93f63366e5a08f161e5f6c9f5">WatchIndicatorSegment</a></td></tr>
+<tr class="memdesc:ga12f90dd93f63366e5a08f161e5f6c9f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">An enum listing the icons and indicators available on the watch. <br /></td></tr>
+<tr class="separator:ga12f90dd93f63366e5a08f161e5f6c9f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ga37a28bfc539ea2bb83107d59f77b20d2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> { <br />
+&#160;&#160;<a class="el" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292">WATCH_INDICATOR_SIGNAL</a> = 0
+, <a class="el" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3">WATCH_INDICATOR_BELL</a>
+, <a class="el" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f">WATCH_INDICATOR_PM</a>
+, <a class="el" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48">WATCH_INDICATOR_24H</a>
+, <br />
+&#160;&#160;<a class="el" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6">WATCH_INDICATOR_LAP</a>
+<br />
+ }</td></tr>
+<tr class="memdesc:ga37a28bfc539ea2bb83107d59f77b20d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">An enum listing the icons and indicators available on the watch. <a href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">More...</a><br /></td></tr>
+<tr class="separator:ga37a28bfc539ea2bb83107d59f77b20d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga0bb83dc413aeb321daef90d93f258033"><td class="memItemLeft" align="right" valign="top"><a id="ga0bb83dc413aeb321daef90d93f258033"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga0bb83dc413aeb321daef90d93f258033">watch_enable_display</a> (void)</td></tr>
+<tr class="memdesc:ga0bb83dc413aeb321daef90d93f258033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the Segment LCD display. Call this before attempting to set pixels or display strings. <br /></td></tr>
+<tr class="separator:ga0bb83dc413aeb321daef90d93f258033"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga47948dc2c7490b698810ef9914507e08"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga47948dc2c7490b698810ef9914507e08">watch_set_pixel</a> (uint8_t com, uint8_t seg)</td></tr>
+<tr class="memdesc:ga47948dc2c7490b698810ef9914507e08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a pixel. Use this to manually set a pixel with a given common and segment number. See <a href="segmap.html">segmap.html</a>. <a href="group__slcd.html#ga47948dc2c7490b698810ef9914507e08">More...</a><br /></td></tr>
+<tr class="separator:ga47948dc2c7490b698810ef9914507e08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd583acd4aa18b6377478bf95bdac9b0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0">watch_clear_pixel</a> (uint8_t com, uint8_t seg)</td></tr>
+<tr class="memdesc:gabd583acd4aa18b6377478bf95bdac9b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears a pixel. Use this to manually clear a pixel with a given common and segment number. See <a href="segmap.html">segmap.html</a>. <a href="group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0">More...</a><br /></td></tr>
+<tr class="separator:gabd583acd4aa18b6377478bf95bdac9b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad980e302e036abd7e26813de127139a4"><td class="memItemLeft" align="right" valign="top"><a id="gad980e302e036abd7e26813de127139a4"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#gad980e302e036abd7e26813de127139a4">watch_clear_display</a> (void)</td></tr>
+<tr class="memdesc:gad980e302e036abd7e26813de127139a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears all segments of the display, including incicators and the colon. <br /></td></tr>
+<tr class="separator:gad980e302e036abd7e26813de127139a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1983cf1e6a7d8feb1c7193a182ff683d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d">watch_display_string</a> (char *string, uint8_t position)</td></tr>
+<tr class="memdesc:ga1983cf1e6a7d8feb1c7193a182ff683d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Displays a string at the given position, starting from the top left. There are ten digits. A space in any position will clear that digit. <a href="group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d">More...</a><br /></td></tr>
+<tr class="separator:ga1983cf1e6a7d8feb1c7193a182ff683d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga021df8bd4ab27a78a812cbb0eadd26ee"><td class="memItemLeft" align="right" valign="top"><a id="ga021df8bd4ab27a78a812cbb0eadd26ee"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee">watch_set_colon</a> (void)</td></tr>
+<tr class="memdesc:ga021df8bd4ab27a78a812cbb0eadd26ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns the colon segment on. <br /></td></tr>
+<tr class="separator:ga021df8bd4ab27a78a812cbb0eadd26ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4bc4ab63f3214f475f71ed8c758f9782"><td class="memItemLeft" align="right" valign="top"><a id="ga4bc4ab63f3214f475f71ed8c758f9782"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782">watch_clear_colon</a> (void)</td></tr>
+<tr class="memdesc:ga4bc4ab63f3214f475f71ed8c758f9782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns the colon segment off. <br /></td></tr>
+<tr class="separator:ga4bc4ab63f3214f475f71ed8c758f9782"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa6640c8b372933de978e1066aed7e7fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd">watch_set_indicator</a> (<a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> indicator)</td></tr>
+<tr class="memdesc:gaa6640c8b372933de978e1066aed7e7fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an indicator on the LCD. Use this to turn on one of the indicator segments. <a href="group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd">More...</a><br /></td></tr>
+<tr class="separator:gaa6640c8b372933de978e1066aed7e7fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga54ee46bb4eb85e136a05af499889f50e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e">watch_clear_indicator</a> (<a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> indicator)</td></tr>
+<tr class="memdesc:ga54ee46bb4eb85e136a05af499889f50e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears an indicator on the LCD. Use this to turn off one of the indicator segments. <a href="group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e">More...</a><br /></td></tr>
+<tr class="separator:ga54ee46bb4eb85e136a05af499889f50e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e2bb1a59c0d8b38ee7e0ebbbd05b009"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009">watch_clear_all_indicators</a> (void)</td></tr>
+<tr class="memdesc:ga9e2bb1a59c0d8b38ee7e0ebbbd05b009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears all indicator segments. <a href="group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009">More...</a><br /></td></tr>
+<tr class="separator:ga9e2bb1a59c0d8b38ee7e0ebbbd05b009"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4c99ffbfa68aea0dce466db6e47879a5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5">watch_start_character_blink</a> (char character, uint32_t duration)</td></tr>
+<tr class="memdesc:ga4c99ffbfa68aea0dce466db6e47879a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blinks a single character in position 7. Does not affect other positions. <a href="group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5">More...</a><br /></td></tr>
+<tr class="separator:ga4c99ffbfa68aea0dce466db6e47879a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5d29760dd0998de98f8578ed3de5b1e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5">watch_stop_blink</a> (void)</td></tr>
+<tr class="memdesc:ga5d29760dd0998de98f8578ed3de5b1e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops and clears all blinking segments. <a href="group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5">More...</a><br /></td></tr>
+<tr class="separator:ga5d29760dd0998de98f8578ed3de5b1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70918c1acc2ed21512b69b83397303a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga70918c1acc2ed21512b69b83397303a4">watch_start_tick_animation</a> (uint32_t duration)</td></tr>
+<tr class="memdesc:ga70918c1acc2ed21512b69b83397303a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Begins a two-segment "tick-tock" animation in position 8. <a href="group__slcd.html#ga70918c1acc2ed21512b69b83397303a4">More...</a><br /></td></tr>
+<tr class="separator:ga70918c1acc2ed21512b69b83397303a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3764fb499e056f9a45588268f11be8a0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#ga3764fb499e056f9a45588268f11be8a0">watch_tick_animation_is_running</a> (void)</td></tr>
+<tr class="memdesc:ga3764fb499e056f9a45588268f11be8a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the tick animation is currently running. <a href="group__slcd.html#ga3764fb499e056f9a45588268f11be8a0">More...</a><br /></td></tr>
+<tr class="separator:ga3764fb499e056f9a45588268f11be8a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf2c52b4430b4e78a066b3a2b104d142a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a">watch_stop_tick_animation</a> (void)</td></tr>
+<tr class="memdesc:gaf2c52b4430b4e78a066b3a2b104d142a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the tick/tock animation and clears all animating segments. <a href="group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a">More...</a><br /></td></tr>
+<tr class="separator:gaf2c52b4430b4e78a066b3a2b104d142a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers functions related to the Segment LCD display driver, which is responsible for displaying strings of characters and indicators on the main watch display. </p>
+<p>The segment LCD controller consumes about 3 microamperes of power with no segments on, and about 4 microamperes with all segments on. There is also a slight power impact associated with updating the screen (about 1 microampere to update at 1 Hz). For the absolute lowest power operation, update the display only when its contents have changed, and disable the SLCD peripheral when the screen is not in use. For a map of all common and segment pins, see <a href="segmap.html">segmap.html</a>. You can hover over any segment in that diagram to view the common and segment pins associated with each segment of the display. </p>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="ga37a28bfc539ea2bb83107d59f77b20d2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga37a28bfc539ea2bb83107d59f77b20d2">&#9670;&nbsp;</a></span>WatchIndicatorSegment</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>An enum listing the icons and indicators available on the watch. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292"></a>WATCH_INDICATOR_SIGNAL&#160;</td><td class="fielddoc"><p>The hourly signal indicator; also useful for indicating that sensors are on. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3"></a>WATCH_INDICATOR_BELL&#160;</td><td class="fielddoc"><p>The small bell indicating that an alarm is set. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f"></a>WATCH_INDICATOR_PM&#160;</td><td class="fielddoc"><p>The PM indicator, indicating that a time is in the afternoon. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48"></a>WATCH_INDICATOR_24H&#160;</td><td class="fielddoc"><p>The 24H indicator, indicating that the watch is in a 24-hour mode. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6"></a>WATCH_INDICATOR_LAP&#160;</td><td class="fielddoc"><p>The LAP indicator; the F-91W uses this in its stopwatch UI. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga9e2bb1a59c0d8b38ee7e0ebbbd05b009"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009">&#9670;&nbsp;</a></span>watch_clear_all_indicators()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_clear_all_indicators </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Clears all indicator segments. </p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2" title="An enum listing the icons and indicators available on the watch.">WatchIndicatorSegment</a> </dd></dl>
+
+</div>
+</div>
+<a id="ga54ee46bb4eb85e136a05af499889f50e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga54ee46bb4eb85e136a05af499889f50e">&#9670;&nbsp;</a></span>watch_clear_indicator()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_clear_indicator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a>&#160;</td>
+ <td class="paramname"><em>indicator</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">
+
+<p>Clears an indicator on the LCD. Use this to turn off one of the indicator segments. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">indicator</td><td>One of the indicator segments from the enum. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2" title="An enum listing the icons and indicators available on the watch.">WatchIndicatorSegment</a> </dd></dl>
+
+</div>
+</div>
+<a id="gabd583acd4aa18b6377478bf95bdac9b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabd583acd4aa18b6377478bf95bdac9b0">&#9670;&nbsp;</a></span>watch_clear_pixel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_clear_pixel </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>com</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>seg</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">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Clears a pixel. Use this to manually clear a pixel with a given common and segment number. See <a href="segmap.html">segmap.html</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">com</td><td>the common pin, numbered from 0-2. </td></tr>
+ <tr><td class="paramname">seg</td><td>the segment pin, numbered from 0-23. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga1983cf1e6a7d8feb1c7193a182ff683d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1983cf1e6a7d8feb1c7193a182ff683d">&#9670;&nbsp;</a></span>watch_display_string()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_display_string </td>
+ <td>(</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>string</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>position</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Displays a string at the given position, starting from the top left. There are ten digits. A space in any position will clear that digit. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">string</td><td>A null-terminated string. </td></tr>
+ <tr><td class="paramname">position</td><td>The position where you wish to start displaying the string. The day of week digits are positions 0 and 1; the day of month digits are positions 2 and 3, and the main clock line occupies positions 4-9. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>This method does not clear the display; if for example you display a two-character string at position 0, positions 2-9 will retain whatever state they were previously displaying. </dd></dl>
+
+</div>
+</div>
+<a id="gaa6640c8b372933de978e1066aed7e7fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa6640c8b372933de978e1066aed7e7fd">&#9670;&nbsp;</a></span>watch_set_indicator()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_indicator </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a>&#160;</td>
+ <td class="paramname"><em>indicator</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">
+
+<p>Sets an indicator on the LCD. Use this to turn on one of the indicator segments. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">indicator</td><td>One of the indicator segments from the enum. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2" title="An enum listing the icons and indicators available on the watch.">WatchIndicatorSegment</a> </dd></dl>
+
+</div>
+</div>
+<a id="ga47948dc2c7490b698810ef9914507e08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga47948dc2c7490b698810ef9914507e08">&#9670;&nbsp;</a></span>watch_set_pixel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_set_pixel </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>com</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>seg</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">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Sets a pixel. Use this to manually set a pixel with a given common and segment number. See <a href="segmap.html">segmap.html</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">com</td><td>the common pin, numbered from 0-2. </td></tr>
+ <tr><td class="paramname">seg</td><td>the segment pin, numbered from 0-23. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga4c99ffbfa68aea0dce466db6e47879a5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4c99ffbfa68aea0dce466db6e47879a5">&#9670;&nbsp;</a></span>watch_start_character_blink()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_start_character_blink </td>
+ <td>(</td>
+ <td class="paramtype">char&#160;</td>
+ <td class="paramname"><em>character</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>duration</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Blinks a single character in position 7. Does not affect other positions. </p>
+<p>Six of the seven segments in position 7 (and only position 7) are capable of autonomous blinking. This blinking does not require any CPU resources, and will continue even in STANDBY and Sleep mode (but not Deep Sleep mode, since that mode turns off the LCD). </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">character</td><td>The character you wish to blink. </td></tr>
+ <tr><td class="paramname">duration</td><td>The duration of the on/off cycle in milliseconds, from 50 to ~4250 ms. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>Segment B of position 7 cannot blink autonomously, so not all characters will work well. Supported characters for blinking:<ul>
+<li>Punctuation: underscore, apostrophe, comma, hyphen, equals sign, tilde (top segment only)</li>
+<li>Numbers: 5, 6, ampersand (lowercase 7)</li>
+<li>Letters: b, C, c, E, F, h, i, L, l, n, o, S, t </li>
+</ul>
+</dd></dl>
+
+</div>
+</div>
+<a id="ga70918c1acc2ed21512b69b83397303a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga70918c1acc2ed21512b69b83397303a4">&#9670;&nbsp;</a></span>watch_start_tick_animation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_start_tick_animation </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>duration</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Begins a two-segment "tick-tock" animation in position 8. </p>
+<p>Six of the seven segments in position 8 (and only position 8) are capable of autonomous animation. This animation is very basic, and consists of moving a bit pattern forward or backward in a shift register whose positions map to fixed segments on the LCD. Given this constraint, an animation across all six segments does not make sense; so the watch library offers only a simple "tick/tock" in segments D and E. This animation does not require any CPU resources, and will continue even in STANDBY and Sleep mode (but not Deep Sleep mode, since that mode turns off the LCD). </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">duration</td><td>The duration of each frame in ms. 500 milliseconds produces a classic tick/tock. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga5d29760dd0998de98f8578ed3de5b1e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5d29760dd0998de98f8578ed3de5b1e5">&#9670;&nbsp;</a></span>watch_stop_blink()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_stop_blink </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Stops and clears all blinking segments. </p>
+<p>This will stop all blinking in position 7, and clear all segments in that digit. </p>
+
+</div>
+</div>
+<a id="gaf2c52b4430b4e78a066b3a2b104d142a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf2c52b4430b4e78a066b3a2b104d142a">&#9670;&nbsp;</a></span>watch_stop_tick_animation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void watch_stop_tick_animation </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Stops the tick/tock animation and clears all animating segments. </p>
+<p>This will stop the animation and clear all segments in position 8. </p>
+
+</div>
+</div>
+<a id="ga3764fb499e056f9a45588268f11be8a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3764fb499e056f9a45588268f11be8a0">&#9670;&nbsp;</a></span>watch_tick_animation_is_running()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool watch_tick_animation_is_running </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks if the tick animation is currently running. </p>
+<dl class="section return"><dt>Returns</dt><dd>true if the animation is running; false otherwise. </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/group__utility.html b/group__utility.html
new file mode 100644
index 00000000..701bd865
--- /dev/null
+++ b/group__utility.html
@@ -0,0 +1,347 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Utility 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">Utility Functions</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This section covers various useful functions that don't fit anywhere else.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga8f3d6ddf5f22bc61e1dc4b569009b127"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127">watch_utility_get_weekday</a> (<a class="el" href="unionwatch__date__time.html">watch_date_time</a> date_time)</td></tr>
+<tr class="memdesc:ga8f3d6ddf5f22bc61e1dc4b569009b127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a two-letter weekday for the given timestamp, suitable for display in positions 0-1 of the watch face. <a href="group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127">More...</a><br /></td></tr>
+<tr class="separator:ga8f3d6ddf5f22bc61e1dc4b569009b127"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga94f5cc404949bf4c0ac4bc4770ec8eda"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda">watch_utility_convert_to_unix_time</a> (uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset)</td></tr>
+<tr class="memdesc:ga94f5cc404949bf4c0ac4bc4770ec8eda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the UNIX time (seconds since 1970) for a given date/time in UTC. <a href="group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda">More...</a><br /></td></tr>
+<tr class="separator:ga94f5cc404949bf4c0ac4bc4770ec8eda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaffafef58755ff2704cf93fe1a0849a27"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utility.html#gaffafef58755ff2704cf93fe1a0849a27">watch_utility_date_time_to_unix_time</a> (<a class="el" href="unionwatch__date__time.html">watch_date_time</a> date_time, uint32_t utc_offset)</td></tr>
+<tr class="memdesc:gaffafef58755ff2704cf93fe1a0849a27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the UNIX time (seconds since 1970) for a given <a class="el" href="unionwatch__date__time.html">watch_date_time</a> struct. <a href="group__utility.html#gaffafef58755ff2704cf93fe1a0849a27">More...</a><br /></td></tr>
+<tr class="separator:gaffafef58755ff2704cf93fe1a0849a27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga396e56109234aaa00993c3dd84f3f43c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utility.html#ga396e56109234aaa00993c3dd84f3f43c">watch_utility_date_time_from_unix_time</a> (uint32_t timestamp, uint32_t utc_offset)</td></tr>
+<tr class="memdesc:ga396e56109234aaa00993c3dd84f3f43c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the UNIX time (seconds since 1970) for a given <a class="el" href="unionwatch__date__time.html">watch_date_time</a> struct. <a href="group__utility.html#ga396e56109234aaa00993c3dd84f3f43c">More...</a><br /></td></tr>
+<tr class="separator:ga396e56109234aaa00993c3dd84f3f43c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2753ff031c28202d23b0f3e80de2c920"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__utility.html#ga2753ff031c28202d23b0f3e80de2c920">watch_utility_thermistor_temperature</a> (uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance)</td></tr>
+<tr class="memdesc:ga2753ff031c28202d23b0f3e80de2c920"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a temperature in degrees Celsius for a given thermistor voltage divider circuit. <a href="group__utility.html#ga2753ff031c28202d23b0f3e80de2c920">More...</a><br /></td></tr>
+<tr class="separator:ga2753ff031c28202d23b0f3e80de2c920"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>This section covers various useful functions that don't fit anywhere else. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga94f5cc404949bf4c0ac4bc4770ec8eda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga94f5cc404949bf4c0ac4bc4770ec8eda">&#9670;&nbsp;</a></span>watch_utility_convert_to_unix_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t watch_utility_convert_to_unix_time </td>
+ <td>(</td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>year</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>month</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>day</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>hour</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>minute</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t&#160;</td>
+ <td class="paramname"><em>second</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>utc_offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the UNIX time (seconds since 1970) for a given date/time in UTC. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>The <a class="el" href="unionwatch__date__time.html">watch_date_time</a> that you wish to convert. </td></tr>
+ <tr><td class="paramname">year</td><td>The year of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">month</td><td>The month of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">day</td><td>The day of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">hour</td><td>The hour of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">minute</td><td>The minute of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">second</td><td>The second of the date you wish to convert. </td></tr>
+ <tr><td class="paramname">utc_offset</td><td>The number of seconds that date_time is offset from UTC, or 0 if the time is UTC. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A UNIX timestamp for the given date/time and UTC offset. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>Implemented by Wesley Ellis (tahnok) and based on BSD-licensed code by Josh Haberman: <a href="https://blog.reverberate.org/2020/05/12/optimizing-date-algorithms.html">https://blog.reverberate.org/2020/05/12/optimizing-date-algorithms.html</a> </dd></dl>
+
+</div>
+</div>
+<a id="ga396e56109234aaa00993c3dd84f3f43c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga396e56109234aaa00993c3dd84f3f43c">&#9670;&nbsp;</a></span>watch_utility_date_time_from_unix_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="unionwatch__date__time.html">watch_date_time</a> watch_utility_date_time_from_unix_time </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>timestamp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>utc_offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the UNIX time (seconds since 1970) for a given <a class="el" href="unionwatch__date__time.html">watch_date_time</a> struct. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">timestamp</td><td>The UNIX timestamp that you wish to convert. </td></tr>
+ <tr><td class="paramname">utc_offset</td><td>The number of seconds that you wish date_time to be offset from UTC. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="unionwatch__date__time.html">watch_date_time</a> for the given UNIX timestamp and UTC offset, or if outside the range that <a class="el" href="unionwatch__date__time.html">watch_date_time</a> can represent, a <a class="el" href="unionwatch__date__time.html">watch_date_time</a> with all fields set to 0. </dd></dl>
+<dl class="section note"><dt>Note</dt><dd>Adapted from MIT-licensed code from musl, Copyright © 2005-2014 Rich Felker, et al.: <a href="https://github.com/esmil/musl/blob/1cc81f5cb0df2b66a795ff0c26d7bbc4d16e13c6/src/time/__secs_to_tm.c">https://github.com/esmil/musl/blob/1cc81f5cb0df2b66a795ff0c26d7bbc4d16e13c6/src/time/__secs_to_tm.c</a> </dd></dl>
+
+</div>
+</div>
+<a id="gaffafef58755ff2704cf93fe1a0849a27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaffafef58755ff2704cf93fe1a0849a27">&#9670;&nbsp;</a></span>watch_utility_date_time_to_unix_time()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint32_t watch_utility_date_time_to_unix_time </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td>
+ <td class="paramname"><em>date_time</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>utc_offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the UNIX time (seconds since 1970) for a given <a class="el" href="unionwatch__date__time.html">watch_date_time</a> struct. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>The <a class="el" href="unionwatch__date__time.html">watch_date_time</a> that you wish to convert. </td></tr>
+ <tr><td class="paramname">utc_offset</td><td>The number of seconds that date_time is offset from UTC, or 0 if the time is UTC. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A UNIX timestamp for the given <a class="el" href="unionwatch__date__time.html">watch_date_time</a> and UTC offset. </dd></dl>
+
+</div>
+</div>
+<a id="ga8f3d6ddf5f22bc61e1dc4b569009b127"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8f3d6ddf5f22bc61e1dc4b569009b127">&#9670;&nbsp;</a></span>watch_utility_get_weekday()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char* watch_utility_get_weekday </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="unionwatch__date__time.html">watch_date_time</a>&#160;</td>
+ <td class="paramname"><em>date_time</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a two-letter weekday for the given timestamp, suitable for display in positions 0-1 of the watch face. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">date_time</td><td>The <a class="el" href="unionwatch__date__time.html">watch_date_time</a> whose weekday you want. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a id="ga2753ff031c28202d23b0f3e80de2c920"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2753ff031c28202d23b0f3e80de2c920">&#9670;&nbsp;</a></span>watch_utility_thermistor_temperature()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float watch_utility_thermistor_temperature </td>
+ <td>(</td>
+ <td class="paramtype">uint16_t&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>highside</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>b_coefficient</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>nominal_temperature</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>nominal_resistance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>series_resistance</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a temperature in degrees Celsius for a given thermistor voltage divider circuit. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">value</td><td>The raw analog reading from the thermistor pin (0-65535) </td></tr>
+ <tr><td class="paramname">highside</td><td>True if the thermistor is connected to VCC and the series resistor is connected to GND; false if the thermistor is connected to GND and the series resistor is connected to VCC. </td></tr>
+ <tr><td class="paramname">b_coefficient</td><td>From your thermistor's data sheet, the B25/85 coefficient. A typical value will be between 2000 and 5000. </td></tr>
+ <tr><td class="paramname">nominal_temperature</td><td>From your thermistor's data sheet, the temperature (in Celsius) at which the thermistor's resistance is at its nominal value. </td></tr>
+ <tr><td class="paramname">nominal_resistance</td><td>The thermistor's resistance at the nominal temperature. </td></tr>
+ <tr><td class="paramname">series_resistance</td><td>The value of the other resistor in the voltage divider. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>Ported from Adafruit's MIT-licensed CircuitPython thermistor code, (c) 2017 Scott Shawcroft: <a href="https://github.com/adafruit/Adafruit_CircuitPython_Thermistor/blob/main/adafruit_thermistor.py">https://github.com/adafruit/Adafruit_CircuitPython_Thermistor/blob/main/adafruit_thermistor.py</a> </dd></dl>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..42a25091
--- /dev/null
+++ b/index.html
@@ -0,0 +1,90 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Sensor Watch Documentation</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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="PageDoc"><div class="header">
+ <div class="headertitle">
+<div class="title">Sensor Watch Documentation </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This documentation covers most of the functions you will use to interact with the Sensor Watch hardware. It is divided into the following sections:</p><ul>
+<li><a class="el" href="group__app.html">Application Framework</a> - This section covers the functions that you will implement in your app.c file when designing a Sensor Watch app.</li>
+<li><a class="el" href="group__rtc.html">Real-Time Clock</a> - This section covers functions related to the SAM L22's real-time clock peripheral, including date, time and alarm functions.</li>
+<li><a class="el" href="group__slcd.html">Segment LCD Display</a> - This section covers functions related to the Segment LCD display driver, which is responsible for displaying strings of characters and indicators on the main watch display.</li>
+<li><a class="el" href="group__buttons.html">Buttons &amp; External Interrupts</a> - This section covers functions related to the three buttons: Light, Mode and Alarm.</li>
+<li><a class="el" href="group__led.html">LED Control</a> - This section covers functions related to the bi-color red/green LED mounted behind the LCD.</li>
+<li><a class="el" href="group__buzzer.html">Buzzer</a> - This section covers functions related to the piezo buzzer.</li>
+<li><a class="el" href="group__adc.html">Analog Input</a> - This section covers functions related to the SAM L22's analog-to-digital converter, as well as configuring and reading values from the five analog-capable pins on the 9-pin connector.</li>
+<li><a class="el" href="group__gpio.html">Digital Input and Output</a> - This section covers functions related to general-purpose input and output signals.</li>
+<li><a class="el" href="group__i2c.html">I2C Controller Driver</a> - This section covers functions related to the SAM L22's built-I2C driver, including configuring the I2C bus, putting values directly on the bus and reading data from registers on I2C devices.</li>
+<li><a class="el" href="group__debug.html">Debug UART</a> - This section covers functions related to the debug UART, available on pin D1 of the 9-pin connector.</li>
+<li><a class="el" href="group__deepsleep.html">Sleep Control</a> - This section covers functions related to preparing for and entering BACKUP mode, the deepest sleep mode available on the SAM L22. </li>
+</ul>
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/jquery.js b/jquery.js
new file mode 100644
index 00000000..103c32d7
--- /dev/null
+++ b/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ * jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file
diff --git a/menu.js b/menu.js
new file mode 100644
index 00000000..2fe2214f
--- /dev/null
+++ b/menu.js
@@ -0,0 +1,51 @@
+/*
+ @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;
+ }
+
+ $('#main-nav').append(makeTree(menudata,relPath));
+ $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+ if (searchEnabled) {
+ if (serverSide) {
+ $('#main-menu').append('<li style="float:right"><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></li>');
+ } else {
+ $('#main-menu').append('<li style="float:right"><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></li>');
+ }
+ }
+ $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/menudata.js b/menudata.js
new file mode 100644
index 00000000..e455f821
--- /dev/null
+++ b/menudata.js
@@ -0,0 +1,35 @@
+/*
+ @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:"Modules",url:"modules.html"},
+{text:"Data Structures",url:"annotated.html",children:[
+{text:"Data Structures",url:"annotated.html"},
+{text:"Data Structure Index",url:"classes.html"}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"},
+{text:"Globals",url:"globals.html",children:[
+{text:"All",url:"globals.html"},
+{text:"Functions",url:"globals_func.html"}]}]}]}
diff --git a/modules.html b/modules.html
new file mode 100644
index 00000000..2c1416ef
--- /dev/null
+++ b/modules.html
@@ -0,0 +1,92 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: Modules</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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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">Modules</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all modules:</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="group__adc.html" target="_self">Analog Input</a></td><td class="desc">This section covers functions related to the SAM L22's analog-to-digital converter, as well as configuring and reading values from the five analog-capable pins on the 9-pin connector </td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__app.html" target="_self">Application Framework</a></td><td class="desc">This section covers the functions that you will implement in your app.c file when designing a Sensor Watch app </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__buzzer.html" target="_self">Buzzer</a></td><td class="desc">This section covers functions related to the piezo buzzer embedded in the F-91W's back plate </td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__deepsleep.html" target="_self">Sleep Control</a></td><td class="desc">This section covers functions related to the various sleep modes available to the watch, including Sleep, Deep Sleep, and BACKUP mode </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__buttons.html" target="_self">Buttons &amp; External Interrupts</a></td><td class="desc">This section covers functions related to the three buttons: Light, Mode and Alarm, as well as external interrupts from devices on the nine-pin connector </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__gpio.html" target="_self">Digital Input and Output</a></td><td class="desc">This section covers functions related to general-purpose input and output signals </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__i2c.html" target="_self">I2C Controller Driver</a></td><td class="desc">This section covers functions related to the SAM L22's built-I2C driver, including configuring the I2C bus, putting values directly on the bus and reading data from registers on I2C devices </td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__led.html" target="_self">LED Control</a></td><td class="desc">This section covers functions related to the bi-color red/green LED mounted behind the LCD </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__rtc.html" target="_self">Real-Time Clock</a></td><td class="desc">This section covers functions related to the SAM L22's real-time clock peripheral, including date, time and alarm functions </td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__slcd.html" target="_self">Segment LCD Display</a></td><td class="desc">This section covers functions related to the Segment LCD display driver, which is responsible for displaying strings of characters and indicators on the main watch display </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__debug.html" target="_self">Debug UART</a></td><td class="desc">This section covers functions related to the debug UART, available on pin D1 of the 9-pin connector </td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__utility.html" target="_self">Utility Functions</a></td><td class="desc">This section covers various useful functions that don't fit anywhere else </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.1
+</small></address>
+</body>
+</html>
diff --git a/nav_f.png b/nav_f.png
new file mode 100644
index 00000000..72a58a52
--- /dev/null
+++ b/nav_f.png
Binary files differ
diff --git a/nav_g.png b/nav_g.png
new file mode 100644
index 00000000..2093a237
--- /dev/null
+++ b/nav_g.png
Binary files differ
diff --git a/nav_h.png b/nav_h.png
new file mode 100644
index 00000000..33389b10
--- /dev/null
+++ b/nav_h.png
Binary files differ
diff --git a/open.png b/open.png
new file mode 100644
index 00000000..30f75c7e
--- /dev/null
+++ b/open.png
Binary files differ
diff --git a/search/all_0.html b/search/all_0.html
new file mode 100644
index 00000000..1ec5b2d5
--- /dev/null
+++ b/search/all_0.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_0.js b/search/all_0.js
new file mode 100644
index 00000000..aaccd83e
--- /dev/null
+++ b/search/all_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['_5f_5fattribute_5f_5f_0',['__attribute__',['../group__rtc.html#ga98366c1b71e09089b441d704193bb0d4',1,'__attribute__((deprecated(&quot;Use watch_rtc_set_date_time function instead&quot;))) void watch_set_date_time(struct calendar_date_time date_time):&#160;watch_rtc.h'],['../group__rtc.html#ga7ce8c01a25eb364efb7ae6ed6dbca373',1,'__attribute__((deprecated(&quot;Use the watch_rtc_get_date_time function instead&quot;))) void watch_get_date_time(struct calendar_date_time *date_time):&#160;watch_rtc.h'],['../group__rtc.html#ga811201003a3985a040f1f6bd3c5a69eb',1,'__attribute__((deprecated(&quot;Use the watch_rtc_register_tick_callback function instead&quot;))) void watch_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.h'],['../group__debug.html#ga2014a199fbd2a6d7cecb24628576722c',1,'__attribute__((deprecated(&quot;Use printf to log debug messages over USB.&quot;))) void watch_enable_debug_uart(uint32_t baud):&#160;watch_uart.h']]],
+ ['_5fwatch_5frtc_5fis_5fenabled_1',['_watch_rtc_is_enabled',['../group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565',1,'_watch_rtc_is_enabled(void):&#160;watch_rtc.c'],['../group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565',1,'_watch_rtc_is_enabled(void):&#160;watch_rtc.c']]]
+];
diff --git a/search/all_1.html b/search/all_1.html
new file mode 100644
index 00000000..9f80e904
--- /dev/null
+++ b/search/all_1.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_1.js b/search/all_1.js
new file mode 100644
index 00000000..80718576
--- /dev/null
+++ b/search/all_1.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['analog_20input_2',['Analog Input',['../group__adc.html',1,'']]],
+ ['app_5finit_3',['app_init',['../group__app.html#gadd3190cf715f513666f4be42874d91e2',1,'watch_app.h']]],
+ ['app_5floop_4',['app_loop',['../group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a',1,'watch_app.h']]],
+ ['app_5fprepare_5ffor_5fstandby_5',['app_prepare_for_standby',['../group__app.html#gaee30a1614f76afc41117f7176fb30165',1,'watch_app.h']]],
+ ['app_5fsetup_6',['app_setup',['../group__app.html#gacce192accedbd296eb8d2182f8101f16',1,'watch_app.h']]],
+ ['app_5fwake_5ffrom_5fbackup_7',['app_wake_from_backup',['../group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a',1,'watch_app.h']]],
+ ['app_5fwake_5ffrom_5fstandby_8',['app_wake_from_standby',['../group__app.html#gacc7e7ff6108524545ab4183110811874',1,'watch_app.h']]],
+ ['application_20framework_9',['Application Framework',['../group__app.html',1,'']]]
+];
diff --git a/search/all_2.html b/search/all_2.html
new file mode 100644
index 00000000..02cfffc2
--- /dev/null
+++ b/search/all_2.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_2.js b/search/all_2.js
new file mode 100644
index 00000000..68657447
--- /dev/null
+++ b/search/all_2.js
@@ -0,0 +1,94 @@
+var searchData=
+[
+ ['buttons_20_26_20external_20interrupts_10',['Buttons &amp; External Interrupts',['../group__buttons.html',1,'']]],
+ ['buzzer_11',['Buzzer',['../group__buzzer.html',1,'']]],
+ ['buzzer_5fnote_5fa1_12',['BUZZER_NOTE_A1',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa1sharp_5fb1flat_13',['BUZZER_NOTE_A1SHARP_B1FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa2_14',['BUZZER_NOTE_A2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa2sharp_5fb2flat_15',['BUZZER_NOTE_A2SHARP_B2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa3_16',['BUZZER_NOTE_A3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa3sharp_5fb3flat_17',['BUZZER_NOTE_A3SHARP_B3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa4_18',['BUZZER_NOTE_A4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa4sharp_5fb4flat_19',['BUZZER_NOTE_A4SHARP_B4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa5_20',['BUZZER_NOTE_A5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa5sharp_5fb5flat_21',['BUZZER_NOTE_A5SHARP_B5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa6_22',['BUZZER_NOTE_A6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa6sharp_5fb6flat_23',['BUZZER_NOTE_A6SHARP_B6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa7_24',['BUZZER_NOTE_A7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa7sharp_5fb7flat_25',['BUZZER_NOTE_A7SHARP_B7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa8_26',['BUZZER_NOTE_A8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa8sharp_5fb8flat_27',['BUZZER_NOTE_A8SHARP_B8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb1_28',['BUZZER_NOTE_B1',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb2_29',['BUZZER_NOTE_B2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb3_30',['BUZZER_NOTE_B3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb4_31',['BUZZER_NOTE_B4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb5_32',['BUZZER_NOTE_B5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb6_33',['BUZZER_NOTE_B6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb7_34',['BUZZER_NOTE_B7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb8_35',['BUZZER_NOTE_B8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc2_36',['BUZZER_NOTE_C2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc2sharp_5fd2flat_37',['BUZZER_NOTE_C2SHARP_D2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc3_38',['BUZZER_NOTE_C3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc3sharp_5fd3flat_39',['BUZZER_NOTE_C3SHARP_D3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc4_40',['BUZZER_NOTE_C4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc4sharp_5fd4flat_41',['BUZZER_NOTE_C4SHARP_D4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc5_42',['BUZZER_NOTE_C5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc5sharp_5fd5flat_43',['BUZZER_NOTE_C5SHARP_D5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc6_44',['BUZZER_NOTE_C6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc6sharp_5fd6flat_45',['BUZZER_NOTE_C6SHARP_D6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc7_46',['BUZZER_NOTE_C7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc7sharp_5fd7flat_47',['BUZZER_NOTE_C7SHARP_D7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc8_48',['BUZZER_NOTE_C8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc8sharp_5fd8flat_49',['BUZZER_NOTE_C8SHARP_D8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd2_50',['BUZZER_NOTE_D2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd2sharp_5fe2flat_51',['BUZZER_NOTE_D2SHARP_E2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd3_52',['BUZZER_NOTE_D3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd3sharp_5fe3flat_53',['BUZZER_NOTE_D3SHARP_E3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd4_54',['BUZZER_NOTE_D4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd4sharp_5fe4flat_55',['BUZZER_NOTE_D4SHARP_E4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd5_56',['BUZZER_NOTE_D5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd5sharp_5fe5flat_57',['BUZZER_NOTE_D5SHARP_E5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd6_58',['BUZZER_NOTE_D6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd6sharp_5fe6flat_59',['BUZZER_NOTE_D6SHARP_E6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd7_60',['BUZZER_NOTE_D7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd7sharp_5fe7flat_61',['BUZZER_NOTE_D7SHARP_E7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd8_62',['BUZZER_NOTE_D8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd8sharp_5fe8flat_63',['BUZZER_NOTE_D8SHARP_E8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe2_64',['BUZZER_NOTE_E2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe3_65',['BUZZER_NOTE_E3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe4_66',['BUZZER_NOTE_E4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe5_67',['BUZZER_NOTE_E5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe6_68',['BUZZER_NOTE_E6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe7_69',['BUZZER_NOTE_E7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe8_70',['BUZZER_NOTE_E8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff2_71',['BUZZER_NOTE_F2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff2sharp_5fg2flat_72',['BUZZER_NOTE_F2SHARP_G2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff3_73',['BUZZER_NOTE_F3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff3sharp_5fg3flat_74',['BUZZER_NOTE_F3SHARP_G3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff4_75',['BUZZER_NOTE_F4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff4sharp_5fg4flat_76',['BUZZER_NOTE_F4SHARP_G4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff5_77',['BUZZER_NOTE_F5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff5sharp_5fg5flat_78',['BUZZER_NOTE_F5SHARP_G5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff6_79',['BUZZER_NOTE_F6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff6sharp_5fg6flat_80',['BUZZER_NOTE_F6SHARP_G6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff7_81',['BUZZER_NOTE_F7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff7sharp_5fg7flat_82',['BUZZER_NOTE_F7SHARP_G7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff8_83',['BUZZER_NOTE_F8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff8sharp_5fg8flat_84',['BUZZER_NOTE_F8SHARP_G8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg2_85',['BUZZER_NOTE_G2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg2sharp_5fa2flat_86',['BUZZER_NOTE_G2SHARP_A2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg3_87',['BUZZER_NOTE_G3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg3sharp_5fa3flat_88',['BUZZER_NOTE_G3SHARP_A3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg4_89',['BUZZER_NOTE_G4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg4sharp_5fa4flat_90',['BUZZER_NOTE_G4SHARP_A4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg5_91',['BUZZER_NOTE_G5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg5sharp_5fa5flat_92',['BUZZER_NOTE_G5SHARP_A5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg6_93',['BUZZER_NOTE_G6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg6sharp_5fa6flat_94',['BUZZER_NOTE_G6SHARP_A6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg7_95',['BUZZER_NOTE_G7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg7sharp_5fa7flat_96',['BUZZER_NOTE_G7SHARP_A7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg8_97',['BUZZER_NOTE_G8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg8sharp_5fa8flat_98',['BUZZER_NOTE_G8SHARP_A8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5frest_99',['BUZZER_NOTE_REST',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad',1,'watch_buzzer.h']]],
+ ['buzzernote_100',['BuzzerNote',['../group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6',1,'BuzzerNote():&#160;watch_buzzer.h'],['../group__buzzer.html#gafa12cf05739781d774798dab6b8a3fed',1,'BuzzerNote():&#160;watch_buzzer.h']]]
+];
diff --git a/search/all_3.html b/search/all_3.html
new file mode 100644
index 00000000..39767b85
--- /dev/null
+++ b/search/all_3.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_3.js b/search/all_3.js
new file mode 100644
index 00000000..6ab28a40
--- /dev/null
+++ b/search/all_3.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['debug_20uart_101',['Debug UART',['../group__debug.html',1,'']]],
+ ['digital_20input_20and_20output_102',['Digital Input and Output',['../group__gpio.html',1,'']]]
+];
diff --git a/search/all_4.html b/search/all_4.html
new file mode 100644
index 00000000..fc40463c
--- /dev/null
+++ b/search/all_4.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_4.js b/search/all_4.js
new file mode 100644
index 00000000..641951fb
--- /dev/null
+++ b/search/all_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['i2c_20controller_20driver_103',['I2C Controller Driver',['../group__i2c.html',1,'']]]
+];
diff --git a/search/all_5.html b/search/all_5.html
new file mode 100644
index 00000000..9dd9344b
--- /dev/null
+++ b/search/all_5.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_5.js b/search/all_5.js
new file mode 100644
index 00000000..fa61a8d1
--- /dev/null
+++ b/search/all_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['led_20control_104',['LED Control',['../group__led.html',1,'']]]
+];
diff --git a/search/all_6.html b/search/all_6.html
new file mode 100644
index 00000000..f1e516d7
--- /dev/null
+++ b/search/all_6.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_6.js b/search/all_6.js
new file mode 100644
index 00000000..95c492ca
--- /dev/null
+++ b/search/all_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['noteperiods_105',['NotePeriods',['../group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b',1,'NotePeriods():&#160;watch_buzzer.c'],['../group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b',1,'NotePeriods():&#160;watch_buzzer.c']]]
+];
diff --git a/search/all_7.html b/search/all_7.html
new file mode 100644
index 00000000..8ddbf6c8
--- /dev/null
+++ b/search/all_7.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_7.js b/search/all_7.js
new file mode 100644
index 00000000..d6174699
--- /dev/null
+++ b/search/all_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['real_2dtime_20clock_106',['Real-Time Clock',['../group__rtc.html',1,'']]]
+];
diff --git a/search/all_8.html b/search/all_8.html
new file mode 100644
index 00000000..83c55ae2
--- /dev/null
+++ b/search/all_8.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_8.js b/search/all_8.js
new file mode 100644
index 00000000..e6db514e
--- /dev/null
+++ b/search/all_8.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['segment_20lcd_20display_107',['Segment LCD Display',['../group__slcd.html',1,'']]],
+ ['sensor_20watch_20documentation_108',['Sensor Watch Documentation',['../index.html',1,'']]],
+ ['sleep_20control_109',['Sleep Control',['../group__deepsleep.html',1,'']]]
+];
diff --git a/search/all_9.html b/search/all_9.html
new file mode 100644
index 00000000..1e263c13
--- /dev/null
+++ b/search/all_9.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_9.js b/search/all_9.js
new file mode 100644
index 00000000..da194ae3
--- /dev/null
+++ b/search/all_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['utility_20functions_110',['Utility Functions',['../group__utility.html',1,'']]]
+];
diff --git a/search/all_a.html b/search/all_a.html
new file mode 100644
index 00000000..3a6cac10
--- /dev/null
+++ b/search/all_a.html
@@ -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.1"/>
+<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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/all_a.js b/search/all_a.js
new file mode 100644
index 00000000..424e66b9
--- /dev/null
+++ b/search/all_a.js
@@ -0,0 +1,91 @@
+var searchData=
+[
+ ['watch_2eh_111',['watch.h',['../watch_8h.html',1,'']]],
+ ['watch_5fbuzzer_5fplay_5fnote_112',['watch_buzzer_play_note',['../group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80',1,'watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms):&#160;watch_buzzer.c'],['../group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80',1,'watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms):&#160;watch_buzzer.c']]],
+ ['watch_5fclear_5fall_5findicators_113',['watch_clear_all_indicators',['../group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009',1,'watch_clear_all_indicators(void):&#160;watch_slcd.c'],['../group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009',1,'watch_clear_all_indicators(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fcolon_114',['watch_clear_colon',['../group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782',1,'watch_clear_colon(void):&#160;watch_slcd.c'],['../group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782',1,'watch_clear_colon(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fdisplay_115',['watch_clear_display',['../group__slcd.html#gad980e302e036abd7e26813de127139a4',1,'watch_clear_display(void):&#160;watch_slcd.c'],['../group__slcd.html#gad980e302e036abd7e26813de127139a4',1,'watch_clear_display(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5findicator_116',['watch_clear_indicator',['../group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e',1,'watch_clear_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c'],['../group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e',1,'watch_clear_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fpixel_117',['watch_clear_pixel',['../group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0',1,'watch_clear_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c'],['../group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0',1,'watch_clear_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c']]],
+ ['watch_5fdate_5ftime_118',['watch_date_time',['../unionwatch__date__time.html',1,'']]],
+ ['watch_5fdisable_5fadc_119',['watch_disable_adc',['../group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb',1,'watch_disable_adc(void):&#160;watch_adc.c'],['../group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb',1,'watch_disable_adc(void):&#160;watch_adc.c']]],
+ ['watch_5fdisable_5fanalog_5finput_120',['watch_disable_analog_input',['../group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31',1,'watch_disable_analog_input(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31',1,'watch_disable_analog_input(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fdisable_5fbuzzer_121',['watch_disable_buzzer',['../group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93',1,'watch_disable_buzzer(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93',1,'watch_disable_buzzer(void):&#160;watch_buzzer.c']]],
+ ['watch_5fdisable_5fdigital_5finput_122',['watch_disable_digital_input',['../group__gpio.html#gae58e015e96f9e9c42a664b69185265b9',1,'watch_disable_digital_input(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gae58e015e96f9e9c42a664b69185265b9',1,'watch_disable_digital_input(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fdisable_5fdigital_5foutput_123',['watch_disable_digital_output',['../group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d',1,'watch_disable_digital_output(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d',1,'watch_disable_digital_output(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fdisable_5fexternal_5finterrupts_124',['watch_disable_external_interrupts',['../group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084',1,'watch_disable_external_interrupts(void):&#160;watch_extint.c'],['../group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084',1,'watch_disable_external_interrupts(void):&#160;watch_extint.c']]],
+ ['watch_5fdisable_5fextwake_5finterrupt_125',['watch_disable_extwake_interrupt',['../group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe',1,'watch_disable_extwake_interrupt(uint8_t pin):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe',1,'watch_disable_extwake_interrupt(uint8_t pin):&#160;watch_deepsleep.c']]],
+ ['watch_5fdisable_5fi2c_126',['watch_disable_i2c',['../group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760',1,'watch_disable_i2c(void):&#160;watch_i2c.c'],['../group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760',1,'watch_disable_i2c(void):&#160;watch_i2c.c']]],
+ ['watch_5fdisable_5fleds_127',['watch_disable_leds',['../group__led.html#ga883bf171196fb5a7a57ef727dca6e04a',1,'watch_disable_leds(void):&#160;watch_led.c'],['../group__led.html#ga883bf171196fb5a7a57ef727dca6e04a',1,'watch_disable_leds(void):&#160;watch_led.c']]],
+ ['watch_5fdisplay_5fstring_128',['watch_display_string',['../group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d',1,'watch_display_string(char *string, uint8_t position):&#160;watch_slcd.c'],['../group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d',1,'watch_display_string(char *string, uint8_t position):&#160;watch_slcd.c']]],
+ ['watch_5fenable_5fadc_129',['watch_enable_adc',['../group__adc.html#ga908b5334af677309b03d7679d77aaa02',1,'watch_enable_adc(void):&#160;watch_adc.c'],['../group__adc.html#ga908b5334af677309b03d7679d77aaa02',1,'watch_enable_adc(void):&#160;watch_adc.c']]],
+ ['watch_5fenable_5fanalog_5finput_130',['watch_enable_analog_input',['../group__adc.html#ga30a491e9cab049a2812f75862a613aa8',1,'watch_enable_analog_input(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#ga30a491e9cab049a2812f75862a613aa8',1,'watch_enable_analog_input(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fenable_5fbuzzer_131',['watch_enable_buzzer',['../group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204',1,'watch_enable_buzzer(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204',1,'watch_enable_buzzer(void):&#160;watch_buzzer.c']]],
+ ['watch_5fenable_5fdigital_5finput_132',['watch_enable_digital_input',['../group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c',1,'watch_enable_digital_input(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c',1,'watch_enable_digital_input(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fdigital_5foutput_133',['watch_enable_digital_output',['../group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9',1,'watch_enable_digital_output(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9',1,'watch_enable_digital_output(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fdisplay_134',['watch_enable_display',['../group__slcd.html#ga0bb83dc413aeb321daef90d93f258033',1,'watch_enable_display(void):&#160;watch_slcd.c'],['../group__slcd.html#ga0bb83dc413aeb321daef90d93f258033',1,'watch_enable_display(void):&#160;watch_slcd.c']]],
+ ['watch_5fenable_5fexternal_5finterrupts_135',['watch_enable_external_interrupts',['../group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2',1,'watch_enable_external_interrupts(void):&#160;watch_extint.c'],['../group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2',1,'watch_enable_external_interrupts(void):&#160;watch_extint.c']]],
+ ['watch_5fenable_5fi2c_136',['watch_enable_i2c',['../group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b',1,'watch_enable_i2c(void):&#160;watch_i2c.c'],['../group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b',1,'watch_enable_i2c(void):&#160;watch_i2c.c']]],
+ ['watch_5fenable_5fleds_137',['watch_enable_leds',['../group__led.html#ga86ce31dc95137ed41983fb7c6af5502a',1,'watch_enable_leds(void):&#160;watch_led.c'],['../group__led.html#ga86ce31dc95137ed41983fb7c6af5502a',1,'watch_enable_leds(void):&#160;watch_led.c']]],
+ ['watch_5fenable_5fpull_5fdown_138',['watch_enable_pull_down',['../group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9',1,'watch_enable_pull_down(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9',1,'watch_enable_pull_down(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fpull_5fup_139',['watch_enable_pull_up',['../group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d',1,'watch_enable_pull_up(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d',1,'watch_enable_pull_up(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenter_5fbackup_5fmode_140',['watch_enter_backup_mode',['../group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef',1,'watch_enter_backup_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef',1,'watch_enter_backup_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fenter_5fdeep_5fsleep_5fmode_141',['watch_enter_deep_sleep_mode',['../group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451',1,'watch_enter_deep_sleep_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451',1,'watch_enter_deep_sleep_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fenter_5fsleep_5fmode_142',['watch_enter_sleep_mode',['../group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b',1,'watch_enter_sleep_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b',1,'watch_enter_sleep_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fget_5fanalog_5fpin_5flevel_143',['watch_get_analog_pin_level',['../group__adc.html#ga2064244f68cff87a1df08f6b07183069',1,'watch_get_analog_pin_level(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#ga2064244f68cff87a1df08f6b07183069',1,'watch_get_analog_pin_level(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fget_5fbackup_5fdata_144',['watch_get_backup_data',['../group__deepsleep.html#ga2de1f1012475654c4741f60808581196',1,'watch_get_backup_data(uint8_t reg):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga2de1f1012475654c4741f60808581196',1,'watch_get_backup_data(uint8_t reg):&#160;watch_deepsleep.c']]],
+ ['watch_5fget_5fpin_5flevel_145',['watch_get_pin_level',['../group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879',1,'watch_get_pin_level(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879',1,'watch_get_pin_level(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fget_5fvcc_5fvoltage_146',['watch_get_vcc_voltage',['../group__adc.html#ga465fcb058492d350d29fe4403df85b14',1,'watch_get_vcc_voltage(void):&#160;watch_adc.c'],['../group__adc.html#ga465fcb058492d350d29fe4403df85b14',1,'watch_get_vcc_voltage(void):&#160;watch_adc.c']]],
+ ['watch_5fi2c_5fread16_147',['watch_i2c_read16',['../group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e',1,'watch_i2c_read16(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e',1,'watch_i2c_read16(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread24_148',['watch_i2c_read24',['../group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8',1,'watch_i2c_read24(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8',1,'watch_i2c_read24(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread32_149',['watch_i2c_read32',['../group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651',1,'watch_i2c_read32(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651',1,'watch_i2c_read32(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread8_150',['watch_i2c_read8',['../group__i2c.html#gac5644140ddda98198f9d5deabbeaf781',1,'watch_i2c_read8(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#gac5644140ddda98198f9d5deabbeaf781',1,'watch_i2c_read8(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5freceive_151',['watch_i2c_receive',['../group__i2c.html#ga426971387b87286c8decca7342c06b4b',1,'watch_i2c_receive(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c'],['../group__i2c.html#ga426971387b87286c8decca7342c06b4b',1,'watch_i2c_receive(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fsend_152',['watch_i2c_send',['../group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08',1,'watch_i2c_send(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c'],['../group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08',1,'watch_i2c_send(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fwrite8_153',['watch_i2c_write8',['../group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad',1,'watch_i2c_write8(int16_t addr, uint8_t reg, uint8_t data):&#160;watch_i2c.c'],['../group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad',1,'watch_i2c_write8(int16_t addr, uint8_t reg, uint8_t data):&#160;watch_i2c.c']]],
+ ['watch_5findicator_5f24h_154',['WATCH_INDICATOR_24H',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fbell_155',['WATCH_INDICATOR_BELL',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3',1,'watch_slcd.h']]],
+ ['watch_5findicator_5flap_156',['WATCH_INDICATOR_LAP',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fpm_157',['WATCH_INDICATOR_PM',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fsignal_158',['WATCH_INDICATOR_SIGNAL',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292',1,'watch_slcd.h']]],
+ ['watch_5finterrupt_5ftrigger_159',['watch_interrupt_trigger',['../group__buttons.html#gadee2b304ce34a8aec5aedabd75934c1b',1,'watch_interrupt_trigger():&#160;watch_extint.h'],['../group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8',1,'watch_interrupt_trigger():&#160;watch_extint.h']]],
+ ['watch_5fis_5fbattery_5flow_160',['watch_is_battery_low',['../watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d',1,'watch.c']]],
+ ['watch_5fregister_5fextwake_5fcallback_161',['watch_register_extwake_callback',['../group__deepsleep.html#gacad726423f5f38697c87474ab25244ca',1,'watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool level):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gacad726423f5f38697c87474ab25244ca',1,'watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool level):&#160;watch_deepsleep.c']]],
+ ['watch_5fregister_5finterrupt_5fcallback_162',['watch_register_interrupt_callback',['../group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c',1,'watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger):&#160;watch_extint.c'],['../group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c',1,'watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger):&#160;watch_extint.c']]],
+ ['watch_5frtc_5fdisable_5falarm_5fcallback_163',['watch_rtc_disable_alarm_callback',['../group__rtc.html#ga836cade77c24e93c06bf534eaded55bf',1,'watch_rtc_disable_alarm_callback(void):&#160;watch_rtc.c'],['../group__rtc.html#ga836cade77c24e93c06bf534eaded55bf',1,'watch_rtc_disable_alarm_callback(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5fall_5fperiodic_5fcallbacks_164',['watch_rtc_disable_all_periodic_callbacks',['../group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f',1,'watch_rtc_disable_all_periodic_callbacks(void):&#160;watch_rtc.c'],['../group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f',1,'watch_rtc_disable_all_periodic_callbacks(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5fperiodic_5fcallback_165',['watch_rtc_disable_periodic_callback',['../group__rtc.html#ga4e025485bb50e1c93abd4a185447705f',1,'watch_rtc_disable_periodic_callback(uint8_t frequency):&#160;watch_rtc.c'],['../group__rtc.html#ga4e025485bb50e1c93abd4a185447705f',1,'watch_rtc_disable_periodic_callback(uint8_t frequency):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5ftick_5fcallback_166',['watch_rtc_disable_tick_callback',['../group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d',1,'watch_rtc_disable_tick_callback(void):&#160;watch_rtc.c'],['../group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d',1,'watch_rtc_disable_tick_callback(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fget_5fdate_5ftime_167',['watch_rtc_get_date_time',['../group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7',1,'watch_rtc_get_date_time(void):&#160;watch_rtc.c'],['../group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7',1,'watch_rtc_get_date_time(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5falarm_5fcallback_168',['watch_rtc_register_alarm_callback',['../group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b',1,'watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask):&#160;watch_rtc.c'],['../group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b',1,'watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5fperiodic_5fcallback_169',['watch_rtc_register_periodic_callback',['../group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53',1,'watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency):&#160;watch_rtc.c'],['../group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53',1,'watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5ftick_5fcallback_170',['watch_rtc_register_tick_callback',['../group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be',1,'watch_rtc_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.c'],['../group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be',1,'watch_rtc_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fset_5fdate_5ftime_171',['watch_rtc_set_date_time',['../group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5',1,'watch_rtc_set_date_time(watch_date_time date_time):&#160;watch_rtc.c'],['../group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5',1,'watch_rtc_set_date_time(watch_date_time date_time):&#160;watch_rtc.c']]],
+ ['watch_5fset_5fanalog_5fnum_5fsamples_172',['watch_set_analog_num_samples',['../group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d',1,'watch_set_analog_num_samples(uint16_t samples):&#160;watch_adc.c'],['../group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d',1,'watch_set_analog_num_samples(uint16_t samples):&#160;watch_adc.c']]],
+ ['watch_5fset_5fanalog_5freference_5fvoltage_173',['watch_set_analog_reference_voltage',['../group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93',1,'watch_set_analog_reference_voltage(watch_adc_reference_voltage reference):&#160;watch_adc.c'],['../group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93',1,'watch_set_analog_reference_voltage(watch_adc_reference_voltage reference):&#160;watch_adc.c']]],
+ ['watch_5fset_5fanalog_5fsampling_5flength_174',['watch_set_analog_sampling_length',['../group__adc.html#gae9f9ed34e8752e211c1692af473a88dc',1,'watch_set_analog_sampling_length(uint8_t cycles):&#160;watch_adc.c'],['../group__adc.html#gae9f9ed34e8752e211c1692af473a88dc',1,'watch_set_analog_sampling_length(uint8_t cycles):&#160;watch_adc.c']]],
+ ['watch_5fset_5fbuzzer_5foff_175',['watch_set_buzzer_off',['../group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4',1,'watch_set_buzzer_off(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4',1,'watch_set_buzzer_off(void):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fbuzzer_5fon_176',['watch_set_buzzer_on',['../group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98',1,'watch_set_buzzer_on(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98',1,'watch_set_buzzer_on(void):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fbuzzer_5fperiod_177',['watch_set_buzzer_period',['../group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9',1,'watch_set_buzzer_period(uint32_t period):&#160;watch_buzzer.c'],['../group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9',1,'watch_set_buzzer_period(uint32_t period):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fcolon_178',['watch_set_colon',['../group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee',1,'watch_set_colon(void):&#160;watch_slcd.c'],['../group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee',1,'watch_set_colon(void):&#160;watch_slcd.c']]],
+ ['watch_5fset_5findicator_179',['watch_set_indicator',['../group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd',1,'watch_set_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c'],['../group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd',1,'watch_set_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c']]],
+ ['watch_5fset_5fled_5fcolor_180',['watch_set_led_color',['../group__led.html#ga042bcc9220ab05d1de8389cf0067511b',1,'watch_set_led_color(uint8_t red, uint8_t green):&#160;watch_led.c'],['../group__led.html#ga042bcc9220ab05d1de8389cf0067511b',1,'watch_set_led_color(uint8_t red, uint8_t green):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fgreen_181',['watch_set_led_green',['../group__led.html#gab01a29900ddc5315c0e752e63d748f41',1,'watch_set_led_green(void):&#160;watch_led.c'],['../group__led.html#gab01a29900ddc5315c0e752e63d748f41',1,'watch_set_led_green(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5foff_182',['watch_set_led_off',['../group__led.html#ga8619f040ff7364285398412a4c420cae',1,'watch_set_led_off(void):&#160;watch_led.c'],['../group__led.html#ga8619f040ff7364285398412a4c420cae',1,'watch_set_led_off(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fred_183',['watch_set_led_red',['../group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40',1,'watch_set_led_red(void):&#160;watch_led.c'],['../group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40',1,'watch_set_led_red(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fyellow_184',['watch_set_led_yellow',['../group__led.html#ga51ba53c3281ad8724d98af27eacc3de0',1,'watch_set_led_yellow(void):&#160;watch_led.c'],['../group__led.html#ga51ba53c3281ad8724d98af27eacc3de0',1,'watch_set_led_yellow(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fpin_5flevel_185',['watch_set_pin_level',['../group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6',1,'watch_set_pin_level(const uint8_t pin, const bool level):&#160;watch_gpio.c'],['../group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6',1,'watch_set_pin_level(const uint8_t pin, const bool level):&#160;watch_gpio.c']]],
+ ['watch_5fset_5fpixel_186',['watch_set_pixel',['../group__slcd.html#ga47948dc2c7490b698810ef9914507e08',1,'watch_set_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c'],['../group__slcd.html#ga47948dc2c7490b698810ef9914507e08',1,'watch_set_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c']]],
+ ['watch_5fstart_5fcharacter_5fblink_187',['watch_start_character_blink',['../group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5',1,'watch_start_character_blink(char character, uint32_t duration):&#160;watch_slcd.c'],['../group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5',1,'watch_start_character_blink(char character, uint32_t duration):&#160;watch_slcd.c']]],
+ ['watch_5fstart_5ftick_5fanimation_188',['watch_start_tick_animation',['../group__slcd.html#ga70918c1acc2ed21512b69b83397303a4',1,'watch_start_tick_animation(uint32_t duration):&#160;watch_slcd.c'],['../group__slcd.html#ga70918c1acc2ed21512b69b83397303a4',1,'watch_start_tick_animation(uint32_t duration):&#160;watch_slcd.c']]],
+ ['watch_5fstop_5fblink_189',['watch_stop_blink',['../group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5',1,'watch_stop_blink(void):&#160;watch_slcd.c'],['../group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5',1,'watch_stop_blink(void):&#160;watch_slcd.c']]],
+ ['watch_5fstop_5ftick_5fanimation_190',['watch_stop_tick_animation',['../group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a',1,'watch_stop_tick_animation(void):&#160;watch_slcd.c'],['../group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a',1,'watch_stop_tick_animation(void):&#160;watch_slcd.c']]],
+ ['watch_5fstore_5fbackup_5fdata_191',['watch_store_backup_data',['../group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846',1,'watch_store_backup_data(uint32_t data, uint8_t reg):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846',1,'watch_store_backup_data(uint32_t data, uint8_t reg):&#160;watch_deepsleep.c']]],
+ ['watch_5ftick_5fanimation_5fis_5frunning_192',['watch_tick_animation_is_running',['../group__slcd.html#ga3764fb499e056f9a45588268f11be8a0',1,'watch_tick_animation_is_running(void):&#160;watch_slcd.c'],['../group__slcd.html#ga3764fb499e056f9a45588268f11be8a0',1,'watch_tick_animation_is_running(void):&#160;watch_slcd.c']]],
+ ['watch_5futility_5fconvert_5fto_5funix_5ftime_193',['watch_utility_convert_to_unix_time',['../group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda',1,'watch_utility_convert_to_unix_time(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda',1,'watch_utility_convert_to_unix_time(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fdate_5ftime_5ffrom_5funix_5ftime_194',['watch_utility_date_time_from_unix_time',['../group__utility.html#ga396e56109234aaa00993c3dd84f3f43c',1,'watch_utility_date_time_from_unix_time(uint32_t timestamp, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#ga396e56109234aaa00993c3dd84f3f43c',1,'watch_utility_date_time_from_unix_time(uint32_t timestamp, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fdate_5ftime_5fto_5funix_5ftime_195',['watch_utility_date_time_to_unix_time',['../group__utility.html#gaffafef58755ff2704cf93fe1a0849a27',1,'watch_utility_date_time_to_unix_time(watch_date_time date_time, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#gaffafef58755ff2704cf93fe1a0849a27',1,'watch_utility_date_time_to_unix_time(watch_date_time date_time, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fget_5fweekday_196',['watch_utility_get_weekday',['../group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127',1,'watch_utility_get_weekday(watch_date_time date_time):&#160;watch_utility.c'],['../group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127',1,'watch_utility_get_weekday(watch_date_time date_time):&#160;watch_utility.c']]],
+ ['watch_5futility_5fthermistor_5ftemperature_197',['watch_utility_thermistor_temperature',['../group__utility.html#ga2753ff031c28202d23b0f3e80de2c920',1,'watch_utility_thermistor_temperature(uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance):&#160;watch_utility.c'],['../group__utility.html#ga2753ff031c28202d23b0f3e80de2c920',1,'watch_utility_thermistor_temperature(uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance):&#160;watch_utility.c']]],
+ ['watchindicatorsegment_198',['WatchIndicatorSegment',['../group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2',1,'WatchIndicatorSegment():&#160;watch_slcd.h'],['../group__slcd.html#ga12f90dd93f63366e5a08f161e5f6c9f5',1,'WatchIndicatorSegment():&#160;watch_slcd.h']]]
+];
diff --git a/search/classes_0.html b/search/classes_0.html
new file mode 100644
index 00000000..af8159ee
--- /dev/null
+++ b/search/classes_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/classes_0.js b/search/classes_0.js
new file mode 100644
index 00000000..90bf16ce
--- /dev/null
+++ b/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['watch_5fdate_5ftime_199',['watch_date_time',['../unionwatch__date__time.html',1,'']]]
+];
diff --git a/search/close.svg b/search/close.svg
new file mode 100644
index 00000000..a933eea1
--- /dev/null
+++ b/search/close.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 11 11"
+ height="11"
+ width="11"
+ id="svg2"
+ version="1.1">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <path
+ id="path12"
+ d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+ style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
diff --git a/search/enums_0.html b/search/enums_0.html
new file mode 100644
index 00000000..141fff57
--- /dev/null
+++ b/search/enums_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/enums_0.js b/search/enums_0.js
new file mode 100644
index 00000000..3e1c7077
--- /dev/null
+++ b/search/enums_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['buzzernote_292',['BuzzerNote',['../group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6',1,'watch_buzzer.h']]]
+];
diff --git a/search/enums_1.html b/search/enums_1.html
new file mode 100644
index 00000000..d29f3b16
--- /dev/null
+++ b/search/enums_1.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/enums_1.js b/search/enums_1.js
new file mode 100644
index 00000000..8354eda6
--- /dev/null
+++ b/search/enums_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['watch_5finterrupt_5ftrigger_293',['watch_interrupt_trigger',['../group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8',1,'watch_extint.h']]],
+ ['watchindicatorsegment_294',['WatchIndicatorSegment',['../group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2',1,'watch_slcd.h']]]
+];
diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html
new file mode 100644
index 00000000..0d131d95
--- /dev/null
+++ b/search/enumvalues_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js
new file mode 100644
index 00000000..cfd71079
--- /dev/null
+++ b/search/enumvalues_0.js
@@ -0,0 +1,91 @@
+var searchData=
+[
+ ['buzzer_5fnote_5fa1_295',['BUZZER_NOTE_A1',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa1sharp_5fb1flat_296',['BUZZER_NOTE_A1SHARP_B1FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa2_297',['BUZZER_NOTE_A2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa2sharp_5fb2flat_298',['BUZZER_NOTE_A2SHARP_B2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa3_299',['BUZZER_NOTE_A3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa3sharp_5fb3flat_300',['BUZZER_NOTE_A3SHARP_B3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa4_301',['BUZZER_NOTE_A4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa4sharp_5fb4flat_302',['BUZZER_NOTE_A4SHARP_B4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa5_303',['BUZZER_NOTE_A5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa5sharp_5fb5flat_304',['BUZZER_NOTE_A5SHARP_B5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa6_305',['BUZZER_NOTE_A6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa6sharp_5fb6flat_306',['BUZZER_NOTE_A6SHARP_B6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa7_307',['BUZZER_NOTE_A7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa7sharp_5fb7flat_308',['BUZZER_NOTE_A7SHARP_B7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa8_309',['BUZZER_NOTE_A8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fa8sharp_5fb8flat_310',['BUZZER_NOTE_A8SHARP_B8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb1_311',['BUZZER_NOTE_B1',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb2_312',['BUZZER_NOTE_B2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb3_313',['BUZZER_NOTE_B3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb4_314',['BUZZER_NOTE_B4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb5_315',['BUZZER_NOTE_B5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb6_316',['BUZZER_NOTE_B6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb7_317',['BUZZER_NOTE_B7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fb8_318',['BUZZER_NOTE_B8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc2_319',['BUZZER_NOTE_C2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc2sharp_5fd2flat_320',['BUZZER_NOTE_C2SHARP_D2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc3_321',['BUZZER_NOTE_C3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc3sharp_5fd3flat_322',['BUZZER_NOTE_C3SHARP_D3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc4_323',['BUZZER_NOTE_C4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc4sharp_5fd4flat_324',['BUZZER_NOTE_C4SHARP_D4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc5_325',['BUZZER_NOTE_C5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc5sharp_5fd5flat_326',['BUZZER_NOTE_C5SHARP_D5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc6_327',['BUZZER_NOTE_C6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc6sharp_5fd6flat_328',['BUZZER_NOTE_C6SHARP_D6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc7_329',['BUZZER_NOTE_C7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc7sharp_5fd7flat_330',['BUZZER_NOTE_C7SHARP_D7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc8_331',['BUZZER_NOTE_C8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fc8sharp_5fd8flat_332',['BUZZER_NOTE_C8SHARP_D8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd2_333',['BUZZER_NOTE_D2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd2sharp_5fe2flat_334',['BUZZER_NOTE_D2SHARP_E2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd3_335',['BUZZER_NOTE_D3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd3sharp_5fe3flat_336',['BUZZER_NOTE_D3SHARP_E3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd4_337',['BUZZER_NOTE_D4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd4sharp_5fe4flat_338',['BUZZER_NOTE_D4SHARP_E4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd5_339',['BUZZER_NOTE_D5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd5sharp_5fe5flat_340',['BUZZER_NOTE_D5SHARP_E5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd6_341',['BUZZER_NOTE_D6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd6sharp_5fe6flat_342',['BUZZER_NOTE_D6SHARP_E6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd7_343',['BUZZER_NOTE_D7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd7sharp_5fe7flat_344',['BUZZER_NOTE_D7SHARP_E7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd8_345',['BUZZER_NOTE_D8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fd8sharp_5fe8flat_346',['BUZZER_NOTE_D8SHARP_E8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe2_347',['BUZZER_NOTE_E2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe3_348',['BUZZER_NOTE_E3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe4_349',['BUZZER_NOTE_E4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe5_350',['BUZZER_NOTE_E5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe6_351',['BUZZER_NOTE_E6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe7_352',['BUZZER_NOTE_E7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fe8_353',['BUZZER_NOTE_E8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff2_354',['BUZZER_NOTE_F2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff2sharp_5fg2flat_355',['BUZZER_NOTE_F2SHARP_G2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff3_356',['BUZZER_NOTE_F3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff3sharp_5fg3flat_357',['BUZZER_NOTE_F3SHARP_G3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff4_358',['BUZZER_NOTE_F4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff4sharp_5fg4flat_359',['BUZZER_NOTE_F4SHARP_G4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff5_360',['BUZZER_NOTE_F5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff5sharp_5fg5flat_361',['BUZZER_NOTE_F5SHARP_G5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff6_362',['BUZZER_NOTE_F6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff6sharp_5fg6flat_363',['BUZZER_NOTE_F6SHARP_G6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff7_364',['BUZZER_NOTE_F7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff7sharp_5fg7flat_365',['BUZZER_NOTE_F7SHARP_G7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff8_366',['BUZZER_NOTE_F8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5ff8sharp_5fg8flat_367',['BUZZER_NOTE_F8SHARP_G8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg2_368',['BUZZER_NOTE_G2',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg2sharp_5fa2flat_369',['BUZZER_NOTE_G2SHARP_A2FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg3_370',['BUZZER_NOTE_G3',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg3sharp_5fa3flat_371',['BUZZER_NOTE_G3SHARP_A3FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg4_372',['BUZZER_NOTE_G4',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg4sharp_5fa4flat_373',['BUZZER_NOTE_G4SHARP_A4FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg5_374',['BUZZER_NOTE_G5',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg5sharp_5fa5flat_375',['BUZZER_NOTE_G5SHARP_A5FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg6_376',['BUZZER_NOTE_G6',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg6sharp_5fa6flat_377',['BUZZER_NOTE_G6SHARP_A6FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg7_378',['BUZZER_NOTE_G7',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg7sharp_5fa7flat_379',['BUZZER_NOTE_G7SHARP_A7FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg8_380',['BUZZER_NOTE_G8',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5fg8sharp_5fa8flat_381',['BUZZER_NOTE_G8SHARP_A8FLAT',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436',1,'watch_buzzer.h']]],
+ ['buzzer_5fnote_5frest_382',['BUZZER_NOTE_REST',['../group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad',1,'watch_buzzer.h']]]
+];
diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html
new file mode 100644
index 00000000..cd9187ab
--- /dev/null
+++ b/search/enumvalues_1.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js
new file mode 100644
index 00000000..787a6f30
--- /dev/null
+++ b/search/enumvalues_1.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['watch_5findicator_5f24h_383',['WATCH_INDICATOR_24H',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fbell_384',['WATCH_INDICATOR_BELL',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3',1,'watch_slcd.h']]],
+ ['watch_5findicator_5flap_385',['WATCH_INDICATOR_LAP',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fpm_386',['WATCH_INDICATOR_PM',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f',1,'watch_slcd.h']]],
+ ['watch_5findicator_5fsignal_387',['WATCH_INDICATOR_SIGNAL',['../group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292',1,'watch_slcd.h']]]
+];
diff --git a/search/files_0.html b/search/files_0.html
new file mode 100644
index 00000000..9498842a
--- /dev/null
+++ b/search/files_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/files_0.js b/search/files_0.js
new file mode 100644
index 00000000..23ffe754
--- /dev/null
+++ b/search/files_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['watch_2eh_200',['watch.h',['../watch_8h.html',1,'']]]
+];
diff --git a/search/functions_0.html b/search/functions_0.html
new file mode 100644
index 00000000..eb4c5014
--- /dev/null
+++ b/search/functions_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/functions_0.js b/search/functions_0.js
new file mode 100644
index 00000000..fa2c937d
--- /dev/null
+++ b/search/functions_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['_5f_5fattribute_5f_5f_201',['__attribute__',['../group__rtc.html#ga98366c1b71e09089b441d704193bb0d4',1,'__attribute__((deprecated(&quot;Use watch_rtc_set_date_time function instead&quot;))) void watch_set_date_time(struct calendar_date_time date_time):&#160;watch_rtc.h'],['../group__rtc.html#ga7ce8c01a25eb364efb7ae6ed6dbca373',1,'__attribute__((deprecated(&quot;Use the watch_rtc_get_date_time function instead&quot;))) void watch_get_date_time(struct calendar_date_time *date_time):&#160;watch_rtc.h'],['../group__rtc.html#ga811201003a3985a040f1f6bd3c5a69eb',1,'__attribute__((deprecated(&quot;Use the watch_rtc_register_tick_callback function instead&quot;))) void watch_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.h'],['../group__debug.html#ga2014a199fbd2a6d7cecb24628576722c',1,'__attribute__((deprecated(&quot;Use printf to log debug messages over USB.&quot;))) void watch_enable_debug_uart(uint32_t baud):&#160;watch_uart.h']]],
+ ['_5fwatch_5frtc_5fis_5fenabled_202',['_watch_rtc_is_enabled',['../group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565',1,'_watch_rtc_is_enabled(void):&#160;watch_rtc.c'],['../group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565',1,'_watch_rtc_is_enabled(void):&#160;watch_rtc.c']]]
+];
diff --git a/search/functions_1.html b/search/functions_1.html
new file mode 100644
index 00000000..ef4088b8
--- /dev/null
+++ b/search/functions_1.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/functions_1.js b/search/functions_1.js
new file mode 100644
index 00000000..659f7241
--- /dev/null
+++ b/search/functions_1.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['app_5finit_203',['app_init',['../group__app.html#gadd3190cf715f513666f4be42874d91e2',1,'watch_app.h']]],
+ ['app_5floop_204',['app_loop',['../group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a',1,'watch_app.h']]],
+ ['app_5fprepare_5ffor_5fstandby_205',['app_prepare_for_standby',['../group__app.html#gaee30a1614f76afc41117f7176fb30165',1,'watch_app.h']]],
+ ['app_5fsetup_206',['app_setup',['../group__app.html#gacce192accedbd296eb8d2182f8101f16',1,'watch_app.h']]],
+ ['app_5fwake_5ffrom_5fbackup_207',['app_wake_from_backup',['../group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a',1,'watch_app.h']]],
+ ['app_5fwake_5ffrom_5fstandby_208',['app_wake_from_standby',['../group__app.html#gacc7e7ff6108524545ab4183110811874',1,'watch_app.h']]]
+];
diff --git a/search/functions_2.html b/search/functions_2.html
new file mode 100644
index 00000000..ca5aa10e
--- /dev/null
+++ b/search/functions_2.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/functions_2.js b/search/functions_2.js
new file mode 100644
index 00000000..52d0a2b7
--- /dev/null
+++ b/search/functions_2.js
@@ -0,0 +1,82 @@
+var searchData=
+[
+ ['watch_5fbuzzer_5fplay_5fnote_209',['watch_buzzer_play_note',['../group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80',1,'watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms):&#160;watch_buzzer.c'],['../group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80',1,'watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms):&#160;watch_buzzer.c']]],
+ ['watch_5fclear_5fall_5findicators_210',['watch_clear_all_indicators',['../group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009',1,'watch_clear_all_indicators(void):&#160;watch_slcd.c'],['../group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009',1,'watch_clear_all_indicators(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fcolon_211',['watch_clear_colon',['../group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782',1,'watch_clear_colon(void):&#160;watch_slcd.c'],['../group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782',1,'watch_clear_colon(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fdisplay_212',['watch_clear_display',['../group__slcd.html#gad980e302e036abd7e26813de127139a4',1,'watch_clear_display(void):&#160;watch_slcd.c'],['../group__slcd.html#gad980e302e036abd7e26813de127139a4',1,'watch_clear_display(void):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5findicator_213',['watch_clear_indicator',['../group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e',1,'watch_clear_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c'],['../group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e',1,'watch_clear_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c']]],
+ ['watch_5fclear_5fpixel_214',['watch_clear_pixel',['../group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0',1,'watch_clear_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c'],['../group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0',1,'watch_clear_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c']]],
+ ['watch_5fdisable_5fadc_215',['watch_disable_adc',['../group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb',1,'watch_disable_adc(void):&#160;watch_adc.c'],['../group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb',1,'watch_disable_adc(void):&#160;watch_adc.c']]],
+ ['watch_5fdisable_5fanalog_5finput_216',['watch_disable_analog_input',['../group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31',1,'watch_disable_analog_input(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31',1,'watch_disable_analog_input(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fdisable_5fbuzzer_217',['watch_disable_buzzer',['../group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93',1,'watch_disable_buzzer(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93',1,'watch_disable_buzzer(void):&#160;watch_buzzer.c']]],
+ ['watch_5fdisable_5fdigital_5finput_218',['watch_disable_digital_input',['../group__gpio.html#gae58e015e96f9e9c42a664b69185265b9',1,'watch_disable_digital_input(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gae58e015e96f9e9c42a664b69185265b9',1,'watch_disable_digital_input(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fdisable_5fdigital_5foutput_219',['watch_disable_digital_output',['../group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d',1,'watch_disable_digital_output(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d',1,'watch_disable_digital_output(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fdisable_5fexternal_5finterrupts_220',['watch_disable_external_interrupts',['../group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084',1,'watch_disable_external_interrupts(void):&#160;watch_extint.c'],['../group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084',1,'watch_disable_external_interrupts(void):&#160;watch_extint.c']]],
+ ['watch_5fdisable_5fextwake_5finterrupt_221',['watch_disable_extwake_interrupt',['../group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe',1,'watch_disable_extwake_interrupt(uint8_t pin):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe',1,'watch_disable_extwake_interrupt(uint8_t pin):&#160;watch_deepsleep.c']]],
+ ['watch_5fdisable_5fi2c_222',['watch_disable_i2c',['../group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760',1,'watch_disable_i2c(void):&#160;watch_i2c.c'],['../group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760',1,'watch_disable_i2c(void):&#160;watch_i2c.c']]],
+ ['watch_5fdisable_5fleds_223',['watch_disable_leds',['../group__led.html#ga883bf171196fb5a7a57ef727dca6e04a',1,'watch_disable_leds(void):&#160;watch_led.c'],['../group__led.html#ga883bf171196fb5a7a57ef727dca6e04a',1,'watch_disable_leds(void):&#160;watch_led.c']]],
+ ['watch_5fdisplay_5fstring_224',['watch_display_string',['../group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d',1,'watch_display_string(char *string, uint8_t position):&#160;watch_slcd.c'],['../group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d',1,'watch_display_string(char *string, uint8_t position):&#160;watch_slcd.c']]],
+ ['watch_5fenable_5fadc_225',['watch_enable_adc',['../group__adc.html#ga908b5334af677309b03d7679d77aaa02',1,'watch_enable_adc(void):&#160;watch_adc.c'],['../group__adc.html#ga908b5334af677309b03d7679d77aaa02',1,'watch_enable_adc(void):&#160;watch_adc.c']]],
+ ['watch_5fenable_5fanalog_5finput_226',['watch_enable_analog_input',['../group__adc.html#ga30a491e9cab049a2812f75862a613aa8',1,'watch_enable_analog_input(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#ga30a491e9cab049a2812f75862a613aa8',1,'watch_enable_analog_input(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fenable_5fbuzzer_227',['watch_enable_buzzer',['../group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204',1,'watch_enable_buzzer(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204',1,'watch_enable_buzzer(void):&#160;watch_buzzer.c']]],
+ ['watch_5fenable_5fdigital_5finput_228',['watch_enable_digital_input',['../group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c',1,'watch_enable_digital_input(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c',1,'watch_enable_digital_input(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fdigital_5foutput_229',['watch_enable_digital_output',['../group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9',1,'watch_enable_digital_output(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9',1,'watch_enable_digital_output(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fdisplay_230',['watch_enable_display',['../group__slcd.html#ga0bb83dc413aeb321daef90d93f258033',1,'watch_enable_display(void):&#160;watch_slcd.c'],['../group__slcd.html#ga0bb83dc413aeb321daef90d93f258033',1,'watch_enable_display(void):&#160;watch_slcd.c']]],
+ ['watch_5fenable_5fexternal_5finterrupts_231',['watch_enable_external_interrupts',['../group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2',1,'watch_enable_external_interrupts(void):&#160;watch_extint.c'],['../group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2',1,'watch_enable_external_interrupts(void):&#160;watch_extint.c']]],
+ ['watch_5fenable_5fi2c_232',['watch_enable_i2c',['../group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b',1,'watch_enable_i2c(void):&#160;watch_i2c.c'],['../group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b',1,'watch_enable_i2c(void):&#160;watch_i2c.c']]],
+ ['watch_5fenable_5fleds_233',['watch_enable_leds',['../group__led.html#ga86ce31dc95137ed41983fb7c6af5502a',1,'watch_enable_leds(void):&#160;watch_led.c'],['../group__led.html#ga86ce31dc95137ed41983fb7c6af5502a',1,'watch_enable_leds(void):&#160;watch_led.c']]],
+ ['watch_5fenable_5fpull_5fdown_234',['watch_enable_pull_down',['../group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9',1,'watch_enable_pull_down(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9',1,'watch_enable_pull_down(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenable_5fpull_5fup_235',['watch_enable_pull_up',['../group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d',1,'watch_enable_pull_up(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d',1,'watch_enable_pull_up(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fenter_5fbackup_5fmode_236',['watch_enter_backup_mode',['../group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef',1,'watch_enter_backup_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef',1,'watch_enter_backup_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fenter_5fdeep_5fsleep_5fmode_237',['watch_enter_deep_sleep_mode',['../group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451',1,'watch_enter_deep_sleep_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451',1,'watch_enter_deep_sleep_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fenter_5fsleep_5fmode_238',['watch_enter_sleep_mode',['../group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b',1,'watch_enter_sleep_mode(void):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b',1,'watch_enter_sleep_mode(void):&#160;watch_deepsleep.c']]],
+ ['watch_5fget_5fanalog_5fpin_5flevel_239',['watch_get_analog_pin_level',['../group__adc.html#ga2064244f68cff87a1df08f6b07183069',1,'watch_get_analog_pin_level(const uint8_t pin):&#160;watch_adc.c'],['../group__adc.html#ga2064244f68cff87a1df08f6b07183069',1,'watch_get_analog_pin_level(const uint8_t pin):&#160;watch_adc.c']]],
+ ['watch_5fget_5fbackup_5fdata_240',['watch_get_backup_data',['../group__deepsleep.html#ga2de1f1012475654c4741f60808581196',1,'watch_get_backup_data(uint8_t reg):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga2de1f1012475654c4741f60808581196',1,'watch_get_backup_data(uint8_t reg):&#160;watch_deepsleep.c']]],
+ ['watch_5fget_5fpin_5flevel_241',['watch_get_pin_level',['../group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879',1,'watch_get_pin_level(const uint8_t pin):&#160;watch_gpio.c'],['../group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879',1,'watch_get_pin_level(const uint8_t pin):&#160;watch_gpio.c']]],
+ ['watch_5fget_5fvcc_5fvoltage_242',['watch_get_vcc_voltage',['../group__adc.html#ga465fcb058492d350d29fe4403df85b14',1,'watch_get_vcc_voltage(void):&#160;watch_adc.c'],['../group__adc.html#ga465fcb058492d350d29fe4403df85b14',1,'watch_get_vcc_voltage(void):&#160;watch_adc.c']]],
+ ['watch_5fi2c_5fread16_243',['watch_i2c_read16',['../group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e',1,'watch_i2c_read16(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e',1,'watch_i2c_read16(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread24_244',['watch_i2c_read24',['../group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8',1,'watch_i2c_read24(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8',1,'watch_i2c_read24(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread32_245',['watch_i2c_read32',['../group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651',1,'watch_i2c_read32(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651',1,'watch_i2c_read32(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fread8_246',['watch_i2c_read8',['../group__i2c.html#gac5644140ddda98198f9d5deabbeaf781',1,'watch_i2c_read8(int16_t addr, uint8_t reg):&#160;watch_i2c.c'],['../group__i2c.html#gac5644140ddda98198f9d5deabbeaf781',1,'watch_i2c_read8(int16_t addr, uint8_t reg):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5freceive_247',['watch_i2c_receive',['../group__i2c.html#ga426971387b87286c8decca7342c06b4b',1,'watch_i2c_receive(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c'],['../group__i2c.html#ga426971387b87286c8decca7342c06b4b',1,'watch_i2c_receive(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fsend_248',['watch_i2c_send',['../group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08',1,'watch_i2c_send(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c'],['../group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08',1,'watch_i2c_send(int16_t addr, uint8_t *buf, uint16_t length):&#160;watch_i2c.c']]],
+ ['watch_5fi2c_5fwrite8_249',['watch_i2c_write8',['../group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad',1,'watch_i2c_write8(int16_t addr, uint8_t reg, uint8_t data):&#160;watch_i2c.c'],['../group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad',1,'watch_i2c_write8(int16_t addr, uint8_t reg, uint8_t data):&#160;watch_i2c.c']]],
+ ['watch_5fis_5fbattery_5flow_250',['watch_is_battery_low',['../watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d',1,'watch.c']]],
+ ['watch_5fregister_5fextwake_5fcallback_251',['watch_register_extwake_callback',['../group__deepsleep.html#gacad726423f5f38697c87474ab25244ca',1,'watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool level):&#160;watch_deepsleep.c'],['../group__deepsleep.html#gacad726423f5f38697c87474ab25244ca',1,'watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool level):&#160;watch_deepsleep.c']]],
+ ['watch_5fregister_5finterrupt_5fcallback_252',['watch_register_interrupt_callback',['../group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c',1,'watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger):&#160;watch_extint.c'],['../group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c',1,'watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger):&#160;watch_extint.c']]],
+ ['watch_5frtc_5fdisable_5falarm_5fcallback_253',['watch_rtc_disable_alarm_callback',['../group__rtc.html#ga836cade77c24e93c06bf534eaded55bf',1,'watch_rtc_disable_alarm_callback(void):&#160;watch_rtc.c'],['../group__rtc.html#ga836cade77c24e93c06bf534eaded55bf',1,'watch_rtc_disable_alarm_callback(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5fall_5fperiodic_5fcallbacks_254',['watch_rtc_disable_all_periodic_callbacks',['../group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f',1,'watch_rtc_disable_all_periodic_callbacks(void):&#160;watch_rtc.c'],['../group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f',1,'watch_rtc_disable_all_periodic_callbacks(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5fperiodic_5fcallback_255',['watch_rtc_disable_periodic_callback',['../group__rtc.html#ga4e025485bb50e1c93abd4a185447705f',1,'watch_rtc_disable_periodic_callback(uint8_t frequency):&#160;watch_rtc.c'],['../group__rtc.html#ga4e025485bb50e1c93abd4a185447705f',1,'watch_rtc_disable_periodic_callback(uint8_t frequency):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fdisable_5ftick_5fcallback_256',['watch_rtc_disable_tick_callback',['../group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d',1,'watch_rtc_disable_tick_callback(void):&#160;watch_rtc.c'],['../group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d',1,'watch_rtc_disable_tick_callback(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fget_5fdate_5ftime_257',['watch_rtc_get_date_time',['../group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7',1,'watch_rtc_get_date_time(void):&#160;watch_rtc.c'],['../group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7',1,'watch_rtc_get_date_time(void):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5falarm_5fcallback_258',['watch_rtc_register_alarm_callback',['../group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b',1,'watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask):&#160;watch_rtc.c'],['../group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b',1,'watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5fperiodic_5fcallback_259',['watch_rtc_register_periodic_callback',['../group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53',1,'watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency):&#160;watch_rtc.c'],['../group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53',1,'watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fregister_5ftick_5fcallback_260',['watch_rtc_register_tick_callback',['../group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be',1,'watch_rtc_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.c'],['../group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be',1,'watch_rtc_register_tick_callback(ext_irq_cb_t callback):&#160;watch_rtc.c']]],
+ ['watch_5frtc_5fset_5fdate_5ftime_261',['watch_rtc_set_date_time',['../group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5',1,'watch_rtc_set_date_time(watch_date_time date_time):&#160;watch_rtc.c'],['../group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5',1,'watch_rtc_set_date_time(watch_date_time date_time):&#160;watch_rtc.c']]],
+ ['watch_5fset_5fanalog_5fnum_5fsamples_262',['watch_set_analog_num_samples',['../group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d',1,'watch_set_analog_num_samples(uint16_t samples):&#160;watch_adc.c'],['../group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d',1,'watch_set_analog_num_samples(uint16_t samples):&#160;watch_adc.c']]],
+ ['watch_5fset_5fanalog_5freference_5fvoltage_263',['watch_set_analog_reference_voltage',['../group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93',1,'watch_set_analog_reference_voltage(watch_adc_reference_voltage reference):&#160;watch_adc.c'],['../group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93',1,'watch_set_analog_reference_voltage(watch_adc_reference_voltage reference):&#160;watch_adc.c']]],
+ ['watch_5fset_5fanalog_5fsampling_5flength_264',['watch_set_analog_sampling_length',['../group__adc.html#gae9f9ed34e8752e211c1692af473a88dc',1,'watch_set_analog_sampling_length(uint8_t cycles):&#160;watch_adc.c'],['../group__adc.html#gae9f9ed34e8752e211c1692af473a88dc',1,'watch_set_analog_sampling_length(uint8_t cycles):&#160;watch_adc.c']]],
+ ['watch_5fset_5fbuzzer_5foff_265',['watch_set_buzzer_off',['../group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4',1,'watch_set_buzzer_off(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4',1,'watch_set_buzzer_off(void):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fbuzzer_5fon_266',['watch_set_buzzer_on',['../group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98',1,'watch_set_buzzer_on(void):&#160;watch_buzzer.c'],['../group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98',1,'watch_set_buzzer_on(void):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fbuzzer_5fperiod_267',['watch_set_buzzer_period',['../group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9',1,'watch_set_buzzer_period(uint32_t period):&#160;watch_buzzer.c'],['../group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9',1,'watch_set_buzzer_period(uint32_t period):&#160;watch_buzzer.c']]],
+ ['watch_5fset_5fcolon_268',['watch_set_colon',['../group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee',1,'watch_set_colon(void):&#160;watch_slcd.c'],['../group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee',1,'watch_set_colon(void):&#160;watch_slcd.c']]],
+ ['watch_5fset_5findicator_269',['watch_set_indicator',['../group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd',1,'watch_set_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c'],['../group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd',1,'watch_set_indicator(WatchIndicatorSegment indicator):&#160;watch_slcd.c']]],
+ ['watch_5fset_5fled_5fcolor_270',['watch_set_led_color',['../group__led.html#ga042bcc9220ab05d1de8389cf0067511b',1,'watch_set_led_color(uint8_t red, uint8_t green):&#160;watch_led.c'],['../group__led.html#ga042bcc9220ab05d1de8389cf0067511b',1,'watch_set_led_color(uint8_t red, uint8_t green):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fgreen_271',['watch_set_led_green',['../group__led.html#gab01a29900ddc5315c0e752e63d748f41',1,'watch_set_led_green(void):&#160;watch_led.c'],['../group__led.html#gab01a29900ddc5315c0e752e63d748f41',1,'watch_set_led_green(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5foff_272',['watch_set_led_off',['../group__led.html#ga8619f040ff7364285398412a4c420cae',1,'watch_set_led_off(void):&#160;watch_led.c'],['../group__led.html#ga8619f040ff7364285398412a4c420cae',1,'watch_set_led_off(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fred_273',['watch_set_led_red',['../group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40',1,'watch_set_led_red(void):&#160;watch_led.c'],['../group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40',1,'watch_set_led_red(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fled_5fyellow_274',['watch_set_led_yellow',['../group__led.html#ga51ba53c3281ad8724d98af27eacc3de0',1,'watch_set_led_yellow(void):&#160;watch_led.c'],['../group__led.html#ga51ba53c3281ad8724d98af27eacc3de0',1,'watch_set_led_yellow(void):&#160;watch_led.c']]],
+ ['watch_5fset_5fpin_5flevel_275',['watch_set_pin_level',['../group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6',1,'watch_set_pin_level(const uint8_t pin, const bool level):&#160;watch_gpio.c'],['../group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6',1,'watch_set_pin_level(const uint8_t pin, const bool level):&#160;watch_gpio.c']]],
+ ['watch_5fset_5fpixel_276',['watch_set_pixel',['../group__slcd.html#ga47948dc2c7490b698810ef9914507e08',1,'watch_set_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c'],['../group__slcd.html#ga47948dc2c7490b698810ef9914507e08',1,'watch_set_pixel(uint8_t com, uint8_t seg):&#160;watch_slcd.c']]],
+ ['watch_5fstart_5fcharacter_5fblink_277',['watch_start_character_blink',['../group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5',1,'watch_start_character_blink(char character, uint32_t duration):&#160;watch_slcd.c'],['../group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5',1,'watch_start_character_blink(char character, uint32_t duration):&#160;watch_slcd.c']]],
+ ['watch_5fstart_5ftick_5fanimation_278',['watch_start_tick_animation',['../group__slcd.html#ga70918c1acc2ed21512b69b83397303a4',1,'watch_start_tick_animation(uint32_t duration):&#160;watch_slcd.c'],['../group__slcd.html#ga70918c1acc2ed21512b69b83397303a4',1,'watch_start_tick_animation(uint32_t duration):&#160;watch_slcd.c']]],
+ ['watch_5fstop_5fblink_279',['watch_stop_blink',['../group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5',1,'watch_stop_blink(void):&#160;watch_slcd.c'],['../group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5',1,'watch_stop_blink(void):&#160;watch_slcd.c']]],
+ ['watch_5fstop_5ftick_5fanimation_280',['watch_stop_tick_animation',['../group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a',1,'watch_stop_tick_animation(void):&#160;watch_slcd.c'],['../group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a',1,'watch_stop_tick_animation(void):&#160;watch_slcd.c']]],
+ ['watch_5fstore_5fbackup_5fdata_281',['watch_store_backup_data',['../group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846',1,'watch_store_backup_data(uint32_t data, uint8_t reg):&#160;watch_deepsleep.c'],['../group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846',1,'watch_store_backup_data(uint32_t data, uint8_t reg):&#160;watch_deepsleep.c']]],
+ ['watch_5ftick_5fanimation_5fis_5frunning_282',['watch_tick_animation_is_running',['../group__slcd.html#ga3764fb499e056f9a45588268f11be8a0',1,'watch_tick_animation_is_running(void):&#160;watch_slcd.c'],['../group__slcd.html#ga3764fb499e056f9a45588268f11be8a0',1,'watch_tick_animation_is_running(void):&#160;watch_slcd.c']]],
+ ['watch_5futility_5fconvert_5fto_5funix_5ftime_283',['watch_utility_convert_to_unix_time',['../group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda',1,'watch_utility_convert_to_unix_time(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda',1,'watch_utility_convert_to_unix_time(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fdate_5ftime_5ffrom_5funix_5ftime_284',['watch_utility_date_time_from_unix_time',['../group__utility.html#ga396e56109234aaa00993c3dd84f3f43c',1,'watch_utility_date_time_from_unix_time(uint32_t timestamp, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#ga396e56109234aaa00993c3dd84f3f43c',1,'watch_utility_date_time_from_unix_time(uint32_t timestamp, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fdate_5ftime_5fto_5funix_5ftime_285',['watch_utility_date_time_to_unix_time',['../group__utility.html#gaffafef58755ff2704cf93fe1a0849a27',1,'watch_utility_date_time_to_unix_time(watch_date_time date_time, uint32_t utc_offset):&#160;watch_utility.c'],['../group__utility.html#gaffafef58755ff2704cf93fe1a0849a27',1,'watch_utility_date_time_to_unix_time(watch_date_time date_time, uint32_t utc_offset):&#160;watch_utility.c']]],
+ ['watch_5futility_5fget_5fweekday_286',['watch_utility_get_weekday',['../group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127',1,'watch_utility_get_weekday(watch_date_time date_time):&#160;watch_utility.c'],['../group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127',1,'watch_utility_get_weekday(watch_date_time date_time):&#160;watch_utility.c']]],
+ ['watch_5futility_5fthermistor_5ftemperature_287',['watch_utility_thermistor_temperature',['../group__utility.html#ga2753ff031c28202d23b0f3e80de2c920',1,'watch_utility_thermistor_temperature(uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance):&#160;watch_utility.c'],['../group__utility.html#ga2753ff031c28202d23b0f3e80de2c920',1,'watch_utility_thermistor_temperature(uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance):&#160;watch_utility.c']]]
+];
diff --git a/search/groups_0.html b/search/groups_0.html
new file mode 100644
index 00000000..c600b497
--- /dev/null
+++ b/search/groups_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_0.js b/search/groups_0.js
new file mode 100644
index 00000000..9afaaaea
--- /dev/null
+++ b/search/groups_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['analog_20input_388',['Analog Input',['../group__adc.html',1,'']]],
+ ['application_20framework_389',['Application Framework',['../group__app.html',1,'']]]
+];
diff --git a/search/groups_1.html b/search/groups_1.html
new file mode 100644
index 00000000..2eb3550d
--- /dev/null
+++ b/search/groups_1.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_1.js b/search/groups_1.js
new file mode 100644
index 00000000..00fcc132
--- /dev/null
+++ b/search/groups_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['buttons_20_26_20external_20interrupts_390',['Buttons &amp; External Interrupts',['../group__buttons.html',1,'']]],
+ ['buzzer_391',['Buzzer',['../group__buzzer.html',1,'']]]
+];
diff --git a/search/groups_2.html b/search/groups_2.html
new file mode 100644
index 00000000..12f4af7a
--- /dev/null
+++ b/search/groups_2.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_2.js b/search/groups_2.js
new file mode 100644
index 00000000..48ec5453
--- /dev/null
+++ b/search/groups_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['debug_20uart_392',['Debug UART',['../group__debug.html',1,'']]],
+ ['digital_20input_20and_20output_393',['Digital Input and Output',['../group__gpio.html',1,'']]]
+];
diff --git a/search/groups_3.html b/search/groups_3.html
new file mode 100644
index 00000000..5e235b53
--- /dev/null
+++ b/search/groups_3.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_3.js b/search/groups_3.js
new file mode 100644
index 00000000..aec448c0
--- /dev/null
+++ b/search/groups_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['i2c_20controller_20driver_394',['I2C Controller Driver',['../group__i2c.html',1,'']]]
+];
diff --git a/search/groups_4.html b/search/groups_4.html
new file mode 100644
index 00000000..99405e15
--- /dev/null
+++ b/search/groups_4.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_4.js b/search/groups_4.js
new file mode 100644
index 00000000..eef69447
--- /dev/null
+++ b/search/groups_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['led_20control_395',['LED Control',['../group__led.html',1,'']]]
+];
diff --git a/search/groups_5.html b/search/groups_5.html
new file mode 100644
index 00000000..583f5f58
--- /dev/null
+++ b/search/groups_5.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_5.js b/search/groups_5.js
new file mode 100644
index 00000000..a51c8319
--- /dev/null
+++ b/search/groups_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['real_2dtime_20clock_396',['Real-Time Clock',['../group__rtc.html',1,'']]]
+];
diff --git a/search/groups_6.html b/search/groups_6.html
new file mode 100644
index 00000000..df6a310f
--- /dev/null
+++ b/search/groups_6.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_6.js b/search/groups_6.js
new file mode 100644
index 00000000..3e6f5bc8
--- /dev/null
+++ b/search/groups_6.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['segment_20lcd_20display_397',['Segment LCD Display',['../group__slcd.html',1,'']]],
+ ['sleep_20control_398',['Sleep Control',['../group__deepsleep.html',1,'']]]
+];
diff --git a/search/groups_7.html b/search/groups_7.html
new file mode 100644
index 00000000..8964e050
--- /dev/null
+++ b/search/groups_7.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/groups_7.js b/search/groups_7.js
new file mode 100644
index 00000000..ecc78802
--- /dev/null
+++ b/search/groups_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['utility_20functions_399',['Utility Functions',['../group__utility.html',1,'']]]
+];
diff --git a/search/mag_sel.svg b/search/mag_sel.svg
new file mode 100644
index 00000000..03626f64
--- /dev/null
+++ b/search/mag_sel.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="svg2"
+ width="20"
+ height="19"
+ viewBox="0 0 20 19"
+ sodipodi:docname="mag_sel.svg"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="2096"
+ id="namedview4"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="32"
+ inkscape:cx="5.9792688"
+ inkscape:cy="1.1436277"
+ inkscape:window-x="1920"
+ inkscape:window-y="27"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <circle
+ style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4611"
+ cx="5.5"
+ cy="8.5"
+ r="3.5" />
+ <path
+ style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 11,7 13.5,10 16,7 Z"
+ id="path4609"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 8.1085854,11.109059 2.7823556,2.782356"
+ id="path4630"
+ inkscape:connector-curvature="0" />
+</svg>
diff --git a/search/nomatches.html b/search/nomatches.html
new file mode 100644
index 00000000..2b9360b6
--- /dev/null
+++ b/search/nomatches.html
@@ -0,0 +1,13 @@
+<!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"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/search/pages_0.html b/search/pages_0.html
new file mode 100644
index 00000000..8517b48f
--- /dev/null
+++ b/search/pages_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/pages_0.js b/search/pages_0.js
new file mode 100644
index 00000000..757321ff
--- /dev/null
+++ b/search/pages_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['sensor_20watch_20documentation_400',['Sensor Watch Documentation',['../index.html',1,'']]]
+];
diff --git a/search/search.css b/search/search.css
new file mode 100644
index 00000000..9074198f
--- /dev/null
+++ b/search/search.css
@@ -0,0 +1,257 @@
+/*---------------- Search Box */
+
+#MSearchBox {
+ white-space : nowrap;
+ background: white;
+ border-radius: 0.65em;
+ box-shadow: inset 0.5px 0.5px 3px 0px #555;
+ z-index: 102;
+}
+
+#MSearchBox .left {
+ display: inline-block;
+ vertical-align: middle;
+ height: 1.4em;
+}
+
+#MSearchSelect {
+ display: inline-block;
+ vertical-align: middle;
+ height: 1.4em;
+ padding: 0 0 0 0.3em;
+ margin: 0;
+}
+
+#MSearchField {
+ display: inline-block;
+ vertical-align: middle;
+ width: 7.5em;
+ height: 1.1em;
+ margin: 0 0.15em;
+ padding: 0;
+ line-height: 1em;
+ border:none;
+ color: #909090;
+ outline: none;
+ font-family: Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ background: none;
+}
+
+
+#MSearchBox .right {
+ display: inline-block;
+ vertical-align: middle;
+ width: 1.4em;
+ height: 1.4em;
+}
+
+#MSearchClose {
+ display: none;
+ font-size: inherit;
+ background : none;
+ border: none;
+ margin: 0;
+ padding: 0;
+ outline: none;
+
+}
+
+#MSearchCloseImg {
+ height: 1.4em;
+ padding: 0.3em;
+ margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+#main-menu > li:last-child {
+ /* This <li> object is the parent of the search bar */
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 36px;
+ margin-right: 1em;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #90A5CE;
+ background-color: #F9FAFC;
+ z-index: 10001;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: #3D578C;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ width: 60ex;
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: #EEF1F7;
+ z-index:10000;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRResult {
+ display: none;
+}
+
+div.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: #F0F3F8;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+
diff --git a/search/search.js b/search/search.js
new file mode 100644
index 00000000..fb226f73
--- /dev/null
+++ b/search/search.js
@@ -0,0 +1,816 @@
+/*
+ @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 convertToId(search)
+{
+ var result = '';
+ for (i=0;i<search.length;i++)
+ {
+ var c = search.charAt(i);
+ var cn = c.charCodeAt(0);
+ if (c.match(/[a-z0-9\u0080-\uFFFF]/))
+ {
+ result+=c;
+ }
+ else if (cn<16)
+ {
+ result+="_0"+cn.toString(16);
+ }
+ else
+ {
+ result+="_"+cn.toString(16);
+ }
+ }
+ return result;
+}
+
+function getXPos(item)
+{
+ var x = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ x += item.offsetLeft;
+ item = item.offsetParent;
+ }
+ }
+ return x;
+}
+
+function getYPos(item)
+{
+ var y = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ y += item.offsetTop;
+ item = item.offsetParent;
+ }
+ }
+ return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+ Parameters:
+ name - The name of the global variable that will be
+ storing this instance. Is needed to be able to set timeouts.
+ resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label, extension)
+{
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
+ if (!extension || extension == "") { extension = ".html"; }
+
+ // ---------- Instance variables
+ this.name = name;
+ this.resultsPath = resultsPath;
+ this.keyTimeout = 0;
+ this.keyTimeoutLength = 500;
+ this.closeSelectionTimeout = 300;
+ this.lastSearchValue = "";
+ this.lastResultsPage = "";
+ this.hideTimeout = 0;
+ this.searchIndex = 0;
+ this.searchActive = false;
+ this.insideFrame = inFrame;
+ this.searchLabel = label;
+ this.extension = extension;
+
+ // ----------- DOM Elements
+
+ this.DOMSearchField = function()
+ { return document.getElementById("MSearchField"); }
+
+ this.DOMSearchSelect = function()
+ { return document.getElementById("MSearchSelect"); }
+
+ this.DOMSearchSelectWindow = function()
+ { return document.getElementById("MSearchSelectWindow"); }
+
+ this.DOMPopupSearchResults = function()
+ { return document.getElementById("MSearchResults"); }
+
+ this.DOMPopupSearchResultsWindow = function()
+ { return document.getElementById("MSearchResultsWindow"); }
+
+ this.DOMSearchClose = function()
+ { return document.getElementById("MSearchClose"); }
+
+ this.DOMSearchBox = function()
+ { return document.getElementById("MSearchBox"); }
+
+ // ------------ Event Handlers
+
+ // Called when focus is added or removed from the search field.
+ this.OnSearchFieldFocus = function(isActive)
+ {
+ this.Activate(isActive);
+ }
+
+ this.OnSearchSelectShow = function()
+ {
+ var searchSelectWindow = this.DOMSearchSelectWindow();
+ var searchField = this.DOMSearchSelect();
+
+ if (this.insideFrame)
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ left += searchField.offsetWidth + 6;
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ left -= searchSelectWindow.offsetWidth;
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+ else
+ {
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+ }
+
+ // stop selection hide timer
+ if (this.hideTimeout)
+ {
+ clearTimeout(this.hideTimeout);
+ this.hideTimeout=0;
+ }
+ return false; // to avoid "image drag" default event
+ }
+
+ this.OnSearchSelectHide = function()
+ {
+ this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+ this.closeSelectionTimeout);
+ }
+
+ // Called when the content of the search field is changed.
+ this.OnSearchFieldChange = function(evt)
+ {
+ if (this.keyTimeout) // kill running timer
+ {
+ clearTimeout(this.keyTimeout);
+ this.keyTimeout = 0;
+ }
+
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 || e.keyCode==13)
+ {
+ if (e.shiftKey==1)
+ {
+ this.OnSearchSelectShow();
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ child.focus();
+ return;
+ }
+ }
+ return;
+ }
+ else
+ {
+ window.frames.MSearchResults.postMessage("take_focus", "*");
+ }
+ }
+ else if (e.keyCode==27) // Escape out of the search field
+ {
+ this.DOMSearchField().blur();
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ this.Activate(false);
+ return;
+ }
+
+ // strip whitespaces
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+ if (searchValue != this.lastSearchValue) // search value has changed
+ {
+ if (searchValue != "") // non-empty search
+ {
+ // set timer for search update
+ this.keyTimeout = setTimeout(this.name + '.Search()',
+ this.keyTimeoutLength);
+ }
+ else // empty search field
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ }
+ }
+ }
+
+ this.SelectItemCount = function(id)
+ {
+ var count=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ count++;
+ }
+ }
+ return count;
+ }
+
+ this.SelectItemSet = function(id)
+ {
+ var i,j=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ var node = child.firstChild;
+ if (j==id)
+ {
+ node.innerHTML='&#8226;';
+ }
+ else
+ {
+ node.innerHTML='&#160;';
+ }
+ j++;
+ }
+ }
+ }
+
+ // Called when an search filter selection is made.
+ // set item with index id as the active item
+ this.OnSelectItem = function(id)
+ {
+ this.searchIndex = id;
+ this.SelectItemSet(id);
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+ if (searchValue!="" && this.searchActive) // something was found -> do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+ {
+ this.searchIndex++;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==38 && this.searchIndex>0) // Up
+ {
+ this.searchIndex--;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==13 || e.keyCode==27)
+ {
+ this.OnSelectItem(this.searchIndex);
+ this.CloseSelectionWindow();
+ this.DOMSearchField().focus();
+ }
+ return false;
+ }
+
+ // --------- Actions
+
+ // Closes the results window.
+ this.CloseResultsWindow = function()
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.Activate(false);
+ }
+
+ this.CloseSelectionWindow = function()
+ {
+ this.DOMSearchSelectWindow().style.display = 'none';
+ }
+
+ // Performs a search.
+ this.Search = function()
+ {
+ this.keyTimeout = 0;
+
+ // strip leading whitespace
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+ var code = searchValue.toLowerCase().charCodeAt(0);
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+ {
+ idxChar = searchValue.substr(0, 2);
+ }
+
+ var resultsPage;
+ var resultsPageWithSearch;
+ var hasResultsPage;
+
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+ resultsPage = this.resultsPath + '/nomatches' + this.extension;
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+
+ window.frames.MSearchResults.location = resultsPageWithSearch;
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+ this.DOMSearchClose().style.display = 'inline-block';
+ if (this.insideFrame)
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ domPopupSearchResultsWindow.style.position = 'relative';
+ domPopupSearchResultsWindow.style.display = 'block';
+ var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+ domPopupSearchResultsWindow.style.width = width + 'px';
+ domPopupSearchResults.style.width = width + 'px';
+ }
+ else
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
+ domPopupSearchResultsWindow.style.display = 'block';
+ left -= domPopupSearchResults.offsetWidth;
+ domPopupSearchResultsWindow.style.top = top + 'px';
+ domPopupSearchResultsWindow.style.left = left + 'px';
+ }
+ }
+
+ this.lastSearchValue = searchValue;
+ this.lastResultsPage = resultsPage;
+ }
+
+ // -------- Activation Functions
+
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
+ this.Activate = function(isActive)
+ {
+ if (isActive || // open it
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
+ )
+ {
+ this.DOMSearchBox().className = 'MSearchBoxActive';
+
+ var searchField = this.DOMSearchField();
+
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+ {
+ searchField.value = '';
+ this.searchActive = true;
+ }
+ }
+ else if (!isActive) // directly remove the panel
+ {
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
+ this.DOMSearchField().value = this.searchLabel;
+ this.searchActive = false;
+ this.lastSearchValue = ''
+ this.lastResultsPage = '';
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+ // The number of matches from the last run of <Search()>.
+ this.lastMatchCount = 0;
+ this.lastKey = 0;
+ this.repeatOn = false;
+
+ // Toggles the visibility of the passed element ID.
+ this.FindChildElement = function(id)
+ {
+ var parentElement = document.getElementById(id);
+ var element = parentElement.firstChild;
+
+ while (element && element!=parentElement)
+ {
+ if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+ if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+ else if (element.nextSibling)
+ {
+ element = element.nextSibling;
+ }
+ else
+ {
+ do
+ {
+ element = element.parentNode;
+ }
+ while (element && element!=parentElement && !element.nextSibling);
+
+ if (element && element!=parentElement)
+ {
+ element = element.nextSibling;
+ }
+ }
+ }
+ }
+
+ this.Toggle = function(id)
+ {
+ var element = this.FindChildElement(id);
+ if (element)
+ {
+ if (element.style.display == 'block')
+ {
+ element.style.display = 'none';
+ }
+ else
+ {
+ element.style.display = 'block';
+ }
+ }
+ }
+
+ // Searches for the passed string. If there is no parameter,
+ // it takes it from the URL query.
+ //
+ // Always returns true, since other documents may try to call it
+ // and that may or may not be possible.
+ this.Search = function(search)
+ {
+ if (!search) // get search word from URL
+ {
+ search = window.location.search;
+ search = search.substring(1); // Remove the leading '?'
+ search = unescape(search);
+ }
+
+ search = search.replace(/^ +/, ""); // strip leading spaces
+ search = search.replace(/ +$/, ""); // strip trailing spaces
+ search = search.toLowerCase();
+ search = convertToId(search);
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+ if (search.length<=rowMatchName.length &&
+ rowMatchName.substr(0, search.length)==search)
+ {
+ row.style.display = 'block';
+ matches++;
+ }
+ else
+ {
+ row.style.display = 'none';
+ }
+ }
+ i++;
+ }
+ document.getElementById("Searching").style.display='none';
+ if (matches == 0) // no results
+ {
+ document.getElementById("NoMatches").style.display='block';
+ }
+ else // at least one result
+ {
+ document.getElementById("NoMatches").style.display='none';
+ }
+ this.lastMatchCount = matches;
+ return true;
+ }
+
+ // return the first item with index index or higher that is visible
+ this.NavNext = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index++;
+ }
+ return focusItem;
+ }
+
+ this.NavPrev = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index--;
+ }
+ return focusItem;
+ }
+
+ this.ProcessKeys = function(e)
+ {
+ if (e.type == "keydown")
+ {
+ this.repeatOn = false;
+ this.lastKey = e.keyCode;
+ }
+ else if (e.type == "keypress")
+ {
+ if (!this.repeatOn)
+ {
+ if (this.lastKey) this.repeatOn = true;
+ return false; // ignore first keypress after keydown
+ }
+ }
+ else if (e.type == "keyup")
+ {
+ this.lastKey = 0;
+ this.repeatOn = false;
+ }
+ return this.lastKey!=0;
+ }
+
+ this.Nav = function(evt,itemIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ var newIndex = itemIndex-1;
+ var focusItem = this.NavPrev(newIndex);
+ if (focusItem)
+ {
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+ if (child && child.style.display == 'block') // children visible
+ {
+ var n=0;
+ var tmpElem;
+ while (1) // search for last child
+ {
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+ if (tmpElem)
+ {
+ focusItem = tmpElem;
+ }
+ else // found it!
+ {
+ break;
+ }
+ n++;
+ }
+ }
+ }
+ if (focusItem)
+ {
+ focusItem.focus();
+ }
+ else // return focus to search field
+ {
+ parent.document.getElementById("MSearchField").focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = itemIndex+1;
+ var focusItem;
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem && elem.style.display == 'block') // children visible
+ {
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
+ }
+ if (!focusItem) focusItem = this.NavNext(newIndex);
+ if (focusItem) focusItem.focus();
+ }
+ else if (this.lastKey==39) // Right
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'block';
+ }
+ else if (this.lastKey==37) // Left
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'none';
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+
+ this.NavChild = function(evt,itemIndex,childIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ if (childIndex>0)
+ {
+ var newIndex = childIndex-1;
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+ }
+ else // already at first child, jump to parent
+ {
+ document.getElementById('Item'+itemIndex).focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = childIndex+1;
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+ if (!elem) // last child, jump to parent next parent
+ {
+ elem = this.NavNext(itemIndex+1);
+ }
+ if (elem)
+ {
+ elem.focus();
+ }
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+}
+
+function setKeyActions(elem,action)
+{
+ elem.setAttribute('onkeydown',action);
+ elem.setAttribute('onkeypress',action);
+ elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+ elem.setAttribute('class',attr);
+ elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+ var results = document.getElementById("SRResults");
+ for (var e=0; e<searchData.length; e++)
+ {
+ var id = searchData[e][0];
+ var srResult = document.createElement('div');
+ srResult.setAttribute('id','SR_'+id);
+ setClassAttr(srResult,'SRResult');
+ var srEntry = document.createElement('div');
+ setClassAttr(srEntry,'SREntry');
+ var srLink = document.createElement('a');
+ srLink.setAttribute('id','Item'+e);
+ setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+ setClassAttr(srLink,'SRSymbol');
+ srLink.innerHTML = searchData[e][1][0];
+ srEntry.appendChild(srLink);
+ if (searchData[e][1].length==2) // single result
+ {
+ srLink.setAttribute('href',searchData[e][1][1][0]);
+ if (searchData[e][1][1][1])
+ {
+ srLink.setAttribute('target','_parent');
+ }
+ var srScope = document.createElement('span');
+ setClassAttr(srScope,'SRScope');
+ srScope.innerHTML = searchData[e][1][1][2];
+ srEntry.appendChild(srScope);
+ }
+ else // multiple results
+ {
+ srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+ var srChildren = document.createElement('div');
+ setClassAttr(srChildren,'SRChildren');
+ for (var c=0; c<searchData[e][1].length-1; c++)
+ {
+ var srChild = document.createElement('a');
+ srChild.setAttribute('id','Item'+e+'_c'+c);
+ setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+ setClassAttr(srChild,'SRScope');
+ srChild.setAttribute('href',searchData[e][1][c+1][0]);
+ if (searchData[e][1][c+1][1])
+ {
+ srChild.setAttribute('target','_parent');
+ }
+ srChild.innerHTML = searchData[e][1][c+1][2];
+ srChildren.appendChild(srChild);
+ }
+ srEntry.appendChild(srChildren);
+ }
+ srResult.appendChild(srEntry);
+ results.appendChild(srResult);
+ }
+}
+
+function init_search()
+{
+ var results = document.getElementById("MSearchSelectWindow");
+ for (var key in indexSectionLabels)
+ {
+ var link = document.createElement('a');
+ link.setAttribute('class','SelectItem');
+ link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+ link.href='javascript:void(0)';
+ link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+ results.appendChild(link);
+ }
+ searchBox.OnSelectItem(0);
+}
+/* @license-end */
diff --git a/search/search_l.png b/search/search_l.png
new file mode 100644
index 00000000..fd5f7daa
--- /dev/null
+++ b/search/search_l.png
Binary files differ
diff --git a/search/search_m.png b/search/search_m.png
new file mode 100644
index 00000000..b429a16b
--- /dev/null
+++ b/search/search_m.png
Binary files differ
diff --git a/search/search_r.png b/search/search_r.png
new file mode 100644
index 00000000..1af5d21e
--- /dev/null
+++ b/search/search_r.png
Binary files differ
diff --git a/search/searchdata.js b/search/searchdata.js
new file mode 100644
index 00000000..73977dd3
--- /dev/null
+++ b/search/searchdata.js
@@ -0,0 +1,42 @@
+var indexSectionsWithContent =
+{
+ 0: "_abdilnrsuw",
+ 1: "w",
+ 2: "w",
+ 3: "_aw",
+ 4: "n",
+ 5: "bw",
+ 6: "bw",
+ 7: "bw",
+ 8: "abdilrsu",
+ 9: "s"
+};
+
+var indexSectionNames =
+{
+ 0: "all",
+ 1: "classes",
+ 2: "files",
+ 3: "functions",
+ 4: "variables",
+ 5: "typedefs",
+ 6: "enums",
+ 7: "enumvalues",
+ 8: "groups",
+ 9: "pages"
+};
+
+var indexSectionLabels =
+{
+ 0: "All",
+ 1: "Data Structures",
+ 2: "Files",
+ 3: "Functions",
+ 4: "Variables",
+ 5: "Typedefs",
+ 6: "Enumerations",
+ 7: "Enumerator",
+ 8: "Modules",
+ 9: "Pages"
+};
+
diff --git a/search/typedefs_0.html b/search/typedefs_0.html
new file mode 100644
index 00000000..a4684c4a
--- /dev/null
+++ b/search/typedefs_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/typedefs_0.js b/search/typedefs_0.js
new file mode 100644
index 00000000..493eaec1
--- /dev/null
+++ b/search/typedefs_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['buzzernote_289',['BuzzerNote',['../group__buzzer.html#gafa12cf05739781d774798dab6b8a3fed',1,'watch_buzzer.h']]]
+];
diff --git a/search/typedefs_1.html b/search/typedefs_1.html
new file mode 100644
index 00000000..46cf01e6
--- /dev/null
+++ b/search/typedefs_1.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/typedefs_1.js b/search/typedefs_1.js
new file mode 100644
index 00000000..490ded9c
--- /dev/null
+++ b/search/typedefs_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['watch_5finterrupt_5ftrigger_290',['watch_interrupt_trigger',['../group__buttons.html#gadee2b304ce34a8aec5aedabd75934c1b',1,'watch_extint.h']]],
+ ['watchindicatorsegment_291',['WatchIndicatorSegment',['../group__slcd.html#ga12f90dd93f63366e5a08f161e5f6c9f5',1,'watch_slcd.h']]]
+];
diff --git a/search/variables_0.html b/search/variables_0.html
new file mode 100644
index 00000000..1e477c08
--- /dev/null
+++ b/search/variables_0.html
@@ -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.1"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+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>
diff --git a/search/variables_0.js b/search/variables_0.js
new file mode 100644
index 00000000..14fe8eff
--- /dev/null
+++ b/search/variables_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['noteperiods_288',['NotePeriods',['../group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b',1,'NotePeriods():&#160;watch_buzzer.c'],['../group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b',1,'NotePeriods():&#160;watch_buzzer.c']]]
+];
diff --git a/splitbar.png b/splitbar.png
new file mode 100644
index 00000000..fe895f2c
--- /dev/null
+++ b/splitbar.png
Binary files differ
diff --git a/sync_off.png b/sync_off.png
new file mode 100644
index 00000000..3b443fc6
--- /dev/null
+++ b/sync_off.png
Binary files differ
diff --git a/sync_on.png b/sync_on.png
new file mode 100644
index 00000000..e08320fb
--- /dev/null
+++ b/sync_on.png
Binary files differ
diff --git a/tab_a.png b/tab_a.png
new file mode 100644
index 00000000..3b725c41
--- /dev/null
+++ b/tab_a.png
Binary files differ
diff --git a/tab_b.png b/tab_b.png
new file mode 100644
index 00000000..e2b4a863
--- /dev/null
+++ b/tab_b.png
Binary files differ
diff --git a/tab_h.png b/tab_h.png
new file mode 100644
index 00000000..fd5cb705
--- /dev/null
+++ b/tab_h.png
Binary files differ
diff --git a/tab_s.png b/tab_s.png
new file mode 100644
index 00000000..ab478c95
--- /dev/null
+++ b/tab_s.png
Binary files differ
diff --git a/tabs.css b/tabs.css
new file mode 100644
index 00000000..85a0cd5b
--- /dev/null
+++ b/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file
diff --git a/tusb__config_8h_source.html b/tusb__config_8h_source.html
new file mode 100644
index 00000000..590a1e81
--- /dev/null
+++ b/tusb__config_8h_source.html
@@ -0,0 +1,171 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/tusb_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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">tusb_config.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * The MIT License (MIT)</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2019 Ha Thach (tinyusb.org)</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * all copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * THE SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifndef _TUSB_CONFIG_H_</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define _TUSB_CONFIG_H_</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//--------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// COMMON CONFIGURATION</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">//--------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// defined by board.mk</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define CFG_TUSB_MCU OPT_MCU_SAML22</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#define BOARD_DEVICE_RHPORT_NUM 0</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#define BOARD_DEVICE_RHPORT_SPEED OPT_MODE_FULL_SPEED</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_FULL_SPEED)</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#define CFG_TUSB_OS OPT_OS_NONE</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// disable TinyUSB debug. our printf method prints stuff to the USB console, so you just get infinite noise.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// if you need to debug tinyUSB issues, use the alternate _write function in watch_private.c to echo to the UART.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define CFG_TUSB_DEBUG 0</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * Tinyusb use follows macros to declare transferring memory so that they can be put</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * into those specific section.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * e.g</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * - CFG_TUSB_MEM SECTION : __attribute__ (( section(&quot;.usb_ram&quot;) ))</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#ifndef CFG_TUSB_MEM_SECTION</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#define CFG_TUSB_MEM_SECTION</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifndef CFG_TUSB_MEM_ALIGN</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#define CFG_TUSB_MEM_ALIGN __attribute__ ((aligned(4)))</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">//--------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">// DEVICE CONFIGURATION</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">//--------------------------------------------------------------------</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#ifndef CFG_TUD_ENDPOINT0_SIZE</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#define CFG_TUD_ENDPOINT0_SIZE 64</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">//------------- CLASS -------------//</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#define CFG_TUD_CDC 1</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#define CFG_TUD_MSC 0</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#define CFG_TUD_HID 0</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#define CFG_TUD_MIDI 0</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#define CFG_TUD_VENDOR 0</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">// CDC FIFO size of TX and RX</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#define CFG_TUD_CDC_RX_BUFSIZE (64)</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#define CFG_TUD_CDC_TX_BUFSIZE (64)</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">// CDC Endpoint transfer buffer size, more is faster</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#define CFG_TUD_CDC_EP_BUFSIZE (64)</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _TUSB_CONFIG_H_ */</span><span class="preprocessor"></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.1
+</small></address>
+</body>
+</html>
diff --git a/unionwatch__date__time.html b/unionwatch__date__time.html
new file mode 100644
index 00000000..3faaaa35
--- /dev/null
+++ b/unionwatch__date__time.html
@@ -0,0 +1,110 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch_date_time Union 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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">watch_date_time Union Reference<div class="ingroups"><a class="el" href="group__rtc.html">Real-Time Clock</a></div></div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a1dca8befac0bbe321f1562cc508699a2"><td class="memItemLeft" ><a id="a1dca8befac0bbe321f1562cc508699a2"></a>
+struct {</td></tr>
+<tr class="memitem:a1a12bcade721cffd8a81d4c185ebd54f"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>second</b>: 6</td></tr>
+<tr class="separator:a1a12bcade721cffd8a81d4c185ebd54f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9d00e0f7c2f66ebd747ba21d9a7c084"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>minute</b>: 6</td></tr>
+<tr class="separator:ae9d00e0f7c2f66ebd747ba21d9a7c084"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abda29c56bc762344a06467ed23e837ee"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>hour</b>: 5</td></tr>
+<tr class="separator:abda29c56bc762344a06467ed23e837ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a177612dc44a2d8516199a31994110443"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>day</b>: 5</td></tr>
+<tr class="separator:a177612dc44a2d8516199a31994110443"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a442a15106de151fb603fb4b8294079e7"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>month</b>: 4</td></tr>
+<tr class="separator:a442a15106de151fb603fb4b8294079e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a050f502eecdc58832cee3605059a263d"><td class="memItemLeft" >
+&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<b>year</b>: 6</td></tr>
+<tr class="separator:a050f502eecdc58832cee3605059a263d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1dca8befac0bbe321f1562cc508699a2"><td class="memItemLeft" valign="top">}&#160;</td><td class="memItemRight" valign="bottom"><b>unit</b></td></tr>
+<tr class="separator:a1dca8befac0bbe321f1562cc508699a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a934a7c36c186da8b555435e315aa62f6"><td class="memItemLeft" align="right" valign="top"><a id="a934a7c36c186da8b555435e315aa62f6"></a>
+uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>reg</b></td></tr>
+<tr class="separator:a934a7c36c186da8b555435e315aa62f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this union was generated from the following file:<ul>
+<li>watch-library/watch/<a class="el" href="watch__rtc_8h_source.html">watch_rtc.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch_8h.html b/watch_8h.html
new file mode 100644
index 00000000..5a00d3b0
--- /dev/null
+++ b/watch_8h.html
@@ -0,0 +1,128 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</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">watch.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;stdint.h&gt;</code><br />
+<code>#include &lt;stdbool.h&gt;</code><br />
+<code>#include &quot;driver_init.h&quot;</code><br />
+<code>#include &quot;watch_app.h&quot;</code><br />
+<code>#include &quot;watch_rtc.h&quot;</code><br />
+<code>#include &quot;watch_slcd.h&quot;</code><br />
+<code>#include &quot;watch_extint.h&quot;</code><br />
+<code>#include &quot;watch_led.h&quot;</code><br />
+<code>#include &quot;watch_buzzer.h&quot;</code><br />
+<code>#include &quot;watch_adc.h&quot;</code><br />
+<code>#include &quot;watch_gpio.h&quot;</code><br />
+<code>#include &quot;watch_i2c.h&quot;</code><br />
+<code>#include &quot;watch_uart.h&quot;</code><br />
+<code>#include &quot;watch_deepsleep.h&quot;</code><br />
+<code>#include &quot;watch_private.h&quot;</code><br />
+</div>
+<p><a href="watch_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 name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a16023aa6b668de61af59b40b2bee5d1d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">watch_is_battery_low</a> (void)</td></tr>
+<tr class="memdesc:a16023aa6b668de61af59b40b2bee5d1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true when the battery voltage dips below 2.5V. <a href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">More...</a><br /></td></tr>
+<tr class="separator:a16023aa6b668de61af59b40b2bee5d1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a16023aa6b668de61af59b40b2bee5d1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a16023aa6b668de61af59b40b2bee5d1d">&#9670;&nbsp;</a></span>watch_is_battery_low()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool watch_is_battery_low </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns true when the battery voltage dips below 2.5V. </p>
+<p>A CR2016 battery will have a nominal voltage between 2.9 and 3 volts for most of its lifespan. Once the battery discharges to about 60%, the voltage will drift slightly lower; this may manifest as a dimmer LED. By the time the battery voltage has fallen to 2.5 volts, it will have probably less than 10% of its capacity remaining, and you can expect the voltage to drop relatively quickly as the battery dies. </p>
+
+</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.1
+</small></address>
+</body>
+</html>
diff --git a/watch_8h_source.html b/watch_8h_source.html
new file mode 100644
index 00000000..fc6219c2
--- /dev/null
+++ b/watch_8h_source.html
@@ -0,0 +1,128 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="watch_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifndef WATCH_H_</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#define WATCH_H_</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;driver_init.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;watch_app.h&quot;</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;watch_rtc.h&quot;</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;watch_slcd.h&quot;</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;watch_extint.h&quot;</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;watch_led.h&quot;</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;watch_buzzer.h&quot;</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;watch_adc.h&quot;</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;watch_gpio.h&quot;</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;watch_i2c.h&quot;</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;watch_uart.h&quot;</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;watch_deepsleep.h&quot;</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#include &quot;watch_private.h&quot;</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">watch_is_battery_low</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* WATCH_H_ */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="awatch_8h_html_a16023aa6b668de61af59b40b2bee5d1d"><div class="ttname"><a href="watch_8h.html#a16023aa6b668de61af59b40b2bee5d1d">watch_is_battery_low</a></div><div class="ttdeci">bool watch_is_battery_low(void)</div><div class="ttdoc">Returns true when the battery voltage dips below 2.5V.</div><div class="ttdef"><b>Definition:</b> watch.c:38</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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__adc_8h_source.html b/watch__adc_8h_source.html
new file mode 100644
index 00000000..4f23491a
--- /dev/null
+++ b/watch__adc_8h_source.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_adc.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_adc.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_ADC_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_ADC_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#ga908b5334af677309b03d7679d77aaa02">watch_enable_adc</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#ga30a491e9cab049a2812f75862a613aa8">watch_enable_analog_input</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;uint16_t <a class="code" href="group__adc.html#ga2064244f68cff87a1df08f6b07183069">watch_get_analog_pin_level</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d">watch_set_analog_num_samples</a>(uint16_t samples);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#gae9f9ed34e8752e211c1692af473a88dc">watch_set_analog_sampling_length</a>(uint8_t cycles);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; </div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; ADC_REFERENCE_INTREF = ADC_REFCTRL_REFSEL_INTREF_Val,</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; ADC_REFERENCE_VCC_DIV1POINT6 = ADC_REFCTRL_REFSEL_INTVCC0_Val,</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; ADC_REFERENCE_VCC_DIV2 = ADC_REFCTRL_REFSEL_INTVCC1_Val,</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; ADC_REFERENCE_VCC = ADC_REFCTRL_REFSEL_INTVCC2_Val,</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;} watch_adc_reference_voltage;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93">watch_set_analog_reference_voltage</a>(watch_adc_reference_voltage reference);</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;uint16_t <a class="code" href="group__adc.html#ga465fcb058492d350d29fe4403df85b14">watch_get_vcc_voltage</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31">watch_disable_analog_input</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb">watch_disable_adc</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__adc_html_ga2064244f68cff87a1df08f6b07183069"><div class="ttname"><a href="group__adc.html#ga2064244f68cff87a1df08f6b07183069">watch_get_analog_pin_level</a></div><div class="ttdeci">uint16_t watch_get_analog_pin_level(const uint8_t pin)</div><div class="ttdoc">Reads an analog value from one of the pins.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:104</div></div>
+<div class="ttc" id="agroup__adc_html_ga30a491e9cab049a2812f75862a613aa8"><div class="ttname"><a href="group__adc.html#ga30a491e9cab049a2812f75862a613aa8">watch_enable_analog_input</a></div><div class="ttdeci">void watch_enable_analog_input(const uint8_t pin)</div><div class="ttdoc">Configures the selected pin for analog input.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:81</div></div>
+<div class="ttc" id="agroup__adc_html_ga465fcb058492d350d29fe4403df85b14"><div class="ttname"><a href="group__adc.html#ga465fcb058492d350d29fe4403df85b14">watch_get_vcc_voltage</a></div><div class="ttdeci">uint16_t watch_get_vcc_voltage(void)</div><div class="ttdoc">Returns the voltage of the VCC supply in millivolts (i.e. 3000 mV == 3.0 V). If running on a coin cel...</div><div class="ttdef"><b>Definition:</b> watch_adc.c:154</div></div>
+<div class="ttc" id="agroup__adc_html_ga908b5334af677309b03d7679d77aaa02"><div class="ttname"><a href="group__adc.html#ga908b5334af677309b03d7679d77aaa02">watch_enable_adc</a></div><div class="ttdeci">void watch_enable_adc(void)</div><div class="ttdoc">Enables the ADC peripheral. You must call this before attempting to read a value from an analog pin.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:43</div></div>
+<div class="ttc" id="agroup__adc_html_ga90bac58a3fa935d8fd640f4b58c8037d"><div class="ttname"><a href="group__adc.html#ga90bac58a3fa935d8fd640f4b58c8037d">watch_set_analog_num_samples</a></div><div class="ttdeci">void watch_set_analog_num_samples(uint16_t samples)</div><div class="ttdoc">Sets the number of samples to accumulate when measuring a pin level. Default is 16.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:121</div></div>
+<div class="ttc" id="agroup__adc_html_ga9ea7b8aef4573f02ff3adafcf891cd93"><div class="ttname"><a href="group__adc.html#ga9ea7b8aef4573f02ff3adafcf891cd93">watch_set_analog_reference_voltage</a></div><div class="ttdeci">void watch_set_analog_reference_voltage(watch_adc_reference_voltage reference)</div><div class="ttdoc">Selects the reference voltage to use for analog readings. Default is ADC_REFERENCE_VCC.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:141</div></div>
+<div class="ttc" id="agroup__adc_html_gae38e15840bc5f3eca16ccb782dbb1c31"><div class="ttname"><a href="group__adc.html#gae38e15840bc5f3eca16ccb782dbb1c31">watch_disable_analog_input</a></div><div class="ttdeci">void watch_disable_analog_input(const uint8_t pin)</div><div class="ttdoc">Disables the analog circuitry on the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:170</div></div>
+<div class="ttc" id="agroup__adc_html_gae9f9ed34e8752e211c1692af473a88dc"><div class="ttname"><a href="group__adc.html#gae9f9ed34e8752e211c1692af473a88dc">watch_set_analog_sampling_length</a></div><div class="ttdeci">void watch_set_analog_sampling_length(uint8_t cycles)</div><div class="ttdoc">Sets the length of time spent sampling, which allows measurement of higher impedance inputs....</div><div class="ttdef"><b>Definition:</b> watch_adc.c:133</div></div>
+<div class="ttc" id="agroup__adc_html_gaf443c79008bec5ceecbd21ad401d52cb"><div class="ttname"><a href="group__adc.html#gaf443c79008bec5ceecbd21ad401d52cb">watch_disable_adc</a></div><div class="ttdeci">void watch_disable_adc(void)</div><div class="ttdoc">Disables the ADC peripheral.</div><div class="ttdef"><b>Definition:</b> watch_adc.c:174</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__app_8h_source.html b/watch__app_8h_source.html
new file mode 100644
index 00000000..ec16a44d
--- /dev/null
+++ b/watch__app_8h_source.html
@@ -0,0 +1,126 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_app.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_app.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_APP_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_APP_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="group__app.html#gadd3190cf715f513666f4be42874d91e2"> 58</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__app.html#gadd3190cf715f513666f4be42874d91e2">app_init</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a"> 64</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a">app_wake_from_backup</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group__app.html#gacce192accedbd296eb8d2182f8101f16"> 74</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__app.html#gacce192accedbd296eb8d2182f8101f16">app_setup</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a"> 89</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a">app_loop</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="group__app.html#gaee30a1614f76afc41117f7176fb30165"> 101</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__app.html#gaee30a1614f76afc41117f7176fb30165">app_prepare_for_standby</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="group__app.html#gacc7e7ff6108524545ab4183110811874"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__app.html#gacc7e7ff6108524545ab4183110811874">app_wake_from_standby</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__app_html_gab6a9f08ba879ce8d28fb19ca2882890a"><div class="ttname"><a href="group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a">app_wake_from_backup</a></div><div class="ttdeci">void app_wake_from_backup(void)</div><div class="ttdoc">A function you will implement to wake from BACKUP mode, which wipes the system's RAM,...</div></div>
+<div class="ttc" id="agroup__app_html_gacc7e7ff6108524545ab4183110811874"><div class="ttname"><a href="group__app.html#gacc7e7ff6108524545ab4183110811874">app_wake_from_standby</a></div><div class="ttdeci">void app_wake_from_standby(void)</div><div class="ttdoc">A method you will implement to configure the app after waking from STANDBY mode.</div></div>
+<div class="ttc" id="agroup__app_html_gacce192accedbd296eb8d2182f8101f16"><div class="ttname"><a href="group__app.html#gacce192accedbd296eb8d2182f8101f16">app_setup</a></div><div class="ttdeci">void app_setup(void)</div><div class="ttdoc">A function you will implement to set up your application. The app_setup function is like setup() in A...</div></div>
+<div class="ttc" id="agroup__app_html_gad1cfce0ef962cd2afe2d8b2d2d13482a"><div class="ttname"><a href="group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a">app_loop</a></div><div class="ttdeci">bool app_loop(void)</div><div class="ttdoc">A function you will implement to serve as the app's main run loop. This method will be called repeate...</div></div>
+<div class="ttc" id="agroup__app_html_gadd3190cf715f513666f4be42874d91e2"><div class="ttname"><a href="group__app.html#gadd3190cf715f513666f4be42874d91e2">app_init</a></div><div class="ttdeci">void app_init(void)</div><div class="ttdoc">A function you will implement to initialize your application state. The app_init function is called b...</div></div>
+<div class="ttc" id="agroup__app_html_gaee30a1614f76afc41117f7176fb30165"><div class="ttname"><a href="group__app.html#gaee30a1614f76afc41117f7176fb30165">app_prepare_for_standby</a></div><div class="ttdeci">void app_prepare_for_standby(void)</div><div class="ttdoc">A function you will implement to prepare to enter STANDBY mode. The app_prepare_for_standby function ...</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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__buzzer_8h_source.html b/watch__buzzer_8h_source.html
new file mode 100644
index 00000000..a6c2865f
--- /dev/null
+++ b/watch__buzzer_8h_source.html
@@ -0,0 +1,312 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_buzzer.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_buzzer.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_BUZZER_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_BUZZER_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204">watch_enable_buzzer</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9">watch_set_buzzer_period</a>(uint32_t period);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93">watch_disable_buzzer</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98">watch_set_buzzer_on</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4">watch_set_buzzer_off</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6"> 61</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a> {</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab"> 62</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab">BUZZER_NOTE_A1</a>, </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d"> 63</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d">BUZZER_NOTE_A1SHARP_B1FLAT</a>, </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d"> 64</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d">BUZZER_NOTE_B1</a>, </div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465"> 65</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465">BUZZER_NOTE_C2</a>, </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232"> 66</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232">BUZZER_NOTE_C2SHARP_D2FLAT</a>, </div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119"> 67</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119">BUZZER_NOTE_D2</a>, </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a"> 68</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a">BUZZER_NOTE_D2SHARP_E2FLAT</a>, </div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b"> 69</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b">BUZZER_NOTE_E2</a>, </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1"> 70</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1">BUZZER_NOTE_F2</a>, </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447"> 71</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447">BUZZER_NOTE_F2SHARP_G2FLAT</a>, </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3"> 72</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3">BUZZER_NOTE_G2</a>, </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f"> 73</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f">BUZZER_NOTE_G2SHARP_A2FLAT</a>, </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e"> 74</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e">BUZZER_NOTE_A2</a>, </div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9"> 75</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9">BUZZER_NOTE_A2SHARP_B2FLAT</a>, </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6"> 76</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6">BUZZER_NOTE_B2</a>, </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb"> 77</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb">BUZZER_NOTE_C3</a>, </div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08"> 78</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08">BUZZER_NOTE_C3SHARP_D3FLAT</a>, </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935"> 79</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935">BUZZER_NOTE_D3</a>, </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0"> 80</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0">BUZZER_NOTE_D3SHARP_E3FLAT</a>, </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1"> 81</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1">BUZZER_NOTE_E3</a>, </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30"> 82</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30">BUZZER_NOTE_F3</a>, </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a"> 83</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a">BUZZER_NOTE_F3SHARP_G3FLAT</a>, </div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd"> 84</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd">BUZZER_NOTE_G3</a>, </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31"> 85</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31">BUZZER_NOTE_G3SHARP_A3FLAT</a>, </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1"> 86</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1">BUZZER_NOTE_A3</a>, </div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc"> 87</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc">BUZZER_NOTE_A3SHARP_B3FLAT</a>, </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56"> 88</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56">BUZZER_NOTE_B3</a>, </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115"> 89</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115">BUZZER_NOTE_C4</a>, </div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086"> 90</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086">BUZZER_NOTE_C4SHARP_D4FLAT</a>, </div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53"> 91</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53">BUZZER_NOTE_D4</a>, </div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2"> 92</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2">BUZZER_NOTE_D4SHARP_E4FLAT</a>, </div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c"> 93</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c">BUZZER_NOTE_E4</a>, </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31"> 94</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31">BUZZER_NOTE_F4</a>, </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086"> 95</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086">BUZZER_NOTE_F4SHARP_G4FLAT</a>, </div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8"> 96</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8">BUZZER_NOTE_G4</a>, </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8"> 97</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8">BUZZER_NOTE_G4SHARP_A4FLAT</a>, </div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5"> 98</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5">BUZZER_NOTE_A4</a>, </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23"> 99</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23">BUZZER_NOTE_A4SHARP_B4FLAT</a>, </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a"> 100</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a">BUZZER_NOTE_B4</a>, </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3"> 101</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3">BUZZER_NOTE_C5</a>, </div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96"> 102</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96">BUZZER_NOTE_C5SHARP_D5FLAT</a>, </div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd"> 103</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd">BUZZER_NOTE_D5</a>, </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b"> 104</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b">BUZZER_NOTE_D5SHARP_E5FLAT</a>, </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431"> 105</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431">BUZZER_NOTE_E5</a>, </div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77"> 106</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77">BUZZER_NOTE_F5</a>, </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838"> 107</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838">BUZZER_NOTE_F5SHARP_G5FLAT</a>, </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e"> 108</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e">BUZZER_NOTE_G5</a>, </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c"> 109</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c">BUZZER_NOTE_G5SHARP_A5FLAT</a>, </div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7"> 110</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7">BUZZER_NOTE_A5</a>, </div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57"> 111</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57">BUZZER_NOTE_A5SHARP_B5FLAT</a>, </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4"> 112</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4">BUZZER_NOTE_B5</a>, </div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5"> 113</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5">BUZZER_NOTE_C6</a>, </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2"> 114</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2">BUZZER_NOTE_C6SHARP_D6FLAT</a>, </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f"> 115</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f">BUZZER_NOTE_D6</a>, </div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f"> 116</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f">BUZZER_NOTE_D6SHARP_E6FLAT</a>, </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c"> 117</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c">BUZZER_NOTE_E6</a>, </div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae"> 118</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae">BUZZER_NOTE_F6</a>, </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0"> 119</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0">BUZZER_NOTE_F6SHARP_G6FLAT</a>, </div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2"> 120</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2">BUZZER_NOTE_G6</a>, </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849"> 121</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849">BUZZER_NOTE_G6SHARP_A6FLAT</a>, </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db"> 122</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db">BUZZER_NOTE_A6</a>, </div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d"> 123</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d">BUZZER_NOTE_A6SHARP_B6FLAT</a>, </div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80"> 124</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80">BUZZER_NOTE_B6</a>, </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569"> 125</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569">BUZZER_NOTE_C7</a>, </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908"> 126</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908">BUZZER_NOTE_C7SHARP_D7FLAT</a>, </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0"> 127</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0">BUZZER_NOTE_D7</a>, </div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542"> 128</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542">BUZZER_NOTE_D7SHARP_E7FLAT</a>, </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392"> 129</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392">BUZZER_NOTE_E7</a>, </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90"> 130</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90">BUZZER_NOTE_F7</a>, </div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b"> 131</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b">BUZZER_NOTE_F7SHARP_G7FLAT</a>, </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd"> 132</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd">BUZZER_NOTE_G7</a>, </div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a"> 133</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a">BUZZER_NOTE_G7SHARP_A7FLAT</a>, </div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1"> 134</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1">BUZZER_NOTE_A7</a>, </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab"> 135</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab">BUZZER_NOTE_A7SHARP_B7FLAT</a>, </div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629"> 136</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629">BUZZER_NOTE_B7</a>, </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b"> 137</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b">BUZZER_NOTE_C8</a>, </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67"> 138</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67">BUZZER_NOTE_C8SHARP_D8FLAT</a>, </div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894"> 139</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894">BUZZER_NOTE_D8</a>, </div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2"> 140</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2">BUZZER_NOTE_D8SHARP_E8FLAT</a>, </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615"> 141</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615">BUZZER_NOTE_E8</a>, </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5"> 142</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5">BUZZER_NOTE_F8</a>, </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5"> 143</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5">BUZZER_NOTE_F8SHARP_G8FLAT</a>, </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c"> 144</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c">BUZZER_NOTE_G8</a>, </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436"> 145</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436">BUZZER_NOTE_G8SHARP_A8FLAT</a>, </div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681"> 146</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681">BUZZER_NOTE_A8</a>, </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6"> 147</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6">BUZZER_NOTE_A8SHARP_B8FLAT</a>, </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20"> 148</a></span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20">BUZZER_NOTE_B8</a>, </div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad">BUZZER_NOTE_REST</a> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad"> 150</a></span>&#160;} <a class="code" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a>;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80">watch_buzzer_play_note</a>(<a class="code" href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a> note, uint16_t duration_ms);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> uint16_t <a class="code" href="group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b">NotePeriods</a>[108];</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__buzzer_html_ga1b6ece8107c1f2bedf80d5584d204b80"><div class="ttname"><a href="group__buzzer.html#ga1b6ece8107c1f2bedf80d5584d204b80">watch_buzzer_play_note</a></div><div class="ttdeci">void watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms)</div><div class="ttdoc">Plays the given note for a set duration.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:54</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga1bb9e9b72fb691b87708ed14f79491d6"><div class="ttname"><a href="group__buzzer.html#ga1bb9e9b72fb691b87708ed14f79491d6">BuzzerNote</a></div><div class="ttdeci">BuzzerNote</div><div class="ttdoc">87 notes for use with watch_buzzer_play_note</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:61</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga24cef76bc304371e7914c7c5bb579f93"><div class="ttname"><a href="group__buzzer.html#ga24cef76bc304371e7914c7c5bb579f93">watch_disable_buzzer</a></div><div class="ttdeci">void watch_disable_buzzer(void)</div><div class="ttdoc">Disables the TCC peripheral that drives the buzzer.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:36</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga6a2d48712d70aff4a1ab463afe6fdd98"><div class="ttname"><a href="group__buzzer.html#ga6a2d48712d70aff4a1ab463afe6fdd98">watch_set_buzzer_on</a></div><div class="ttdeci">void watch_set_buzzer_on(void)</div><div class="ttdoc">Turns the buzzer output on. It will emit a continuous sound at the given frequency.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:40</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga747b4014093d6a71b6d8fba2db41696b"><div class="ttname"><a href="group__buzzer.html#ga747b4014093d6a71b6d8fba2db41696b">NotePeriods</a></div><div class="ttdeci">const uint16_t NotePeriods[108]</div><div class="ttdoc">An array of periods for all the notes on a piano, corresponding to the names in BuzzerNote.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:52</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga77f213418f48937de73bfe7ac5fc58c9"><div class="ttname"><a href="group__buzzer.html#ga77f213418f48937de73bfe7ac5fc58c9">watch_set_buzzer_period</a></div><div class="ttdeci">void watch_set_buzzer_period(uint32_t period)</div><div class="ttdoc">Sets the period of the buzzer.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:32</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga803568f5bc5f6b77ea9efa5299c6d9f4"><div class="ttname"><a href="group__buzzer.html#ga803568f5bc5f6b77ea9efa5299c6d9f4">watch_set_buzzer_off</a></div><div class="ttdeci">void watch_set_buzzer_off(void)</div><div class="ttdoc">Turns the buzzer output off.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:45</div></div>
+<div class="ttc" id="agroup__buzzer_html_ga84d2f603c4f87f2199ebc102439fb204"><div class="ttname"><a href="group__buzzer.html#ga84d2f603c4f87f2199ebc102439fb204">watch_enable_buzzer</a></div><div class="ttdeci">void watch_enable_buzzer(void)</div><div class="ttdoc">Enables the TCC peripheral, which drives the buzzer.</div><div class="ttdef"><b>Definition:</b> watch_buzzer.c:27</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0019fe1785c3b63973ed0298d5ae4bb5">BUZZER_NOTE_F8</a></div><div class="ttdeci">@ BUZZER_NOTE_F8</div><div class="ttdoc">5587.65 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:142</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a023e51a47ee6b030ebbeeaa6d669889f">BUZZER_NOTE_D6SHARP_E6FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D6SHARP_E6FLAT</div><div class="ttdoc">1244.51 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:116</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a04d424219333aa1fac0cae7de68d94d4">BUZZER_NOTE_B5</a></div><div class="ttdeci">@ BUZZER_NOTE_B5</div><div class="ttdoc">987.77 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:112</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0604e943a79ddc1da00c9702fa4f424a">BUZZER_NOTE_F3SHARP_G3FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F3SHARP_G3FLAT</div><div class="ttdoc">185.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:83</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a07c7bd4fc0230296cdd073af361a2e2b">BUZZER_NOTE_C8</a></div><div class="ttdeci">@ BUZZER_NOTE_C8</div><div class="ttdoc">4186.01 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:137</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0821aede51092e8a91d0ff6079041d20">BUZZER_NOTE_B8</a></div><div class="ttdeci">@ BUZZER_NOTE_B8</div><div class="ttdoc">7902.13 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:148</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0b3434b807be2a43e547f5ac5abc0ad1">BUZZER_NOTE_E3</a></div><div class="ttdeci">@ BUZZER_NOTE_E3</div><div class="ttdoc">164.81 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:81</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a0c7b8f7d40c17383206711ea62671f2f">BUZZER_NOTE_D6</a></div><div class="ttdeci">@ BUZZER_NOTE_D6</div><div class="ttdoc">1174.66 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:115</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a15d132d03442fb7ef68c79a2ea51a03d">BUZZER_NOTE_B1</a></div><div class="ttdeci">@ BUZZER_NOTE_B1</div><div class="ttdoc">61.74 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:64</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a18f205be114424d28e6cd009f52e3ff8">BUZZER_NOTE_G4</a></div><div class="ttdeci">@ BUZZER_NOTE_G4</div><div class="ttdoc">392.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:96</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1e4df83378edcdacfbb177f0f9b91629">BUZZER_NOTE_B7</a></div><div class="ttdeci">@ BUZZER_NOTE_B7</div><div class="ttdoc">3951.07 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:136</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a1fb53bd8fe32b3ba14024839e6522908">BUZZER_NOTE_C7SHARP_D7FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C7SHARP_D7FLAT</div><div class="ttdoc">2217.46 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:126</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23098056c21bc85f54d103d0512fcb31">BUZZER_NOTE_G3SHARP_A3FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G3SHARP_A3FLAT</div><div class="ttdoc">207.65 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:85</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a23be129ddebefc138f7e17d9b1a149f5">BUZZER_NOTE_C6</a></div><div class="ttdeci">@ BUZZER_NOTE_C6</div><div class="ttdoc">1046.50 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:113</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24bb6ca4bccedcf1b86853730ae9815c">BUZZER_NOTE_E6</a></div><div class="ttdeci">@ BUZZER_NOTE_E6</div><div class="ttdoc">1318.51 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:117</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a24d5bce8eb78d22e39c5dc4117540542">BUZZER_NOTE_D7SHARP_E7FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D7SHARP_E7FLAT</div><div class="ttdoc">2489.02 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:128</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2b60be48ea6333e6a8e88a2743e79392">BUZZER_NOTE_E7</a></div><div class="ttdeci">@ BUZZER_NOTE_E7</div><div class="ttdoc">2637.02 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:129</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a2bf817cf9bfeb3e4735cd25e98810e6c">BUZZER_NOTE_E4</a></div><div class="ttdeci">@ BUZZER_NOTE_E4</div><div class="ttdoc">329.63 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:93</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a389ae13e26d89dbe2a811deb7f58ed80">BUZZER_NOTE_B6</a></div><div class="ttdeci">@ BUZZER_NOTE_B6</div><div class="ttdoc">1975.53 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:124</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a38cc9db9a774f5e8f78b26a95f9020ad">BUZZER_NOTE_REST</a></div><div class="ttdeci">@ BUZZER_NOTE_REST</div><div class="ttdoc">no sound</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:149</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3a80021428f24fc29b714b768e8a27e2">BUZZER_NOTE_D8SHARP_E8FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D8SHARP_E8FLAT</div><div class="ttdoc">4978.03 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:140</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a3e4854fa8f4113e8716e0d9fd13699a2">BUZZER_NOTE_D4SHARP_E4FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D4SHARP_E4FLAT</div><div class="ttdoc">311.13 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:92</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a42510194448233844fe941d63583e465">BUZZER_NOTE_C2</a></div><div class="ttdeci">@ BUZZER_NOTE_C2</div><div class="ttdoc">65.41 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:65</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a4da4372f5404e78b8d9efec023e3a8d6">BUZZER_NOTE_B2</a></div><div class="ttdeci">@ BUZZER_NOTE_B2</div><div class="ttdoc">123.47 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:76</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a520b4ccbf94e5ccb1374eb8457df5f77">BUZZER_NOTE_F5</a></div><div class="ttdeci">@ BUZZER_NOTE_F5</div><div class="ttdoc">698.46 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:106</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a526a5e7540fec69ede0d7cc019b27232">BUZZER_NOTE_C2SHARP_D2FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C2SHARP_D2FLAT</div><div class="ttdoc">69.30 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:66</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a52807e5115c73087801ae19400435086">BUZZER_NOTE_C4SHARP_D4FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C4SHARP_D4FLAT</div><div class="ttdoc">277.18 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:90</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a535918417144d5def0b514e00afede5d">BUZZER_NOTE_A6SHARP_B6FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A6SHARP_B6FLAT</div><div class="ttdoc">1864.66 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:123</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5d998c6bc00b76857c81c1fa19ac2bd2">BUZZER_NOTE_G6</a></div><div class="ttdeci">@ BUZZER_NOTE_G6</div><div class="ttdoc">1567.98 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:120</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5e22350698cb4f47b0f86985359a8c57">BUZZER_NOTE_A5SHARP_B5FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A5SHARP_B5FLAT</div><div class="ttdoc">932.33 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:111</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5ea3a5a1985ccdf22065c4b49b9b0d5c">BUZZER_NOTE_G8</a></div><div class="ttdeci">@ BUZZER_NOTE_G8</div><div class="ttdoc">6271.93 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:144</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a5f71c43c1f4c98c385ad4571d50dca53">BUZZER_NOTE_D4</a></div><div class="ttdeci">@ BUZZER_NOTE_D4</div><div class="ttdoc">293.66 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:91</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a65296207f5b7e99a41176830cc81dd8c">BUZZER_NOTE_G5SHARP_A5FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G5SHARP_A5FLAT</div><div class="ttdoc">830.61 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:109</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66ab13f3ca039caae7d7bc9f88466bdc">BUZZER_NOTE_A3SHARP_B3FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A3SHARP_B3FLAT</div><div class="ttdoc">233.08 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:87</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a66b1e9a10a75da4aa194555ac0e6ecbd">BUZZER_NOTE_G7</a></div><div class="ttdeci">@ BUZZER_NOTE_G7</div><div class="ttdoc">3135.96 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:132</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a67235ce0f70b6a19e2d2e85fa782966b">BUZZER_NOTE_D5SHARP_E5FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D5SHARP_E5FLAT</div><div class="ttdoc">622.25 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:104</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a68efc589cfd823c2f4d5711db9940935">BUZZER_NOTE_D3</a></div><div class="ttdeci">@ BUZZER_NOTE_D3</div><div class="ttdoc">146.83 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:79</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6943445315c16460ad8226c337ce80b8">BUZZER_NOTE_G4SHARP_A4FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G4SHARP_A4FLAT</div><div class="ttdoc">415.30 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:97</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6aa0d6d561d6ec68cf2fcdfc662e289d">BUZZER_NOTE_A1SHARP_B1FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A1SHARP_B1FLAT</div><div class="ttdoc">58.27 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:63</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6c1db9b5c52360e78fcab4769fdecebd">BUZZER_NOTE_D5</a></div><div class="ttdeci">@ BUZZER_NOTE_D5</div><div class="ttdoc">587.33 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:103</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6e1c28d05df3eedfac981a2da1e49be9">BUZZER_NOTE_A2SHARP_B2FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A2SHARP_B2FLAT</div><div class="ttdoc">116.54 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:75</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a6f77c28a116f31e2c09641f9b24e26a5">BUZZER_NOTE_A4</a></div><div class="ttdeci">@ BUZZER_NOTE_A4</div><div class="ttdoc">440.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:98</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a702f5911dc2baf7c542072abac9970f0">BUZZER_NOTE_D7</a></div><div class="ttdeci">@ BUZZER_NOTE_D7</div><div class="ttdoc">2349.32 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:127</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7642b3e8121832fbb3f63b1b9519b838">BUZZER_NOTE_F5SHARP_G5FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F5SHARP_G5FLAT</div><div class="ttdoc">739.99 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:107</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a79ac8c470462646fd9abb06c21a35af2">BUZZER_NOTE_C6SHARP_D6FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C6SHARP_D6FLAT</div><div class="ttdoc">1108.73 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:114</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7cb85b523319365d9de40a4283c72aab">BUZZER_NOTE_A7SHARP_B7FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A7SHARP_B7FLAT</div><div class="ttdoc">3729.31 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:135</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a7deb6305d4d6b565d50e3462483a4d90">BUZZER_NOTE_F7</a></div><div class="ttdeci">@ BUZZER_NOTE_F7</div><div class="ttdoc">2793.83 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:130</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8a6bece5281a583f2e22c14d1c8617f1">BUZZER_NOTE_A3</a></div><div class="ttdeci">@ BUZZER_NOTE_A3</div><div class="ttdoc">220.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:86</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8d5e673d7246a98638d236fd0e65bdb0">BUZZER_NOTE_F6SHARP_G6FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F6SHARP_G6FLAT</div><div class="ttdoc">1479.98 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:119</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8e554627b82718d302141ff21761180a">BUZZER_NOTE_B4</a></div><div class="ttdeci">@ BUZZER_NOTE_B4</div><div class="ttdoc">493.88 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:100</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f1785f768faf95b68603b9ad4842de7">BUZZER_NOTE_A5</a></div><div class="ttdeci">@ BUZZER_NOTE_A5</div><div class="ttdoc">880.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:110</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a8f523953b899d2f0a4b238388ba24f96">BUZZER_NOTE_C5SHARP_D5FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C5SHARP_D5FLAT</div><div class="ttdoc">554.37 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:102</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a93bff0ab33c2d95301fd68c5940e0e23">BUZZER_NOTE_A4SHARP_B4FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A4SHARP_B4FLAT</div><div class="ttdoc">466.16 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:99</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9580b4cd5f44e70b86ba49ffcd2d8569">BUZZER_NOTE_C7</a></div><div class="ttdeci">@ BUZZER_NOTE_C7</div><div class="ttdoc">2093.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:125</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a99351c6be75c0a687e8d9afaa6028aae">BUZZER_NOTE_F6</a></div><div class="ttdeci">@ BUZZER_NOTE_F6</div><div class="ttdoc">1396.91 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:118</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9beadf96bfaed65246f61f11e44d8115">BUZZER_NOTE_C4</a></div><div class="ttdeci">@ BUZZER_NOTE_C4</div><div class="ttdoc">261.63 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:89</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9cc61d7954c7061d75bdf37ff8c752e1">BUZZER_NOTE_F2</a></div><div class="ttdeci">@ BUZZER_NOTE_F2</div><div class="ttdoc">87.31 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:70</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6a9e8b9512cd736c66c5c1fd275fbb6e0f">BUZZER_NOTE_G2SHARP_A2FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G2SHARP_A2FLAT</div><div class="ttdoc">103.83 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:73</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa3f3f368ade28922f6e127b048586681">BUZZER_NOTE_A8</a></div><div class="ttdeci">@ BUZZER_NOTE_A8</div><div class="ttdoc">7040.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:146</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa65b1ecb7a62f745465dd341c35aff3e">BUZZER_NOTE_A2</a></div><div class="ttdeci">@ BUZZER_NOTE_A2</div><div class="ttdoc">110.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:74</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aa7f6139d251888ec06ba41b5d0e07086">BUZZER_NOTE_F4SHARP_G4FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F4SHARP_G4FLAT</div><div class="ttdoc">369.99 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:95</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aaa310b469856dcd58e99f77986ce2b2b">BUZZER_NOTE_E2</a></div><div class="ttdeci">@ BUZZER_NOTE_E2</div><div class="ttdoc">82.41 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:69</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ab78e96eaf196b10ea5f673502a035dcd">BUZZER_NOTE_G3</a></div><div class="ttdeci">@ BUZZER_NOTE_G3</div><div class="ttdoc">196.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:84</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abc554a8d93518ec83b4c920ccd5aa447">BUZZER_NOTE_F2SHARP_G2FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F2SHARP_G2FLAT</div><div class="ttdoc">92.50 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:71</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abdcc76d81804c4f246cb8492f8aaf431">BUZZER_NOTE_E5</a></div><div class="ttdeci">@ BUZZER_NOTE_E5</div><div class="ttdoc">659.25 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:105</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6abf3f3771b6213da95cda4b304180ec9a">BUZZER_NOTE_D2SHARP_E2FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D2SHARP_E2FLAT</div><div class="ttdoc">77.78 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:68</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac00de40ddb3b88af0909b3651e29fd08">BUZZER_NOTE_C3SHARP_D3FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C3SHARP_D3FLAT</div><div class="ttdoc">138.59 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:78</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac05b42c11b114f0cbe8f1e456704dc67">BUZZER_NOTE_C8SHARP_D8FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_C8SHARP_D8FLAT</div><div class="ttdoc">4434.92 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:138</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ac162a6c798724f15602aa5cd93ede615">BUZZER_NOTE_E8</a></div><div class="ttdeci">@ BUZZER_NOTE_E8</div><div class="ttdoc">5274.04 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:141</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6acc53dc03a87cd2685eba65f50d78a7fb">BUZZER_NOTE_C3</a></div><div class="ttdeci">@ BUZZER_NOTE_C3</div><div class="ttdoc">130.81 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:77</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aced82af34813168c3ba664193f6e8119">BUZZER_NOTE_D2</a></div><div class="ttdeci">@ BUZZER_NOTE_D2</div><div class="ttdoc">73.42 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:67</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad2d4eb2c5b96529006db88a713039894">BUZZER_NOTE_D8</a></div><div class="ttdeci">@ BUZZER_NOTE_D8</div><div class="ttdoc">4698.63 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:139</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ad65f009cb2724296dc84ded01df601db">BUZZER_NOTE_A6</a></div><div class="ttdeci">@ BUZZER_NOTE_A6</div><div class="ttdoc">1760.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:122</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ade5bb5ae6ca75a3b438b7fe70fe7d6a5">BUZZER_NOTE_F8SHARP_G8FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F8SHARP_G8FLAT</div><div class="ttdoc">5919.91 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:143</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1909f19a0e2712081ef9869d041ef31">BUZZER_NOTE_F4</a></div><div class="ttdeci">@ BUZZER_NOTE_F4</div><div class="ttdoc">349.23 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:94</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae1ac67083c01b61055db1856f8dc78d6">BUZZER_NOTE_A8SHARP_B8FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_A8SHARP_B8FLAT</div><div class="ttdoc">7458.62 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:147</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae648ffdcdca18cb0d7d11132824a07b1">BUZZER_NOTE_A7</a></div><div class="ttdeci">@ BUZZER_NOTE_A7</div><div class="ttdoc">3520.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:134</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae68836e0be8fcad26734b9f2d9481f2e">BUZZER_NOTE_G5</a></div><div class="ttdeci">@ BUZZER_NOTE_G5</div><div class="ttdoc">783.99 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:108</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6ae692ccbfe3b845d6f7ef47fa00dc7fb3">BUZZER_NOTE_C5</a></div><div class="ttdeci">@ BUZZER_NOTE_C5</div><div class="ttdoc">523.25 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:101</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aec4bcc4bec80db3d64c3391db7edd1c3">BUZZER_NOTE_G2</a></div><div class="ttdeci">@ BUZZER_NOTE_G2</div><div class="ttdoc">98.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:72</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aee12ae9357fa73f3739053ae66291f56">BUZZER_NOTE_B3</a></div><div class="ttdeci">@ BUZZER_NOTE_B3</div><div class="ttdoc">246.94 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:88</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af1aed83c22e09ed6b24da4c1f4bac8f0">BUZZER_NOTE_D3SHARP_E3FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_D3SHARP_E3FLAT</div><div class="ttdoc">155.56 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:80</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af540f4c703b9602b2bbcfc87b3815f30">BUZZER_NOTE_F3</a></div><div class="ttdeci">@ BUZZER_NOTE_F3</div><div class="ttdoc">174.61 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:82</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af85b8ab1194b403b84f7a7d99ac63436">BUZZER_NOTE_G8SHARP_A8FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G8SHARP_A8FLAT</div><div class="ttdoc">6644.88 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:145</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6af86ab662181bc5288789d6b272c07a6b">BUZZER_NOTE_F7SHARP_G7FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_F7SHARP_G7FLAT</div><div class="ttdoc">2959.96 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:131</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afab169ac4c7f142fdf5f96361f23579a">BUZZER_NOTE_G7SHARP_A7FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G7SHARP_A7FLAT</div><div class="ttdoc">3322.44 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:133</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6afb838bfe650cefe4cfb356acd995a0ab">BUZZER_NOTE_A1</a></div><div class="ttdeci">@ BUZZER_NOTE_A1</div><div class="ttdoc">55.00 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:62</div></div>
+<div class="ttc" id="agroup__buzzer_html_gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849"><div class="ttname"><a href="group__buzzer.html#gga1bb9e9b72fb691b87708ed14f79491d6aff2cf4fccda5e09c77a6f1aeeee50849">BUZZER_NOTE_G6SHARP_A6FLAT</a></div><div class="ttdeci">@ BUZZER_NOTE_G6SHARP_A6FLAT</div><div class="ttdoc">1661.22 Hz</div><div class="ttdef"><b>Definition:</b> watch_buzzer.h:121</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__deepsleep_8h_source.html b/watch__deepsleep_8h_source.html
new file mode 100644
index 00000000..ae518975
--- /dev/null
+++ b/watch__deepsleep_8h_source.html
@@ -0,0 +1,142 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_deepsleep.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_deepsleep.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_DEEPSLEEP_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_DEEPSLEEP_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// These are declared in watch_rtc.c.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">extern</span> ext_irq_cb_t btn_alarm_callback;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">extern</span> ext_irq_cb_t a2_callback;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">extern</span> ext_irq_cb_t a4_callback;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#gacad726423f5f38697c87474ab25244ca">watch_register_extwake_callback</a>(uint8_t pin, ext_irq_cb_t callback, <span class="keywordtype">bool</span> level);</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe">watch_disable_extwake_interrupt</a>(uint8_t pin);</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846">watch_store_backup_data</a>(uint32_t data, uint8_t reg);</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; </div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;uint32_t <a class="code" href="group__deepsleep.html#ga2de1f1012475654c4741f60808581196">watch_get_backup_data</a>(uint8_t reg);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b">watch_enter_sleep_mode</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451">watch_enter_deep_sleep_mode</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">watch_enter_backup_mode</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;__attribute__((deprecated(<span class="stringliteral">&quot;Use watch_enter_sleep_mode or watch_enter_deep_sleep_mode instead&quot;</span>)))</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;void watch_enter_shallow_sleep(<span class="keywordtype">bool</span> display_on);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;__attribute__((deprecated(&quot;Use <a class="code" href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">watch_enter_backup_mode</a> instead&quot;)))</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="keywordtype">void</span> watch_enter_deep_sleep(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__deepsleep_html_ga2de1f1012475654c4741f60808581196"><div class="ttname"><a href="group__deepsleep.html#ga2de1f1012475654c4741f60808581196">watch_get_backup_data</a></div><div class="ttdeci">uint32_t watch_get_backup_data(uint8_t reg)</div><div class="ttdoc">Gets 32 bits of data from the RTC's BACKUP register.</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:121</div></div>
+<div class="ttc" id="agroup__deepsleep_html_ga385b36922ec76c5fe697772f97a05846"><div class="ttname"><a href="group__deepsleep.html#ga385b36922ec76c5fe697772f97a05846">watch_store_backup_data</a></div><div class="ttdeci">void watch_store_backup_data(uint32_t data, uint8_t reg)</div><div class="ttdoc">Stores data in one of the RTC's backup registers, which retain their data in BACKUP mode.</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:115</div></div>
+<div class="ttc" id="agroup__deepsleep_html_ga50dda38a8a83d7d957e3bb2bf13aa3ef"><div class="ttname"><a href="group__deepsleep.html#ga50dda38a8a83d7d957e3bb2bf13aa3ef">watch_enter_backup_mode</a></div><div class="ttdeci">void watch_enter_backup_mode(void)</div><div class="ttdoc">Enters the SAM L22's lowest-power mode, BACKUP.</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:188</div></div>
+<div class="ttc" id="agroup__deepsleep_html_ga9f7a625290748f0df6ba2ceb27e0d81b"><div class="ttname"><a href="group__deepsleep.html#ga9f7a625290748f0df6ba2ceb27e0d81b">watch_enter_sleep_mode</a></div><div class="ttdeci">void watch_enter_sleep_mode(void)</div><div class="ttdoc">enters Sleep Mode by disabling all pins and peripherals except the RTC and the LCD.</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:154</div></div>
+<div class="ttc" id="agroup__deepsleep_html_gaae4dfbad44338b179a7b2d8a286bacbe"><div class="ttname"><a href="group__deepsleep.html#gaae4dfbad44338b179a7b2d8a286bacbe">watch_disable_extwake_interrupt</a></div><div class="ttdeci">void watch_disable_extwake_interrupt(uint8_t pin)</div><div class="ttdoc">Unregisters the RTC interrupt on one of the EXTWAKE pins. This will prevent a value change on one of ...</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:87</div></div>
+<div class="ttc" id="agroup__deepsleep_html_gacad726423f5f38697c87474ab25244ca"><div class="ttname"><a href="group__deepsleep.html#gacad726423f5f38697c87474ab25244ca">watch_register_extwake_callback</a></div><div class="ttdeci">void watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool level)</div><div class="ttdoc">Registers a callback on one of the RTC's external wake pins, which can wake the device from Sleep,...</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:34</div></div>
+<div class="ttc" id="agroup__deepsleep_html_gaea469761889ff203385f3bfd88bb2451"><div class="ttname"><a href="group__deepsleep.html#gaea469761889ff203385f3bfd88bb2451">watch_enter_deep_sleep_mode</a></div><div class="ttdeci">void watch_enter_deep_sleep_mode(void)</div><div class="ttdoc">enters Deep Sleep Mode by disabling all pins and peripherals except the RTC.</div><div class="ttdef"><b>Definition:</b> watch_deepsleep.c:180</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__extint_8h_source.html b/watch__extint_8h_source.html
new file mode 100644
index 00000000..df96abfa
--- /dev/null
+++ b/watch__extint_8h_source.html
@@ -0,0 +1,134 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_extint.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_extint.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_EXTINT_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_EXTINT_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;hal_ext_irq.h&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8"> 44</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a> {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; INTERRUPT_TRIGGER_NONE = 0,</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; INTERRUPT_TRIGGER_RISING,</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; INTERRUPT_TRIGGER_FALLING,</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; INTERRUPT_TRIGGER_BOTH,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="group__buttons.html#gadee2b304ce34a8aec5aedabd75934c1b"> 49</a></span>&#160;} <a class="code" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2">watch_enable_external_interrupts</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084">watch_disable_external_interrupts</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c">watch_register_interrupt_callback</a>(<span class="keyword">const</span> uint8_t pin, ext_irq_cb_t callback, <a class="code" href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a> trigger);</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;__attribute__((deprecated(<span class="stringliteral">&quot;Use watch_register_interrupt_callback or watch_register_extwake_callback instead&quot;</span>)))</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;void watch_register_button_callback(const uint8_t pin, ext_irq_cb_t callback);</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;__attribute__((deprecated(&quot;Use <a class="code" href="group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2">watch_enable_external_interrupts</a> instead&quot;)))</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keywordtype">void</span> watch_enable_buttons(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__buttons_html_ga0454ca577b6fcc7a7cb03039cb5150d8"><div class="ttname"><a href="group__buttons.html#ga0454ca577b6fcc7a7cb03039cb5150d8">watch_interrupt_trigger</a></div><div class="ttdeci">watch_interrupt_trigger</div><div class="ttdoc">An enum defining the types of interrupt trigger you wish to scan for.</div><div class="ttdef"><b>Definition:</b> watch_extint.h:44</div></div>
+<div class="ttc" id="agroup__buttons_html_ga14c8fd8d92e4535012fb939ca8f12084"><div class="ttname"><a href="group__buttons.html#ga14c8fd8d92e4535012fb939ca8f12084">watch_disable_external_interrupts</a></div><div class="ttdeci">void watch_disable_external_interrupts(void)</div><div class="ttdoc">Disables the external interrupt controller.</div><div class="ttdef"><b>Definition:</b> watch_extint.c:36</div></div>
+<div class="ttc" id="agroup__buttons_html_ga9bcddd56ef2065183697b471a5fff6d2"><div class="ttname"><a href="group__buttons.html#ga9bcddd56ef2065183697b471a5fff6d2">watch_enable_external_interrupts</a></div><div class="ttdeci">void watch_enable_external_interrupts(void)</div><div class="ttdoc">Enables the external interrupt controller.</div><div class="ttdef"><b>Definition:</b> watch_extint.c:27</div></div>
+<div class="ttc" id="agroup__buttons_html_gae40d2f73d0412680d83c26b8a0e1d31c"><div class="ttname"><a href="group__buttons.html#gae40d2f73d0412680d83c26b8a0e1d31c">watch_register_interrupt_callback</a></div><div class="ttdeci">void watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger)</div><div class="ttdoc">Configures an external interrupt callback on one of the external interrupt pins.</div><div class="ttdef"><b>Definition:</b> watch_extint.c:41</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__gpio_8h_source.html b/watch__gpio_8h_source.html
new file mode 100644
index 00000000..cda94912
--- /dev/null
+++ b/watch__gpio_8h_source.html
@@ -0,0 +1,134 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_gpio.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_gpio.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_GPIO_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_GPIO_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c">watch_enable_digital_input</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#gae58e015e96f9e9c42a664b69185265b9">watch_disable_digital_input</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d">watch_enable_pull_up</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9">watch_enable_pull_down</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879">watch_get_pin_level</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9">watch_enable_digital_output</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d">watch_disable_digital_output</a>(<span class="keyword">const</span> uint8_t pin);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6">watch_set_pin_level</a>(<span class="keyword">const</span> uint8_t pin, <span class="keyword">const</span> <span class="keywordtype">bool</span> level);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__gpio_html_ga15b40170b4225ac6a927da1d76e4fd3d"><div class="ttname"><a href="group__gpio.html#ga15b40170b4225ac6a927da1d76e4fd3d">watch_disable_digital_output</a></div><div class="ttdeci">void watch_disable_digital_output(const uint8_t pin)</div><div class="ttdoc">Disables digital output on the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:55</div></div>
+<div class="ttc" id="agroup__gpio_html_ga2e781c7e15045d2270f0cb3f87d619d6"><div class="ttname"><a href="group__gpio.html#ga2e781c7e15045d2270f0cb3f87d619d6">watch_set_pin_level</a></div><div class="ttdeci">void watch_set_pin_level(const uint8_t pin, const bool level)</div><div class="ttdoc">Sets the level of the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:59</div></div>
+<div class="ttc" id="agroup__gpio_html_ga55a16884f634ee0eb2c981d1b9a06a4d"><div class="ttname"><a href="group__gpio.html#ga55a16884f634ee0eb2c981d1b9a06a4d">watch_enable_pull_up</a></div><div class="ttdeci">void watch_enable_pull_up(const uint8_t pin)</div><div class="ttdoc">Enables a pull-up resistor on the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:38</div></div>
+<div class="ttc" id="agroup__gpio_html_ga8f6035dc4a5226fa34504e8a5a930e0c"><div class="ttname"><a href="group__gpio.html#ga8f6035dc4a5226fa34504e8a5a930e0c">watch_enable_digital_input</a></div><div class="ttdeci">void watch_enable_digital_input(const uint8_t pin)</div><div class="ttdoc">Configures the selected pin for digital input.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:27</div></div>
+<div class="ttc" id="agroup__gpio_html_gacc7c5e867c05cd03f5955e8e8036b879"><div class="ttname"><a href="group__gpio.html#gacc7c5e867c05cd03f5955e8e8036b879">watch_get_pin_level</a></div><div class="ttdeci">bool watch_get_pin_level(const uint8_t pin)</div><div class="ttdoc">Gets the level of the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:46</div></div>
+<div class="ttc" id="agroup__gpio_html_gae58e015e96f9e9c42a664b69185265b9"><div class="ttname"><a href="group__gpio.html#gae58e015e96f9e9c42a664b69185265b9">watch_disable_digital_input</a></div><div class="ttdeci">void watch_disable_digital_input(const uint8_t pin)</div><div class="ttdoc">Disables any digital input, along with any pull-up or pull-down configuration.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:32</div></div>
+<div class="ttc" id="agroup__gpio_html_gae974fce4ac5d38ffe256186a84c63ff9"><div class="ttname"><a href="group__gpio.html#gae974fce4ac5d38ffe256186a84c63ff9">watch_enable_pull_down</a></div><div class="ttdeci">void watch_enable_pull_down(const uint8_t pin)</div><div class="ttdoc">Enables a pull-down resistor on the selected pin.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:42</div></div>
+<div class="ttc" id="agroup__gpio_html_gaf73a6405eb90bc6de32fb66f512fe4a9"><div class="ttname"><a href="group__gpio.html#gaf73a6405eb90bc6de32fb66f512fe4a9">watch_enable_digital_output</a></div><div class="ttdeci">void watch_enable_digital_output(const uint8_t pin)</div><div class="ttdoc">Configures the selected pin for digital output.</div><div class="ttdef"><b>Definition:</b> watch_gpio.c:50</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__i2c_8h_source.html b/watch__i2c_8h_source.html
new file mode 100644
index 00000000..ccb17a28
--- /dev/null
+++ b/watch__i2c_8h_source.html
@@ -0,0 +1,138 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_i2c.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_i2c.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_I2C_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_I2C_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b">watch_enable_i2c</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760">watch_disable_i2c</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08">watch_i2c_send</a>(int16_t addr, uint8_t *buf, uint16_t length);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__i2c.html#ga426971387b87286c8decca7342c06b4b">watch_i2c_receive</a>(int16_t addr, uint8_t *buf, uint16_t length);</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad">watch_i2c_write8</a>(int16_t addr, uint8_t reg, uint8_t data);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;uint8_t <a class="code" href="group__i2c.html#gac5644140ddda98198f9d5deabbeaf781">watch_i2c_read8</a>(int16_t addr, uint8_t reg);</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;uint16_t <a class="code" href="group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e">watch_i2c_read16</a>(int16_t addr, uint8_t reg);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;uint32_t <a class="code" href="group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8">watch_i2c_read24</a>(int16_t addr, uint8_t reg);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;uint32_t <a class="code" href="group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651">watch_i2c_read32</a>(int16_t addr, uint8_t reg);</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__i2c_html_ga2189bdff3dcb40f451d0aa988ea99760"><div class="ttname"><a href="group__i2c.html#ga2189bdff3dcb40f451d0aa988ea99760">watch_disable_i2c</a></div><div class="ttdeci">void watch_disable_i2c(void)</div><div class="ttdoc">Disables the I2C peripheral.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:35</div></div>
+<div class="ttc" id="agroup__i2c_html_ga3d1c750d1b228b11333d10fc9647d651"><div class="ttname"><a href="group__i2c.html#ga3d1c750d1b228b11333d10fc9647d651">watch_i2c_read32</a></div><div class="ttdeci">uint32_t watch_i2c_read32(int16_t addr, uint8_t reg)</div><div class="ttdoc">Reads an unsigned little-endian int from a register in an I2C device.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:86</div></div>
+<div class="ttc" id="agroup__i2c_html_ga426971387b87286c8decca7342c06b4b"><div class="ttname"><a href="group__i2c.html#ga426971387b87286c8decca7342c06b4b">watch_i2c_receive</a></div><div class="ttdeci">void watch_i2c_receive(int16_t addr, uint8_t *buf, uint16_t length)</div><div class="ttdoc">Receives a series of values from a device on the I2C bus.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:45</div></div>
+<div class="ttc" id="agroup__i2c_html_ga6732b5655fdada88d083e4b4d05d1ca8"><div class="ttname"><a href="group__i2c.html#ga6732b5655fdada88d083e4b4d05d1ca8">watch_i2c_read24</a></div><div class="ttdeci">uint32_t watch_i2c_read24(int16_t addr, uint8_t reg)</div><div class="ttdoc">Reads three bytes as an unsigned little-endian int from a register in an I2C device.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:76</div></div>
+<div class="ttc" id="agroup__i2c_html_ga8b44030f78c30dd4026b349fc0c8cf08"><div class="ttname"><a href="group__i2c.html#ga8b44030f78c30dd4026b349fc0c8cf08">watch_i2c_send</a></div><div class="ttdeci">void watch_i2c_send(int16_t addr, uint8_t *buf, uint16_t length)</div><div class="ttdoc">Sends a series of values to a device on the I2C bus.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:40</div></div>
+<div class="ttc" id="agroup__i2c_html_gab9f25517d9dc3c32a707266dfd413e5b"><div class="ttname"><a href="group__i2c.html#gab9f25517d9dc3c32a707266dfd413e5b">watch_enable_i2c</a></div><div class="ttdeci">void watch_enable_i2c(void)</div><div class="ttdoc">Enables the I2C peripheral. Call this before attempting to interface with I2C devices.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:29</div></div>
+<div class="ttc" id="agroup__i2c_html_gac5644140ddda98198f9d5deabbeaf781"><div class="ttname"><a href="group__i2c.html#gac5644140ddda98198f9d5deabbeaf781">watch_i2c_read8</a></div><div class="ttdeci">uint8_t watch_i2c_read8(int16_t addr, uint8_t reg)</div><div class="ttdoc">Reads a byte from a register in an I2C device.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:58</div></div>
+<div class="ttc" id="agroup__i2c_html_gaed749d3ca5e6e3aedcf1aefed3d7663e"><div class="ttname"><a href="group__i2c.html#gaed749d3ca5e6e3aedcf1aefed3d7663e">watch_i2c_read16</a></div><div class="ttdeci">uint16_t watch_i2c_read16(int16_t addr, uint8_t reg)</div><div class="ttdoc">Reads an unsigned little-endian word from a register in an I2C device.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:67</div></div>
+<div class="ttc" id="agroup__i2c_html_gaf0a4c78215cbd85ab557fc6c786eb6ad"><div class="ttname"><a href="group__i2c.html#gaf0a4c78215cbd85ab557fc6c786eb6ad">watch_i2c_write8</a></div><div class="ttdeci">void watch_i2c_write8(int16_t addr, uint8_t reg, uint8_t data)</div><div class="ttdoc">Writes a byte to a register in an I2C device.</div><div class="ttdef"><b>Definition:</b> watch_i2c.c:50</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__led_8h_source.html b/watch__led_8h_source.html
new file mode 100644
index 00000000..2783cc83
--- /dev/null
+++ b/watch__led_8h_source.html
@@ -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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_led.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_led.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_LED_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_LED_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga86ce31dc95137ed41983fb7c6af5502a">watch_enable_leds</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">watch_disable_leds</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga042bcc9220ab05d1de8389cf0067511b">watch_set_led_color</a>(uint8_t red, uint8_t green);</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; </div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40">watch_set_led_red</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#gab01a29900ddc5315c0e752e63d748f41">watch_set_led_green</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga51ba53c3281ad8724d98af27eacc3de0">watch_set_led_yellow</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__led.html#ga8619f040ff7364285398412a4c420cae">watch_set_led_off</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;__attribute__((deprecated(<span class="stringliteral">&quot;Use watch_enable_leds instead&quot;</span>)))</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;void watch_enable_led(<span class="keywordtype">bool</span> unused);</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;__attribute__((deprecated(&quot;Use <a class="code" href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">watch_disable_leds</a> instead&quot;)))</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keywordtype">void</span> watch_disable_led(<span class="keywordtype">bool</span> unused);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__led_html_ga042bcc9220ab05d1de8389cf0067511b"><div class="ttname"><a href="group__led.html#ga042bcc9220ab05d1de8389cf0067511b">watch_set_led_color</a></div><div class="ttdeci">void watch_set_led_color(uint8_t red, uint8_t green)</div><div class="ttdoc">Sets the LED to a custom color by modulating each output's duty cycle.</div><div class="ttdef"><b>Definition:</b> watch_led.c:47</div></div>
+<div class="ttc" id="agroup__led_html_ga36d89031d8e8813dfab5f6cff9c6ee40"><div class="ttname"><a href="group__led.html#ga36d89031d8e8813dfab5f6cff9c6ee40">watch_set_led_red</a></div><div class="ttdeci">void watch_set_led_red(void)</div><div class="ttdoc">Sets the red LED to full brightness, and turns the green LED off.</div><div class="ttdef"><b>Definition:</b> watch_led.c:55</div></div>
+<div class="ttc" id="agroup__led_html_ga51ba53c3281ad8724d98af27eacc3de0"><div class="ttname"><a href="group__led.html#ga51ba53c3281ad8724d98af27eacc3de0">watch_set_led_yellow</a></div><div class="ttdeci">void watch_set_led_yellow(void)</div><div class="ttdoc">Sets both red and green LEDs to full brightness.</div><div class="ttdef"><b>Definition:</b> watch_led.c:63</div></div>
+<div class="ttc" id="agroup__led_html_ga8619f040ff7364285398412a4c420cae"><div class="ttname"><a href="group__led.html#ga8619f040ff7364285398412a4c420cae">watch_set_led_off</a></div><div class="ttdeci">void watch_set_led_off(void)</div><div class="ttdoc">Turns both the red and the green LEDs off.</div><div class="ttdef"><b>Definition:</b> watch_led.c:67</div></div>
+<div class="ttc" id="agroup__led_html_ga86ce31dc95137ed41983fb7c6af5502a"><div class="ttname"><a href="group__led.html#ga86ce31dc95137ed41983fb7c6af5502a">watch_enable_leds</a></div><div class="ttdeci">void watch_enable_leds(void)</div><div class="ttdoc">Enables the bi-color LED.</div><div class="ttdef"><b>Definition:</b> watch_led.c:27</div></div>
+<div class="ttc" id="agroup__led_html_ga883bf171196fb5a7a57ef727dca6e04a"><div class="ttname"><a href="group__led.html#ga883bf171196fb5a7a57ef727dca6e04a">watch_disable_leds</a></div><div class="ttdeci">void watch_disable_leds(void)</div><div class="ttdoc">Disables the LEDs.</div><div class="ttdef"><b>Definition:</b> watch_led.c:33</div></div>
+<div class="ttc" id="agroup__led_html_gab01a29900ddc5315c0e752e63d748f41"><div class="ttname"><a href="group__led.html#gab01a29900ddc5315c0e752e63d748f41">watch_set_led_green</a></div><div class="ttdeci">void watch_set_led_green(void)</div><div class="ttdoc">Sets the green LED to full brightness, and turns the red LED off.</div><div class="ttdef"><b>Definition:</b> watch_led.c:59</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__private_8h_source.html b/watch__private_8h_source.html
new file mode 100644
index 00000000..3ed0e20d
--- /dev/null
+++ b/watch__private_8h_source.html
@@ -0,0 +1,126 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_private.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_private.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2021 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_PRIVATE_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_PRIVATE_H_INCLUDED</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keywordtype">void</span> _watch_init(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keywordtype">void</span> _watch_rtc_init(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keywordtype">void</span> _watch_enable_tcc(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keywordtype">void</span> _watch_disable_tcc(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keywordtype">void</span> _watch_enable_usb(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// this function ends up getting called by printf to log stuff to the USB console.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keywordtype">int</span> _write(<span class="keywordtype">int</span> file, <span class="keywordtype">char</span> *ptr, <span class="keywordtype">int</span> len);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// this method could be overridden to read stuff from the USB console? but no need rn.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keywordtype">int</span> _read(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__rtc_8h_source.html b/watch__rtc_8h_source.html
new file mode 100644
index 00000000..10578d66
--- /dev/null
+++ b/watch__rtc_8h_source.html
@@ -0,0 +1,174 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_rtc.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_rtc.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_RTC_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_RTC_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;hpl_calendar.h&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define WATCH_RTC_REFERENCE_YEAR (2020)</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="unionwatch__date__time.html"> 44</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">union </span>{</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">struct </span>{</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint32_t second : 6; <span class="comment">// 0-59</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint32_t minute : 6; <span class="comment">// 0-59</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint32_t hour : 5; <span class="comment">// 0-23</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint32_t day : 5; <span class="comment">// 1-31</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint32_t month : 4; <span class="comment">// 1-12</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint32_t year : 6; <span class="comment">// 0-63 (representing 2020-2083)</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } unit;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint32_t reg; <span class="comment">// the bit-packed value as expected by the RTC peripheral&#39;s CLOCK register.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;} <a class="code" href="unionwatch__date__time.html">watch_date_time</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> watch_rtc_alarm_match {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; ALARM_MATCH_DISABLED = 0,</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; ALARM_MATCH_SS,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; ALARM_MATCH_MMSS,</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; ALARM_MATCH_HHMMSS,</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;} watch_rtc_alarm_match;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565">_watch_rtc_is_enabled</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">watch_rtc_set_date_time</a>(<a class="code" href="unionwatch__date__time.html">watch_date_time</a> date_time);</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<a class="code" href="unionwatch__date__time.html">watch_date_time</a> <a class="code" href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b">watch_rtc_register_alarm_callback</a>(ext_irq_cb_t callback, <a class="code" href="unionwatch__date__time.html">watch_date_time</a> alarm_time, watch_rtc_alarm_match mask);</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#ga836cade77c24e93c06bf534eaded55bf">watch_rtc_disable_alarm_callback</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a>(ext_irq_cb_t callback);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d">watch_rtc_disable_tick_callback</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53">watch_rtc_register_periodic_callback</a>(ext_irq_cb_t callback, uint8_t frequency);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#ga4e025485bb50e1c93abd4a185447705f">watch_rtc_disable_periodic_callback</a>(uint8_t frequency);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f">watch_rtc_disable_all_periodic_callbacks</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4"> 147</a></span>&#160;<a class="code" href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">__attribute__</a>((deprecated(<span class="stringliteral">&quot;Use watch_rtc_set_date_time function instead&quot;</span>)))</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;void watch_set_date_time(struct calendar_date_time date_time);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="group__rtc.html#ga7ce8c01a25eb364efb7ae6ed6dbca373"> 153</a></span>&#160;<a class="code" href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">__attribute__</a>((deprecated(&quot;Use the <a class="code" href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a> function instead&quot;)))</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keywordtype">void</span> watch_get_date_time(struct calendar_date_time *date_time);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="group__rtc.html#ga811201003a3985a040f1f6bd3c5a69eb"> 160</a></span>&#160;<a class="code" href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">__attribute__</a>((deprecated(&quot;Use the <a class="code" href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a> function instead&quot;)))</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="keywordtype">void</span> watch_register_tick_callback(ext_irq_cb_t callback);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__rtc_html_ga0150da34307ba61e44f1a00aa90a7f0f"><div class="ttname"><a href="group__rtc.html#ga0150da34307ba61e44f1a00aa90a7f0f">watch_rtc_disable_all_periodic_callbacks</a></div><div class="ttdeci">void watch_rtc_disable_all_periodic_callbacks(void)</div><div class="ttdoc">Disables all periodic callbacks, including the once-per-second tick callback.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:105</div></div>
+<div class="ttc" id="agroup__rtc_html_ga166b575563d39a0061dc9a28ad0309a7"><div class="ttname"><a href="group__rtc.html#ga166b575563d39a0061dc9a28ad0309a7">watch_rtc_get_date_time</a></div><div class="ttdeci">watch_date_time watch_rtc_get_date_time(void)</div><div class="ttdoc">Returns the date and time.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:64</div></div>
+<div class="ttc" id="agroup__rtc_html_ga3ac65a314540ae8b7be5b9015785d565"><div class="ttname"><a href="group__rtc.html#ga3ac65a314540ae8b7be5b9015785d565">_watch_rtc_is_enabled</a></div><div class="ttdeci">bool _watch_rtc_is_enabled(void)</div><div class="ttdoc">Called by main.c to check if the RTC is enabled. You may call this function, but outside of app_init,...</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:33</div></div>
+<div class="ttc" id="agroup__rtc_html_ga4e025485bb50e1c93abd4a185447705f"><div class="ttname"><a href="group__rtc.html#ga4e025485bb50e1c93abd4a185447705f">watch_rtc_disable_periodic_callback</a></div><div class="ttdeci">void watch_rtc_disable_periodic_callback(uint8_t frequency)</div><div class="ttdoc">Disables the tick callback for the given period.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:99</div></div>
+<div class="ttc" id="agroup__rtc_html_ga685f2afb2e99dfebf8d2ef058a5bc19d"><div class="ttname"><a href="group__rtc.html#ga685f2afb2e99dfebf8d2ef058a5bc19d">watch_rtc_disable_tick_callback</a></div><div class="ttdeci">void watch_rtc_disable_tick_callback(void)</div><div class="ttdoc">Disables the tick callback for the given period.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:77</div></div>
+<div class="ttc" id="agroup__rtc_html_ga836cade77c24e93c06bf534eaded55bf"><div class="ttname"><a href="group__rtc.html#ga836cade77c24e93c06bf534eaded55bf">watch_rtc_disable_alarm_callback</a></div><div class="ttdeci">void watch_rtc_disable_alarm_callback(void)</div><div class="ttdoc">Disables the alarm callback.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:119</div></div>
+<div class="ttc" id="agroup__rtc_html_ga969ea57aaedf13d4950edbeacff3f2be"><div class="ttname"><a href="group__rtc.html#ga969ea57aaedf13d4950edbeacff3f2be">watch_rtc_register_tick_callback</a></div><div class="ttdeci">void watch_rtc_register_tick_callback(ext_irq_cb_t callback)</div><div class="ttdoc">Registers a &quot;tick&quot; callback that will be called once per second.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:73</div></div>
+<div class="ttc" id="agroup__rtc_html_ga98366c1b71e09089b441d704193bb0d4"><div class="ttname"><a href="group__rtc.html#ga98366c1b71e09089b441d704193bb0d4">__attribute__</a></div><div class="ttdeci">__attribute__((deprecated(&quot;Use watch_rtc_set_date_time function instead&quot;))) void watch_set_date_time(struct calendar_date_time date_time)</div><div class="ttdoc">Sets the system date and time.</div></div>
+<div class="ttc" id="agroup__rtc_html_gaa5220d0d7f542a0bc6c9bef176d6d83b"><div class="ttname"><a href="group__rtc.html#gaa5220d0d7f542a0bc6c9bef176d6d83b">watch_rtc_register_alarm_callback</a></div><div class="ttdeci">void watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask)</div><div class="ttdoc">Registers an alarm callback that will be called when the RTC time matches the target time,...</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:109</div></div>
+<div class="ttc" id="agroup__rtc_html_gadfcc143db9d71e95c2d2dc45732ab4e5"><div class="ttname"><a href="group__rtc.html#gadfcc143db9d71e95c2d2dc45732ab4e5">watch_rtc_set_date_time</a></div><div class="ttdeci">void watch_rtc_set_date_time(watch_date_time date_time)</div><div class="ttdoc">Sets the date and time.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:59</div></div>
+<div class="ttc" id="agroup__rtc_html_gaeb4e67aa0062e39eaff465aeebc24f53"><div class="ttname"><a href="group__rtc.html#gaeb4e67aa0062e39eaff465aeebc24f53">watch_rtc_register_periodic_callback</a></div><div class="ttdeci">void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency)</div><div class="ttdoc">Registers a callback that will be called at a configurable period.</div><div class="ttdef"><b>Definition:</b> watch_rtc.c:81</div></div>
+<div class="ttc" id="aunionwatch__date__time_html"><div class="ttname"><a href="unionwatch__date__time.html">watch_date_time</a></div><div class="ttdef"><b>Definition:</b> watch_rtc.h:44</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__slcd_8h_source.html b/watch__slcd_8h_source.html
new file mode 100644
index 00000000..8d68ec58
--- /dev/null
+++ b/watch__slcd_8h_source.html
@@ -0,0 +1,169 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_slcd.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_slcd.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_SLCD_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_SLCD_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2"> 45</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292"> 46</a></span>&#160; <a class="code" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292">WATCH_INDICATOR_SIGNAL</a> = 0, </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3"> 47</a></span>&#160; <a class="code" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3">WATCH_INDICATOR_BELL</a>, </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f"> 48</a></span>&#160; <a class="code" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f">WATCH_INDICATOR_PM</a>, </div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48"> 49</a></span>&#160; <a class="code" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48">WATCH_INDICATOR_24H</a>, </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6">WATCH_INDICATOR_LAP</a> </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6"> 51</a></span>&#160;} <a class="code" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga0bb83dc413aeb321daef90d93f258033">watch_enable_display</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga47948dc2c7490b698810ef9914507e08">watch_set_pixel</a>(uint8_t com, uint8_t seg);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0">watch_clear_pixel</a>(uint8_t com, uint8_t seg);</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#gad980e302e036abd7e26813de127139a4">watch_clear_display</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d">watch_display_string</a>(<span class="keywordtype">char</span> *<span class="keywordtype">string</span>, uint8_t position);</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee">watch_set_colon</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; </div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782">watch_clear_colon</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd">watch_set_indicator</a>(<a class="code" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> indicator);</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e">watch_clear_indicator</a>(<a class="code" href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a> indicator);</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009">watch_clear_all_indicators</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5">watch_start_character_blink</a>(<span class="keywordtype">char</span> character, uint32_t duration);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5">watch_stop_blink</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#ga70918c1acc2ed21512b69b83397303a4">watch_start_tick_animation</a>(uint32_t duration);</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__slcd.html#ga3764fb499e056f9a45588268f11be8a0">watch_tick_animation_is_running</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a">watch_stop_tick_animation</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__slcd_html_ga021df8bd4ab27a78a812cbb0eadd26ee"><div class="ttname"><a href="group__slcd.html#ga021df8bd4ab27a78a812cbb0eadd26ee">watch_set_colon</a></div><div class="ttdeci">void watch_set_colon(void)</div><div class="ttdoc">Turns the colon segment on.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:248</div></div>
+<div class="ttc" id="agroup__slcd_html_ga0bb83dc413aeb321daef90d93f258033"><div class="ttname"><a href="group__slcd.html#ga0bb83dc413aeb321daef90d93f258033">watch_enable_display</a></div><div class="ttdeci">void watch_enable_display(void)</div><div class="ttdoc">Enables the Segment LCD display. Call this before attempting to set pixels or display strings.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:157</div></div>
+<div class="ttc" id="agroup__slcd_html_ga1983cf1e6a7d8feb1c7193a182ff683d"><div class="ttname"><a href="group__slcd.html#ga1983cf1e6a7d8feb1c7193a182ff683d">watch_display_string</a></div><div class="ttdeci">void watch_display_string(char *string, uint8_t position)</div><div class="ttdoc">Displays a string at the given position, starting from the top left. There are ten digits....</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:234</div></div>
+<div class="ttc" id="agroup__slcd_html_ga3764fb499e056f9a45588268f11be8a0"><div class="ttname"><a href="group__slcd.html#ga3764fb499e056f9a45588268f11be8a0">watch_tick_animation_is_running</a></div><div class="ttdeci">bool watch_tick_animation_is_running(void)</div><div class="ttdoc">Checks if the tick animation is currently running.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:310</div></div>
+<div class="ttc" id="agroup__slcd_html_ga37a28bfc539ea2bb83107d59f77b20d2"><div class="ttname"><a href="group__slcd.html#ga37a28bfc539ea2bb83107d59f77b20d2">WatchIndicatorSegment</a></div><div class="ttdeci">WatchIndicatorSegment</div><div class="ttdoc">An enum listing the icons and indicators available on the watch.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:45</div></div>
+<div class="ttc" id="agroup__slcd_html_ga47948dc2c7490b698810ef9914507e08"><div class="ttname"><a href="group__slcd.html#ga47948dc2c7490b698810ef9914507e08">watch_set_pixel</a></div><div class="ttdeci">void watch_set_pixel(uint8_t com, uint8_t seg)</div><div class="ttdoc">Sets a pixel. Use this to manually set a pixel with a given common and segment number....</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:162</div></div>
+<div class="ttc" id="agroup__slcd_html_ga4bc4ab63f3214f475f71ed8c758f9782"><div class="ttname"><a href="group__slcd.html#ga4bc4ab63f3214f475f71ed8c758f9782">watch_clear_colon</a></div><div class="ttdeci">void watch_clear_colon(void)</div><div class="ttdoc">Turns the colon segment off.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:252</div></div>
+<div class="ttc" id="agroup__slcd_html_ga4c99ffbfa68aea0dce466db6e47879a5"><div class="ttname"><a href="group__slcd.html#ga4c99ffbfa68aea0dce466db6e47879a5">watch_start_character_blink</a></div><div class="ttdeci">void watch_start_character_blink(char character, uint32_t duration)</div><div class="ttdoc">Blinks a single character in position 7. Does not affect other positions.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:272</div></div>
+<div class="ttc" id="agroup__slcd_html_ga54ee46bb4eb85e136a05af499889f50e"><div class="ttname"><a href="group__slcd.html#ga54ee46bb4eb85e136a05af499889f50e">watch_clear_indicator</a></div><div class="ttdeci">void watch_clear_indicator(WatchIndicatorSegment indicator)</div><div class="ttdoc">Clears an indicator on the LCD. Use this to turn off one of the indicator segments.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:260</div></div>
+<div class="ttc" id="agroup__slcd_html_ga5d29760dd0998de98f8578ed3de5b1e5"><div class="ttname"><a href="group__slcd.html#ga5d29760dd0998de98f8578ed3de5b1e5">watch_stop_blink</a></div><div class="ttdeci">void watch_stop_blink(void)</div><div class="ttdoc">Stops and clears all blinking segments.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:299</div></div>
+<div class="ttc" id="agroup__slcd_html_ga70918c1acc2ed21512b69b83397303a4"><div class="ttname"><a href="group__slcd.html#ga70918c1acc2ed21512b69b83397303a4">watch_start_tick_animation</a></div><div class="ttdeci">void watch_start_tick_animation(uint32_t duration)</div><div class="ttdoc">Begins a two-segment &quot;tick-tock&quot; animation in position 8.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:304</div></div>
+<div class="ttc" id="agroup__slcd_html_ga9e2bb1a59c0d8b38ee7e0ebbbd05b009"><div class="ttname"><a href="group__slcd.html#ga9e2bb1a59c0d8b38ee7e0ebbbd05b009">watch_clear_all_indicators</a></div><div class="ttdeci">void watch_clear_all_indicators(void)</div><div class="ttdoc">Clears all indicator segments.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:264</div></div>
+<div class="ttc" id="agroup__slcd_html_gaa6640c8b372933de978e1066aed7e7fd"><div class="ttname"><a href="group__slcd.html#gaa6640c8b372933de978e1066aed7e7fd">watch_set_indicator</a></div><div class="ttdeci">void watch_set_indicator(WatchIndicatorSegment indicator)</div><div class="ttdoc">Sets an indicator on the LCD. Use this to turn on one of the indicator segments.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:256</div></div>
+<div class="ttc" id="agroup__slcd_html_gabd583acd4aa18b6377478bf95bdac9b0"><div class="ttname"><a href="group__slcd.html#gabd583acd4aa18b6377478bf95bdac9b0">watch_clear_pixel</a></div><div class="ttdeci">void watch_clear_pixel(uint8_t com, uint8_t seg)</div><div class="ttdoc">Clears a pixel. Use this to manually clear a pixel with a given common and segment number....</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:166</div></div>
+<div class="ttc" id="agroup__slcd_html_gad980e302e036abd7e26813de127139a4"><div class="ttname"><a href="group__slcd.html#gad980e302e036abd7e26813de127139a4">watch_clear_display</a></div><div class="ttdeci">void watch_clear_display(void)</div><div class="ttdoc">Clears all segments of the display, including incicators and the colon.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:170</div></div>
+<div class="ttc" id="agroup__slcd_html_gaf2c52b4430b4e78a066b3a2b104d142a"><div class="ttname"><a href="group__slcd.html#gaf2c52b4430b4e78a066b3a2b104d142a">watch_stop_tick_animation</a></div><div class="ttdeci">void watch_stop_tick_animation(void)</div><div class="ttdoc">Stops the tick/tock animation and clears all animating segments.</div><div class="ttdef"><b>Definition:</b> watch_slcd.c:314</div></div>
+<div class="ttc" id="agroup__slcd_html_gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f"><div class="ttname"><a href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a0d023567f536ace6ff82e5120729090f">WATCH_INDICATOR_PM</a></div><div class="ttdeci">@ WATCH_INDICATOR_PM</div><div class="ttdoc">The PM indicator, indicating that a time is in the afternoon.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:48</div></div>
+<div class="ttc" id="agroup__slcd_html_gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3"><div class="ttname"><a href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a44727968b16d73ca11e3d19795085ee3">WATCH_INDICATOR_BELL</a></div><div class="ttdeci">@ WATCH_INDICATOR_BELL</div><div class="ttdoc">The small bell indicating that an alarm is set.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:47</div></div>
+<div class="ttc" id="agroup__slcd_html_gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292"><div class="ttname"><a href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a827a013c00782a143f13a4f88ce50292">WATCH_INDICATOR_SIGNAL</a></div><div class="ttdeci">@ WATCH_INDICATOR_SIGNAL</div><div class="ttdoc">The hourly signal indicator; also useful for indicating that sensors are on.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:46</div></div>
+<div class="ttc" id="agroup__slcd_html_gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6"><div class="ttname"><a href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2a98d272d879d473fb507a9fc27b6741c6">WATCH_INDICATOR_LAP</a></div><div class="ttdeci">@ WATCH_INDICATOR_LAP</div><div class="ttdoc">The LAP indicator; the F-91W uses this in its stopwatch UI.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:50</div></div>
+<div class="ttc" id="agroup__slcd_html_gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48"><div class="ttname"><a href="group__slcd.html#gga37a28bfc539ea2bb83107d59f77b20d2aee02426fe8a094a399fe93de2f354e48">WATCH_INDICATOR_24H</a></div><div class="ttdeci">@ WATCH_INDICATOR_24H</div><div class="ttdoc">The 24H indicator, indicating that the watch is in a 24-hour mode.</div><div class="ttdef"><b>Definition:</b> watch_slcd.h:49</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__uart_8h_source.html b/watch__uart_8h_source.html
new file mode 100644
index 00000000..529419eb
--- /dev/null
+++ b/watch__uart_8h_source.html
@@ -0,0 +1,120 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_uart.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_uart.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2020 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef _WATCH_UART_H_INCLUDED</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define _WATCH_UART_H_INCLUDED</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c"> 43</a></span>&#160;<a class="code" href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">__attribute__</a>((deprecated(<span class="stringliteral">&quot;Use printf to log debug messages over USB.&quot;</span>)))</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;void watch_enable_debug_uart(uint32_t baud);</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<a class="code" href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">__attribute__</a>((deprecated(&quot;Use printf to log debug messages over USB.&quot;)))</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keywordtype">void</span> watch_debug_putc(<span class="keywordtype">char</span> c);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<a class="code" href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">__attribute__</a>((deprecated(&quot;Use printf to log debug messages over USB.&quot;)))</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keywordtype">void</span> watch_debug_puts(<span class="keywordtype">char</span> *s);</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__debug_html_ga2014a199fbd2a6d7cecb24628576722c"><div class="ttname"><a href="group__debug.html#ga2014a199fbd2a6d7cecb24628576722c">__attribute__</a></div><div class="ttdeci">__attribute__((deprecated(&quot;Use printf to log debug messages over USB.&quot;))) void watch_enable_debug_uart(uint32_t baud)</div><div class="ttdoc">Initializes the debug UART.</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>
diff --git a/watch__utility_8h_source.html b/watch__utility_8h_source.html
new file mode 100644
index 00000000..b2e40d0e
--- /dev/null
+++ b/watch__utility_8h_source.html
@@ -0,0 +1,128 @@
+<!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=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Sensor Watch: watch-library/watch/watch_utility.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 style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">Sensor Watch
+ &#160;<span id="projectnumber">0.0.0</span>
+ </div>
+ <div id="projectbrief">A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(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_f1a087a6659d970f5756e21fc1ac4961.html">watch-library</a></li><li class="navelem"><a class="el" href="dir_9dad893af07e666757bee97778571595.html">watch</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">watch_utility.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * MIT License</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (c) 2021 Joey Castillo</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * in the Software without restriction, including without limitation the rights</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * copies or substantial portions of the Software.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#ifndef _WATCH_UTILITY_H_INCLUDED</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#define _WATCH_UTILITY_H_INCLUDED</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="watch_8h.html">watch.h</a>&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127">watch_utility_get_weekday</a>(<a class="code" href="unionwatch__date__time.html">watch_date_time</a> date_time);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;uint32_t <a class="code" href="group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda">watch_utility_convert_to_unix_time</a>(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;uint32_t <a class="code" href="group__utility.html#gaffafef58755ff2704cf93fe1a0849a27">watch_utility_date_time_to_unix_time</a>(<a class="code" href="unionwatch__date__time.html">watch_date_time</a> date_time, uint32_t utc_offset);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<a class="code" href="unionwatch__date__time.html">watch_date_time</a> <a class="code" href="group__utility.html#ga396e56109234aaa00993c3dd84f3f43c">watch_utility_date_time_from_unix_time</a>(uint32_t timestamp, uint32_t utc_offset);</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">float</span> <a class="code" href="group__utility.html#ga2753ff031c28202d23b0f3e80de2c920">watch_utility_thermistor_temperature</a>(uint16_t value, <span class="keywordtype">bool</span> highside, <span class="keywordtype">float</span> b_coefficient, <span class="keywordtype">float</span> nominal_temperature, <span class="keywordtype">float</span> nominal_resistance, <span class="keywordtype">float</span> series_resistance);</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="ttc" id="agroup__utility_html_ga2753ff031c28202d23b0f3e80de2c920"><div class="ttname"><a href="group__utility.html#ga2753ff031c28202d23b0f3e80de2c920">watch_utility_thermistor_temperature</a></div><div class="ttdeci">float watch_utility_thermistor_temperature(uint16_t value, bool highside, float b_coefficient, float nominal_temperature, float nominal_resistance, float series_resistance)</div><div class="ttdoc">Returns a temperature in degrees Celsius for a given thermistor voltage divider circuit.</div><div class="ttdef"><b>Definition:</b> watch_utility.c:149</div></div>
+<div class="ttc" id="agroup__utility_html_ga396e56109234aaa00993c3dd84f3f43c"><div class="ttname"><a href="group__utility.html#ga396e56109234aaa00993c3dd84f3f43c">watch_utility_date_time_from_unix_time</a></div><div class="ttdeci">watch_date_time watch_utility_date_time_from_unix_time(uint32_t timestamp, uint32_t utc_offset)</div><div class="ttdoc">Returns the UNIX time (seconds since 1970) for a given watch_date_time struct.</div><div class="ttdef"><b>Definition:</b> watch_utility.c:79</div></div>
+<div class="ttc" id="agroup__utility_html_ga8f3d6ddf5f22bc61e1dc4b569009b127"><div class="ttname"><a href="group__utility.html#ga8f3d6ddf5f22bc61e1dc4b569009b127">watch_utility_get_weekday</a></div><div class="ttdeci">const char * watch_utility_get_weekday(watch_date_time date_time)</div><div class="ttdoc">Returns a two-letter weekday for the given timestamp, suitable for display in positions 0-1 of the wa...</div><div class="ttdef"><b>Definition:</b> watch_utility.c:28</div></div>
+<div class="ttc" id="agroup__utility_html_ga94f5cc404949bf4c0ac4bc4770ec8eda"><div class="ttname"><a href="group__utility.html#ga94f5cc404949bf4c0ac4bc4770ec8eda">watch_utility_convert_to_unix_time</a></div><div class="ttdeci">uint32_t watch_utility_convert_to_unix_time(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t utc_offset)</div><div class="ttdoc">Returns the UNIX time (seconds since 1970) for a given date/time in UTC.</div><div class="ttdef"><b>Definition:</b> watch_utility.c:38</div></div>
+<div class="ttc" id="agroup__utility_html_gaffafef58755ff2704cf93fe1a0849a27"><div class="ttname"><a href="group__utility.html#gaffafef58755ff2704cf93fe1a0849a27">watch_utility_date_time_to_unix_time</a></div><div class="ttdeci">uint32_t watch_utility_date_time_to_unix_time(watch_date_time date_time, uint32_t utc_offset)</div><div class="ttdoc">Returns the UNIX time (seconds since 1970) for a given watch_date_time struct.</div><div class="ttdef"><b>Definition:</b> watch_utility.c:69</div></div>
+<div class="ttc" id="aunionwatch__date__time_html"><div class="ttname"><a href="unionwatch__date__time.html">watch_date_time</a></div><div class="ttdef"><b>Definition:</b> watch_rtc.h:44</div></div>
+<div class="ttc" id="awatch_8h_html"><div class="ttname"><a href="watch_8h.html">watch.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.1
+</small></address>
+</body>
+</html>