diff --git a/Documentation/index.rst b/Documentation/index.rst index 855d3cc01191dc150e11f61c57162a89b2de0bd0..a4715997a83251eb7ab2beaea51ff74a2d3f65be 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -3,9 +3,16 @@ card10 firmware docs This is the API documentation for card10's default firmware. +Overview +-------- + +The design roughly looks like this: + +.. image:: static/overview.svg + .. toctree:: :maxdepth: 2 - :caption: Contents: + :caption: Contents epicardium pycardium diff --git a/Documentation/static/overview.svg b/Documentation/static/overview.svg new file mode 100644 index 0000000000000000000000000000000000000000..761fe089dba13ab9a66a66c6699f6b1724df29a8 --- /dev/null +++ b/Documentation/static/overview.svg @@ -0,0 +1,461 @@ +<?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:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="193.0201mm" + height="112.18587mm" + viewBox="0 0 193.0201 112.18587" + version="1.1" + id="svg1036" + sodipodi:docname="overview.svg" + inkscape:version="0.92.4 5da689c313, 2019-01-14"> + <defs + id="defs1030"> + <marker + inkscape:stockid="TriangleOutS" + orient="auto" + refY="0" + refX="0" + id="TriangleOutS" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6970" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#b7b7b7;fill-opacity:1;fill-rule:evenodd;stroke:#b7b7b7;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.2)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="EmptyTriangleOutS" + orient="auto" + refY="0" + refX="0" + id="EmptyTriangleOutS" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6988" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#ffffff;fill-rule:evenodd;stroke:#6f6f6f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="matrix(0.2,0,0,0.2,-0.6,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="StopS" + orient="auto" + refY="0" + refX="0" + id="StopS" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6997" + d="M 0,5.65 V -5.65" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#6f6f6f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.2)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="TriangleOutM" + orient="auto" + refY="0" + refX="0" + id="TriangleOutM" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path6967" + d="M 5.77,0 -2.88,5 V -5 Z" + style="fill:#6f6f6f;fill-opacity:1;fill-rule:evenodd;stroke:#6f6f6f;stroke-width:1.00000003pt;stroke-opacity:1" + transform="scale(0.4)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Sstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5075" + style="fill:#b7b7b7;fill-opacity:1;fill-rule:evenodd;stroke:#b7b7b7;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(0.3,0,0,0.3,-0.69,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Send" + orient="auto" + refY="0" + refX="0" + id="Arrow2Send" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5078" + style="fill:#b7b7b7;fill-opacity:1;fill-rule:evenodd;stroke:#b7b7b7;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-0.3,0,0,-0.3,0.69,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Sstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Sstart-5" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5075-3" + style="fill:#6f6f6f;fill-opacity:1;fill-rule:evenodd;stroke:#6f6f6f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(0.3,0,0,0.3,-0.69,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Send" + orient="auto" + refY="0" + refX="0" + id="Arrow2Send-5" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path5078-6" + style="fill:#6f6f6f;fill-opacity:1;fill-rule:evenodd;stroke:#6f6f6f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-0.3,0,0,-0.3,0.69,0)" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#000000" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:zoom="1.4" + inkscape:cx="374.3184" + inkscape:cy="190.35742" + inkscape:document-units="mm" + inkscape:current-layer="g6159" + showgrid="false" + inkscape:pagecheckerboard="true" + inkscape:window-width="1920" + inkscape:window-height="1020" + inkscape:window-x="1920" + inkscape:window-y="0" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + <metadata + id="metadata1033"> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + style="display:inline" + transform="translate(-2.3373782,-73.326953)"> + <g + id="g8661"> + <rect + y="73.453064" + x="2.4634895" + height="111.93365" + width="192.76787" + id="rect6184" + style="fill:#fbfbfb;fill-opacity:1;stroke:#000000;stroke-width:0.25222266;stroke-opacity:1" /> + <g + transform="translate(10.849283,-15.686012)" + id="g6159"> + <path + style="fill:none;stroke:#b7b7b7;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Sstart);marker-end:url(#Arrow2Send)" + d="m 77.890264,138.22847 h 13.726774 l 6.041104,19.27028 h 11.583228" + id="path5043" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <g + id="g6071"> + <rect + y="124.83184" + x="9.8597145" + height="45.194477" + width="60.977013" + id="rect1634" + style="fill:#f3f3f3;fill-opacity:1;stroke-width:0.26458332" /> + <path + sodipodi:nodetypes="ccccccccccccccccccccc" + inkscape:connector-curvature="0" + d="m 39.240598,154.19854 v 7.49338 m 8.728558,-36.86008 v 29.3667 m -17.727077,-29.3667 v 29.3667 m -20.3823647,0 H 70.836722 v -2.40015 H 9.8597143 Z m 0,7.49338 H 70.836722 M 9.8597143,124.83184 v 45.19446 m 0,0 H 70.836722 m 0,0 v -45.19446 m 0,0 H 9.8597143" + style="fill:#000000;fill-opacity:0.98994978;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path1593" /> + <text + id="text1598" + y="167.09712" + x="40.138931" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="167.09712" + x="40.138931" + id="tspan1596" + sodipodi:role="line">HAL/SDK</tspan></text> + <text + id="text1602" + y="135.32553" + x="20.187912" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="135.32553" + x="20.187912" + id="tspan1600" + sodipodi:role="line">Bluetooth</tspan><tspan + id="tspan1604" + style="stroke-width:0.26458332" + y="139.73526" + x="20.187912" + sodipodi:role="line">Low</tspan><tspan + id="tspan1606" + style="stroke-width:0.26458332" + y="144.14497" + x="20.187912" + sodipodi:role="line">Energy</tspan></text> + <text + id="text1610" + y="140.07718" + x="39.025993" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + id="tspan1612" + style="stroke-width:0.26458332" + y="140.07718" + x="39.025993" + sodipodi:role="line">Services</tspan></text> + <text + id="text1618" + y="137.47614" + x="59.535229" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="137.47614" + x="59.535229" + id="tspan1616" + sodipodi:role="line">API</tspan><tspan + id="tspan1622" + style="stroke-width:0.26458332" + y="141.88586" + x="59.535229" + sodipodi:role="line">Dispatcher</tspan></text> + <text + id="text1628" + y="159.02721" + x="23.136122" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="159.02721" + x="23.136122" + id="tspan1626" + sodipodi:role="line">Drivers</tspan></text> + <text + id="text1632" + y="158.99622" + x="56.511425" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="158.99622" + x="56.511425" + id="tspan1630" + sodipodi:role="line">FreeRTOS</tspan></text> + <a + id="a973" + xlink:href="https://git.card10.badge.events.ccc.de/card10/firmware/tree/master/epicardium" + xlink:title="Epicardium"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000ee;fill-opacity:1;stroke:none;stroke-width:0.26458332;" + x="40.307911" + y="111.83552" + id="text6791"><tspan + sodipodi:role="line" + x="40.307911" + y="111.83552" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.26458332;fill:#0000ee;fill-opacity:1;" + id="tspan6793">epicardium</tspan><tspan + sodipodi:role="line" + x="40.307911" + y="119.77302" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.26458332;fill:#0000ee;fill-opacity:1;" + id="tspan1028">(core0)</tspan></text> + </a> + </g> + <g + id="g6032" + transform="translate(-0.52916667)"> + <rect + style="fill:#f3f3f3;fill-opacity:1;stroke-width:0.26458332" + id="rect1981" + width="60.977013" + height="45.194477" + x="116.83902" + y="124.72414" /> + <path + id="path1940" + style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 116.83902,154.09084 h 20.98065 v 7.49338 m -20.98065,0 h 60.97701 m -60.97701,-9.89353 h 60.97701 m -60.97701,-26.96655 v 45.19446 h 60.97701 v -45.19446 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="147.11824" + y="167.09712" + id="text1963"><tspan + sodipodi:role="line" + id="tspan1961" + x="147.11824" + y="167.09712" + style="stroke-width:0.26458332">HAL/SDK</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + x="158.16139" + y="158.99622" + id="text1967"><tspan + sodipodi:role="line" + id="tspan1965" + x="158.16139" + y="158.99622" + style="stroke-width:0.26458332">MicroPython</tspan></text> + <text + id="text1971" + y="158.99622" + x="127.47013" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="158.99622" + x="127.47013" + id="tspan1969" + sodipodi:role="line">API Caller</tspan></text> + <text + id="text1975" + y="135.4599" + x="147.306" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + style="stroke-width:0.26458332" + y="135.4599" + x="147.306" + id="tspan1973" + sodipodi:role="line">Python</tspan><tspan + style="stroke-width:0.26458332" + y="139.86963" + x="147.306" + sodipodi:role="line" + id="tspan1977">Script</tspan><tspan + style="stroke-width:0.26458332" + y="144.27934" + x="147.306" + sodipodi:role="line" + id="tspan1979">(User)</tspan></text> + <a + id="a4682" + xlink:href="https://git.card10.badge.events.ccc.de/card10/firmware/tree/master/pycardium" + xlink:title="Pycardium"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000ee;fill-opacity:1;stroke:none;stroke-width:0.26458332;" + x="147.18329" + y="111.80997" + id="text6799"><tspan + sodipodi:role="line" + id="tspan6797" + x="147.18329" + y="111.80997" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.26458332;fill:#0000ee;fill-opacity:1;">pycardium</tspan><tspan + sodipodi:role="line" + x="147.18329" + y="119.74747" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.58611107px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.26458332;fill:#0000ee;fill-opacity:1;" + id="tspan1032">(core1)</tspan></text> + </a> + </g> + </g> + <text + id="text6791-3" + y="84.910851" + x="104.47012" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" + xml:space="preserve"><tspan + id="tspan1028-7" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.26458332" + y="84.910851" + x="104.47012" + sodipodi:role="line">max32665</tspan></text> + <path + style="display:inline;fill:none;stroke:#b7b7b7;stroke-width:3.5999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutS)" + d="M 19.222455,122.34974 H 10.72299 v 46.42197 h 23.044261" + id="path5043-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <g + id="g8371" + transform="translate(-11.900687,-20.587525)" + style="stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none"> + <rect + transform="scale(-1,1)" + style="display:inline;fill:#f3f3f3;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect1634-9" + width="20.587021" + height="20.587021" + x="-73.88205" + y="179.16779" /> + <text + id="text8363" + y="188.57161" + x="63.567005" + style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none" + xml:space="preserve"><tspan + style="stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none" + y="188.57161" + x="63.567005" + id="tspan8361" + sodipodi:role="line">Bluetooth</tspan><tspan + id="tspan8365" + style="stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none" + y="192.98134" + x="63.567005" + sodipodi:role="line">Core</tspan></text> + </g> + </g> + </g> +</svg>