gravitymon/docs/compiling.html
2022-01-09 08:24:16 +00:00

264 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Compiling the software &mdash; GravityMon 0.5.0 documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Contributing" href="contributing.html" />
<link rel="prev" title="Setting up device" href="configuration.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> GravityMon
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="license.html">Licence</a></li>
<li class="toctree-l1"><a class="reference internal" href="releases.html">Releases</a></li>
<li class="toctree-l1"><a class="reference internal" href="functionallity.html">Functionallity</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Setting up device</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html#create-formula">Create formula</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html#rest-api">REST API</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html#data-formats">Data Formats</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Compiling the software</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#tools">Tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="#code-formatting">Code Formatting</a></li>
<li class="toctree-l2"><a class="reference internal" href="#targets">Targets</a></li>
<li class="toctree-l2"><a class="reference internal" href="#source-structure">Source structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="#options">Options</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="backlog.html">Backlog of changes</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">GravityMon</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>Compiling the software</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/compiling.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="compiling-the-software">
<span id="id1"></span><h1>Compiling the software<a class="headerlink" href="#compiling-the-software" title="Permalink to this headline"></a></h1>
<div class="section" id="tools">
<h2>Tools<a class="headerlink" href="#tools" title="Permalink to this headline"></a></h2>
<p>I use the following tools in order to build and manage the software:</p>
<ul class="simple">
<li><p>Visual Studio Code</p></li>
<li><p>PlatformIO</p></li>
<li><p>Git for Windows</p></li>
<li><p>VSCode plugin: Minify (used to minimise the html files)</p></li>
</ul>
</div>
<div class="section" id="code-formatting">
<h2>Code Formatting<a class="headerlink" href="#code-formatting" title="Permalink to this headline"></a></h2>
<p>I use pre-commit and their cpp style checks to validate the code. Plugin defintions are found in <strong>.pre-commit-config.yaml</strong></p>
<p><a class="reference external" href="https://www.pre-commit.com">Pre-Commit</a></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>There is not yet any automatic checks since this does not work on Windows. It works if running under WSL2 with Ubuntu.</p>
</div>
</div>
<div class="section" id="targets">
<h2>Targets<a class="headerlink" href="#targets" title="Permalink to this headline"></a></h2>
<p>In the platformio config there are 3 targets defined</p>
<ul class="simple">
<li><p>gravity-debug; Maximum logging for trouble shooting, deep sleep is disabled.</p></li>
<li><p>gravity-release; Standard release</p></li>
<li><p>gravity-perf; Standard release but contains code for measuring performance</p></li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The debug target can be unsable and crash the device under certain circumstanses.
Excessive logging to the serial port can cause corruption and crashes. Im still
trying to figure out what causes these issues in the debug target. Other targets are
stable and works fine.</p>
</div>
</div>
<div class="section" id="source-structure">
<h2>Source structure<a class="headerlink" href="#source-structure" title="Permalink to this headline"></a></h2>
<table class="colwidths-given docutils align-default" id="id2">
<caption><span class="caption-text">Directory structure</span><a class="headerlink" href="#id2" title="Permalink to this table"></a></caption>
<colgroup>
<col style="width: 40%" />
<col style="width: 60%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>path</p></th>
<th class="head"><p>content</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>/bin</p></td>
<td><p>Contains compiled binaries</p></td>
</tr>
<tr class="row-odd"><td><p>/data</p></td>
<td><p>Directory for flashing device filesystem</p></td>
</tr>
<tr class="row-even"><td><p>/doc</p></td>
<td><p>Various external documents used as input</p></td>
</tr>
<tr class="row-odd"><td><p>/html</p></td>
<td><p>Source for html files</p></td>
</tr>
<tr class="row-even"><td><p>/img</p></td>
<td><p>Images uses in README.md</p></td>
</tr>
<tr class="row-odd"><td><p>/lib</p></td>
<td><p>External libraries used when compiling</p></td>
</tr>
<tr class="row-even"><td><p>/script</p></td>
<td><p>Scripts used in build process</p></td>
</tr>
<tr class="row-odd"><td><p>/src</p></td>
<td><p>Source code for software</p></td>
</tr>
<tr class="row-even"><td><p>/src_docs</p></td>
<td><p>Source code for documentation</p></td>
</tr>
<tr class="row-odd"><td><p>/stl</p></td>
<td><p>3d models</p></td>
</tr>
<tr class="row-even"><td><p>/test</p></td>
<td><p>Test data for developing html files</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="options">
<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline"></a></h2>
<p>This is a list of C++ defines that is used to enable/disable functions in the code.</p>
<table class="colwidths-given docutils align-default" id="id3">
<caption><span class="caption-text">Defines</span><a class="headerlink" href="#id3" title="Permalink to this table"></a></caption>
<colgroup>
<col style="width: 40%" />
<col style="width: 60%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>define</p></th>
<th class="head"><p>description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>ACTIVATE_OTA</p></td>
<td><p>Enables the OTA functionallity in the code</p></td>
</tr>
<tr class="row-odd"><td><p>USE_GYRO_TEMP</p></td>
<td><p>Uses temperature from gyro instead of DS18B20 (experimental)</p></td>
</tr>
<tr class="row-even"><td><p>SKIP_SLEEPMODE</p></td>
<td><p>THe device never goes into sleep mode, useful when developing.</p></td>
</tr>
<tr class="row-odd"><td><p>CFG_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in Config class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-even"><td><p>GYRO_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in Gyro class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-odd"><td><p>PUSH_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in PushTarget class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-even"><td><p>TSEN_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in TempSensor class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-odd"><td><p>WEB_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in WebServer class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-even"><td><p>MAIN_DISABLE_LOGGING</p></td>
<td><p>Done include verbose logging in Main class. Excessive logging may crash device.</p></td>
</tr>
<tr class="row-odd"><td><p>USE_LITTLEFS</p></td>
<td><p>Use the new filesystem in Ardurino</p></td>
</tr>
<tr class="row-even"><td><p>EMBED_HTML</p></td>
<td><p>Html files are included in code, if not defined they are served from the file system.</p></td>
</tr>
<tr class="row-odd"><td><p>USER_SSID</p></td>
<td><p>If defined the device will always use this SSID</p></td>
</tr>
<tr class="row-even"><td><p>USER_SSID_PWD</p></td>
<td><p>Password to the SSID</p></td>
</tr>
<tr class="row-odd"><td><p>CFG_APPVER</p></td>
<td><p>Defines the version of the compiled software</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="configuration.html" class="btn btn-neutral float-left" title="Setting up device" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="contributing.html" class="btn btn-neutral float-right" title="Contributing" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2021-2022, Magnus Persson.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>