Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / node / _main.svg @ 64fde4ba

History | View | Annotate | Download (34.886 KB)

1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1693px" preserveAspectRatio="none" style="width:828px;height:1693px;" version="1.1" viewBox="0 0 828 1693" width="828px" zoomAndPan="magnify"><defs><filter height="300%" id="f1p8hd1hubp91s" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="368.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="66" x="380" y="47.6611">_main()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="416" y="68.6143"/><path d="M220.75,72.8594 L220.75,153.3906 L762.75,153.3906 L762.75,82.8594 L752.75,72.8594 L220.75,72.8594 " fill="#FBFB77" filter="url(#f1p8hd1hubp91s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M752.75,72.8594 L752.75,82.8594 L762.75,82.8594 L752.75,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220.75" x2="452.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="456.75" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="456.75" y="89.4263">arg</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="485.75" y="89.4263">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="530.75" x2="762.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="332" x="226.75" y="105.0591">Optional Argument to the thread main function (see</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="176" x="562.75" y="105.0591">urt_osThreadFunction_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="9" x="738.75" y="105.0591">).</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="226.75" y="120.1919">This function expects</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="364.75" y="120.1919">arg</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="392.75" y="120.1919">to be of type</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="477.75" y="120.1919">urt_node_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="565.75" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="220.75" x2="762.75" y1="128.2578" y2="128.2578"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220.75" x2="762.75" y1="130.2578" y2="130.2578"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="220.75" x2="446.25" y1="140.8242" y2="140.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="450.25" y="144.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="450.25" y="144.8247">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="34" x="499.25" y="144.8247">: void</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="537.25" x2="762.75" y1="140.8242" y2="140.8242"/><ellipse cx="491.75" cy="183.3906" fill="#000000" filter="url(#f1p8hd1hubp91s)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FFFFFF" filter="url(#f1p8hd1hubp91s)" height="600.9141" style="stroke: #000000; stroke-width: 2.0;" width="807" x="10" y="204.1924"/><path d="M60,205.1924 L60,213.4893 L50,223.4893 L10,223.4893 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="40" x="13" y="218.1875">setup</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="413.25" y="240.4893"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="137" x="423.25" y="261.6279">register to core event</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="403.75,294.458,579.75,294.458,591.75,306.458,579.75,318.458,403.75,318.458,391.75,306.458,403.75,294.458" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="403.75" y="310.2661">Node's</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="91" x="446.75" y="310.2661">setupcallback</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="541.75" y="310.2661">is set?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="371.75" y="303.8638">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="591.75" y="303.8638">no</text><path d="M30,332.876 L30,358.0088 A0,0 0 0 0 30,358.0088 L201,358.0088 A0,0 0 0 0 201,358.0088 L201,350.876 L221,345.4424 L201,342.876 L201,342.876 L191,332.876 L30,332.876 A0,0 0 0 0 30,332.876 " fill="#FBFB77" filter="url(#f1p8hd1hubp91s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M191,332.876 L191,342.876 L201,342.876 L191,332.876 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="36" y="349.9429">Callback must not loop.</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="221" y="328.458"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="231" y="349.5967">execute</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="105" x="285" y="349.5967">setupcallback()</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="367" x="127" y="430.8291"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="137" y="451.9678">call</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="322" x="162" y="451.9678">urtCoreStopNodes(URT_STATUS_NODE_INVALEVTMASK)</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="124,382.4268,497,382.4268,509,394.4268,497,406.4268,124,406.4268,112,394.4268,124,382.4268" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="314.5" y="416.6372">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="124" y="398.2349">Event mask returned by</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="105" x="264" y="398.2349">setupcallback()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="373" y="398.2349">redefines core event?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="509" y="391.8325">no</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="310.5,484.7979,322.5,496.7979,310.5,508.7979,298.5,496.7979,310.5,484.7979" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="264" x="541" y="328.458"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="551" y="349.5967">act as if</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="605" y="349.5967">setupcallback</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="700" y="349.5967">returned 0xF..F</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="491.75,514.7979,503.75,526.7979,491.75,538.7979,479.75,526.7979,491.75,514.7979" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="362.75" y="607.2002"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="238" x="372.75" y="628.3389">suspend all child threads (recursively)</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="341" x="321.25" y="661.1689"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="331.25" y="682.3076">synchronize by calling</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="182" x="470.25" y="682.3076">urtCoreSynchronizeNodes(1)</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="366.25" y="715.1377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="231" x="376.25" y="736.2764">resume all child threads (recursively)</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="400.75,558.7979,582.75,558.7979,594.75,570.7979,582.75,582.7979,400.75,582.7979,388.75,570.7979,400.75,558.7979" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="495.75" y="593.0083">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="81" x="400.75" y="574.606">Core status is</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="91" x="485.75" y="574.606">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="576.75" y="574.606">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="594.75" y="568.2036">no</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="491.75,769.1064,503.75,781.1064,491.75,793.1064,479.75,781.1064,491.75,769.1064" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FFFFFF" filter="url(#f1p8hd1hubp91s)" height="531.2222" style="stroke: #000000; stroke-width: 2.0;" width="606" x="170.75" y="815.9082"/><path d="M210.75,816.9082 L210.75,825.2051 L200.75,835.2051 L170.75,835.2051 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="173.75" y="829.9033">loop</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="240" x="371.75" y="907.9155"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="220" x="381.75" y="929.0542">Wait for a specified or a core event</text><path d="M214.75,1014.7046 L214.75,1039.8374 A0,0 0 0 0 214.75,1039.8374 L385.75,1039.8374 A0,0 0 0 0 385.75,1039.8374 L385.75,1032.7046 L405.75,1027.271 L385.75,1024.7046 L385.75,1024.7046 L375.75,1014.7046 L214.75,1014.7046 A0,0 0 0 0 214.75,1014.7046 " fill="#FBFB77" filter="url(#f1p8hd1hubp91s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M375.75,1014.7046 L375.75,1024.7046 L385.75,1024.7046 L375.75,1014.7046 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="150" x="220.75" y="1031.7715">Callback must not loop.</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="405.75" y="1010.2866"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="415.75" y="1031.4253">execute</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="469.75" y="1031.4253">loopcallback()</text><rect fill="#EEEEEE" filter="url(#f1p8hd1hubp91s)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="464" x="259.75" y="1064.2554"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="259.75" x2="269.75" y1="1081.2397" y2="1081.2397"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="444" x="269.75" y="1084.894">URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="713.75" x2="723.75" y1="1081.2397" y2="1081.2397"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="269.75" y="1099.3628">increment loop counter</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="367" x="308.25" y="1191.1616"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="318.25" y="1212.3003">call</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="322" x="343.25" y="1212.3003">urtCoreStopNodes(URT_STATUS_NODE_INVALEVTMASK)</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="308.75,1142.7593,674.75,1142.7593,686.75,1154.7593,674.75,1166.7593,308.75,1166.7593,296.75,1154.7593,308.75,1142.7593" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="495.75" y="1176.9697">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="308.75" y="1158.5674">Event mask returned by</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="448.75" y="1158.5674">loopcallback()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="550.75" y="1158.5674">redefines core event?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="686.75" y="1152.165">no</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="491.75,1245.1304,503.75,1257.1304,491.75,1269.1304,479.75,1257.1304,491.75,1245.1304" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="431.75,961.8843,551.75,961.8843,563.75,973.8843,551.75,985.8843,431.75,985.8843,419.75,973.8843,431.75,961.8843" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="495.75" y="996.0947">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="431.75" y="977.6924">Core event received?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="563.75" y="971.29">yes</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="491.75,1289.1304,503.75,1301.1304,491.75,1313.1304,479.75,1301.1304,491.75,1289.1304" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="379.75,852.2051,603.75,852.2051,615.75,864.2051,603.75,876.2051,379.75,876.2051,367.75,864.2051,379.75,852.2051" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="495.75" y="886.4155">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="224" x="379.75" y="868.0132">Termination of node thread requested?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="347.75" y="861.6108">yes</text><rect fill="#FFFFFF" filter="url(#f1p8hd1hubp91s)" height="282.6055" style="stroke: #000000; stroke-width: 2.0;" width="653" x="70.25" y="1357.9321"/><path d="M117.25,1358.9321 L117.25,1367.229 L107.25,1377.229 L70.25,1377.229 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="37" x="73.25" y="1371.9272">outro</text><path d="M90.25,1447.0493 L90.25,1472.1821 A0,0 0 0 0 90.25,1472.1821 L272.25,1472.1821 A0,0 0 0 0 272.25,1472.1821 L272.25,1465.0493 L292.25,1459.6157 L272.25,1457.0493 L272.25,1457.0493 L262.25,1447.0493 L90.25,1447.0493 A0,0 0 0 0 90.25,1447.0493 " fill="#FBFB77" filter="url(#f1p8hd1hubp91s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M262.25,1447.0493 L262.25,1457.0493 L272.25,1457.0493 L262.25,1447.0493 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="96.25" y="1464.1162">Callback must terminate.</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="399" x="292.25" y="1442.6313"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="302.25" y="1463.77">execute</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="356.25" y="1463.77">shutdowncallback()</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="195" x="486.25" y="1463.77">with core's status as argument</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="393.25,1394.229,590.25,1394.229,602.25,1406.229,590.25,1418.229,393.25,1418.229,381.25,1406.229,393.25,1394.229" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="495.75" y="1428.4395">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="393.25" y="1410.0371">Node's</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="436.25" y="1410.0371">shutdowncallback</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="38" x="552.25" y="1410.0371">is set?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="602.25" y="1403.6348">no</text><polygon fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" points="491.75,1496.6001,503.75,1508.6001,491.75,1520.6001,479.75,1508.6001,491.75,1496.6001" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="397.75" y="1540.6001"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="168" x="407.75" y="1561.7388">unregister from core event</text><rect fill="#FEFECE" filter="url(#f1p8hd1hubp91s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="305" x="339.25" y="1594.5688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="285" x="349.25" y="1615.7075">terminate node thread (and all child threads)</text><ellipse cx="491.75" cy="1671.5376" fill="#FFFFFF" filter="url(#f1p8hd1hubp91s)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="491.75" cy="1671.5376" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="153.3906" y2="173.3906"/><polygon fill="#A80036" points="487.75,163.3906,491.75,173.3906,495.75,163.3906,491.75,167.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="310.5" y1="406.4268" y2="430.8291"/><polygon fill="#A80036" points="306.5,420.8291,310.5,430.8291,314.5,420.8291,310.5,424.8291" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="509" x2="521" y1="394.4268" y2="394.4268"/><polygon fill="#A80036" points="517,437.8135,521,447.8135,525,437.8135,521,441.8135" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="521" x2="521" y1="394.4268" y2="496.7979"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="521" x2="322.5" y1="496.7979" y2="496.7979"/><polygon fill="#A80036" points="332.5,492.7979,322.5,496.7979,332.5,500.7979,328.5,496.7979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="310.5" y1="464.7979" y2="484.7979"/><polygon fill="#A80036" points="306.5,474.7979,310.5,484.7979,314.5,474.7979,310.5,478.7979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="310.5" y1="362.4268" y2="382.4268"/><polygon fill="#A80036" points="306.5,372.4268,310.5,382.4268,314.5,372.4268,310.5,376.4268" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.75" x2="310.5" y1="306.458" y2="306.458"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="310.5" y1="306.458" y2="328.458"/><polygon fill="#A80036" points="306.5,318.458,310.5,328.458,314.5,318.458,310.5,322.458" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="591.75" x2="673" y1="306.458" y2="306.458"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="673" x2="673" y1="306.458" y2="328.458"/><polygon fill="#A80036" points="669,318.458,673,328.458,677,318.458,673,322.458" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="310.5" y1="508.7979" y2="526.7979"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="310.5" x2="479.75" y1="526.7979" y2="526.7979"/><polygon fill="#A80036" points="469.75,522.7979,479.75,526.7979,469.75,530.7979,473.75,526.7979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="673" x2="673" y1="362.4268" y2="526.7979"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="673" x2="503.75" y1="526.7979" y2="526.7979"/><polygon fill="#A80036" points="513.75,522.7979,503.75,526.7979,513.75,530.7979,509.75,526.7979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="274.458" y2="294.458"/><polygon fill="#A80036" points="487.75,284.458,491.75,294.458,495.75,284.458,491.75,288.458" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="641.1689" y2="661.1689"/><polygon fill="#A80036" points="487.75,651.1689,491.75,661.1689,495.75,651.1689,491.75,655.1689" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="695.1377" y2="715.1377"/><polygon fill="#A80036" points="487.75,705.1377,491.75,715.1377,495.75,705.1377,491.75,709.1377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="582.7979" y2="607.2002"/><polygon fill="#A80036" points="487.75,597.2002,491.75,607.2002,495.75,597.2002,491.75,601.2002" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594.75" x2="672.25" y1="570.7979" y2="570.7979"/><polygon fill="#A80036" points="668.25,668.1533,672.25,678.1533,676.25,668.1533,672.25,672.1533" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="672.25" x2="672.25" y1="570.7979" y2="781.1064"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="672.25" x2="503.75" y1="781.1064" y2="781.1064"/><polygon fill="#A80036" points="513.75,777.1064,503.75,781.1064,513.75,785.1064,509.75,781.1064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="749.1064" y2="769.1064"/><polygon fill="#A80036" points="487.75,759.1064,491.75,769.1064,495.75,759.1064,491.75,763.1064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="538.7979" y2="558.7979"/><polygon fill="#A80036" points="487.75,548.7979,491.75,558.7979,495.75,548.7979,491.75,552.7979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="193.3906" y2="240.4893"/><polygon fill="#A80036" points="487.75,230.4893,491.75,240.4893,495.75,230.4893,491.75,234.4893" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1044.2554" y2="1064.2554"/><polygon fill="#A80036" points="487.75,1054.2554,491.75,1064.2554,495.75,1054.2554,491.75,1058.2554" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1166.7593" y2="1191.1616"/><polygon fill="#A80036" points="487.75,1181.1616,491.75,1191.1616,495.75,1181.1616,491.75,1185.1616" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="686.75" x2="698.75" y1="1154.7593" y2="1154.7593"/><polygon fill="#A80036" points="694.75,1198.146,698.75,1208.146,702.75,1198.146,698.75,1202.146" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="698.75" x2="698.75" y1="1154.7593" y2="1257.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="698.75" x2="503.75" y1="1257.1304" y2="1257.1304"/><polygon fill="#A80036" points="513.75,1253.1304,503.75,1257.1304,513.75,1261.1304,509.75,1257.1304" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1225.1304" y2="1245.1304"/><polygon fill="#A80036" points="487.75,1235.1304,491.75,1245.1304,495.75,1235.1304,491.75,1239.1304" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1112.1929" y2="1142.7593"/><polygon fill="#A80036" points="487.75,1132.7593,491.75,1142.7593,495.75,1132.7593,491.75,1136.7593" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="985.8843" y2="1010.2866"/><polygon fill="#A80036" points="487.75,1000.2866,491.75,1010.2866,495.75,1000.2866,491.75,1004.2866" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.75" x2="733.75" y1="973.8843" y2="973.8843"/><polygon fill="#A80036" points="729.75,1122.1929,733.75,1132.1929,737.75,1122.1929,733.75,1126.1929" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="733.75" x2="733.75" y1="973.8843" y2="1301.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="733.75" x2="503.75" y1="1301.1304" y2="1301.1304"/><polygon fill="#A80036" points="513.75,1297.1304,503.75,1301.1304,513.75,1305.1304,509.75,1301.1304" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1269.1304" y2="1289.1304"/><polygon fill="#A80036" points="487.75,1279.1304,491.75,1289.1304,495.75,1279.1304,491.75,1283.1304" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="941.8843" y2="961.8843"/><polygon fill="#A80036" points="487.75,951.8843,491.75,961.8843,495.75,951.8843,491.75,955.8843" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="876.2051" y2="907.9155"/><polygon fill="#A80036" points="487.75,897.9155,491.75,907.9155,495.75,897.9155,491.75,901.9155" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1313.1304" y2="1323.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="757.75" y1="1323.1304" y2="1323.1304"/><polygon fill="#A80036" points="753.75,1093.7397,757.75,1083.7397,761.75,1093.7397,757.75,1089.7397" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="757.75" x2="757.75" y1="864.2051" y2="1323.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="757.75" x2="615.75" y1="864.2051" y2="864.2051"/><polygon fill="#A80036" points="625.75,860.2051,615.75,864.2051,625.75,868.2051,621.75,864.2051" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="367.75" x2="192.75" y1="864.2051" y2="864.2051"/><polygon fill="#A80036" points="188.75,1079.7397,192.75,1089.7397,196.75,1079.7397,192.75,1083.7397" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="192.75" x2="192.75" y1="864.2051" y2="1335.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="192.75" x2="491.75" y1="1335.1304" y2="1335.1304"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1335.1304" y2="1394.229"/><polygon fill="#A80036" points="487.75,1384.229,491.75,1394.229,495.75,1384.229,491.75,1388.229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="793.1064" y2="852.2051"/><polygon fill="#A80036" points="487.75,842.2051,491.75,852.2051,495.75,842.2051,491.75,846.2051" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1418.229" y2="1442.6313"/><polygon fill="#A80036" points="487.75,1432.6313,491.75,1442.6313,495.75,1432.6313,491.75,1436.6313" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="602.25" x2="701.25" y1="1406.229" y2="1406.229"/><polygon fill="#A80036" points="697.25,1449.6157,701.25,1459.6157,705.25,1449.6157,701.25,1453.6157" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="701.25" x2="701.25" y1="1406.229" y2="1508.6001"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="701.25" x2="503.75" y1="1508.6001" y2="1508.6001"/><polygon fill="#A80036" points="513.75,1504.6001,503.75,1508.6001,513.75,1512.6001,509.75,1508.6001" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1476.6001" y2="1496.6001"/><polygon fill="#A80036" points="487.75,1486.6001,491.75,1496.6001,495.75,1486.6001,491.75,1490.6001" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1520.6001" y2="1540.6001"/><polygon fill="#A80036" points="487.75,1530.6001,491.75,1540.6001,495.75,1530.6001,491.75,1534.6001" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1574.5688" y2="1594.5688"/><polygon fill="#A80036" points="487.75,1584.5688,491.75,1594.5688,495.75,1584.5688,491.75,1588.5688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="491.75" x2="491.75" y1="1628.5376" y2="1660.5376"/><polygon fill="#A80036" points="487.75,1650.5376,491.75,1660.5376,495.75,1650.5376,491.75,1654.5376" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[57f7dd3258e9e32082ded56183dd3797]
2
@startuml
3

    
4
title **µRtWare**\n_main()\n
5

    
6

    
7
note
8
  - - **arg** : void* - -
9
  Optional Argument to the thread main function (see ""urt_osThreadFunction_t"").
10
  This function expects ""arg"" to be of type ""urt_node_t*"".
11
  ====
12
  - - **return** : void - -
13
endnote
14

    
15

    
16
start
17
partition "setup" {
18
  :register to core event;
19
  if (Node's ""setupcallback"" is set?) then (yes)
20
    :execute ""setupcallback()"";
21
    note
22
      Callback must not loop.
23
    endnote
24
    if (Event mask returned by ""setupcallback()"" redefines core event?) then (yes)
25
      :call ""urtCoreStopNodes(URT_STATUS_NODE_INVALEVTMASK)"";
26
    else (no)
27
    endif
28
  else (no)
29
    :act as if ""setupcallback"" returned 0xF..F;
30
  endif
31
  if (Core status is ""URT_STATUS_OK""?) then (yes)
32
    :suspend all child threads (recursively);
33
    :synchronize by calling ""urtCoreSynchronizeNodes(1)"";
34
    :resume all child threads (recursively);
35
  else (no)
36
  endif
37
}
38
partition "loop" {
39
  while (Termination of node thread requested?) is (no)
40
    :Wait for a specified or a core event;
41
    if (Core event received?) then (yes)
42
    else (no)
43
      :execute ""loopcallback()"";
44
      note
45
        Callback must not loop.
46
      endnote
47
      #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true//..\nincrement loop counter;
48
      if (Event mask returned by ""loopcallback()"" redefines core event?) then (yes)
49
        :call ""urtCoreStopNodes(URT_STATUS_NODE_INVALEVTMASK)"";
50
      else (no)
51
      endif
52
    endif
53
  endwhile (yes)
54
}
55
partition "outro" {
56
  if (Node's ""shutdowncallback"" is set?) then (yes)
57
    :execute ""shutdowncallback()"" with core's status as argument;
58
    note
59
      Callback must terminate.
60
    endnote
61
  else (no)
62
  endif
63
  :unregister from core event;
64
  :terminate node thread (and all child threads);
65
}
66
stop
67

    
68

    
69
@enduml
70

    
71
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
72
(GPL source distribution)
73
Java Runtime: OpenJDK Runtime Environment
74
JVM: OpenJDK 64-Bit Server VM
75
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
76
Operating System: Linux
77
Default Encoding: UTF-8
78
Language: en
79
Country: US
80
--></g></svg>