Files
tsun-gen3-proxy/app/proxy_2.svg
2024-10-03 15:08:07 +02:00

419 lines
37 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: G Pages: 1 -->
<svg width="438pt" height="1820pt"
viewBox="0.00 0.00 438.35 1820.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1816)">
<title>G</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1816 434.348,-1816 434.348,4 -4,4"/>
<!-- A0 -->
<g id="node1" class="node">
<title>A0</title>
<polygon fill="#fff8dc" stroke="#000000" points="108.5444,-1788 .1516,-1788 .1516,-1752 114.5444,-1752 114.5444,-1782 108.5444,-1788"/>
<polyline fill="none" stroke="#000000" points="108.5444,-1788 108.5444,-1782 "/>
<polyline fill="none" stroke="#000000" points="114.5444,-1782 108.5444,-1782 "/>
<text text-anchor="middle" x="57.348" y="-1773" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">You can stick notes</text>
<text text-anchor="middle" x="57.348" y="-1761" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">on diagrams too!</text>
</g>
<!-- A1 -->
<g id="node2" class="node">
<title>A1</title>
<polygon fill="none" stroke="#000000" points="133.348,-1780 133.348,-1812 204.348,-1812 204.348,-1780 133.348,-1780"/>
<text text-anchor="start" x="143.293" y="-1793" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">IterRegistry</text>
<polygon fill="none" stroke="#000000" points="133.348,-1760 133.348,-1780 204.348,-1780 204.348,-1760 133.348,-1760"/>
<polygon fill="none" stroke="#000000" points="133.348,-1728 133.348,-1760 204.348,-1760 204.348,-1728 133.348,-1728"/>
<text text-anchor="start" x="150.787" y="-1741" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">__iter__</text>
</g>
<!-- A14 -->
<g id="node15" class="node">
<title>A14</title>
<polygon fill="none" stroke="#000000" points="128.348,-1574 128.348,-1606 209.348,-1606 209.348,-1574 128.348,-1574"/>
<text text-anchor="start" x="148.5655" y="-1587" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Message</text>
<polygon fill="none" stroke="#000000" points="128.348,-1542 128.348,-1574 209.348,-1574 209.348,-1542 128.348,-1542"/>
<text text-anchor="start" x="151.0615" y="-1555" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">node_id</text>
<polygon fill="none" stroke="#000000" points="128.348,-1498 128.348,-1542 209.348,-1542 209.348,-1498 128.348,-1498"/>
<text text-anchor="start" x="139.6785" y="-1523" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">inc_counter()</text>
<text text-anchor="start" x="138.0085" y="-1511" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dec_counter()</text>
</g>
<!-- A1&#45;&gt;A14 -->
<g id="edge19" class="edge">
<title>A1&#45;&gt;A14</title>
<path fill="none" stroke="#000000" d="M168.348,-1717.8572C168.348,-1684.1684 168.348,-1640.4162 168.348,-1606.3079"/>
<polygon fill="none" stroke="#000000" points="164.8481,-1717.9674 168.348,-1727.9674 171.8481,-1717.9674 164.8481,-1717.9674"/>
</g>
<!-- A2 -->
<g id="node3" class="node">
<title>A2</title>
<polygon fill="none" stroke="#000000" points="308.348,-584 308.348,-616 430.348,-616 430.348,-584 308.348,-584"/>
<text text-anchor="start" x="345.7325" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InverterG3</text>
<polygon fill="none" stroke="#000000" points="308.348,-528 308.348,-584 430.348,-584 430.348,-528 308.348,-528"/>
<text text-anchor="start" x="359.345" y="-565" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="329.901" y="-553" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote:StreamPtr</text>
<text text-anchor="start" x="335.18" y="-541" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local:StreamPtr</text>
<polygon fill="none" stroke="#000000" points="308.348,-472 308.348,-528 430.348,-528 430.348,-472 308.348,-472"/>
<text text-anchor="start" x="317.9515" y="-509" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">async_create_remote()</text>
<text text-anchor="start" x="354.3505" y="-485" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A7 -->
<g id="node8" class="node">
<title>A7</title>
<polygon fill="none" stroke="#000000" points="12.348,-100 12.348,-132 190.348,-132 190.348,-100 12.348,-100"/>
<text text-anchor="start" x="56.8995" y="-113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncStreamServer</text>
<polygon fill="none" stroke="#000000" points="12.348,-68 12.348,-100 190.348,-100 190.348,-68 12.348,-68"/>
<text text-anchor="start" x="53.2805" y="-81" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">async_create_remote</text>
<polygon fill="none" stroke="#000000" points="12.348,0 12.348,-68 190.348,-68 190.348,0 12.348,0"/>
<text text-anchor="start" x="53.0055" y="-49" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;server_loop()</text>
<text text-anchor="start" x="43.8365" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;_async_forward()</text>
<text text-anchor="start" x="22.157" y="-25" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;publish_outstanding_mqtt()</text>
<text text-anchor="start" x="86.3505" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A2&#45;&gt;A7 -->
<g id="edge8" class="edge">
<title>A2&#45;&gt;A7</title>
<path fill="none" stroke="#000000" d="M337.3924,-460.3836C333.0399,-447.6226 328.8668,-434.5306 325.348,-422 295.9146,-317.1872 337.6516,-271.9662 276.348,-182 253.3709,-148.28 233.3826,-154.5085 199.348,-132 199.2571,-131.9399 199.1662,-131.8797 199.0752,-131.8196"/>
<polygon fill="#000000" stroke="#000000" points="337.4849,-460.65 343.2337,-465.0033 341.4263,-471.9842 335.6775,-467.6309 337.4849,-460.65"/>
<polygon fill="#000000" stroke="#000000" points="190.5035,-126.1357 201.3247,-127.9118 194.6706,-128.899 198.8378,-131.6622 198.8378,-131.6622 198.8378,-131.6622 194.6706,-128.899 196.3509,-135.4126 190.5035,-126.1357 190.5035,-126.1357"/>
<text text-anchor="middle" x="327.4894" y="-454.6398" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local</text>
</g>
<!-- A8 -->
<g id="node9" class="node">
<title>A8</title>
<polygon fill="none" stroke="#000000" points="208.348,-82 208.348,-114 346.348,-114 346.348,-82 208.348,-82"/>
<text text-anchor="start" x="234.845" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncStreamClient</text>
<polygon fill="none" stroke="#000000" points="208.348,-62 208.348,-82 346.348,-82 346.348,-62 208.348,-62"/>
<polygon fill="none" stroke="#000000" points="208.348,-18 208.348,-62 346.348,-62 346.348,-18 208.348,-18"/>
<text text-anchor="start" x="231.226" y="-43" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;client_loop()</text>
<text text-anchor="start" x="218.172" y="-31" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;_async_forward())</text>
</g>
<!-- A2&#45;&gt;A8 -->
<g id="edge6" class="edge">
<title>A2&#45;&gt;A8</title>
<path fill="none" stroke="#000000" d="M366.3359,-471.8318C361.9206,-397.9861 351.1813,-280.4371 325.348,-182 320.2128,-162.4325 312.4912,-141.8047 304.7338,-123.458"/>
<polygon fill="#000000" stroke="#000000" points="300.6874,-114.0894 308.7837,-121.4854 302.67,-118.6796 304.6526,-123.2698 304.6526,-123.2698 304.6526,-123.2698 302.67,-118.6796 300.5214,-125.0541 300.6874,-114.0894 300.6874,-114.0894"/>
<text text-anchor="middle" x="315.6341" y="-124.3784" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote</text>
</g>
<!-- A3 -->
<g id="node4" class="node">
<title>A3</title>
<polygon fill="none" stroke="#000000" points=".348,-342 .348,-374 122.348,-374 122.348,-342 .348,-342"/>
<text text-anchor="start" x="34.398" y="-355" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InverterG3P</text>
<polygon fill="none" stroke="#000000" points=".348,-286 .348,-342 122.348,-342 122.348,-286 .348,-286"/>
<text text-anchor="start" x="51.345" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="21.901" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote:StreamPtr</text>
<text text-anchor="start" x="27.18" y="-299" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local:StreamPtr</text>
<polygon fill="none" stroke="#000000" points=".348,-230 .348,-286 122.348,-286 122.348,-230 .348,-230"/>
<text text-anchor="start" x="9.9515" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">async_create_remote()</text>
<text text-anchor="start" x="46.3505" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A3&#45;&gt;A7 -->
<g id="edge12" class="edge">
<title>A3&#45;&gt;A7</title>
<path fill="none" stroke="#000000" d="M75.5849,-218.0021C79.7918,-193.1818 84.3705,-166.167 88.4854,-141.8895"/>
<polygon fill="#000000" stroke="#000000" points="75.572,-218.0786 78.5131,-224.6627 73.5667,-229.9099 70.6256,-223.3258 75.572,-218.0786"/>
<polygon fill="#000000" stroke="#000000" points="90.1576,-132.0235 92.9231,-142.6349 89.322,-136.9532 88.4864,-141.8829 88.4864,-141.8829 88.4864,-141.8829 89.322,-136.9532 84.0497,-141.1309 90.1576,-132.0235 90.1576,-132.0235"/>
<text text-anchor="middle" x="68.2622" y="-207.6261" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local</text>
</g>
<!-- A3&#45;&gt;A8 -->
<g id="edge10" class="edge">
<title>A3&#45;&gt;A8</title>
<path fill="none" stroke="#000000" d="M115.795,-229.9222C128.6843,-213.8036 142.6706,-197.0375 156.348,-182 175.0997,-161.3835 196.7546,-139.9587 216.5165,-121.2154"/>
<polygon fill="#000000" stroke="#000000" points="223.9878,-114.1704 219.7994,-124.3049 220.35,-117.6006 216.7122,-121.0309 216.7122,-121.0309 216.7122,-121.0309 220.35,-117.6006 213.625,-117.7568 223.9878,-114.1704 223.9878,-114.1704"/>
<text text-anchor="middle" x="216.5987" y="-129.7553" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote</text>
</g>
<!-- A4 -->
<g id="node5" class="node">
<title>A4</title>
<polygon fill="none" stroke="#000000" points="158.348,-982 158.348,-1014 275.348,-1014 275.348,-982 158.348,-982"/>
<text text-anchor="start" x="186.277" y="-995" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;&lt;AsyncIfc&gt;&gt;</text>
<polygon fill="none" stroke="#000000" points="158.348,-962 158.348,-982 275.348,-982 275.348,-962 158.348,-962"/>
<polygon fill="none" stroke="#000000" points="158.348,-666 158.348,-962 275.348,-962 275.348,-666 158.348,-666"/>
<text text-anchor="start" x="186.284" y="-943" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">set_node_id()</text>
<text text-anchor="start" x="184.614" y="-931" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">get_conn_no()</text>
<text text-anchor="start" x="198.5115" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_add()</text>
<text text-anchor="start" x="196.292" y="-895" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_flush()</text>
<text text-anchor="start" x="199.9015" y="-883" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_get()</text>
<text text-anchor="start" x="196.0115" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_peek()</text>
<text text-anchor="start" x="200.1815" y="-859" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_log()</text>
<text text-anchor="start" x="196.017" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_clear()</text>
<text text-anchor="start" x="200.1815" y="-835" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_len()</text>
<text text-anchor="start" x="194.6225" y="-811" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_add()</text>
<text text-anchor="start" x="192.403" y="-799" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_flush()</text>
<text text-anchor="start" x="196.2925" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_log()</text>
<text text-anchor="start" x="192.128" y="-775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_clear()</text>
<text text-anchor="start" x="199.6265" y="-763" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_get()</text>
<text text-anchor="start" x="195.7365" y="-751" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_peek()</text>
<text text-anchor="start" x="199.9065" y="-739" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_log()</text>
<text text-anchor="start" x="195.742" y="-727" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_clear()</text>
<text text-anchor="start" x="199.9065" y="-715" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_len()</text>
<text text-anchor="start" x="191.847" y="-703" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_set_cb()</text>
<text text-anchor="start" x="168.2275" y="-679" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">prot_set_timeout_cb()</text>
</g>
<!-- A5 -->
<g id="node6" class="node">
<title>A5</title>
<polygon fill="none" stroke="#000000" points="170.348,-574 170.348,-606 263.348,-606 263.348,-574 170.348,-574"/>
<text text-anchor="start" x="188.512" y="-587" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncIfcImpl</text>
<polygon fill="none" stroke="#000000" points="170.348,-482 170.348,-574 263.348,-574 263.348,-482 170.348,-482"/>
<text text-anchor="start" x="179.896" y="-555" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_fifo:ByteFifo</text>
<text text-anchor="start" x="183.785" y="-543" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_fifo:ByteFifo</text>
<text text-anchor="start" x="183.51" y="-531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rx_fifo:ByteFifo</text>
<text text-anchor="start" x="182.944" y="-519" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">conn_no:Count</text>
<text text-anchor="start" x="199.0615" y="-507" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">node_id</text>
<text text-anchor="start" x="192.3975" y="-495" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">timeout_cb</text>
</g>
<!-- A4&#45;&gt;A5 -->
<g id="edge1" class="edge">
<title>A4&#45;&gt;A5</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M216.348,-655.3047C216.348,-637.8196 216.348,-621.0638 216.348,-606.0999"/>
<polygon fill="none" stroke="#000000" points="212.8481,-655.6759 216.348,-665.6759 219.8481,-655.676 212.8481,-655.6759"/>
</g>
<!-- A6 -->
<g id="node7" class="node">
<title>A6</title>
<polygon fill="none" stroke="#000000" points="165.348,-390 165.348,-422 267.348,-422 267.348,-390 165.348,-390"/>
<text text-anchor="start" x="186.622" y="-403" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncStream</text>
<polygon fill="none" stroke="#000000" points="165.348,-310 165.348,-390 267.348,-390 267.348,-310 165.348,-310"/>
<text text-anchor="start" x="201.901" y="-371" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">reader</text>
<text text-anchor="start" x="204.131" y="-359" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">writer</text>
<text text-anchor="start" x="206.345" y="-347" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="201.901" y="-335" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">r_addr</text>
<text text-anchor="start" x="202.456" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">l_addr</text>
<polygon fill="none" stroke="#000000" points="165.348,-182 165.348,-310 267.348,-310 267.348,-182 165.348,-182"/>
<text text-anchor="start" x="188.002" y="-279" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">&lt;async&gt;loop</text>
<text text-anchor="start" x="204.13" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">disc()</text>
<text text-anchor="start" x="201.3505" y="-255" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
<text text-anchor="start" x="196.902" y="-243" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">healthy()</text>
<text text-anchor="start" x="181.6185" y="-219" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">__async_read()</text>
<text text-anchor="start" x="181.069" y="-207" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">__async_write()</text>
<text text-anchor="start" x="174.955" y="-195" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">__async_forward()</text>
</g>
<!-- A5&#45;&gt;A6 -->
<g id="edge2" class="edge">
<title>A5&#45;&gt;A6</title>
<path fill="none" stroke="#000000" d="M216.348,-471.886C216.348,-456.1951 216.348,-439.1858 216.348,-422.1976"/>
<polygon fill="none" stroke="#000000" points="212.8481,-471.9932 216.348,-481.9932 219.8481,-471.9933 212.8481,-471.9932"/>
</g>
<!-- A6&#45;&gt;A7 -->
<g id="edge3" class="edge">
<title>A6&#45;&gt;A7</title>
<path fill="none" stroke="#000000" d="M160.8205,-188.0478C151.5043,-168.9294 142.1189,-149.6691 133.6443,-132.2776"/>
<polygon fill="none" stroke="#000000" points="157.7107,-189.6563 165.2376,-197.1126 164.0034,-186.5899 157.7107,-189.6563"/>
</g>
<!-- A6&#45;&gt;A8 -->
<g id="edge4" class="edge">
<title>A6&#45;&gt;A8</title>
<path fill="none" stroke="#000000" d="M249.927,-172.088C255.2644,-151.438 260.4749,-131.2796 264.8954,-114.1772"/>
<polygon fill="none" stroke="#000000" points="246.498,-171.3682 247.3841,-181.9259 253.2753,-173.12 246.498,-171.3682"/>
</g>
<!-- A9 -->
<g id="node10" class="node">
<title>A9</title>
<polygon fill="none" stroke="#000000" points="280.348,-1344 280.348,-1376 394.348,-1376 394.348,-1344 280.348,-1344"/>
<text text-anchor="start" x="323.456" y="-1357" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Talent</text>
<polygon fill="none" stroke="#000000" points="280.348,-1192 280.348,-1344 394.348,-1344 394.348,-1192 280.348,-1192"/>
<text text-anchor="start" x="312.0665" y="-1325" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ifc:AsyncIfc</text>
<text text-anchor="start" x="318.171" y="-1313" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">conn_no</text>
<text text-anchor="start" x="327.345" y="-1301" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="290.111" y="-1277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">await_conn_resp_cnt</text>
<text text-anchor="start" x="325.1255" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">id_str</text>
<text text-anchor="start" x="305.948" y="-1253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">contact_name</text>
<text text-anchor="start" x="309.288" y="-1241" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">contact_mail</text>
<text text-anchor="start" x="312.8925" y="-1229" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">db:InfosG3</text>
<text text-anchor="start" x="311.232" y="-1217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">mb:Modbus</text>
<text text-anchor="start" x="323.46" y="-1205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">switch</text>
<polygon fill="none" stroke="#000000" points="280.348,-1064 280.348,-1192 394.348,-1192 394.348,-1064 280.348,-1064"/>
<text text-anchor="start" x="294.8405" y="-1173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_contact_info()</text>
<text text-anchor="start" x="296.7805" y="-1161" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_ota_update()</text>
<text text-anchor="start" x="302.6245" y="-1149" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_get_time()</text>
<text text-anchor="start" x="290.6765" y="-1137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_collector_data()</text>
<text text-anchor="start" x="292.6215" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_inverter_data()</text>
<text text-anchor="start" x="301.7885" y="-1113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_unknown()</text>
<text text-anchor="start" x="317.902" y="-1089" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">healthy()</text>
<text text-anchor="start" x="322.3505" y="-1077" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A9&#45;&gt;A2 -->
<g id="edge5" class="edge">
<title>A9&#45;&gt;A2</title>
<path fill="none" stroke="#000000" d="M356.4487,-1053.6998C358.0019,-1040.2968 359.3489,-1026.94 360.348,-1014 371.1987,-873.4591 367.4052,-708.5736 366.556,-616.1962"/>
<polygon fill="#000000" stroke="#000000" points="355.2231,-1063.9519 351.942,-1053.4885 355.8166,-1058.9873 356.4102,-1054.0226 356.4102,-1054.0226 356.4102,-1054.0226 355.8166,-1058.9873 360.8784,-1054.5568 355.2231,-1063.9519 355.2231,-1063.9519"/>
<text text-anchor="middle" x="348.982" y="-1041.9506" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote</text>
</g>
<!-- A9&#45;&gt;A2 -->
<g id="edge7" class="edge">
<title>A9&#45;&gt;A2</title>
<path fill="none" stroke="#000000" d="M374.3992,-1053.6998C376.0019,-1040.2968 377.3489,-1026.94 378.348,-1014 388.7431,-879.3607 385.698,-722.3785 379.8141,-628.21"/>
<polygon fill="#000000" stroke="#000000" points="373.1253,-1063.9519 369.8928,-1053.4733 373.7419,-1058.9901 374.3585,-1054.0283 374.3585,-1054.0283 374.3585,-1054.0283 373.7419,-1058.9901 378.8241,-1054.5832 373.1253,-1063.9519 373.1253,-1063.9519"/>
<polygon fill="#000000" stroke="#000000" points="379.8116,-628.1704 375.4269,-622.4455 379.0249,-616.1962 383.4097,-621.9211 379.8116,-628.1704"/>
<text text-anchor="middle" x="388.6473" y="-630.7293" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local</text>
</g>
<!-- A9&#45;&gt;A4 -->
<g id="edge15" class="edge">
<title>A9&#45;&gt;A4</title>
<path fill="none" stroke="#000000" d="M287.6089,-1063.7944C283.4127,-1050.6165 279.1452,-1037.2145 274.8907,-1023.853"/>
<polygon fill="#000000" stroke="#000000" points="271.7962,-1014.1348 279.1182,-1022.298 273.3133,-1018.8991 274.8304,-1023.6634 274.8304,-1023.6634 274.8304,-1023.6634 273.3133,-1018.8991 270.5425,-1025.0288 271.7962,-1014.1348 271.7962,-1014.1348"/>
<text text-anchor="middle" x="274.0553" y="-1046.0873" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">use</text>
</g>
<!-- A12 -->
<g id="node13" class="node">
<title>A12</title>
<polygon fill="none" stroke="#000000" points="293.348,-856 293.348,-888 360.348,-888 360.348,-856 293.348,-856"/>
<text text-anchor="start" x="309.341" y="-869" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InfosG3</text>
<polygon fill="none" stroke="#000000" points="293.348,-836 293.348,-856 360.348,-856 360.348,-836 293.348,-836"/>
<polygon fill="none" stroke="#000000" points="293.348,-792 293.348,-836 360.348,-836 360.348,-792 293.348,-792"/>
<text text-anchor="start" x="303.232" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_confs()</text>
<text text-anchor="start" x="311.016" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">parse()</text>
</g>
<!-- A9&#45;&gt;A12 -->
<g id="edge16" class="edge">
<title>A9&#45;&gt;A12</title>
<path fill="none" stroke="#000000" d="M332.8263,-1063.7944C331.1366,-1005.4246 329.3197,-942.658 328.0413,-898.4955"/>
<polygon fill="#000000" stroke="#000000" points="327.7446,-888.2447 332.5321,-898.1103 327.8893,-893.2426 328.034,-898.2406 328.034,-898.2406 328.034,-898.2406 327.8893,-893.2426 323.5359,-898.3708 327.7446,-888.2447 327.7446,-888.2447"/>
</g>
<!-- A10 -->
<g id="node11" class="node">
<title>A10</title>
<polygon fill="none" stroke="#000000" points="50.348,-1308 50.348,-1340 141.348,-1340 141.348,-1308 50.348,-1308"/>
<text text-anchor="start" x="68.343" y="-1321" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SolarmanV5</text>
<polygon fill="none" stroke="#000000" points="50.348,-1168 50.348,-1308 141.348,-1308 141.348,-1168 50.348,-1168"/>
<text text-anchor="start" x="70.5665" y="-1289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ifc:AsyncIfc</text>
<text text-anchor="start" x="76.671" y="-1277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">conn_no</text>
<text text-anchor="start" x="85.845" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="80.846" y="-1241" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">control</text>
<text text-anchor="start" x="83.9055" y="-1229" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">serial</text>
<text text-anchor="start" x="88.904" y="-1217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">snr</text>
<text text-anchor="start" x="68.058" y="-1205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">db:InfosG3P</text>
<text text-anchor="start" x="69.732" y="-1193" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">mb:Modbus</text>
<text text-anchor="start" x="81.96" y="-1181" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">switch</text>
<polygon fill="none" stroke="#000000" points="50.348,-1100 50.348,-1168 141.348,-1168 141.348,-1100 50.348,-1100"/>
<text text-anchor="start" x="60.2885" y="-1149" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_unknown()</text>
<text text-anchor="start" x="76.402" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">healthy()</text>
<text text-anchor="start" x="80.8505" y="-1113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A10&#45;&gt;A3 -->
<g id="edge9" class="edge">
<title>A10&#45;&gt;A3</title>
<path fill="none" stroke="#000000" d="M63.2812,-1090.0398C59.4779,-1064.8912 56.2888,-1038.6862 54.348,-1014 36.0005,-780.6307 43.7035,-502.9057 52.599,-374.1544"/>
<polygon fill="#000000" stroke="#000000" points="64.8268,-1099.9929 58.8455,-1090.8019 64.0595,-1095.0521 63.2922,-1090.1113 63.2922,-1090.1113 63.2922,-1090.1113 64.0595,-1095.0521 67.7389,-1089.4208 64.8268,-1099.9929 64.8268,-1099.9929"/>
<text text-anchor="middle" x="53.6931" y="-1080.3784" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote</text>
</g>
<!-- A10&#45;&gt;A3 -->
<g id="edge11" class="edge">
<title>A10&#45;&gt;A3</title>
<path fill="none" stroke="#000000" d="M80.9376,-1090.0398C77.4779,-1064.8912 74.2888,-1038.6862 72.348,-1014 54.556,-787.6956 61.261,-519.6805 63.1505,-386.2518"/>
<polygon fill="#000000" stroke="#000000" points="82.3274,-1099.9929 76.4876,-1090.7113 81.6359,-1095.0409 80.9444,-1090.089 80.9444,-1090.089 80.9444,-1090.089 81.6359,-1095.0409 85.4011,-1089.4666 82.3274,-1099.9929 82.3274,-1099.9929"/>
<polygon fill="#000000" stroke="#000000" points="63.1517,-386.1533 59.2325,-380.1002 63.3125,-374.1544 67.2317,-380.2074 63.1517,-386.1533"/>
<text text-anchor="middle" x="71.5214" y="-389.3921" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local</text>
</g>
<!-- A10&#45;&gt;A4 -->
<g id="edge17" class="edge">
<title>A10&#45;&gt;A4</title>
<path fill="none" stroke="#000000" d="M133.6332,-1099.7656C141.3073,-1075.6649 149.5353,-1049.8249 157.7176,-1024.1284"/>
<polygon fill="#000000" stroke="#000000" points="160.8501,-1014.2909 162.1038,-1025.1848 159.333,-1019.0552 157.8159,-1023.8195 157.8159,-1023.8195 157.8159,-1023.8195 159.333,-1019.0552 153.5281,-1022.4541 160.8501,-1014.2909 160.8501,-1014.2909"/>
<text text-anchor="middle" x="131.0789" y="-1076.9294" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">use</text>
</g>
<!-- A13 -->
<g id="node14" class="node">
<title>A13</title>
<polygon fill="none" stroke="#000000" points="73.348,-856 73.348,-888 140.348,-888 140.348,-856 73.348,-856"/>
<text text-anchor="start" x="86.0065" y="-869" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InfosG3P</text>
<polygon fill="none" stroke="#000000" points="73.348,-836 73.348,-856 140.348,-856 140.348,-836 73.348,-836"/>
<polygon fill="none" stroke="#000000" points="73.348,-792 73.348,-836 140.348,-836 140.348,-792 73.348,-792"/>
<text text-anchor="start" x="83.232" y="-817" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_confs()</text>
<text text-anchor="start" x="91.016" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">parse()</text>
</g>
<!-- A10&#45;&gt;A13 -->
<g id="edge18" class="edge">
<title>A10&#45;&gt;A13</title>
<path fill="none" stroke="#000000" d="M98.8285,-1099.7656C100.7699,-1032.6997 103.1011,-952.1665 104.6479,-898.7305"/>
<polygon fill="#000000" stroke="#000000" points="104.9465,-888.4166 109.1551,-898.5427 104.8017,-893.4145 104.657,-898.4124 104.657,-898.4124 104.657,-898.4124 104.8017,-893.4145 100.1589,-898.2822 104.9465,-888.4166 104.9465,-888.4166"/>
</g>
<!-- A11 -->
<g id="node12" class="node">
<title>A11</title>
<polygon fill="none" stroke="#000000" points="159.348,-1308 159.348,-1340 262.348,-1340 262.348,-1308 159.348,-1308"/>
<text text-anchor="start" x="200.01" y="-1321" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Infos</text>
<polygon fill="none" stroke="#000000" points="159.348,-1252 159.348,-1308 262.348,-1308 262.348,-1252 159.348,-1252"/>
<text text-anchor="start" x="202.7895" y="-1289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">stat</text>
<text text-anchor="start" x="178.334" y="-1277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">new_stat_data</text>
<text text-anchor="start" x="191.9515" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">info_dev</text>
<polygon fill="none" stroke="#000000" points="159.348,-1100 159.348,-1252 262.348,-1252 262.348,-1100 159.348,-1100"/>
<text text-anchor="start" x="186.6835" y="-1233" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">static_init()</text>
<text text-anchor="start" x="184.7325" y="-1221" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dev_value()</text>
<text text-anchor="start" x="181.6785" y="-1209" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">inc_counter()</text>
<text text-anchor="start" x="180.0085" y="-1197" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dec_counter()</text>
<text text-anchor="start" x="178.058" y="-1185" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_proxy_conf</text>
<text text-anchor="start" x="193.061" y="-1173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_conf</text>
<text text-anchor="start" x="185.842" y="-1161" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_remove</text>
<text text-anchor="start" x="187.2225" y="-1149" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">update_db</text>
<text text-anchor="start" x="171.385" y="-1137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">set_db_def_value</text>
<text text-anchor="start" x="180.8335" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">get_db_value</text>
<text text-anchor="start" x="169.1705" y="-1113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ignore_this_device</text>
</g>
<!-- A11&#45;&gt;A12 -->
<g id="edge13" class="edge">
<title>A11&#45;&gt;A12</title>
<path fill="none" stroke="#000000" d="M259.3612,-1090.2414C268.1716,-1065.1077 276.9072,-1038.8566 284.348,-1014 296.9582,-971.8745 308.4598,-923.1578 316.2258,-888.0062"/>
<polygon fill="none" stroke="#000000" points="256.0104,-1089.2193 255.9834,-1099.8141 262.6115,-1091.5486 256.0104,-1089.2193"/>
</g>
<!-- A11&#45;&gt;A13 -->
<g id="edge14" class="edge">
<title>A11&#45;&gt;A13</title>
<path fill="none" stroke="#000000" d="M170.1294,-1090.3375C162.6366,-1065.0902 155.0603,-1038.773 148.348,-1014 136.8889,-971.7079 125.3116,-923.2186 117.2225,-888.1884"/>
<polygon fill="none" stroke="#000000" points="166.7853,-1091.3716 172.995,-1099.9559 173.4939,-1089.3728 166.7853,-1091.3716"/>
</g>
<!-- A14&#45;&gt;A9 -->
<g id="edge20" class="edge">
<title>A14&#45;&gt;A9</title>
<path fill="none" stroke="#000000" d="M207.7336,-1489.2507C227.8317,-1456.1375 252.0435,-1414.492 271.348,-1376 274.3143,-1370.0855 277.269,-1364.0055 280.1912,-1357.8349"/>
<polygon fill="none" stroke="#000000" points="204.6683,-1487.555 202.4506,-1497.9151 210.6449,-1491.1992 204.6683,-1487.555"/>
</g>
<!-- A14&#45;&gt;A10 -->
<g id="edge21" class="edge">
<title>A14&#45;&gt;A10</title>
<path fill="none" stroke="#000000" d="M154.3052,-1488.1339C145.0994,-1446.2665 132.7762,-1390.2214 121.7769,-1340.197"/>
<polygon fill="none" stroke="#000000" points="150.8909,-1488.9045 156.4568,-1497.9196 157.7276,-1487.4012 150.8909,-1488.9045"/>
</g>
<!-- A15 -->
<g id="node16" class="node">
<title>A15</title>
<polygon fill="none" stroke="#000000" points="263.348,-1646 263.348,-1678 338.348,-1678 338.348,-1646 263.348,-1646"/>
<text text-anchor="start" x="283.0655" y="-1659" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Modbus</text>
<polygon fill="none" stroke="#000000" points="263.348,-1494 263.348,-1646 338.348,-1646 338.348,-1494 263.348,-1494"/>
<text text-anchor="start" x="292.5095" y="-1627" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">que</text>
<text text-anchor="start" x="273.338" y="-1603" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">snd_handler</text>
<text text-anchor="start" x="274.453" y="-1591" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rsp_handler</text>
<text text-anchor="start" x="284.4565" y="-1579" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">timeout</text>
<text text-anchor="start" x="274.7375" y="-1567" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">max_retires</text>
<text text-anchor="start" x="282.79" y="-1555" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">last_xxx</text>
<text text-anchor="start" x="294.7395" y="-1543" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">err</text>
<text text-anchor="start" x="281.4015" y="-1531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">retry_cnt</text>
<text text-anchor="start" x="279.727" y="-1519" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">req_pend</text>
<text text-anchor="start" x="294.1845" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tim</text>
<polygon fill="none" stroke="#000000" points="263.348,-1426 263.348,-1494 338.348,-1494 338.348,-1426 263.348,-1426"/>
<text text-anchor="start" x="274.738" y="-1475" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">build_msg()</text>
<text text-anchor="start" x="278.072" y="-1463" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">recv_req()</text>
<text text-anchor="start" x="275.572" y="-1451" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">recv_resp()</text>
<text text-anchor="start" x="285.8505" y="-1439" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">close()</text>
</g>
<!-- A15&#45;&gt;A9 -->
<g id="edge23" class="edge">
<title>A15&#45;&gt;A9</title>
<path fill="none" stroke="#000000" d="M315.5861,-1415.2689C317.0212,-1402.3918 318.4833,-1389.272 319.9365,-1376.2329"/>
<polygon fill="#000000" stroke="#000000" points="314.4417,-1425.5379 311.077,-1415.101 314.9955,-1420.5687 315.5493,-1415.5995 315.5493,-1415.5995 315.5493,-1415.5995 314.9955,-1420.5687 320.0217,-1416.0979 314.4417,-1425.5379 314.4417,-1425.5379"/>
<text text-anchor="middle" x="326.3292" y="-1392.1837" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">has</text>
<text text-anchor="middle" x="308.049" y="-1403.5871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">1</text>
</g>
<!-- A15&#45;&gt;A10 -->
<g id="edge22" class="edge">
<title>A15&#45;&gt;A10</title>
<path fill="none" stroke="#000000" d="M257.1725,-1475.7757C245.6828,-1458.4941 232.4915,-1440.871 218.348,-1426 192.2483,-1398.5578 171.9188,-1406.411 149.348,-1376 141.2346,-1365.0684 134.273,-1352.8227 128.315,-1340.1269"/>
<polygon fill="#000000" stroke="#000000" points="262.6729,-1484.2184 253.4437,-1478.2962 259.9435,-1480.0291 257.2141,-1475.8397 257.2141,-1475.8397 257.2141,-1475.8397 259.9435,-1480.0291 260.9845,-1473.3833 262.6729,-1484.2184 262.6729,-1484.2184"/>
<text text-anchor="middle" x="143.7688" y="-1349.8225" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">has</text>
<text text-anchor="middle" x="245.6964" y="-1470.645" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">1</text>
</g>
</g>
</svg>