Files
tsun-gen3-proxy/app/proxy_2.svg
2024-10-06 17:43:40 +02:00

417 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="446pt" height="1796pt"
viewBox="0.00 0.00 446.35 1796.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 1792)">
<title>G</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1792 442.348,-1792 442.348,4 -4,4"/>
<!-- A0 -->
<g id="node1" class="node">
<title>A0</title>
<polygon fill="#fff8dc" stroke="#000000" points="108.5444,-1764 .1516,-1764 .1516,-1728 114.5444,-1728 114.5444,-1758 108.5444,-1764"/>
<polyline fill="none" stroke="#000000" points="108.5444,-1764 108.5444,-1758 "/>
<polyline fill="none" stroke="#000000" points="114.5444,-1758 108.5444,-1758 "/>
<text text-anchor="middle" x="57.348" y="-1749" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">You can stick notes</text>
<text text-anchor="middle" x="57.348" y="-1737" 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,-1756 133.348,-1788 204.348,-1788 204.348,-1756 133.348,-1756"/>
<text text-anchor="start" x="143.293" y="-1769" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">IterRegistry</text>
<polygon fill="none" stroke="#000000" points="133.348,-1736 133.348,-1756 204.348,-1756 204.348,-1736 133.348,-1736"/>
<polygon fill="none" stroke="#000000" points="133.348,-1704 133.348,-1736 204.348,-1736 204.348,-1704 133.348,-1704"/>
<text text-anchor="start" x="150.787" y="-1717" 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,-1550 128.348,-1582 209.348,-1582 209.348,-1550 128.348,-1550"/>
<text text-anchor="start" x="148.5655" y="-1563" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Message</text>
<polygon fill="none" stroke="#000000" points="128.348,-1518 128.348,-1550 209.348,-1550 209.348,-1518 128.348,-1518"/>
<text text-anchor="start" x="151.0615" y="-1531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">node_id</text>
<polygon fill="none" stroke="#000000" points="128.348,-1474 128.348,-1518 209.348,-1518 209.348,-1474 128.348,-1474"/>
<text text-anchor="start" x="139.6785" y="-1499" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">inc_counter()</text>
<text text-anchor="start" x="138.0085" y="-1487" 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,-1693.8572C168.348,-1660.1684 168.348,-1616.4162 168.348,-1582.3079"/>
<polygon fill="none" stroke="#000000" points="164.8481,-1693.9674 168.348,-1703.9674 171.8481,-1693.9674 164.8481,-1693.9674"/>
</g>
<!-- A2 -->
<g id="node3" class="node">
<title>A2</title>
<polygon fill="none" stroke="#000000" points="340.348,-584 340.348,-616 438.348,-616 438.348,-584 340.348,-584"/>
<text text-anchor="start" x="365.7325" y="-597" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InverterG3</text>
<polygon fill="none" stroke="#000000" points="340.348,-528 340.348,-584 438.348,-584 438.348,-528 340.348,-528"/>
<text text-anchor="start" x="379.345" y="-565" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="349.901" y="-553" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote:StreamPtr</text>
<text text-anchor="start" x="355.18" y="-541" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local:StreamPtr</text>
<polygon fill="none" stroke="#000000" points="340.348,-472 340.348,-528 438.348,-528 438.348,-472 340.348,-472"/>
<text text-anchor="start" x="353.79" y="-509" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">create_remote()</text>
<text text-anchor="start" x="374.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="7.348,-100 7.348,-132 185.348,-132 185.348,-100 7.348,-100"/>
<text text-anchor="start" x="51.8995" y="-113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncStreamServer</text>
<polygon fill="none" stroke="#000000" points="7.348,-68 7.348,-100 185.348,-100 185.348,-68 7.348,-68"/>
<text text-anchor="start" x="64.119" y="-81" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">create_remote</text>
<polygon fill="none" stroke="#000000" points="7.348,0 7.348,-68 185.348,-68 185.348,0 7.348,0"/>
<text text-anchor="start" x="48.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="38.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="17.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="81.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="M355.1669,-460.7015C350.2935,-447.8271 345.5247,-434.6178 341.348,-422 306.6206,-317.0888 342.6855,-270.3837 276.348,-182 250.7246,-147.8611 230.2817,-155.039 194.348,-132 194.2563,-131.9412 194.1645,-131.8823 194.0727,-131.8234"/>
<polygon fill="#000000" stroke="#000000" points="355.1669,-460.7018 361.0503,-464.8714 359.4643,-471.9059 353.5809,-467.7363 355.1669,-460.7018"/>
<polygon fill="#000000" stroke="#000000" points="185.433,-126.2441 196.2748,-127.8888 189.6333,-128.9566 193.8336,-131.6691 193.8336,-131.6691 193.8336,-131.6691 189.6333,-128.9566 191.3923,-135.4493 185.433,-126.2441 185.433,-126.2441"/>
<text text-anchor="middle" x="345.0813" y="-455.0087" 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="203.348,-82 203.348,-114 341.348,-114 341.348,-82 203.348,-82"/>
<text text-anchor="start" x="229.845" y="-95" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">AsyncStreamClient</text>
<polygon fill="none" stroke="#000000" points="203.348,-62 203.348,-82 341.348,-82 341.348,-62 203.348,-62"/>
<polygon fill="none" stroke="#000000" points="203.348,-18 203.348,-62 341.348,-62 341.348,-18 203.348,-18"/>
<text text-anchor="start" x="226.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="213.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="M388.2845,-471.9734C385.2471,-397.4776 374.9339,-278.7213 341.348,-182 334.28,-161.6455 323.3872,-140.9471 312.3293,-122.7781"/>
<polygon fill="#000000" stroke="#000000" points="306.9036,-114.0745 316.0125,-120.18 309.5487,-118.3175 312.1938,-122.5606 312.1938,-122.5606 312.1938,-122.5606 309.5487,-118.3175 308.375,-124.9412 306.9036,-114.0745 306.9036,-114.0745"/>
<text text-anchor="middle" x="323.6654" y="-121.9851" 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="18.348,-342 18.348,-374 116.348,-374 116.348,-342 18.348,-342"/>
<text text-anchor="start" x="40.398" y="-355" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InverterG3P</text>
<polygon fill="none" stroke="#000000" points="18.348,-286 18.348,-342 116.348,-342 116.348,-286 18.348,-286"/>
<text text-anchor="start" x="57.345" y="-323" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="27.901" y="-311" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">remote:StreamPtr</text>
<text text-anchor="start" x="33.18" y="-299" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">local:StreamPtr</text>
<polygon fill="none" stroke="#000000" points="18.348,-230 18.348,-286 116.348,-286 116.348,-230 18.348,-230"/>
<text text-anchor="start" x="31.79" y="-267" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">create_remote()</text>
<text text-anchor="start" x="52.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="M77.7163,-217.6237C80.7418,-193.0021 84.0292,-166.2494 86.9885,-142.1671"/>
<polygon fill="#000000" stroke="#000000" points="77.6702,-217.9995 80.9085,-224.4425 76.2065,-229.9099 72.9682,-223.4668 77.6702,-217.9995"/>
<polygon fill="#000000" stroke="#000000" points="88.2349,-132.0235 91.4816,-142.4978 87.6251,-136.9862 87.0152,-141.9489 87.0152,-141.9489 87.0152,-141.9489 87.6251,-136.9862 82.5488,-141.4 88.2349,-132.0235 88.2349,-132.0235"/>
<text text-anchor="middle" x="70.028" y="-207.8882" 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="M116.4873,-232.1115C129.0204,-215.3231 142.7944,-197.7122 156.348,-182 174.1632,-161.3474 194.8826,-139.9135 213.8403,-121.173"/>
<polygon fill="#000000" stroke="#000000" points="221.01,-114.1296 217.0299,-124.3477 217.4432,-117.6336 213.8763,-121.1375 213.8763,-121.1375 213.8763,-121.1375 217.4432,-117.6336 210.7227,-117.9274 221.01,-114.1296 221.01,-114.1296"/>
<text text-anchor="middle" x="214.0028" y="-129.8619" 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,-958 158.348,-990 275.348,-990 275.348,-958 158.348,-958"/>
<text text-anchor="start" x="186.277" y="-971" 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,-938 158.348,-958 275.348,-958 275.348,-938 158.348,-938"/>
<polygon fill="none" stroke="#000000" points="158.348,-666 158.348,-938 275.348,-938 275.348,-666 158.348,-666"/>
<text text-anchor="start" x="186.284" y="-919" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">set_node_id()</text>
<text text-anchor="start" x="184.614" y="-907" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">get_conn_no()</text>
<text text-anchor="start" x="198.5115" y="-883" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_add()</text>
<text text-anchor="start" x="196.292" y="-871" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_flush()</text>
<text text-anchor="start" x="199.9015" y="-859" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_get()</text>
<text text-anchor="start" x="196.0115" y="-847" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_peek()</text>
<text text-anchor="start" x="200.1815" y="-835" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_log()</text>
<text text-anchor="start" x="196.017" y="-823" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_clear()</text>
<text text-anchor="start" x="200.1815" y="-811" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tx_len()</text>
<text text-anchor="start" x="194.6225" y="-787" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_add()</text>
<text text-anchor="start" x="196.2925" y="-775" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">fwd_log()</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.339C216.348,-637.8929 216.348,-621.0952 216.348,-606.0686"/>
<polygon fill="none" stroke="#000000" points="212.8481,-655.6774 216.348,-665.6775 219.8481,-655.6775 212.8481,-655.6774"/>
</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.6502,-192.461C150.1789,-171.8674 139.5319,-150.9284 129.9938,-132.1701"/>
<polygon fill="none" stroke="#000000" points="157.6308,-194.2451 165.2832,-201.5725 163.8705,-191.0723 157.6308,-194.2451"/>
</g>
<!-- A6&#45;&gt;A8 -->
<g id="edge4" class="edge">
<title>A6&#45;&gt;A8</title>
<path fill="none" stroke="#000000" d="M247.1746,-172.088C252.0746,-151.438 256.8579,-131.2796 260.9161,-114.1772"/>
<polygon fill="none" stroke="#000000" points="243.7436,-171.3879 244.8402,-181.9259 250.5545,-173.0041 243.7436,-171.3879"/>
</g>
<!-- A9 -->
<g id="node10" class="node">
<title>A9</title>
<polygon fill="none" stroke="#000000" points="280.348,-1320 280.348,-1352 394.348,-1352 394.348,-1320 280.348,-1320"/>
<text text-anchor="start" x="323.456" y="-1333" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Talent</text>
<polygon fill="none" stroke="#000000" points="280.348,-1168 280.348,-1320 394.348,-1320 394.348,-1168 280.348,-1168"/>
<text text-anchor="start" x="312.0665" y="-1301" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ifc:AsyncIfc</text>
<text text-anchor="start" x="318.171" y="-1289" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">conn_no</text>
<text text-anchor="start" x="327.345" y="-1277" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="290.111" y="-1253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">await_conn_resp_cnt</text>
<text text-anchor="start" x="325.1255" y="-1241" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">id_str</text>
<text text-anchor="start" x="305.948" y="-1229" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">contact_name</text>
<text text-anchor="start" x="309.288" y="-1217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">contact_mail</text>
<text text-anchor="start" x="312.8925" y="-1205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">db:InfosG3</text>
<text text-anchor="start" x="311.232" y="-1193" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">mb:Modbus</text>
<text text-anchor="start" x="323.46" y="-1181" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">switch</text>
<polygon fill="none" stroke="#000000" points="280.348,-1040 280.348,-1168 394.348,-1168 394.348,-1040 280.348,-1040"/>
<text text-anchor="start" x="294.8405" y="-1149" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_contact_info()</text>
<text text-anchor="start" x="296.7805" y="-1137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_ota_update()</text>
<text text-anchor="start" x="302.6245" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_get_time()</text>
<text text-anchor="start" x="290.6765" y="-1113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_collector_data()</text>
<text text-anchor="start" x="292.6215" y="-1101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_inverter_data()</text>
<text text-anchor="start" x="301.7885" y="-1089" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_unknown()</text>
<text text-anchor="start" x="317.902" y="-1065" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">healthy()</text>
<text text-anchor="start" x="322.3505" y="-1053" 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="M355.8061,-1029.6429C357.5037,-1016.2527 359.0593,-1002.9144 360.348,-990 373.4702,-858.5013 377.9848,-704.3277 382.1955,-616.0127"/>
<polygon fill="#000000" stroke="#000000" points="354.4823,-1039.8864 351.3012,-1029.3921 355.1232,-1034.9276 355.764,-1029.9689 355.764,-1029.9689 355.764,-1029.9689 355.1232,-1034.9276 360.2269,-1030.5457 354.4823,-1039.8864 354.4823,-1039.8864"/>
<text text-anchor="middle" x="348.4228" y="-1017.8264" 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="M373.7566,-1029.6429C375.5037,-1016.2527 377.0593,-1002.9144 378.348,-990 390.8936,-864.2801 395.5714,-717.8344 394.9909,-628.0298"/>
<polygon fill="#000000" stroke="#000000" points="372.3845,-1039.8864 369.2521,-1029.3774 373.0484,-1034.9307 373.7122,-1029.9749 373.7122,-1029.9749 373.7122,-1029.9749 373.0484,-1034.9307 378.1724,-1030.5724 372.3845,-1039.8864 372.3845,-1039.8864"/>
<polygon fill="#000000" stroke="#000000" points="394.9908,-628.0122 390.9345,-622.0501 394.8778,-616.0127 398.9341,-621.9747 394.9908,-628.0122"/>
<text text-anchor="middle" x="403.5004" y="-631.0585" 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="M286.0331,-1039.9349C281.6793,-1026.6936 277.2605,-1013.2547 272.8698,-999.9011"/>
<polygon fill="#000000" stroke="#000000" points="269.679,-990.1968 277.0774,-998.2908 271.2408,-994.9466 272.8026,-999.6964 272.8026,-999.6964 272.8026,-999.6964 271.2408,-994.9466 268.5277,-1001.102 269.679,-990.1968 269.679,-990.1968"/>
<text text-anchor="middle" x="272.3419" y="-1022.3558" 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,-844 293.348,-876 360.348,-876 360.348,-844 293.348,-844"/>
<text text-anchor="start" x="309.341" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InfosG3</text>
<polygon fill="none" stroke="#000000" points="293.348,-824 293.348,-844 360.348,-844 360.348,-824 293.348,-824"/>
<polygon fill="none" stroke="#000000" points="293.348,-780 293.348,-824 360.348,-824 360.348,-780 293.348,-780"/>
<text text-anchor="start" x="303.232" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_confs()</text>
<text text-anchor="start" x="311.016" y="-793" 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.683,-1039.9349C331.0582,-985.577 329.3338,-927.8888 328.095,-886.4463"/>
<polygon fill="#000000" stroke="#000000" points="327.7909,-876.272 332.5878,-886.1331 327.9404,-881.2698 328.0898,-886.2676 328.0898,-886.2676 328.0898,-886.2676 327.9404,-881.2698 323.5918,-886.4021 327.7909,-876.272 327.7909,-876.272"/>
</g>
<!-- A10 -->
<g id="node11" class="node">
<title>A10</title>
<polygon fill="none" stroke="#000000" points="50.348,-1284 50.348,-1316 141.348,-1316 141.348,-1284 50.348,-1284"/>
<text text-anchor="start" x="68.343" y="-1297" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">SolarmanV5</text>
<polygon fill="none" stroke="#000000" points="50.348,-1144 50.348,-1284 141.348,-1284 141.348,-1144 50.348,-1144"/>
<text text-anchor="start" x="70.5665" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ifc:AsyncIfc</text>
<text text-anchor="start" x="76.671" y="-1253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">conn_no</text>
<text text-anchor="start" x="85.845" y="-1241" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">addr</text>
<text text-anchor="start" x="80.846" y="-1217" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">control</text>
<text text-anchor="start" x="83.9055" y="-1205" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">serial</text>
<text text-anchor="start" x="88.904" y="-1193" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">snr</text>
<text text-anchor="start" x="68.058" y="-1181" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">db:InfosG3P</text>
<text text-anchor="start" x="69.732" y="-1169" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">mb:Modbus</text>
<text text-anchor="start" x="81.96" y="-1157" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">switch</text>
<polygon fill="none" stroke="#000000" points="50.348,-1076 50.348,-1144 141.348,-1144 141.348,-1076 50.348,-1076"/>
<text text-anchor="start" x="60.2885" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">msg_unknown()</text>
<text text-anchor="start" x="76.402" y="-1101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">healthy()</text>
<text text-anchor="start" x="80.8505" y="-1089" 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.2254,-1066.0442C59.4271,-1040.8951 56.2542,-1014.6889 54.348,-990 37.0619,-766.107 47.322,-500.0139 57.5568,-374.449"/>
<polygon fill="#000000" stroke="#000000" points="64.7695,-1075.9973 58.7895,-1066.8055 64.0029,-1071.0565 63.2364,-1066.1156 63.2364,-1066.1156 63.2364,-1066.1156 64.0029,-1071.0565 67.6832,-1065.4256 64.7695,-1075.9973 64.7695,-1075.9973"/>
<text text-anchor="middle" x="53.6382" y="-1056.3813" 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.8817,-1066.0442C77.4271,-1040.8951 74.2542,-1014.6889 72.348,-990 55.6021,-773.1036 64.7076,-516.6035 68.1168,-386.6269"/>
<polygon fill="#000000" stroke="#000000" points="82.2701,-1075.9973 76.4317,-1066.7149 81.5793,-1071.0453 80.8885,-1066.0932 80.8885,-1066.0932 80.8885,-1066.0932 81.5793,-1071.0453 85.3454,-1065.4715 82.2701,-1075.9973 82.2701,-1075.9973"/>
<polygon fill="#000000" stroke="#000000" points="68.1213,-386.4451 64.2759,-380.3449 68.4278,-374.449 72.2733,-380.5493 68.1213,-386.4451"/>
<text text-anchor="middle" x="76.4146" y="-389.7851" 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="M134.8842,-1075.7577C142.8622,-1051.494 151.3952,-1025.5424 159.8248,-999.9053"/>
<polygon fill="#000000" stroke="#000000" points="163.0491,-990.0992 164.2003,-1001.0045 161.4873,-994.849 159.9255,-999.5989 159.9255,-999.5989 159.9255,-999.5989 161.4873,-994.849 155.6506,-998.1932 163.0491,-990.0992 163.0491,-990.0992"/>
<text text-anchor="middle" x="132.5165" y="-1052.8983" 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,-844 73.348,-876 140.348,-876 140.348,-844 73.348,-844"/>
<text text-anchor="start" x="86.0065" y="-857" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">InfosG3P</text>
<polygon fill="none" stroke="#000000" points="73.348,-824 73.348,-844 140.348,-844 140.348,-824 73.348,-824"/>
<polygon fill="none" stroke="#000000" points="73.348,-780 73.348,-824 140.348,-824 140.348,-780 73.348,-780"/>
<text text-anchor="start" x="83.232" y="-805" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_confs()</text>
<text text-anchor="start" x="91.016" y="-793" 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.9422,-1075.7577C100.842,-1012.1995 103.0881,-937.0598 104.6045,-886.3285"/>
<polygon fill="#000000" stroke="#000000" points="104.9072,-876.2026 109.1063,-886.3326 104.7577,-881.2004 104.6083,-886.1981 104.6083,-886.1981 104.6083,-886.1981 104.7577,-881.2004 100.1103,-886.0636 104.9072,-876.2026 104.9072,-876.2026"/>
</g>
<!-- A11 -->
<g id="node12" class="node">
<title>A11</title>
<polygon fill="none" stroke="#000000" points="159.348,-1284 159.348,-1316 262.348,-1316 262.348,-1284 159.348,-1284"/>
<text text-anchor="start" x="200.01" y="-1297" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Infos</text>
<polygon fill="none" stroke="#000000" points="159.348,-1228 159.348,-1284 262.348,-1284 262.348,-1228 159.348,-1228"/>
<text text-anchor="start" x="202.7895" y="-1265" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">stat</text>
<text text-anchor="start" x="178.334" y="-1253" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">new_stat_data</text>
<text text-anchor="start" x="191.9515" y="-1241" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">info_dev</text>
<polygon fill="none" stroke="#000000" points="159.348,-1076 159.348,-1228 262.348,-1228 262.348,-1076 159.348,-1076"/>
<text text-anchor="start" x="186.6835" y="-1209" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">static_init()</text>
<text text-anchor="start" x="184.7325" y="-1197" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dev_value()</text>
<text text-anchor="start" x="181.6785" y="-1185" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">inc_counter()</text>
<text text-anchor="start" x="180.0085" y="-1173" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">dec_counter()</text>
<text text-anchor="start" x="178.058" y="-1161" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_proxy_conf</text>
<text text-anchor="start" x="193.061" y="-1149" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_conf</text>
<text text-anchor="start" x="185.842" y="-1137" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">ha_remove</text>
<text text-anchor="start" x="187.2225" y="-1125" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">update_db</text>
<text text-anchor="start" x="171.385" y="-1113" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">set_db_def_value</text>
<text text-anchor="start" x="180.8335" y="-1101" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">get_db_value</text>
<text text-anchor="start" x="169.1705" y="-1089" 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="M258.9382,-1066.3836C267.808,-1041.1849 276.6736,-1014.8736 284.348,-990 296.0407,-952.103 307.205,-908.562 315.0802,-876.1703"/>
<polygon fill="none" stroke="#000000" points="255.5783,-1065.3868 255.541,-1075.9815 262.1771,-1067.7225 255.5783,-1065.3868"/>
</g>
<!-- A11&#45;&gt;A13 -->
<g id="edge14" class="edge">
<title>A11&#45;&gt;A13</title>
<path fill="none" stroke="#000000" d="M170.4636,-1066.2454C162.9411,-1041.0063 155.2684,-1014.7156 148.348,-990 137.6936,-951.9489 126.506,-908.6064 118.3587,-876.3336"/>
<polygon fill="none" stroke="#000000" points="167.1205,-1067.2825 173.3374,-1075.8616 173.8274,-1065.2781 167.1205,-1067.2825"/>
</g>
<!-- A14&#45;&gt;A9 -->
<g id="edge20" class="edge">
<title>A14&#45;&gt;A9</title>
<path fill="none" stroke="#000000" d="M207.7336,-1465.2507C227.8317,-1432.1375 252.0435,-1390.492 271.348,-1352 274.3143,-1346.0855 277.269,-1340.0055 280.1912,-1333.8349"/>
<polygon fill="none" stroke="#000000" points="204.6683,-1463.555 202.4506,-1473.9151 210.6449,-1467.1992 204.6683,-1463.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,-1464.1339C145.0994,-1422.2665 132.7762,-1366.2214 121.7769,-1316.197"/>
<polygon fill="none" stroke="#000000" points="150.8909,-1464.9045 156.4568,-1473.9196 157.7276,-1463.4012 150.8909,-1464.9045"/>
</g>
<!-- A15 -->
<g id="node16" class="node">
<title>A15</title>
<polygon fill="none" stroke="#000000" points="263.348,-1622 263.348,-1654 338.348,-1654 338.348,-1622 263.348,-1622"/>
<text text-anchor="start" x="283.0655" y="-1635" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">Modbus</text>
<polygon fill="none" stroke="#000000" points="263.348,-1470 263.348,-1622 338.348,-1622 338.348,-1470 263.348,-1470"/>
<text text-anchor="start" x="292.5095" y="-1603" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">que</text>
<text text-anchor="start" x="273.338" y="-1579" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">snd_handler</text>
<text text-anchor="start" x="274.453" y="-1567" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">rsp_handler</text>
<text text-anchor="start" x="284.4565" y="-1555" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">timeout</text>
<text text-anchor="start" x="274.7375" y="-1543" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">max_retires</text>
<text text-anchor="start" x="282.79" y="-1531" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">last_xxx</text>
<text text-anchor="start" x="294.7395" y="-1519" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">err</text>
<text text-anchor="start" x="281.4015" y="-1507" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">retry_cnt</text>
<text text-anchor="start" x="279.727" y="-1495" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">req_pend</text>
<text text-anchor="start" x="294.1845" y="-1483" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">tim</text>
<polygon fill="none" stroke="#000000" points="263.348,-1402 263.348,-1470 338.348,-1470 338.348,-1402 263.348,-1402"/>
<text text-anchor="start" x="274.738" y="-1451" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">build_msg()</text>
<text text-anchor="start" x="278.072" y="-1439" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">recv_req()</text>
<text text-anchor="start" x="275.572" y="-1427" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">recv_resp()</text>
<text text-anchor="start" x="285.8505" y="-1415" 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,-1391.2689C317.0212,-1378.3918 318.4833,-1365.272 319.9365,-1352.2329"/>
<polygon fill="#000000" stroke="#000000" points="314.4417,-1401.5379 311.077,-1391.101 314.9955,-1396.5687 315.5493,-1391.5995 315.5493,-1391.5995 315.5493,-1391.5995 314.9955,-1396.5687 320.0217,-1392.0979 314.4417,-1401.5379 314.4417,-1401.5379"/>
<text text-anchor="middle" x="326.3292" y="-1368.1837" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">has</text>
<text text-anchor="middle" x="308.049" y="-1379.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,-1451.7757C245.6828,-1434.4941 232.4915,-1416.871 218.348,-1402 192.2483,-1374.5578 171.9188,-1382.411 149.348,-1352 141.2346,-1341.0684 134.273,-1328.8227 128.315,-1316.1269"/>
<polygon fill="#000000" stroke="#000000" points="262.6729,-1460.2184 253.4437,-1454.2962 259.9435,-1456.0291 257.2141,-1451.8397 257.2141,-1451.8397 257.2141,-1451.8397 259.9435,-1456.0291 260.9845,-1449.3833 262.6729,-1460.2184 262.6729,-1460.2184"/>
<text text-anchor="middle" x="143.7688" y="-1325.8225" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">has</text>
<text text-anchor="middle" x="245.6964" y="-1446.645" font-family="Helvetica,sans-Serif" font-size="10.00" fill="#000000">1</text>
</g>
</g>
</svg>