diff --git a/docs/build/assets/arrow.svg b/docs/build/assets/arrow.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ee2798d3fbc10eb527b708b41842d0a0078f8acd
--- /dev/null
+++ b/docs/build/assets/arrow.svg
@@ -0,0 +1,63 @@
+<?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"
+   width="16.5mm"
+   height="8.6603003mm"
+   viewBox="0 0 58.464567 30.686103"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="arrow.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="14.209234"
+     inkscape:cy="29.780479"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1021.6761)">
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0,1021.6761 35.433071,0 -17.716536,30.6861 z"
+       id="path4140"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+  </g>
+</svg>
diff --git a/docs/build/assets/documenter.css b/docs/build/assets/documenter.css
new file mode 100644
index 0000000000000000000000000000000000000000..b8514efd2c05f06f46b4f230a32812813c7688b2
--- /dev/null
+++ b/docs/build/assets/documenter.css
@@ -0,0 +1,541 @@
+/*
+ * The default CSS style for Documenter.jl generated sites
+ *
+ * Heavily inspired by the Julia Sphinx theme
+ *     https://github.com/JuliaLang/JuliaDoc
+ * which extends the sphinx_rtd_theme
+ *     https://github.com/snide/sphinx_rtd_theme
+ *
+ * Part of Documenter.jl
+ *     https://github.com/JuliaDocs/Documenter.jl
+ *
+ * License: MIT
+ */
+
+/* fonts */
+body, input {
+  font-family: 'Lato', 'Helvetica Neue', Arial, sans-serif;
+  font-size: 16px;
+  color: #222;
+  text-rendering: optimizeLegibility;
+}
+
+pre, code {
+  font-family: 'Roboto Mono', Monaco, courier, monospace;
+  font-size: 0.90em;
+}
+
+pre code {
+  font-size: 1em;
+}
+
+a {
+    color: #2980b9;
+    text-decoration: none;
+}
+
+a:hover {
+    color: #3091d1;
+}
+
+a:visited {
+    color: #9b59b6;
+}
+
+body {
+    line-height: 1.5;
+}
+
+h1 { font-size: 1.75em; }
+h2 { font-size: 1.50em; }
+h3 { font-size: 1.25em; }
+h4 { font-size: 1.15em; }
+h5 { font-size: 1.10em; }
+h6 { font-size: 1em; }
+
+h4, h5, h6 {
+    margin: 1em 0;
+}
+
+img {
+    max-width: 100%;
+}
+
+table {
+    border-collapse: collapse;
+    margin: 1em 0;
+}
+
+th, td {
+    border: 1px solid #e1e4e5;
+    padding: 0.5em 1em;
+}
+
+th {
+    border-bottom-width: 2px;
+}
+
+tr:nth-child(even) {
+    background-color: #f3f6f6;
+}
+
+hr {
+    border: 0;
+    border-top: 1px solid #e5e5e5;
+}
+
+/* Inline code and code blocks */
+
+code {
+    padding: 0.1em;
+    background-color: rgba(0,0,0,.04);
+    border-radius: 3px;
+}
+
+pre {
+    background-color: #f5f5f5;
+    border: 1px solid #dddddd;
+    border-radius: 3px;
+    padding: 0.5em;
+    overflow: auto;
+}
+
+pre code {
+    padding: 0;
+    background-color: initial;
+}
+
+/* Headers in admonitions and docstrings */
+.admonition h1,
+article section.docstring h1 {
+    font-size: 1.25em;
+}
+
+.admonition h2,
+article section.docstring h2 {
+    font-size: 1.10em;
+}
+
+.admonition h3,
+.admonition h4,
+.admonition h5,
+.admonition h6,
+article section.docstring h3,
+article section.docstring h4,
+article section.docstring h5,
+article section.docstring h6 {
+    font-size: 1em;
+}
+
+/* Navigation */
+nav.toc {
+    position: fixed;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    width: 20em;
+    overflow-y: auto;
+    padding: 1em 0;
+    background-color: #fcfcfc;
+    box-shadow: inset -14px 0px 5px -12px rgb(210,210,210);
+}
+
+nav.toc .logo {
+    margin: 0 auto;
+    display: block;
+    max-height: 6em;
+    max-width: 18em;
+}
+
+nav.toc h1 {
+    text-align: center;
+    margin-top: .57em;
+    margin-bottom: 0;
+}
+
+nav.toc select {
+    display: block;
+    height: 2em;
+    padding: 0 1.6em 0 1em;
+    min-width: 7em;
+    max-width: 90%;
+    max-width: calc(100% - 5em);
+    margin: 0 auto;
+    font-size: .83em;
+    border: 1px solid #c9c9c9;
+    border-radius: 1em;
+
+    /* TODO: doesn't seem to be centered on Safari */
+    text-align: center;
+    text-align-last: center;
+
+    appearance: none;
+    -moz-appearance: none;
+    -webkit-appearance: none;
+
+    background: white url("arrow.svg");
+    background-size: 1.155em;
+    background-repeat: no-repeat;
+    background-position: right;
+}
+
+nav.toc select:hover {
+    border: 1px solid #a0a0a0;
+}
+
+nav.toc select option {
+    text-align: center;
+}
+
+nav.toc input {
+    display: block;
+    height: 2em;
+    width: 90%;
+    width: calc(100% - 5em);
+    margin: 1.2em auto;
+    padding: 0 1em;
+    border: 1px solid #c9c9c9;
+    border-radius: 1em;
+    font-size: .83em;
+}
+
+nav.toc > ul * {
+    margin: 0;
+}
+
+nav.toc ul {
+    color: #404040;
+    padding: 0;
+    list-style: none;
+}
+
+nav.toc ul .toctext {
+    color: inherit;
+    display: block;
+}
+
+nav.toc ul a:hover {
+    color: #fcfcfc;
+    background-color: #4e4a4a;
+}
+
+nav.toc ul.internal a {
+    color: inherit;
+    display: block;
+}
+
+nav.toc ul.internal a:hover {
+    background-color: #d6d6d6;
+}
+
+nav.toc ul.internal {
+    background-color: #e3e3e3;
+    box-shadow: inset -14px 0px 5px -12px rgb(210,210,210);
+    list-style: none;
+}
+
+nav.toc ul.internal li.toplevel {
+    border-top: 1px solid #c9c9c9;
+    font-weight: bold;
+}
+
+nav.toc ul.internal li.toplevel:first-child {
+    border-top: none;
+}
+
+nav.toc .toctext {
+    padding-top: 0.3em;
+    padding-bottom: 0.3em;
+    padding-right: 1em;
+}
+
+nav.toc ul .toctext {
+    padding-left: 1em;
+}
+
+nav.toc ul ul .toctext {
+    padding-left: 2em;
+}
+
+nav.toc ul ul ul .toctext {
+    padding-left: 3em;
+}
+
+nav.toc li.current > .toctext {
+    border-top: 1px solid #c9c9c9;
+    border-bottom: 1px solid #c9c9c9;
+    color: #404040;
+    font-weight: bold;
+    background-color: white;
+}
+
+article {
+    margin-left: 20em;
+    min-width: 20em;
+    max-width: 48em;
+    padding: 2em;
+}
+
+article > header {}
+
+article > header div#topbar {
+    display: none;
+}
+
+article > header nav ul {
+    display: inline-block;
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+article > header nav li {
+    display: inline-block;
+    padding-right: 0.2em;
+}
+
+article > header nav li:before {
+    content: "»";
+    padding-right: 0.2em;
+}
+
+article > header .edit-page {
+    float: right;
+}
+
+article > footer {}
+
+article > footer a.prev {
+    float: left;
+}
+article > footer a.next {
+    float: right;
+}
+
+article > footer a .direction:after {
+    content: ": ";
+}
+
+article hr {
+    margin: 1em 0;
+}
+
+article section.docstring {
+    border: 1px solid #ddd;
+    margin: 0.5em 0;
+    padding: 0.5em;
+    border-radius: 3px;
+}
+
+article section.docstring .docstring-header {
+    margin-bottom: 1em;
+}
+
+article section.docstring .docstring-binding {
+    color: #333;
+    font-weight: bold;
+}
+
+article section.docstring .docstring-category {
+    font-style: italic;
+}
+
+article section.docstring a.source-link {
+  float: left;
+  font-weight: bold;
+}
+
+.nav-anchor,
+.nav-anchor:hover,
+.nav-anchor:visited {
+    color: #333;
+}
+
+/*
+ * Admonitions
+ *
+ * Colors (title, body)
+ * warning: #f0b37e #ffedcc (orange)
+ * note:    #6ab0de #e7f2fa (blue)
+ * tip:     #1abc9c #dbfaf4 (green)
+*/
+.admonition {
+    border-radius: 3px;
+    background-color: #eeeeee;
+}
+
+.admonition-title {
+    border-radius: 3px 3px 0 0;
+    background-color: #9b9b9b;
+    padding: 0.15em 0.5em;
+}
+
+.admonition-text {
+    padding: 0.5em;
+}
+
+.admonition-text > :first-child {
+    margin-top: 0;
+}
+
+.admonition-text > :last-child {
+    margin-bottom: 0;
+}
+
+.admonition > .admonition-title:before {
+    font-family: "FontAwesome";
+    margin-right: 5px;
+    content: "\f06a";
+}
+
+.admonition.warning > .admonition-title {
+    background-color: #f0b37e;
+}
+
+.admonition.warning {
+    background-color: #ffedcc;
+}
+
+.admonition.note > .admonition-title {
+    background-color: #6ab0de;
+}
+
+.admonition.note {
+    background-color: #e7f2fa;
+}
+
+.admonition.tip > .admonition-title {
+    background-color: #1abc9c;
+}
+
+.admonition.tip {
+    background-color: #dbfaf4;
+}
+
+
+/* footnotes */
+.footnote {
+    padding-left: 0.8em;
+    border-left: 2px solid #ccc;
+}
+
+/* Search page */
+#search-results .category {
+    font-size: smaller;
+}
+
+#search-results .category:before {
+    content: " ";
+}
+
+/* Overriding the <code> block style of highligh.js.
+ * We have to override the padding and the background-color, since we style this
+ * part ourselves. Specifically, we style the <pre> surrounding the <code>, while
+ * highlight.js applies the .hljs style directly to the <code> tag.
+ */
+.hljs {
+    background-color: transparent;
+    padding: 0;
+}
+
+@media only screen and (max-width: 768px) {
+    nav.toc {
+        position: fixed;
+        overflow-y: scroll;
+        width: 16em;
+        left: -16em;
+        -webkit-overflow-scrolling: touch;
+        -webkit-transition-property: left; /* Safari */
+        -webkit-transition-duration: 0.3s; /* Safari */
+        transition-property: left;
+        transition-duration: 0.3s;
+        -webkit-transition-timing-function: ease-out; /* Safari */
+        transition-timing-function: ease-out;
+        z-index: 2;
+    }
+
+    nav.toc.show {
+        left: 0;
+    }
+
+    article {
+        margin-left: 0;
+        padding: 3em 0.9em 0 0.9em; /* top right bottom left */
+        overflow-wrap: break-word;
+    }
+
+    article > header {
+        position: fixed;
+        left: 0;
+        z-index: 1;
+    }
+
+    article > header nav, hr {
+        display: none;
+    }
+
+    article > header div#topbar {
+        display: block; /* is mobile */
+        position: fixed;
+        width: 100%;
+        height: 1.5em;
+        padding-top: 1em;
+        padding-bottom: 1em;
+        background-color: #fcfcfc;
+        box-shadow: 0 1px 3px rgba(0,0,0,.26);
+        top: 0;
+        -webkit-transition-property: top; /* Safari */
+        -webkit-transition-duration: 0.3s; /* Safari */
+        transition-property: top;
+        transition-duration: 0.3s;
+    }
+
+    article > header div#topbar.headroom--unpinned.headroom--not-top.headroom--not-bottom {
+        top: -4em;
+        -webkit-transition-property: top; /* Safari */
+        -webkit-transition-duration: 0.7s; /* Safari */
+        transition-property: top;
+        transition-duration: 0.7s;
+    }
+
+    article > header div#topbar span {
+        position: fixed;
+        width: 80%;
+        height: 1.5em;
+        margin-top: -0.1em;
+        margin-left: 0.9em;
+        font-size: 1.2em;
+        overflow: hidden;
+    }
+
+    article > header div#topbar a.fa-bars {
+        float: right;
+        padding: 0.6em;
+        margin-top: -0.6em;
+        margin-right: 0.3em;
+        font-size: 1.5em;
+    }
+
+    article > header div#topbar a.fa-bars:visited {
+        color: #3091d1;
+    }
+
+    article table {
+        overflow-x: auto;
+        display: block;
+    }
+
+    article div.MathJax_Display {
+        overflow: scroll;
+    }
+
+    article span.MathJax {
+        overflow: hidden;
+    }
+}
+
+@media only screen and (max-width: 320px) {
+    body {
+        font-size: 15px;
+    }
+}
diff --git a/docs/build/assets/documenter.js b/docs/build/assets/documenter.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d31622f49500a1e56fc8e51eece8b9e31bc67f0
--- /dev/null
+++ b/docs/build/assets/documenter.js
@@ -0,0 +1,129 @@
+/*
+ * Part of Documenter.jl
+ *     https://github.com/JuliaDocs/Documenter.jl
+ *
+ * License: MIT
+ */
+
+requirejs.config({
+    paths: {
+        'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min',
+        'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min',
+        'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.3/headroom.min',
+        'mathjax': 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML',
+        'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min',
+        'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia.min',
+        'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia-repl.min',
+    },
+    shim: {
+        'mathjax' : {
+            exports: "MathJax"
+        },
+        'highlight-julia': ['highlight'],
+        'highlight-julia-repl': ['highlight'],
+    }
+});
+
+// Load MathJax
+require(['mathjax'], function(MathJax) {
+    MathJax.Hub.Config({
+      "tex2jax": {
+        inlineMath: [['$','$'], ['\\(','\\)']],
+        processEscapes: true
+      }
+    });
+    MathJax.Hub.Config({
+      config: ["MMLorHTML.js"],
+      jax: [
+        "input/TeX",
+        "output/HTML-CSS",
+        "output/NativeMML"
+      ],
+      extensions: [
+        "MathMenu.js",
+        "MathZoom.js",
+        "TeX/AMSmath.js",
+        "TeX/AMSsymbols.js",
+        "TeX/autobold.js",
+        "TeX/autoload-all.js"
+      ]
+    });
+    MathJax.Hub.Config({
+      TeX: { equationNumbers: { autoNumber: "AMS" } }
+    });
+})
+
+require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) {
+    $(document).ready(function() {
+        hljs.initHighlighting();
+    })
+
+})
+
+// update the version selector with info from the siteinfo.js and ../versions.js files
+require(['jquery'], function($) {
+    $(document).ready(function() {
+        var version_selector = $("#version-selector");
+
+        // add the current version to the selector based on siteinfo.js, but only if the selector is empty
+        if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
+            var option = $("<option value='#' selected='selected'>" + DOCUMENTER_CURRENT_VERSION + "</option>");
+            version_selector.append(option);
+        }
+
+        if (typeof DOC_VERSIONS !== 'undefined') {
+            var existing_versions = $('#version-selector > option');
+            var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
+            DOC_VERSIONS.forEach(function(each) {
+                var version_url = documenterBaseURL + "/../" + each;
+                var existing_id = $.inArray(each, existing_versions_texts);
+                // if not already in the version selector, add it as a new option,
+                // otherwise update the old option with the URL and enable it
+                if (existing_id == -1) {
+                    var option = $("<option value='" + version_url + "'>" + each + "</option>");
+                    version_selector.append(option);
+                } else {
+                    var option = existing_versions[existing_id];
+                    option.value = version_url;
+                    option.disabled = false;
+                }
+            });
+        }
+
+        // only show the version selector if the selector has been populated
+        if ($('#version-selector > option').length > 0) {
+            version_selector.css("visibility", "visible");
+        }
+    })
+
+})
+
+// mobile
+require(['jquery', 'headroom'], function($, Headroom) {
+    $(document).ready(function() {
+        var navtoc = $("nav.toc");
+        $("nav.toc li.current a.toctext").click(function() {
+            navtoc.toggleClass('show');
+        });
+        $("article > header div#topbar a.fa-bars").click(function(ev) {
+            ev.preventDefault();
+            navtoc.toggleClass('show');
+            if (navtoc.hasClass('show')) {
+                var title = $("article > header div#topbar span").text();
+                $("nav.toc ul li a:contains('" + title + "')").focus();
+            }
+        });
+        $("article#docs").bind('click', function(ev) {
+            if ($(ev.target).is('div#topbar a.fa-bars')) {
+                return;
+            }
+            if (navtoc.hasClass('show')) {
+                navtoc.removeClass('show');
+            }
+        });
+        if ($("article > header div#topbar").css('display') == 'block') {
+            var headroom = new Headroom(document.querySelector("article > header div#topbar"), {"tolerance": {"up": 10, "down": 10}});
+            headroom.init();
+        }
+    })
+})
diff --git a/docs/build/assets/search.js b/docs/build/assets/search.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e3e9a4abc32d8426a05ea9b57ddd8295d893d16
--- /dev/null
+++ b/docs/build/assets/search.js
@@ -0,0 +1,91 @@
+/*
+ * Part of Documenter.jl
+ *     https://github.com/JuliaDocs/Documenter.jl
+ *
+ * License: MIT
+ */
+
+// parseUri 1.2.2
+// (c) Steven Levithan <stevenlevithan.com>
+// MIT License
+function parseUri (str) {
+	var	o   = parseUri.options,
+		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
+		uri = {},
+		i   = 14;
+
+	while (i--) uri[o.key[i]] = m[i] || "";
+
+	uri[o.q.name] = {};
+	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
+		if ($1) uri[o.q.name][$1] = $2;
+	});
+
+	return uri;
+};
+parseUri.options = {
+	strictMode: false,
+	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
+	q:   {
+		name:   "queryKey",
+		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
+	},
+	parser: {
+		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
+		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
+	}
+};
+
+requirejs.config({
+    paths: {
+        'jquery': 'https://code.jquery.com/jquery-3.1.0.js?',
+        'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/0.7.1/lunr.min',
+    }
+});
+
+var currentScript = document.currentScript;
+
+require(["jquery", "lunr"], function($, lunr) {
+    var index = lunr(function () {
+        this.ref('location')
+        this.field('title', {boost: 10})
+        this.field('text')
+    })
+    var store = {}
+
+    documenterSearchIndex['docs'].forEach(function(e) {
+        index.add(e)
+        store[e.location] = e
+    })
+
+    $(function(){
+        function update_search(query) {
+            results = index.search(query)
+            $('#search-info').text("Number of results: " + results.length)
+            $('#search-results').empty()
+            results.forEach(function(result) {
+                data = store[result.ref]
+                link = $('<a>')
+                link.text(data.title)
+                link.attr('href', documenterBaseURL+'/'+result.ref)
+                cat = $('<span class="category">('+data.category+')</span>')
+                li = $('<li>').append(link).append(cat)
+                $('#search-results').append(li)
+            })
+        }
+
+        function update_search_box() {
+            query = $('#search-query').val()
+            update_search(query)
+        }
+
+        $('#search-query').keyup(update_search_box)
+        $('#search-query').change(update_search_box)
+
+        search_query = parseUri(window.location).queryKey["q"]
+        if(search_query !== undefined) {
+            $("#search-query").val(search_query)
+        }
+        update_search_box();
+    })
+})
diff --git a/docs/build/beaglebone_black_pinmap.png b/docs/build/beaglebone_black_pinmap.png
new file mode 100644
index 0000000000000000000000000000000000000000..c44e9442347f9aad8493716b84d36c1dca32a738
Binary files /dev/null and b/docs/build/beaglebone_black_pinmap.png differ
diff --git a/docs/build/index.html b/docs/build/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..15c26282f8f27f36bfb176464b208543defbd7a4
--- /dev/null
+++ b/docs/build/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>LabConnections · LabConnections</title><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link href="assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>LabConnections</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" action="search.html"><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li class="current"><a class="toctext" href="index.html">LabConnections</a><ul class="internal"></ul></li><li><a class="toctext" href="installation.html">Installation Instructions</a></li><li><a class="toctext" href="systemConfiguration.html">System Configuration</a></li></ul></nav><article id="docs"><header><nav><ul><li><a href="index.html">LabConnections</a></li></ul><a class="edit-page" href="https://github.com//tree/2f394b7fb331bde8055286d7ff760868bc3c8d27/docs/src/index.md"><span class="fa"></span> Edit on GitHub</a></nav><hr/><div id="topbar"><span>LabConnections</span><a class="fa fa-bars" href="#"></a></div></header><h1><a class="nav-anchor" id="LabConnections-1" href="#LabConnections-1">LabConnections</a></h1><p>This is the documentation for the LabCommunication project, detailing installation instructions, examples and tests which may be run, as well as documenting the protocols and structure of the IO communication.</p><ul><li><a href="installation.html#Installation-Instructions-1">Installation Instructions</a></li><ul><ul><li><a href="installation.html#On-the-HOST-1">On the HOST</a></li><li><a href="installation.html#On-the-BeagleBone-1">On the BeagleBone</a></li><li><a href="installation.html#Setting-up-automatic-communication-between-the-BB-and-the-HOST-via-TCP-1">Setting up automatic communication between the BB and the HOST via TCP</a></li></ul></ul><li><a href="index.html#LabConnections-1">LabConnections</a></li><li><a href="systemConfiguration.html#System-Configuration-1">System Configuration</a></li><ul><li><a href="systemConfiguration.html#Configuration-interfaces-1">Configuration interfaces</a></li><li><a href="systemConfiguration.html#Configuration-files-1">Configuration files</a></li><li><a href="systemConfiguration.html#Creating-configurations-1">Creating configurations</a></li></ul></ul><pre><code class="language-"></code></pre><footer><hr/><a class="next" href="installation.html"><span class="direction">Next</span><span class="title">Installation Instructions</span></a></footer></article></body></html>
diff --git a/docs/build/installation.html b/docs/build/installation.html
new file mode 100644
index 0000000000000000000000000000000000000000..9dffe318ae4f3efebbbe2495262e75cbcc8e570f
--- /dev/null
+++ b/docs/build/installation.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Installation Instructions · LabConnections</title><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link href="assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>LabConnections</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" action="search.html"><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li><a class="toctext" href="index.html">LabConnections</a></li><li class="current"><a class="toctext" href="installation.html">Installation Instructions</a><ul class="internal"></ul></li><li><a class="toctext" href="systemConfiguration.html">System Configuration</a></li></ul></nav><article id="docs"><header><nav><ul><li><a href="installation.html">Installation Instructions</a></li></ul><a class="edit-page" href="https://github.com//tree/2f394b7fb331bde8055286d7ff760868bc3c8d27/docs/src/installation.md"><span class="fa"></span> Edit on GitHub</a></nav><hr/><div id="topbar"><span>Installation Instructions</span><a class="fa fa-bars" href="#"></a></div></header><h1><a class="nav-anchor" id="Installation-Instructions-1" href="#Installation-Instructions-1">Installation Instructions</a></h1><h3><a class="nav-anchor" id="On-the-HOST-1" href="#On-the-HOST-1">On the HOST</a></h3><p>To get started, first install julia v0.6.X on the PC running a Linux distribution by following the instructions specified <a href="https://github.com/JuliaLang/julia/blob/master/README.md">here</a>. So far, the system has only been testen on Ubuntu 14.* and 16.*.</p><p>Once julia is installed julia, run</p><pre><code class="language-none">`Pkg.clone(https://gitlab.control.lth.se/labdev/LabConnections.jl)&#39;
+`Pkg.add(&quot;YAML&quot;)&#39;</code></pre><p>in the julia prompt to install all dependencies on the HOST.</p><h3><a class="nav-anchor" id="On-the-BeagleBone-1" href="#On-the-BeagleBone-1">On the BeagleBone</a></h3><p>On the BeagleBone, first install Debian for 32 bit ARM processors using a micro-SD by following <a href="http://derekmolloy.ie/write-a-new-image-to-the-beaglebone-black/">this guide</a>. You may also include a julia v0.6 tarball, alternatively transferring it using after an installation.</p><p>If chosing the latter, connect the BB and download the julia tarball for ARM (ARMv7 32-bit hard float) from <a href="https://julialang.org/downloads/">here</a> and scp it to /home/debian/ on the BB. Run</p><pre><code class="language-none">`cd ~/Downloads&#39;
+`scp -r julia-0.6.0-linux-arm.tar.gz debian@192.168.7.2:/home/debian&#39;</code></pre><p>next, log on to the BB running</p><pre><code class="language-none">`ssh debian@192.168.7.2&#39;</code></pre><p>an unpack the tarball. Julia should now be operational by running</p><pre><code class="language-none">`/home/debian/julia-&lt;distro specific tag&gt;/bin/julia&#39;</code></pre><p>Next, open a new terminal on the HOST and cd to the /util directory of the LabConnection package by running in the julia package folder</p><pre><code class="language-none">`cd &amp;&amp; cd .julia/v0.6/LabConnection/util&#39;</code></pre><p>This directory contains some nice utility files to operate the BB from the host. To flash it with the current revision of the software, including all dependencies, simply type</p><p>`./flash_BB.sh&#39;</p><h3><a class="nav-anchor" id="Setting-up-automatic-communication-between-the-BB-and-the-HOST-via-TCP-1" href="#Setting-up-automatic-communication-between-the-BB-and-the-HOST-via-TCP-1">Setting up automatic communication between the BB and the HOST via TCP</a></h3><p>To setup automatic start of julia server on the beagle bone</p><ol><li><p>Make sure that julia is installed in <code>/home/debian/julia-903644385b/bin/julia</code> on the BeagleBone or edit <code>juliaserver.service</code> accordingly</p></li><li><p>Create the folder <code>/home/debian/juliapackages/</code> on the BeagleBone</p></li><li><p>On the computer, go to <code>LabConnections/util</code> and run <code>./copyfoldertobb.sh</code></p><ul><li><p>If this failes, make sure that there is not already a folder <code>/home/debian/juliapackages/LabConnections</code></p></li></ul></li><li><p>Copy <code>LabConnections/src/BeagleBone/startup/juliaserver.service</code> to <code>/lib/systemd/system/juliaserver.service</code> on the BeagleBone.</p></li><li><p>Run: <code>sudo systemctl enable juliaserver</code> on BeagleBone</p></li><li><p>Run: <code>sudo systemctl start juliaserver</code> on BeagleBone</p></li></ol><p>After a while, the BeagleBone should start blinking on SysLED 2: on-off-on-sleep-repeat</p><p>The server should now start automatically on restart of the BeagleBone.</p><pre><code class="language-"></code></pre><footer><hr/><a class="previous" href="index.html"><span class="direction">Previous</span><span class="title">LabConnections</span></a><a class="next" href="systemConfiguration.html"><span class="direction">Next</span><span class="title">System Configuration</span></a></footer></article></body></html>
diff --git a/docs/build/search.html b/docs/build/search.html
new file mode 100644
index 0000000000000000000000000000000000000000..4b536fd2a64079097d2a566cd4aed984575c4844
--- /dev/null
+++ b/docs/build/search.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · LabConnections</title><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link href="assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>LabConnections</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" action="search.html"><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li><a class="toctext" href="index.html">LabConnections</a></li><li><a class="toctext" href="installation.html">Installation Instructions</a></li><li><a class="toctext" href="systemConfiguration.html">System Configuration</a></li></ul></nav><article><header><nav><ul><li>Search</li></ul></nav><hr/><div id="topbar"><span>Search</span><a class="fa fa-bars" href="#"></a></div></header><h1>Search</h1><p id="search-info">Number of results: <span id="search-results-number">loading...</span></p><ul id="search-results"></ul></article></body><script src="search_index.js"></script><script src="assets/search.js"></script></html>
diff --git a/docs/build/search_index.js b/docs/build/search_index.js
new file mode 100644
index 0000000000000000000000000000000000000000..492406717a9136da567d802fad6f00eaf429f266
--- /dev/null
+++ b/docs/build/search_index.js
@@ -0,0 +1,99 @@
+var documenterSearchIndex = {"docs": [
+
+{
+    "location": "index.html#",
+    "page": "LabConnections",
+    "title": "LabConnections",
+    "category": "page",
+    "text": ""
+},
+
+{
+    "location": "index.html#LabConnections-1",
+    "page": "LabConnections",
+    "title": "LabConnections",
+    "category": "section",
+    "text": "This is the documentation for the LabCommunication project, detailing installation instructions, examples and tests which may be run, as well as documenting the protocols and structure of the IO communication.Depth = 3"
+},
+
+{
+    "location": "installation.html#",
+    "page": "Installation Instructions",
+    "title": "Installation Instructions",
+    "category": "page",
+    "text": ""
+},
+
+{
+    "location": "installation.html#Installation-Instructions-1",
+    "page": "Installation Instructions",
+    "title": "Installation Instructions",
+    "category": "section",
+    "text": ""
+},
+
+{
+    "location": "installation.html#On-the-HOST-1",
+    "page": "Installation Instructions",
+    "title": "On the HOST",
+    "category": "section",
+    "text": "To get started, first install julia v0.6.X on the PC running a Linux distribution by following the instructions specified here. So far, the system has only been testen on Ubuntu 14.* and 16.*.Once julia is installed julia, run`Pkg.clone(https://gitlab.control.lth.se/labdev/LabConnections.jl)'\n`Pkg.add(\"YAML\")'in the julia prompt to install all dependencies on the HOST."
+},
+
+{
+    "location": "installation.html#On-the-BeagleBone-1",
+    "page": "Installation Instructions",
+    "title": "On the BeagleBone",
+    "category": "section",
+    "text": "On the BeagleBone, first install Debian for 32 bit ARM processors using a micro-SD by following this guide. You may also include a julia v0.6 tarball, alternatively transferring it using after an installation.If chosing the latter, connect the BB and download the julia tarball for ARM (ARMv7 32-bit hard float) from here and scp it to /home/debian/ on the BB. Run`cd ~/Downloads'\n`scp -r julia-0.6.0-linux-arm.tar.gz debian@192.168.7.2:/home/debian'next, log on to the BB running`ssh debian@192.168.7.2'an unpack the tarball. Julia should now be operational by running`/home/debian/julia-<distro specific tag>/bin/julia'Next, open a new terminal on the HOST and cd to the /util directory of the LabConnection package by running in the julia package folder`cd && cd .julia/v0.6/LabConnection/util'This directory contains some nice utility files to operate the BB from the host. To flash it with the current revision of the software, including all dependencies, simply type`./flash_BB.sh'"
+},
+
+{
+    "location": "installation.html#Setting-up-automatic-communication-between-the-BB-and-the-HOST-via-TCP-1",
+    "page": "Installation Instructions",
+    "title": "Setting up automatic communication between the BB and the HOST via TCP",
+    "category": "section",
+    "text": "To setup automatic start of julia server on the beagle boneMake sure that julia is installed in /home/debian/julia-903644385b/bin/julia on the BeagleBone or edit juliaserver.service accordingly\nCreate the folder /home/debian/juliapackages/ on the BeagleBone\nOn the computer, go to LabConnections/util and run ./copyfoldertobb.sh\nIf this failes, make sure that there is not already a folder /home/debian/juliapackages/LabConnections\nCopy LabConnections/src/BeagleBone/startup/juliaserver.service to /lib/systemd/system/juliaserver.service on the BeagleBone.\nRun: sudo systemctl enable juliaserver on BeagleBone\nRun: sudo systemctl start juliaserver on BeagleBoneAfter a while, the BeagleBone should start blinking on SysLED 2: on-off-on-sleep-repeatThe server should now start automatically on restart of the BeagleBone."
+},
+
+{
+    "location": "systemConfiguration.html#",
+    "page": "System Configuration",
+    "title": "System Configuration",
+    "category": "page",
+    "text": ""
+},
+
+{
+    "location": "systemConfiguration.html#System-Configuration-1",
+    "page": "System Configuration",
+    "title": "System Configuration",
+    "category": "section",
+    "text": "The system configuration is designed easy human readable acceess to IO functionality and for speed in the real-time execution. Many pins may be used for different purposes, as can be seen in the diagram below, and the cofiguring of these pins is done on a low level. All pins are referred to by a generic string \"PX.YZ\". For example, the pin \"P9.28\" may be used in the PWM or the ADC (SPI), but not both simultaneously.(Image: block diagram)"
+},
+
+{
+    "location": "systemConfiguration.html#Configuration-interfaces-1",
+    "page": "System Configuration",
+    "title": "Configuration interfaces",
+    "category": "section",
+    "text": "The interface to the BB pins is set in the srcBeagleBone/config/* directory. Many pins of the BB may have multiple settings, documented in the `pins.yml' interface. Any of the pins listed in this file may be incorporated in configuring a specific process. This is done my creating a new `*.yml' file in the config/ directory, with a set of pins and identifiers."
+},
+
+{
+    "location": "systemConfiguration.html#Configuration-files-1",
+    "page": "System Configuration",
+    "title": "Configuration files",
+    "category": "section",
+    "text": "The configuration file is specified as a dictionary of lists assigned to the case-senstive keys \"gpio\", \"led\", \"pwm\", \"adc\", \"qed\". Each entry has an assigned list detailing a unique integer, a tuple of pins and a description. When loading such a configuration file, for instance using`components = YAML.load(open(\"example_configuration.yml\"))'all and specific components of a certain type will be accessed as`components[\"adc\"]'The unique integer is included for quick referencing of pins in the IO communication on the BB side, the description is used on the HOST side and the tuple of pins is in a human readable string format relating to the BB layout."
+},
+
+{
+    "location": "systemConfiguration.html#Creating-configurations-1",
+    "page": "System Configuration",
+    "title": "Creating configurations",
+    "category": "section",
+    "text": "For instance, if a system is to be run with (1) two PWM signals, (2) ADC functionality over the SPI, (3) one quadrature encoder, (4) 4 input GPIOs and (5) 2 output GPIOs. These may be chosen as shown in the file `example_configuration.yml'.This file was created by runnig the create_configuration.jl' script in/utils', which checks consistency against `pins.yml' interactively. This script can be operated by running`julia create_configuration.jl example_configuration.yml'"
+},
+
+]}
diff --git a/docs/build/systemConfiguration.html b/docs/build/systemConfiguration.html
new file mode 100644
index 0000000000000000000000000000000000000000..19f026d56fd11ed3c53b0c3cfb4cf00063c4913a
--- /dev/null
+++ b/docs/build/systemConfiguration.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>System Configuration · LabConnections</title><link href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.min.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link href="assets/documenter.css" rel="stylesheet" type="text/css"/></head><body><nav class="toc"><h1>LabConnections</h1><select id="version-selector" onChange="window.location.href=this.value" style="visibility: hidden"></select><form class="search" action="search.html"><input id="search-query" name="q" type="text" placeholder="Search docs"/></form><ul><li><a class="toctext" href="index.html">LabConnections</a></li><li><a class="toctext" href="installation.html">Installation Instructions</a></li><li class="current"><a class="toctext" href="systemConfiguration.html">System Configuration</a><ul class="internal"><li><a class="toctext" href="#Configuration-interfaces-1">Configuration interfaces</a></li><li><a class="toctext" href="#Configuration-files-1">Configuration files</a></li><li><a class="toctext" href="#Creating-configurations-1">Creating configurations</a></li></ul></li></ul></nav><article id="docs"><header><nav><ul><li><a href="systemConfiguration.html">System Configuration</a></li></ul><a class="edit-page" href="https://github.com//tree/2f394b7fb331bde8055286d7ff760868bc3c8d27/docs/src/systemConfiguration.md"><span class="fa"></span> Edit on GitHub</a></nav><hr/><div id="topbar"><span>System Configuration</span><a class="fa fa-bars" href="#"></a></div></header><h1><a class="nav-anchor" id="System-Configuration-1" href="#System-Configuration-1">System Configuration</a></h1><p>The system configuration is designed easy human readable acceess to IO functionality and for speed in the real-time execution. Many pins may be used for different purposes, as can be seen in the diagram below, and the cofiguring of these pins is done on a low level. All pins are referred to by a generic string &quot;PX.YZ&quot;. For example, the pin &quot;P9.28&quot; may be used in the PWM or the ADC (SPI), but not both simultaneously.</p><p><img src="beaglebone_black_pinmap.png" alt="block diagram"/></p><h2><a class="nav-anchor" id="Configuration-interfaces-1" href="#Configuration-interfaces-1">Configuration interfaces</a></h2><p>The interface to the BB pins is set in the <code>srcBeagleBone/config/*</code> directory. Many pins of the BB may have multiple settings, documented in the <a href="https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml">`pins.yml&#39;</a> interface. Any of the pins listed in this file may be incorporated in configuring a specific process. This is done my creating a new `*.yml&#39; file in the config/ directory, with a set of pins and identifiers.</p><h2><a class="nav-anchor" id="Configuration-files-1" href="#Configuration-files-1">Configuration files</a></h2><p>The configuration file is specified as a dictionary of lists assigned to the case-senstive keys &quot;gpio&quot;, &quot;led&quot;, &quot;pwm&quot;, &quot;adc&quot;, &quot;qed&quot;. Each entry has an assigned list detailing a unique integer, a tuple of pins and a description. When loading such a configuration file, for instance using</p><pre><code class="language-none">`components = YAML.load(open(&quot;example_configuration.yml&quot;))&#39;</code></pre><p>all and specific components of a certain type will be accessed as</p><pre><code class="language-none">`components[&quot;adc&quot;]&#39;</code></pre><p>The unique integer is included for quick referencing of pins in the IO communication on the BB side, the description is used on the HOST side and the tuple of pins is in a human readable string format relating to the BB layout.</p><h2><a class="nav-anchor" id="Creating-configurations-1" href="#Creating-configurations-1">Creating configurations</a></h2><p>For instance, if a system is to be run with (1) two PWM signals, (2) ADC functionality over the SPI, (3) one quadrature encoder, (4) 4 input GPIOs and (5) 2 output GPIOs. These may be chosen as shown in the file <a href="https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml">`example_configuration.yml&#39;</a>.</p><p>This file was created by runnig the <code>create_configuration.jl&#39; script in</code>/utils&#39;, which checks consistency against <a href="https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml">`pins.yml&#39;</a> interactively. This script can be operated by running</p><pre><code class="language-none">`julia create_configuration.jl example_configuration.yml&#39;</code></pre><footer><hr/><a class="previous" href="installation.html"><span class="direction">Previous</span><span class="title">Installation Instructions</span></a></footer></article></body></html>
diff --git a/docs/make.jl b/docs/make.jl
index e8f28104ecdaa274620eba769a0e818a38a5db71..308f52e32ae824313f6ce95387419f63614510de 100644
--- a/docs/make.jl
+++ b/docs/make.jl
@@ -1,3 +1,5 @@
+push!(LOAD_PATH,"../src/")
+
 using Documenter, LabConnections
 # makedocs()
 # deploydocs(
@@ -13,6 +15,8 @@ makedocs(
     sitename = "LabConnections",
     pages = [
         "index.md",
+        "installation.md",
+        "systemConfiguration.md",
     ]
 )
 
diff --git a/docs/src/beaglebone_black_pinmap.png b/docs/src/beaglebone_black_pinmap.png
new file mode 100644
index 0000000000000000000000000000000000000000..c44e9442347f9aad8493716b84d36c1dca32a738
Binary files /dev/null and b/docs/src/beaglebone_black_pinmap.png differ
diff --git a/docs/src/index.md b/docs/src/index.md
index e64ab2bf3592e12db767efce001039707d966cab..fb537d70df9d8052f8b9e21d0738af35447cbe93 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -1,37 +1,9 @@
 # LabConnections
+This is the documentation for the LabCommunication project, detailing installation instructions, examples and tests which may be run, as well as documenting the protocols and structure of the IO communication.
 
 ```@contents
 Depth = 3
 ```
 
-asd
-
-## Installation
-asd
-
-# How to implement a new process
-asd
-
-# How to control a process
-asd
-
-# How to implement a Simulated Process
-asd
-
-## Linear process
-asd
-
-asd
-
-# Process interface specification
-asd
-
-```@autodocs
-Modules = [LabConnections]
-Private = false
-```
-
-# Index
-
-```@index
+```@systemConfiguration
 ```
diff --git a/docs/src/installation.md b/docs/src/installation.md
new file mode 100644
index 0000000000000000000000000000000000000000..88a14a0c7fb7cefcb1dbeadbace36a5b286d6122
--- /dev/null
+++ b/docs/src/installation.md
@@ -0,0 +1,51 @@
+# Installation Instructions
+
+## On the HOST
+To get started, first install julia v0.6.X on the PC running a Linux distribution by following the instructions specified [here](https://github.com/JuliaLang/julia/blob/master/README.md). So far, the system has only been testen on Ubuntu 14.* and 16.*.
+
+Once julia is installed julia, run
+
+    `Pkg.clone(https://gitlab.control.lth.se/labdev/LabConnections.jl)'
+    `Pkg.add("YAML")'
+
+in the julia prompt to install all dependencies on the HOST.
+
+## On the BeagleBone
+On the BeagleBone, first install Debian for 32 bit ARM processors using a micro-SD by following [this guide](http://derekmolloy.ie/write-a-new-image-to-the-beaglebone-black/). You may also include a julia v0.6 tarball, alternatively transferring it using after an installation.
+
+If chosing the latter, connect the BB and download the julia tarball for ARM (ARMv7 32-bit hard float) from [here](https://julialang.org/downloads/) and scp it to /home/debian/ on the BB. Run
+
+    `cd ~/Downloads'
+    `scp -r julia-0.6.0-linux-arm.tar.gz debian@192.168.7.2:/home/debian'
+
+next, log on to the BB running
+
+    `ssh debian@192.168.7.2'
+
+an unpack the tarball. Julia should now be operational by running
+
+    `/home/debian/julia-<distro specific tag>/bin/julia'
+
+Next, open a new terminal on the HOST and cd to the /util directory of the LabConnection package by running in the julia package folder
+
+    `cd && cd .julia/v0.6/LabConnection/util'
+
+This directory contains some nice utility files to operate the BB from the host. To flash it with the current revision of the software, including all dependencies, simply type `./flash.sh'
+
+## Setting up automatic communication between the BB and the HOST via TCP
+To setup automatic start of julia server on the beagle bone
+1. Make sure that julia is installed in `/home/debian/julia-903644385b/bin/julia` on the BeagleBone or edit `juliaserver.service` accordingly
+2. Create the folder `/home/debian/juliapackages/` on the BeagleBone
+3. On the computer, go to `LabConnections/util` and run `./copyfoldertobb.sh`
+    - If this failes, make sure that there is not already a folder `/home/debian/juliapackages/LabConnections`
+1. Copy `LabConnections/src/BeagleBone/startup/juliaserver.service` to `/lib/systemd/system/juliaserver.service` on the BeagleBone.
+2. Run: `sudo systemctl enable juliaserver` on BeagleBone
+3. Run: `sudo systemctl start juliaserver` on BeagleBone
+
+After a while, the BeagleBone should start blinking on SysLED 2: on-off-on-sleep-repeat
+
+The server should now start automatically on restart of the BeagleBone.
+
+
+```@systemConfiguration
+```
diff --git a/docs/src/systemConfiguration.md b/docs/src/systemConfiguration.md
new file mode 100644
index 0000000000000000000000000000000000000000..d81bf05236a9bf1f25ba48e431ca1a84466d610e
--- /dev/null
+++ b/docs/src/systemConfiguration.md
@@ -0,0 +1,25 @@
+# System Configuration
+The system configuration is designed easy human readable acceess to IO functionality and for speed in the real-time execution. Many pins may be used for different purposes, as can be seen in the diagram below, and the cofiguring of these pins is done on a low level. All pins are referred to by a generic string "PX.YZ". For example, the pin "P9.28" may be used in the PWM or the ADC (SPI), but not both simultaneously.
+
+![block diagram](beaglebone_black_pinmap.png)
+
+## Configuration interfaces
+The interface to the BB pins is set in the `srcBeagleBone/config/*` directory. Many pins of the BB may have multiple settings, documented in the [`pins.yml'](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml) interface. Any of the pins listed in this file may be incorporated in configuring a specific process. This is done my creating a new `*.yml' file in the config/ directory, with a set of pins and identifiers.
+
+## Configuration files
+The configuration file is specified as a dictionary of lists assigned to the case-senstive keys "gpio", "led", "pwm", "adc", "qed". Each entry has an assigned list detailing a unique integer, a tuple of pins and a description. When loading such a configuration file, for instance using
+
+    `components = YAML.load(open("example_configuration.yml"))'
+
+all and specific components of a certain type will be accessed as
+
+    `components["adc"]'
+
+The unique integer is included for quick referencing of pins in the IO communication on the BB side, the description is used on the HOST side and the tuple of pins is in a human readable string format relating to the BB layout.
+
+## Creating configurations
+For instance, if a system is to be run with (1) two PWM signals, (2) ADC functionality over the SPI, (3) one quadrature encoder, (4) 4 input GPIOs and (5) 2 output GPIOs. These may be chosen as shown in the file [`example_configuration.yml'](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml).
+
+This file was created by runnig the `create_configuration.jl' script in `/utils', which checks consistency against [`pins.yml'](https://gitlab.control.lth.se/labdev/LabConnections.jl/blob/master/src/BeagleBone/config/pins.yml) interactively. This script can be operated by running
+
+    `julia create_configuration.jl example_configuration.yml'