Fixed major UART Issue, I hate it

This commit is contained in:
AlexanderHD27
2025-01-03 12:33:51 +01:00
parent cbf702c6d5
commit 1fd8737fe4
22 changed files with 665 additions and 222 deletions

View File

@@ -1,9 +1,15 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.1 Chrome/128.0.6613.186 Electron/32.2.6 Safari/537.36" version="25.0.1"> <mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.1 Chrome/128.0.6613.186 Electron/32.2.6 Safari/537.36" version="25.0.1">
<diagram name="Page-1" id="VLDBnTalcAr4j7jpmEzg"> <diagram name="Page-1" id="VLDBnTalcAr4j7jpmEzg">
<mxGraphModel dx="1434" dy="870" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="819" dy="497" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
<mxCell id="weFQkCekfF49Ojb9-c9R-348" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1090" y="1920" as="sourcePoint" />
<mxPoint x="1095.47" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-208" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-208" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1880" y="900" as="sourcePoint" /> <mxPoint x="1880" y="900" as="sourcePoint" />
@@ -484,10 +490,10 @@
<mxCell id="weFQkCekfF49Ojb9-c9R-145" value="RESPONSE" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-145" value="RESPONSE" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="125.38" y="1401" width="79.5" height="40" as="geometry" /> <mxGeometry x="125.38" y="1401" width="79.5" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-146" value="0x7" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-146" value="0x8" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="204.88" y="1361" width="40" height="40" as="geometry" /> <mxGeometry x="204.88" y="1361" width="40" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-147" value="0x7" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-147" value="0x8" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="204.88" y="1401" width="40" height="40" as="geometry" /> <mxGeometry x="204.88" y="1401" width="40" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-148" value="Set Vacum" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-148" value="Set Vacum" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
@@ -535,10 +541,10 @@
<mxCell id="weFQkCekfF49Ojb9-c9R-165" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-165" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1401.69" y="230" width="718.31" height="20" as="geometry" /> <mxGeometry x="1401.69" y="230" width="718.31" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-167" value="CRC" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-167" value="16" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1960.98" y="170" width="160" height="40" as="geometry" /> <mxGeometry x="1960.98" y="170" width="160" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-168" value="32" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-168" value="16" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1960.98" y="150" width="160" height="20" as="geometry" /> <mxGeometry x="1960.98" y="150" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-170" value="&lt;b&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;I2C Cable&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-170" value="&lt;b&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;I2C Cable&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
@@ -736,73 +742,73 @@
<mxGeometry x="1540" y="760" width="80" height="40" as="geometry" /> <mxGeometry x="1540" y="760" width="80" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-232" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;GoRPC Ctrl Protocol&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-232" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;GoRPC Ctrl Protocol&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.49" y="1080" width="240" height="40" as="geometry" /> <mxGeometry x="1200.61" y="1040" width="600" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-233" value="Msg Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-233" value="Msg Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.34" y="1140" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.9499999999998" y="1140" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-234" value="Data (max 255b )" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-234" value="Data (max 255b )" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1360.98" y="1140" width="439.02" height="20" as="geometry" /> <mxGeometry x="1361.9599999999998" y="1141" width="439.02" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-235" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-235" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.34" y="1120" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.9499999999998" y="1120" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-236" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-236" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1360" y="1120" width="440" height="20" as="geometry" /> <mxGeometry x="1360.9799999999998" y="1121" width="440" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-237" value="TX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-237" value="TX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1200" y="1200" width="80" height="21" as="geometry" /> <mxGeometry x="1120.61" y="1200" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-239" value="0x01" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-239" value="0x01" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1201" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1201" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-240" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-240" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1181" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1181" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-241" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-241" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1360.64" y="1201" width="239.02" height="19" as="geometry" /> <mxGeometry x="1441.1499999999999" y="1203" width="359.46" height="19" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-242" value="RX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-242" value="RX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1239" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1239" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-243" value="0x02" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-243" value="0x02" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.01" y="1239" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.62" y="1239" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-244" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-244" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1361.2800000000002" y="1239" width="238.04" height="20" as="geometry" /> <mxGeometry x="1441.6399999999999" y="1240" width="358.97" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-245" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-245" value="0-251" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1359.3200000000002" y="1219" width="240" height="20" as="geometry" /> <mxGeometry x="1441.1499999999999" y="1221" width="349.46" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-247" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-247" value="0-251" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1360.9800000000002" y="1180" width="240" height="20" as="geometry" /> <mxGeometry x="1440.4699999999998" y="1181" width="360.14" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-248" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-248" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1219" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1219" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-249" value="Perform Scan" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-249" value="Perform Scan" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1280" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1280" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-250" value="0x03" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-250" value="0x03" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.62" y="1281" width="79.66" height="20" as="geometry" /> <mxGeometry x="1202.2299999999998" y="1281" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-251" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-251" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1260" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1260" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-252" value="Scan Result" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-252" value="Scan Result" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1320" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1320" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-253" value="0x04" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-253" value="0x04" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.4699999999998" y="1320" width="79.66" height="20" as="geometry" /> <mxGeometry x="1202.0799999999997" y="1320" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-254" value="Address" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-254" value="Address" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1359.32" y="1320" width="160" height="20" as="geometry" /> <mxGeometry x="1362.8399999999997" y="1320" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-255" value="Node Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-255" value="Node Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1519.32" y="1320" width="118.05" height="20" as="geometry" /> <mxGeometry x="1523.5399999999997" y="1320" width="118.05" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-256" value="Status" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-256" value="Status" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1637.37" y="1320" width="81.95" height="20" as="geometry" /> <mxGeometry x="1641.5899999999997" y="1320" width="81.95" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-257" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-257" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="332.45" y="770" width="160" height="20" as="geometry" /> <mxGeometry x="332.45" y="770" width="160" height="20" as="geometry" />
@@ -811,16 +817,16 @@
<mxGeometry x="491.72999999999996" y="770" width="160.72" height="20" as="geometry" /> <mxGeometry x="491.72999999999996" y="770" width="160.72" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-259" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-259" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1361.28" y="1300" width="160" height="20" as="geometry" /> <mxGeometry x="1362.2599999999998" y="1301" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-260" value="3" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-260" value="3" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1521.28" y="1300" width="118.05" height="20" as="geometry" /> <mxGeometry x="1522.2599999999998" y="1301" width="118.05" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-261" value="2" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-261" value="2" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1639.33" y="1300" width="81.95" height="20" as="geometry" /> <mxGeometry x="1640.3099999999997" y="1301" width="81.95" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-262" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-262" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1300" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1300" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-267" value="&lt;span style=&quot;font-weight: 400;&quot;&gt;GobotRPC_CI&lt;/span&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-267" value="&lt;span style=&quot;font-weight: 400;&quot;&gt;GobotRPC_CI&lt;/span&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1910" y="1022" width="270" height="190" as="geometry" /> <mxGeometry x="1910" y="1022" width="270" height="190" as="geometry" />
@@ -912,13 +918,13 @@
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-304" value="Heart Beat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-304" value="Heart Beat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1201.69" y="1361" width="80" height="21" as="geometry" /> <mxGeometry x="1122.3" y="1361" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-306" value="0xff" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-306" value="0xff" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.6599999999999" y="1361" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.2699999999998" y="1361" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-307" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-307" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1340" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1340" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-308" value="&lt;div style=&quot;background-color: rgb(31, 31, 31); line-height: 19px;&quot;&gt;&lt;font face=&quot;Droid Sans Mono, monospace, monospace&quot; color=&quot;#dcdcaa&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;GobotRPC_CI_heartBeatTaskFn&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-308" value="&lt;div style=&quot;background-color: rgb(31, 31, 31); line-height: 19px;&quot;&gt;&lt;font face=&quot;Droid Sans Mono, monospace, monospace&quot; color=&quot;#dcdcaa&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;GobotRPC_CI_heartBeatTaskFn&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="2330" y="950" width="280" height="40" as="geometry" /> <mxGeometry x="2330" y="950" width="280" height="40" as="geometry" />
@@ -927,16 +933,16 @@
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-311" value="Print Text" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-311" value="Print Text" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.49" y="1401" width="80" height="21" as="geometry" /> <mxGeometry x="1120.1" y="1401" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-312" value="0xfe" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-312" value="0xfe" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.9999999999998" y="1401" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.6099999999997" y="1401" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-313" value="Text" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-313" value="Text" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1359.3200000000002" y="1401" width="238.04" height="20" as="geometry" /> <mxGeometry x="1360.3" y="1402" width="440.31" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-314" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-314" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1358.3400000000001" y="1381" width="240" height="20" as="geometry" /> <mxGeometry x="1359.32" y="1382" width="441.29" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-316" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1" target="weFQkCekfF49Ojb9-c9R-315"> <mxCell id="weFQkCekfF49Ojb9-c9R-316" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1" target="weFQkCekfF49Ojb9-c9R-315">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
@@ -950,6 +956,149 @@
<mxCell id="weFQkCekfF49Ojb9-c9R-317" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;align=center;fillColor=#2D9C5E;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.check" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-317" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;align=center;fillColor=#2D9C5E;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.check" vertex="1" parent="1">
<mxGeometry x="1700.28" y="760" width="40" height="32" as="geometry" /> <mxGeometry x="1700.28" y="760" width="40" height="32" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-318" value="Addr" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1362.84" y="1201" width="79.66" height="21" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-319" value="Addr" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1362.84" y="1238.5" width="79.66" height="21" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-320" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1362.2599999999998" y="1221" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-321" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1359.3199999999997" y="1182" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-322" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.6999999999998" y="1140" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-323" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1201" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-324" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1239" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-325" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1281" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-326" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1320" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-327" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.32" y="1361.5" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-328" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.9299999999998" y="1401" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-329" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1283.18" y="1301" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-330" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1282.6000000000001" y="1261" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-331" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.5900000000001" y="1219" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-332" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1282.3000000000002" y="1180" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-333" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1283.1800000000003" y="1341" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-334" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.2700000000002" y="1381" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-335" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1201.5800000000002" y="1381" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-336" value="Counted to sizes" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1200" y="1100" width="600.61" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-337" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.2699999999998" y="1121" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-345" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-338" target="weFQkCekfF49Ojb9-c9R-344">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-338" value="Full Buffer Queue" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.azure.queue_generic;flipH=1;" vertex="1" parent="1">
<mxGeometry x="1382.84" y="1680" width="183.33" height="55" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-366" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.51;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-339" target="weFQkCekfF49Ojb9-c9R-365">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-339" value="Empty Buffer Queue" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.azure.queue_generic" vertex="1" parent="1">
<mxGeometry x="1390" y="1830" width="183.33" height="55" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-341" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1360" y="1920" as="sourcePoint" />
<mxPoint x="1361.03" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-342" value="ISR" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1090" y="1650" width="270" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-353" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.93;entryY=0.058;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-344" target="weFQkCekfF49Ojb9-c9R-361">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1250" y="1707.4166666666667" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-344" value="InputBuffer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1269.61" y="1692.5" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-349" value="Core0" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1038.15" y="1610" width="722" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-361" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1215" y="1700" width="15" height="160" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-362" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-361" target="weFQkCekfF49Ojb9-c9R-339">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1230" y="1870" as="sourcePoint" />
<mxPoint x="1280" y="1820" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-363" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1621.17" y="1920" as="sourcePoint" />
<mxPoint x="1622.2" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-364" value="RX Processing" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1619.98" y="1650" width="171" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-365" value="InputBuffer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1650.28" y="1842.5" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-367" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1730.28" y="1700" width="19.72" height="174" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-368" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.018;entryY=0.488;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-367" target="weFQkCekfF49Ojb9-c9R-338">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1660" y="1770" as="sourcePoint" />
<mxPoint x="1710" y="1720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-369" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1030" y="1600" as="sourcePoint" />
<mxPoint x="2030" y="1600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-370" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="2030" y="1930" as="sourcePoint" />
<mxPoint x="2030" y="1600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-371" value="&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: &amp;quot;Droid Sans Mono&amp;quot;, &amp;quot;monospace&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;cb_rxData&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1800" y="1760" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-373" value="" style="endArrow=classic;html=1;rounded=0;entryX=-0.009;entryY=0.431;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.935;exitY=0.449;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-367" target="weFQkCekfF49Ojb9-c9R-371">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1750" y="1790" as="sourcePoint" />
<mxPoint x="1800" y="1740" as="targetPoint" />
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@@ -1,9 +1,15 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.1 Chrome/128.0.6613.186 Electron/32.2.6 Safari/537.36" version="25.0.1"> <mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.1 Chrome/128.0.6613.186 Electron/32.2.6 Safari/537.36" version="25.0.1">
<diagram name="Page-1" id="VLDBnTalcAr4j7jpmEzg"> <diagram name="Page-1" id="VLDBnTalcAr4j7jpmEzg">
<mxGraphModel dx="1674" dy="870" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="1195" dy="725" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
<mxCell id="weFQkCekfF49Ojb9-c9R-348" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1090" y="1920" as="sourcePoint" />
<mxPoint x="1095.47" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-208" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-208" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1880" y="900" as="sourcePoint" /> <mxPoint x="1880" y="900" as="sourcePoint" />
@@ -484,10 +490,10 @@
<mxCell id="weFQkCekfF49Ojb9-c9R-145" value="RESPONSE" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-145" value="RESPONSE" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="125.38" y="1401" width="79.5" height="40" as="geometry" /> <mxGeometry x="125.38" y="1401" width="79.5" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-146" value="0x7" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-146" value="0x8" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="204.88" y="1361" width="40" height="40" as="geometry" /> <mxGeometry x="204.88" y="1361" width="40" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-147" value="0x7" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-147" value="0x8" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="204.88" y="1401" width="40" height="40" as="geometry" /> <mxGeometry x="204.88" y="1401" width="40" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-148" value="Set Vacum" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-148" value="Set Vacum" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
@@ -736,91 +742,88 @@
<mxGeometry x="1540" y="760" width="80" height="40" as="geometry" /> <mxGeometry x="1540" y="760" width="80" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-232" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;GoRPC Ctrl Protocol&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-232" value="&lt;b&gt;&lt;font style=&quot;font-size: 20px;&quot;&gt;GoRPC Ctrl Protocol&lt;/font&gt;&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.49" y="1080" width="240" height="40" as="geometry" /> <mxGeometry x="1200.61" y="1040" width="600" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-233" value="Msg Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-233" value="Msg Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.34" y="1140" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.9499999999998" y="1140" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-234" value="Data (max 255b )" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-234" value="Data (max 255b )" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1360.98" y="1140" width="439.02" height="20" as="geometry" /> <mxGeometry x="1361.9599999999998" y="1141" width="439.02" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-235" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-235" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.34" y="1120" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.9499999999998" y="1120" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-236" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-236" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1360" y="1120" width="440" height="20" as="geometry" /> <mxGeometry x="1360.9799999999998" y="1121" width="440" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-237" value="TX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-237" value="TX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1200" y="1200" width="80" height="21" as="geometry" /> <mxGeometry x="1120.61" y="1200" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-239" value="0x01" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-239" value="0x01" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1201" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1201" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-240" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-240" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1181" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1181" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-241" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-241" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1360.64" y="1201" width="239.02" height="19" as="geometry" /> <mxGeometry x="1441.1499999999999" y="1203" width="359.46" height="19" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-242" value="RX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-242" value="RX Package" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1239" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1239" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-243" value="0x02" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-243" value="0x02" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.01" y="1239" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.62" y="1239" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-244" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-244" value="GoRPC Package" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1361.2800000000002" y="1239" width="238.04" height="20" as="geometry" /> <mxGeometry x="1441.6399999999999" y="1240" width="358.97" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-245" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-245" value="0-251" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1359.3200000000002" y="1219" width="240" height="20" as="geometry" /> <mxGeometry x="1441.1499999999999" y="1221" width="349.46" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-247" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-247" value="0-251" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1360.9800000000002" y="1180" width="240" height="20" as="geometry" /> <mxGeometry x="1440.4699999999998" y="1181" width="360.14" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-248" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-248" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.28" y="1219" width="79.66" height="20" as="geometry" /> <mxGeometry x="1201.8899999999999" y="1219" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-249" value="Perform Scan" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-249" value="Perform Scan" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1280" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1280" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-250" value="0x03" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-250" value="0x03" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.62" y="1281" width="79.66" height="20" as="geometry" /> <mxGeometry x="1202.2299999999998" y="1281" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-251" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-251" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1260" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1260" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-252" value="Scan Result" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-252" value="Scan Result" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.66" y="1320" width="80" height="21" as="geometry" /> <mxGeometry x="1120.27" y="1320" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-253" value="0x04" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-253" value="0x04" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.4699999999998" y="1320" width="79.66" height="20" as="geometry" /> <mxGeometry x="1202.0799999999997" y="1320" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-254" value="Address" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-254" value="Address" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1359.32" y="1320" width="160" height="20" as="geometry" /> <mxGeometry x="1362.8399999999997" y="1320" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-255" value="Node Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-255" value="Node Type" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1519.32" y="1320" width="118.05" height="20" as="geometry" /> <mxGeometry x="1523.5399999999997" y="1320" width="118.05" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-256" value="Status" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-256" value="Status" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1637.37" y="1320" width="81.95" height="20" as="geometry" /> <mxGeometry x="1641.5899999999997" y="1320" width="81.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-257" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="332.45" y="770" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-258" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-258" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="491.72999999999996" y="770" width="160.72" height="20" as="geometry" /> <mxGeometry x="491.72999999999996" y="770" width="160.72" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-259" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-259" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1361.28" y="1300" width="160" height="20" as="geometry" /> <mxGeometry x="1362.2599999999998" y="1301" width="160" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-260" value="3" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-260" value="3" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1521.28" y="1300" width="118.05" height="20" as="geometry" /> <mxGeometry x="1522.2599999999998" y="1301" width="118.05" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-261" value="2" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-261" value="2" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1639.33" y="1300" width="81.95" height="20" as="geometry" /> <mxGeometry x="1640.3099999999997" y="1301" width="81.95" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-262" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-262" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1300" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1300" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-267" value="&lt;span style=&quot;font-weight: 400;&quot;&gt;GobotRPC_CI&lt;/span&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-267" value="&lt;span style=&quot;font-weight: 400;&quot;&gt;GobotRPC_CI&lt;/span&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1910" y="1022" width="270" height="190" as="geometry" /> <mxGeometry x="1910" y="1022" width="270" height="190" as="geometry" />
@@ -912,13 +915,13 @@
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-304" value="Heart Beat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-304" value="Heart Beat" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1201.69" y="1361" width="80" height="21" as="geometry" /> <mxGeometry x="1122.3" y="1361" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-306" value="0xff" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-306" value="0xff" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.6599999999999" y="1361" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.2699999999998" y="1361" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-307" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-307" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1279.66" y="1340" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.27" y="1340" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-308" value="&lt;div style=&quot;background-color: rgb(31, 31, 31); line-height: 19px;&quot;&gt;&lt;font face=&quot;Droid Sans Mono, monospace, monospace&quot; color=&quot;#dcdcaa&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;GobotRPC_CI_heartBeatTaskFn&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-308" value="&lt;div style=&quot;background-color: rgb(31, 31, 31); line-height: 19px;&quot;&gt;&lt;font face=&quot;Droid Sans Mono, monospace, monospace&quot; color=&quot;#dcdcaa&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;GobotRPC_CI_heartBeatTaskFn&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="2330" y="950" width="280" height="40" as="geometry" /> <mxGeometry x="2330" y="950" width="280" height="40" as="geometry" />
@@ -927,16 +930,16 @@
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-311" value="Print Text" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-311" value="Print Text" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1199.49" y="1401" width="80" height="21" as="geometry" /> <mxGeometry x="1120.1" y="1401" width="80" height="21" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-312" value="0xfe" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-312" value="0xfe" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.9999999999998" y="1401" width="79.66" height="20" as="geometry" /> <mxGeometry x="1200.6099999999997" y="1401" width="79.66" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-313" value="Text" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-313" value="Text" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1359.3200000000002" y="1401" width="238.04" height="20" as="geometry" /> <mxGeometry x="1360.3" y="1402" width="440.31" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-314" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-314" value="0-255" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1358.3400000000001" y="1381" width="240" height="20" as="geometry" /> <mxGeometry x="1359.32" y="1382" width="441.29" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-316" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1" target="weFQkCekfF49Ojb9-c9R-315"> <mxCell id="weFQkCekfF49Ojb9-c9R-316" value="" style="endArrow=none;dashed=1;html=1;rounded=0;strokeWidth=3;" edge="1" parent="1" target="weFQkCekfF49Ojb9-c9R-315">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
@@ -950,6 +953,149 @@
<mxCell id="weFQkCekfF49Ojb9-c9R-317" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;align=center;fillColor=#2D9C5E;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.check" vertex="1" parent="1"> <mxCell id="weFQkCekfF49Ojb9-c9R-317" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;align=center;fillColor=#2D9C5E;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.check" vertex="1" parent="1">
<mxGeometry x="1700.28" y="760" width="40" height="32" as="geometry" /> <mxGeometry x="1700.28" y="760" width="40" height="32" as="geometry" />
</mxCell> </mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-318" value="Addr" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1362.84" y="1201" width="79.66" height="21" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-319" value="Addr" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1362.84" y="1238.5" width="79.66" height="21" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-320" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1362.2599999999998" y="1221" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-321" value="4" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1359.3199999999997" y="1182" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-322" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.6999999999998" y="1140" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-323" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1201" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-324" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1239" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-325" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1281" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-326" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1281.8899999999999" y="1320" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-327" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1280.32" y="1361.5" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-328" value="size" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1279.9299999999998" y="1401" width="80.95" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-329" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1283.18" y="1301" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-330" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1282.6000000000001" y="1261" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-331" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1281.5900000000001" y="1219" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-332" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1282.3000000000002" y="1180" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-333" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1283.1800000000003" y="1341" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-334" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.2700000000002" y="1381" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-335" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1201.5800000000002" y="1381" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-336" value="Counted to sizes" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1200" y="1100" width="600.61" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-337" value="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="1280.2699999999998" y="1121" width="79.66" height="20" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-345" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-338" target="weFQkCekfF49Ojb9-c9R-344">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-338" value="Full Buffer Queue" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.azure.queue_generic;flipH=1;" vertex="1" parent="1">
<mxGeometry x="1382.84" y="1680" width="183.33" height="55" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-366" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.51;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-339" target="weFQkCekfF49Ojb9-c9R-365">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-339" value="Empty Buffer Queue" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.azure.queue_generic" vertex="1" parent="1">
<mxGeometry x="1390" y="1830" width="183.33" height="55" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-341" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1360" y="1920" as="sourcePoint" />
<mxPoint x="1361.03" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-342" value="ISR" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1090" y="1650" width="270" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-353" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.93;entryY=0.058;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-344" target="weFQkCekfF49Ojb9-c9R-361">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1250" y="1707.4166666666667" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-344" value="InputBuffer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1269.61" y="1692.5" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-349" value="Core0" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1038.15" y="1610" width="722" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-361" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1215" y="1700" width="15" height="160" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-362" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-361" target="weFQkCekfF49Ojb9-c9R-339">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1230" y="1870" as="sourcePoint" />
<mxPoint x="1280" y="1820" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-363" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1621.17" y="1920" as="sourcePoint" />
<mxPoint x="1622.2" y="1640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-364" value="RX Processing" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="1619.98" y="1650" width="171" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-365" value="InputBuffer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1650.28" y="1842.5" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-367" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1730.28" y="1700" width="19.72" height="174" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-368" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.018;entryY=0.488;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-367" target="weFQkCekfF49Ojb9-c9R-338">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1660" y="1770" as="sourcePoint" />
<mxPoint x="1710" y="1720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-369" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1030" y="1600" as="sourcePoint" />
<mxPoint x="2030" y="1600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-370" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="2030" y="1930" as="sourcePoint" />
<mxPoint x="2030" y="1600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-371" value="&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: &amp;quot;Droid Sans Mono&amp;quot;, &amp;quot;monospace&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;cb_rxData&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1800" y="1760" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="weFQkCekfF49Ojb9-c9R-373" value="" style="endArrow=classic;html=1;rounded=0;entryX=-0.009;entryY=0.431;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.935;exitY=0.449;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="weFQkCekfF49Ojb9-c9R-367" target="weFQkCekfF49Ojb9-c9R-371">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1750" y="1790" as="sourcePoint" />
<mxPoint x="1800" y="1740" as="targetPoint" />
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@@ -1,8 +1,9 @@
add_library(GobotRPC STATIC add_library(GobotRPC STATIC
${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/base.cpp ${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/base.cpp
${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/hardware_rp2040_uart.cpp ${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/uart_rp2040/hardware_rp2040_uart.cpp
${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/hardware_base.cpp ${CMAKE_CURRENT_LIST_DIR}/../ctrl_interface/uart_rp2040/rx.cpp
${CMAKE_CURRENT_LIST_DIR}/../crc16.cpp ${CMAKE_CURRENT_LIST_DIR}/../crc16.cpp
${CMAKE_CURRENT_LIST_DIR}/../protocol_base.cpp
) )
target_include_directories(GobotRPC PUBLIC target_include_directories(GobotRPC PUBLIC

View File

@@ -21,10 +21,12 @@ void GobotRPC_CI_rxData_cb(void * args, char *data, size_t len) {
void GobotRPC_CI::onRxData(char *data, size_t len) { void GobotRPC_CI::onRxData(char *data, size_t len) {
GobotRPC_CI_CMD cmd = (GobotRPC_CI_CMD)data[0]; GobotRPC_CI_CMD cmd = (GobotRPC_CI_CMD)data[0];
switch (cmd) { switch (cmd) {
case TX_CI_PACKET: case TX_CI_PACKET:
if(this->cb_TxPacket != NULL) { if(this->cb_TxPacket != NULL) {
this->cb_TxPacket(this->cb_TxPacket_args, data+1, len-1); uint32_t addr = (data[2] << 24) | (data[3] << 16) | (data[4] << 8) | data[5];
this->cb_TxPacket(this->cb_TxPacket_args, data+6, len-6, addr);
} }
break; break;
default: default:
@@ -37,10 +39,16 @@ void GobotRPC_CI::registerCB_TxPacket(callback_TxPacket cb, void *args) {
this->cb_TxPacket_args = args; this->cb_TxPacket_args = args;
} }
void GobotRPC_CI::send_RxPacket(char *data, size_t len) { void GobotRPC_CI::send_RxPacket(char *data, size_t len, uint32_t addr) {
data[0] = RX_CI_PACKET; data[0] = RX_CI_PACKET;
data[1] = len + CI_RX_PACKAGE_DATA_OFFSET;
this->hardware->send(data, len+1); data[2] = (addr >> 24) & 0xff;
data[3] = (addr >> 16) & 0xff;
data[4] = (addr >> 8) & 0xff;
data[5] = addr & 0xff;
this->hardware->send(data, len+6);
} }
// Heartbeat Task // Heartbeat Task
@@ -51,9 +59,9 @@ void GobotRPC_CI_heartBeatTaskFn(void *args) {
} }
void GobotRPC_CI::heartBeartTaskFn() { void GobotRPC_CI::heartBeartTaskFn() {
char heartBeatPacket[] = {0xff}; char heartBeatPacket[] = {0xff, 0x02};
while(1) { while(1) {
this->hardware->send(heartBeatPacket, 1); this->hardware->send(heartBeatPacket, 2);
vTaskDelay(GOBOTRPC_HEARTBEAT_INTERVAL / portTICK_PERIOD_MS); vTaskDelay(GOBOTRPC_HEARTBEAT_INTERVAL / portTICK_PERIOD_MS);
} }
} }

View File

@@ -1,2 +0,0 @@
#include "ctrl_interface_hardware.hpp"

View File

@@ -1,107 +0,0 @@
#include "ctrl_interface_hardware.hpp"
#include "pinConfig.hpp"
#include "pico/stdlib.h"
#include "hardware/uart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include <string.h>
// Initialize stuff
GobotRPC_CI_Hardware_RP2040_UART * g_GobotRPC_CI_Hardware_RP2040_UART;
GobotRPC_CI_Hardware_RP2040_UART::GobotRPC_CI_Hardware_RP2040_UART(uart_inst_t *uart, uint baudrate) {
g_GobotRPC_CI_Hardware_RP2040_UART = this;
emptyInputBuffersQueue = xQueueCreate(NUM_INPUT_BUFFERS, sizeof(inputBuffers_t *));
filledInputBuffersQueue = xQueueCreate(NUM_INPUT_BUFFERS, sizeof(inputBuffers_t *));
for(int i = 0; i < NUM_INPUT_BUFFERS; i++) {
inputBuffers_t * p = &inputBufferPool[i];
memset(p->data, 0xff, 256);
p->len = 0;
xQueueSend(emptyInputBuffersQueue, &p, portMAX_DELAY);
}
txMutex = xSemaphoreCreateMutex();
this->uart = uart;
uart_init(this->uart, baudrate);
gpio_set_function(GOBOTRPC_CI_UART_RX, UART_FUNCSEL_NUM(uart, GOBOTRPC_CI_UART_RX));
gpio_set_function(GOBOTRPC_CI_UART_TX, UART_FUNCSEL_NUM(uart, GOBOTRPC_CI_UART_TX));
uart_set_hw_flow(uart, false, false);
uart_set_format(uart, 8, 1, UART_PARITY_NONE);
uart_set_baudrate(uart, baudrate);
uart_set_fifo_enabled(uart, true);
int UART_IRQ = uart == uart0 ? UART0_IRQ : UART1_IRQ;
irq_set_exclusive_handler(UART_IRQ, GobotRPC_CI_Hardware_RP2040_UART_isr);
irq_set_enabled(UART_IRQ, true);
uart_set_irq_enables(uart, true, false);
xTaskCreate(GobotRPC_CI_Hardware_RP2040_UART_RXTaskFn, "UART RX Task", 2048, this, 4, &this->rxTaskHandle);
}
void GobotRPC_CI_Hardware_RP2040_UART::registerCB_RxData(callback_rxData cb, void *args) {
this->cb_rxData = cb;
this->cb_rxData_args = args;
}
// Sending data
void GobotRPC_CI_Hardware_RP2040_UART::send(char *data, size_t len) {
xSemaphoreTake(txMutex, portMAX_DELAY);
uart_write_blocking(this->uart, (uint8_t *)(data), len);
xSemaphoreGive(txMutex);
}
// Rx ISR
void GobotRPC_CI_Hardware_RP2040_UART_isr() {
GobotRPC_CI_Hardware_RP2040_UART *uart = (GobotRPC_CI_Hardware_RP2040_UART *)g_GobotRPC_CI_Hardware_RP2040_UART;
uart->rxISR();
};
void GobotRPC_CI_Hardware_RP2040_UART::rxISR() {
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
inputBuffers_t * inputBuffer;
xQueueReceiveFromISR(emptyInputBuffersQueue, &inputBuffer, &xHigherPriorityTaskWoken);
int i;
for(i = 0; uart_is_readable(this->uart) && i < 256; i++) {
volatile uint8_t c = uart_getc(this->uart);
inputBuffer->data[i] = c;
}
inputBuffer->len = i;
xQueueSendFromISR(filledInputBuffersQueue, &inputBuffer, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
// Rx Task
void GobotRPC_CI_Hardware_RP2040_UART_RXTaskFn(void *args) {
GobotRPC_CI_Hardware_RP2040_UART *uart = (GobotRPC_CI_Hardware_RP2040_UART *)args;
uart->rxTask();
};
void GobotRPC_CI_Hardware_RP2040_UART::rxTask() {
inputBuffers_t * inputBuffer;
while (1) {
xQueueReceive(filledInputBuffersQueue, &inputBuffer, portMAX_DELAY);
if(inputBuffer->len > 0) {
cb_rxData(cb_rxData_args, inputBuffer->data, inputBuffer->len);
}
xQueueSend(emptyInputBuffersQueue, &inputBuffer, portMAX_DELAY);
}
}

View File

@@ -0,0 +1,53 @@
#include "ctrl_interface_hardware.hpp"
#include "pinConfig.hpp"
#include "pico/stdlib.h"
#include "hardware/uart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include <string.h>
// Initialize stuff
GobotRPC_CI_Hardware_RP2040_UART * g_GobotRPC_CI_Hardware_RP2040_UART;
GobotRPC_CI_Hardware_RP2040_UART::GobotRPC_CI_Hardware_RP2040_UART(uart_inst_t *uart, uint baudrate) {
g_GobotRPC_CI_Hardware_RP2040_UART = this;
initRxTaskAndQueues();
txMutex = xSemaphoreCreateMutex();
this->uart = uart;
uart_init(this->uart, baudrate);
gpio_set_function(GOBOTRPC_CI_UART_RX, UART_FUNCSEL_NUM(uart, GOBOTRPC_CI_UART_RX));
gpio_set_function(GOBOTRPC_CI_UART_TX, UART_FUNCSEL_NUM(uart, GOBOTRPC_CI_UART_TX));
uart_set_hw_flow(uart, false, false);
uart_set_format(uart, 8, 1, UART_PARITY_NONE);
uart_set_baudrate(uart, baudrate);
uart_set_fifo_enabled(uart, true);
int UART_IRQ = uart == uart0 ? UART0_IRQ : UART1_IRQ;
irq_set_exclusive_handler(UART_IRQ, GobotRPC_CI_Hardware_RP2040_UART_isr);
irq_set_enabled(UART_IRQ, true);
uart_set_irq_enables(uart, true, false);
}
void GobotRPC_CI_Hardware_RP2040_UART::registerCB_RxData(callback_rxData cb, void *args) {
this->cb_rxData = cb;
this->cb_rxData_args = args;
}
// Sending data
void GobotRPC_CI_Hardware_RP2040_UART::send(char *data, size_t len) {
xSemaphoreTake(txMutex, portMAX_DELAY);
uart_write_blocking(this->uart, (uint8_t *)(data), len);
uart_tx_wait_blocking(this->uart);
xSemaphoreGive(txMutex);
}

View File

@@ -0,0 +1,120 @@
#include "ctrl_interface_hardware.hpp"
#include "pico/stdlib.h"
#include <string.h>
#include "FreeRTOS.h"
#include "FreeRTOSConfig.h"
// External Functions
void GobotRPC_CI_Hardware_RP2040_UART_isr() {
GobotRPC_CI_Hardware_RP2040_UART *uart = (GobotRPC_CI_Hardware_RP2040_UART *)g_GobotRPC_CI_Hardware_RP2040_UART;
uart->onRx_ISR();
};
void GobotRPC_CI_Hardware_RP2040_UART_Task_RXProcessing(void *args) {
GobotRPC_CI_Hardware_RP2040_UART *uart = (GobotRPC_CI_Hardware_RP2040_UART *)args;
uart->rxProcessingTaskFn();
}
// Init
void GobotRPC_CI_Hardware_RP2040_UART::initRxTaskAndQueues() {
emptyInputBuffersQueue = xQueueCreate(NUM_INPUT_BUFFERS, sizeof(inputBuffers_t *));
filledInputBuffersQueue = xQueueCreate(NUM_INPUT_BUFFERS, sizeof(inputBuffers_t *));
for(int i = 0; i < NUM_INPUT_BUFFERS; i++) {
inputBuffers_t * p = &inputBufferPool[i];
memset(p->data, 0xff, 256);
p->len = 0;
p->state = NEW;
p->expected_length = 0;
xQueueSend(emptyInputBuffersQueue, &p, portMAX_DELAY);
}
rxSignalSemaphore = xSemaphoreCreateBinary();
xTaskCreate(GobotRPC_CI_Hardware_RP2040_UART_Task_RXProcessing, "UART RX Processing", 1024, this, 3, &this->rxProcessingTaskHandle);
}
inputBufferRXState_t fillBuffer(inputBuffers_t * buffer, char data) {
switch(buffer->state) {
case NEW:
buffer->data[0] = data;
buffer->len = 1;
buffer->state = READ_SIZE;
break;
case READ_SIZE:
buffer->data[1] = data;
buffer->expected_length = data;
buffer->len += 1;
if(buffer->len == buffer->expected_length) {
buffer->state = FULL;
} else {
buffer->state = READ_DATA;
}
break;
case READ_DATA:
buffer->data[buffer->len] = data;
buffer->len += 1;
if(buffer->len == buffer->expected_length) {
buffer->state = FULL;
} else {
buffer->state = READ_DATA;
}
break;
case FULL:
break;
}
return buffer->state;
}
// real Task Fns
void GobotRPC_CI_Hardware_RP2040_UART::onRx_ISR() {
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
static inputBuffers_t * inputBuffer = NULL;
while (uart_is_readable(this->uart)) {
if(inputBuffer == NULL) {
xQueueReceiveFromISR(emptyInputBuffersQueue, &inputBuffer, &xHigherPriorityTaskWoken);
if(inputBuffer == NULL) {
return; // No more buffers -> device overload
}
inputBuffer->state = NEW;
inputBuffer->len = 0;
inputBuffer->expected_length = 0;
}
inputBufferRXState_t state = fillBuffer(inputBuffer, uart_getc(this->uart));
if (state == FULL) {
xQueueSendFromISR(filledInputBuffersQueue, &inputBuffer, &xHigherPriorityTaskWoken);
inputBuffer = NULL;
}
}
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
void GobotRPC_CI_Hardware_RP2040_UART::rxProcessingTaskFn() {
inputBuffers_t * inputBuffer = NULL;
while(1) {
xQueueReceive(filledInputBuffersQueue, &inputBuffer, portMAX_DELAY);
if(this->cb_rxData != NULL) {
this->cb_rxData(this->cb_rxData_args, inputBuffer->data, inputBuffer->len);
}
vTaskDelay(1000);
}
}

View File

@@ -9,7 +9,13 @@ enum GobotRPC_CI_CMD {
SCAN_RESULT_CI_PACKET = 0x04, SCAN_RESULT_CI_PACKET = 0x04,
}; };
typedef void (*callback_TxPacket)(void * args, char *data, size_t len); #define CI_TX_PACKAGE_DATA_OFFSET 6
#define CI_TX_PACKAGE_SIZE(data_len) (data_len + CI_TX_PACKAGE_SIZE)
#define CI_RX_PACKAGE_DATA_OFFSET 6
#define CI_RX_PACKAGE_SIZE(data_len) (data_len + CI_RX_PACKAGE_DATA_OFFSET)
typedef void (*callback_TxPacket)(void * args, char *data, size_t len, uint32_t addr);
void GobotRPC_CI_rxData_cb(void * args, char *data, size_t len); void GobotRPC_CI_rxData_cb(void * args, char *data, size_t len);
void GobotRPC_CI_heartBeatTaskFn(void *args); void GobotRPC_CI_heartBeatTaskFn(void *args);
@@ -26,7 +32,7 @@ public:
GobotRPC_CI(I_GobotRPC_CI_Hardware *hardware); GobotRPC_CI(I_GobotRPC_CI_Hardware *hardware);
void registerCB_TxPacket(callback_TxPacket cb, void *args); void registerCB_TxPacket(callback_TxPacket cb, void *args);
void send_RxPacket(char *data, size_t len); void send_RxPacket(char *data, size_t len, uint32_t addr);
void onRxData(char *data, size_t len); void onRxData(char *data, size_t len);

View File

@@ -19,13 +19,23 @@ public:
#include "hardware/uart.h" #include "hardware/uart.h"
void GobotRPC_CI_Hardware_RP2040_UART_isr(); void GobotRPC_CI_Hardware_RP2040_UART_isr();
void GobotRPC_CI_Hardware_RP2040_UART_RXTaskFn(void *args); void GobotRPC_CI_Hardware_RP2040_UART_Task_RXBuffering(void *args);
void GobotRPC_CI_Hardware_RP2040_UART_Task_RXProcessing(void *args);
#define NUM_INPUT_BUFFERS 16 #define NUM_INPUT_BUFFERS 16
enum inputBufferRXState_t {
NEW,
READ_SIZE,
READ_DATA,
FULL
};
struct inputBuffers_t { struct inputBuffers_t {
char data[256]; char data[256];
size_t expected_length;
size_t len; size_t len;
inputBufferRXState_t state;
}; };
class GobotRPC_CI_Hardware_RP2040_UART : public I_GobotRPC_CI_Hardware { class GobotRPC_CI_Hardware_RP2040_UART : public I_GobotRPC_CI_Hardware {
@@ -34,22 +44,28 @@ private:
inputBuffers_t inputBufferPool[NUM_INPUT_BUFFERS]; inputBuffers_t inputBufferPool[NUM_INPUT_BUFFERS];
TaskHandle_t rxTaskHandle; TaskHandle_t rxProcessingTaskHandle;
SemaphoreHandle_t txMutex;
SemaphoreHandle_t rxSignalSemaphore;
QueueHandle_t emptyInputBuffersQueue; QueueHandle_t emptyInputBuffersQueue;
QueueHandle_t filledInputBuffersQueue; QueueHandle_t filledInputBuffersQueue;
callback_rxData cb_rxData; callback_rxData cb_rxData;
void * cb_rxData_args; void * cb_rxData_args;
SemaphoreHandle_t txMutex;
public: public:
GobotRPC_CI_Hardware_RP2040_UART(uart_inst_t *uart, uint baudrate); GobotRPC_CI_Hardware_RP2040_UART(uart_inst_t *uart, uint baudrate);
void send(char *data, size_t len) override; void send(char *data, size_t len) override;
void registerCB_RxData(callback_rxData cb, void *args); void registerCB_RxData(callback_rxData cb, void *args);
void rxISR(); void initRxTaskAndQueues();
void rxTask(); void onRx_ISR();
void rxBufferingTaskFn();
void rxProcessingTaskFn();
}; };
extern GobotRPC_CI_Hardware_RP2040_UART * g_GobotRPC_CI_Hardware_RP2040_UART; extern GobotRPC_CI_Hardware_RP2040_UART * g_GobotRPC_CI_Hardware_RP2040_UART;

View File

@@ -0,0 +1,28 @@
#pragma once
#include <stdint.h>
#include <strings.h>
enum GobotRPCNumber {
VACUM = 0x8
};
enum GobotRPCTypes {
REQUEST = 0b00,
RESPONSE = 0b01,
ERROR = 0b10
};
#define GobotRPC_Package_DATA_OFFSET 2
#define CALC_SIZE_GobotRPC_PACKAGE(data_len) (data_len + GobotRPC_Package_DATA_OFFSET + 2)
struct GobotRPCHeaderInfo {
public:
GobotRPCNumber number;
GobotRPCTypes type;
size_t len;
};
void assembleGobotRPCHeader(char * buffer, GobotRPCNumber number, GobotRPCTypes data_size, size_t);
void assembleCRC(char * buffer, size_t data_len);
GobotRPCHeaderInfo extractGobotRPCHeader(char * buffer);

View File

@@ -0,0 +1,25 @@
#include "protocol.hpp"
#include <stdint.h>
#include "pico/stdlib.h"
#include "crc16.hpp"
void assembleGobotRPCHeader(char * buffer, GobotRPCNumber number, GobotRPCTypes type, size_t len) {
buffer[0] = ((number & 0b1111) << 4) | ((type & 0b11) << 2);
buffer[1] = (len + 4) & 0xff;
}
GobotRPCHeaderInfo extractGobotRPCHeader(char * buffer) {
GobotRPCHeaderInfo info;
info.number = (GobotRPCNumber)((buffer[0] >> 4) & 0b1111);
info.type = (GobotRPCTypes)((buffer[0] >> 2) & 0b11);
info.len = buffer[1];
return info;
}
void assembleCRC(char * buffer, size_t data_len) {
unsigned short crc = crc16(buffer, data_len + GobotRPC_Package_DATA_OFFSET);
buffer[GobotRPC_Package_DATA_OFFSET + data_len + 1] = crc & 0xff;
buffer[GobotRPC_Package_DATA_OFFSET + data_len + 0] = (crc >> 8) & 0xff;
}

View File

@@ -8,7 +8,7 @@
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "task.h" #include "task.h"
#include "crc16.hpp" #include "protocol.hpp"
#define LED_PIN 25 #define LED_PIN 25
@@ -21,16 +21,16 @@ void vTaskMain(void * pvParameters) {
} }
} }
void onTxPacket(void * args, char *data, size_t len) { void onTxPacket(void * args, char *data, size_t len, uint32_t addr) {
GobotRPC_CI * gobotRPC_ci = (GobotRPC_CI *)args; GobotRPC_CI * gobotRPC_ci = (GobotRPC_CI *)args;
char buffer[] = {0x00, 0x74, 0x04, 0x00, 0x00}; char bufferPackage[CI_RX_PACKAGE_SIZE(CALC_SIZE_GobotRPC_PACKAGE(0))];
unsigned short crc = crc16(buffer + 1, 2); char * gorpcPackageOffset = bufferPackage + CI_RX_PACKAGE_DATA_OFFSET;
buffer[4] = crc & 0xff; assembleGobotRPCHeader(gorpcPackageOffset, GobotRPCNumber::VACUM, GobotRPCTypes::RESPONSE, 0);
buffer[3] = (crc >> 8) & 0xff; assembleCRC(gorpcPackageOffset, 0);
gobotRPC_ci->send_RxPacket(buffer, 4); gobotRPC_ci->send_RxPacket(bufferPackage, CALC_SIZE_GobotRPC_PACKAGE(0), addr);
} }
int main() { int main() {

Binary file not shown.

BIN
i2c-hub/uart-adapter/src/gobotrpc/util.py (Stored with Git LFS)

Binary file not shown.

BIN
i2c-hub/uart-adapter/src/main.py (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

Binary file not shown.