Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / osal.svg @ 60da7a2f

History | View | Annotate | Download (55.189 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="784px" preserveAspectRatio="none" style="width:5489px;height:784px;" version="1.1" viewBox="0 0 5489 784" width="5489px" zoomAndPan="magnify"><defs><filter height="300%" id="f8kxwd8v07sjw" 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="2707.5" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="387" x="2558.5" y="37.6611">Operating System Abstraction Layer (OSAL)</text><!--MD5=[3dab47d3fc3e186ff10f67819eb99ff8]
2
cluster time--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="121" style="stroke: #000000; stroke-width: 1.5;" width="402" x="2133" y="196.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="34" x="2317" y="211.4014">time</text><!--MD5=[48ccbfc44b1b031f9b243763d7ad5184]
3
cluster mutex--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="134" style="stroke: #000000; stroke-width: 1.5;" width="314" x="759" y="189.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="49" x="891.5" y="204.9014">mutex</text><!--MD5=[2e45f233f6bb64aa81ebe67fb6de8946]
4
cluster condition variable--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="463.5" style="stroke: #000000; stroke-width: 1.5;" width="726" x="14" y="170.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="140" x="307" y="185.4014">condition variable</text><!--MD5=[c7113df1f710ca294cbd01734aa00974]
5
cluster timer--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="438" style="stroke: #000000; stroke-width: 1.5;" width="754" x="2553" y="183.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="2909.5" y="198.4014">timer</text><!--MD5=[107bb3f79455a18bd83c75ada1ac7979]
6
cluster thread--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="608" style="stroke: #000000; stroke-width: 1.5;" width="1039" x="1081" y="57.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="1574.5" y="72.9014">thread</text><!--MD5=[8d74b40516bd265adb19f202ab81f40d]
7
cluster events--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="577.5" style="stroke: #000000; stroke-width: 1.5;" width="1642" x="3315" y="196.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="4109" y="211.4014">events</text><!--MD5=[b978ecedb6f4da3f32705dc09c84a7d6]
8
cluster streams--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="109" style="stroke: #000000; stroke-width: 1.5;" width="228" x="4965" y="202.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="64" x="5047" y="217.4014">streams</text><!--MD5=[62106fc051f244acf17caf792167c8db]
9
cluster debug--><rect fill="#FFFFFF" filter="url(#f8kxwd8v07sjw)" height="96" style="stroke: #000000; stroke-width: 1.5;" width="266" x="5212" y="208.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="50" x="5320" y="223.9014">debug</text><!--MD5=[3677786d1f00795918091b0110bfa4af]
10
class urt_osTime_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="86.4141" id="urt_osTime_t" style="stroke: #A80036; stroke-width: 1.5;" width="385" x="2141.5" y="223.4063"/><ellipse cx="2290.25" cy="239.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2291.0938,246.1563 L2288.6406,246.1563 L2288.6406,235.9063 L2285.5,235.9063 L2285.5,233.7656 L2294.2344,233.7656 L2294.2344,235.9063 L2291.0938,235.9063 L2291.0938,246.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="2310.75" y="243.5605">urt_osTime_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2142.5" x2="2525.5" y1="255.4063" y2="255.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2142.5" x2="2525.5" y1="263.4063" y2="263.4063"/><ellipse cx="2152.5" cy="274.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="231" x="2161.5" y="277.6167">urtTime2Us (t : urt_osTime_t*) : uint64_t</text><ellipse cx="2152.5" cy="287.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="189" x="2161.5" y="290.4214">urtTimeNow (void) : urt_osTime_t</text><ellipse cx="2152.5" cy="300.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="359" x="2161.5" y="303.2261">urtTimeAddUs (time : urt_osTime_t*, offset : urt_delay_t) : void</text><!--MD5=[532279a7a1cac9af7f32856ca2ae6b9b]
11
class urt_osMutex_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="99.2188" id="urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.5;" width="298" x="767" y="216.9063"/><ellipse cx="868.25" cy="232.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M869.0938,239.6563 L866.6406,239.6563 L866.6406,229.4063 L863.5,229.4063 L863.5,227.2656 L872.2344,227.2656 L872.2344,229.4063 L869.0938,229.4063 L869.0938,239.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="888.75" y="237.0605">urt_osMutex_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="248.9063" y2="248.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="256.9063" y2="256.9063"/><ellipse cx="778" cy="267.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="245" x="787" y="271.1167">urtMutexInit (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="280.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="253" x="787" y="283.9214">urtMutexLock (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="293.5156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="272" x="787" y="296.7261">urtMutexTryLock (mutex : urt_osMutex_t*) : bool</text><ellipse cx="778" cy="306.3203" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="787" y="309.5308">urtMutexUnlock (mutex : urt_osMutex_t*) : void</text><!--MD5=[52fa11869cb40c93fa7702378ddd839e]
12
class urt_osCondvarWaitStatus_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="86.4141" id="urt_osCondvarWaitStatus_t" style="stroke: #A80036; stroke-width: 1.5;" width="270" x="242" y="539.9063"/><ellipse cx="288.25" cy="555.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M292.3594,561.9063 L284.6406,561.9063 L284.6406,549.5156 L292.3594,549.5156 L292.3594,551.6719 L287.0938,551.6719 L287.0938,554.3438 L291.8594,554.3438 L291.8594,556.5 L287.0938,556.5 L287.0938,559.75 L292.3594,559.75 L292.3594,561.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="308.75" y="560.0605">urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="571.9063" y2="571.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="248" y="586.1167">URT_CONDVAR_WAITSTATUS_SIGNAL = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="248" y="598.9214">URT_CONDVAR_WAITSTATUS_BROADCAST = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="239" x="248" y="611.7261">URT_CONDVAR_WAITSTATUS_TIMEOUT = 0</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="618.3203" y2="618.3203"/><!--MD5=[004fc5dee471033e8e4138c1c73f0692]
13
class urt_osCondvar_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="137.6328" id="urt_osCondvar_t" style="stroke: #A80036; stroke-width: 1.5;" width="710" x="22" y="197.4063"/><ellipse cx="322.25" cy="213.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M323.0938,220.1563 L320.6406,220.1563 L320.6406,209.9063 L317.5,209.9063 L317.5,207.7656 L326.2344,207.7656 L326.2344,209.9063 L323.0938,209.9063 L323.0938,220.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="342.75" y="217.5605">urt_osCondvar_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="731" y1="229.4063" y2="229.4063"/><ellipse cx="33" cy="240.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="283" x="42" y="243.6167">urtCondvarInit (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="253.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="301" x="42" y="256.4214">urtCondvarSignal (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="266.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="324" x="42" y="269.2261">urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="295.625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="559" x="42" y="298.8354">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*) : urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="23" x2="248.5" y1="282.2227" y2="282.2227"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="257" x="248.5" y="285.5308">URT_CFG_OSAL_CONDVAR_TIMEOUT == false</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="505.5" x2="731" y1="282.2227" y2="282.2227"/><ellipse cx="33" cy="325.2344" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="684" x="42" y="328.4448">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="23" x2="251" y1="311.832" y2="311.832"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="252" x="251" y="315.1401">URT_CFG_OSAL_CONDVAR_TIMEOUT == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="503" x2="731" y1="311.832" y2="311.832"/><!--MD5=[93799a03260ba286abda700174f4f205]
14
class urt_osTimerCallback_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="60.8047" id="urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="2787" y="552.4063"/><ellipse cx="2857.75" cy="568.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2858.5938,575.1563 L2856.1406,575.1563 L2856.1406,564.9063 L2853,564.9063 L2853,562.7656 L2861.7344,562.7656 L2861.7344,564.9063 L2858.5938,564.9063 L2858.5938,575.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="2878.25" y="572.5605">urt_osTimerCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2788" x2="3072" y1="584.4063" y2="584.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2788" x2="3072" y1="592.4063" y2="592.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="274" x="2793" y="606.6167">urt_osTimerCallback_t (parameter : void*) : void</text><!--MD5=[0b340d7b925b1eab6a1b7e084f68a7c2]
15
class urt_osTimer_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="112.0234" id="urt_osTimer_t" style="stroke: #A80036; stroke-width: 1.5;" width="737" x="2561.5" y="210.4063"/><ellipse cx="2883.75" cy="226.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2884.5938,233.1563 L2882.1406,233.1563 L2882.1406,222.9063 L2879,222.9063 L2879,220.7656 L2887.7344,220.7656 L2887.7344,222.9063 L2884.5938,222.9063 L2884.5938,233.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="2904.25" y="230.5605">urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2562.5" x2="3297.5" y1="242.4063" y2="242.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2562.5" x2="3297.5" y1="250.4063" y2="250.4063"/><ellipse cx="2572.5" cy="261.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="2581.5" y="264.6167">urtTimerInit (timer : urt_osTimer_t*) : void</text><ellipse cx="2572.5" cy="274.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="660" x="2581.5" y="277.4214">urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void</text><ellipse cx="2572.5" cy="287.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="711" x="2581.5" y="290.2261">urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void</text><ellipse cx="2572.5" cy="299.8203" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="255" x="2581.5" y="303.0308">urtTimerReset (timer : urt_osTimer_t*) : void</text><ellipse cx="2572.5" cy="312.625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="2581.5" y="315.8354">urtTimerIsArmed (timer : urt_osTimer_t*) : bool</text><!--MD5=[86c16d91227b9a9ec3b6b9b0285de4e9]
16
class urt_osThreadPrio_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="150.4375" id="urt_osThreadPrio_t" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="1089.5" y="507.9063"/><ellipse cx="1125.65" cy="523.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1126.4938,530.6563 L1124.0406,530.6563 L1124.0406,520.4063 L1120.9,520.4063 L1120.9,518.2656 L1129.6344,518.2656 L1129.6344,520.4063 L1126.4938,520.4063 L1126.4938,530.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="1144.35" y="528.0605">urt_osThreadPrio_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1090.5" x2="1285.5" y1="539.9063" y2="539.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="160" x="1095.5" y="554.1167">URT_THREAD_PRIO_LOW_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="163" x="1095.5" y="566.9214">URT_THREAD_PRIO_LOW_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="1095.5" y="579.7261">URT_THREAD_PRIO_NORMAL_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="1095.5" y="592.5308">URT_THREAD_PRIO_NORMAL_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="164" x="1095.5" y="605.3354">URT_THREAD_PRIO_HIGH_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="167" x="1095.5" y="618.1401">URT_THREAD_PRIO_HIGH_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="1095.5" y="630.9448">URT_THREAD_PRIO_RT_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="1095.5" y="643.7495">URT_THREAD_PRIO_RT_MAX</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1090.5" x2="1285.5" y1="650.3438" y2="650.3438"/><!--MD5=[69d8aab9aa387a2f5052ea3da80e80ea]
17
class urt_osThreadFunction_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="60.8047" id="urt_osThreadFunction_t" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1322" y="552.4063"/><ellipse cx="1369.75" cy="568.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1370.5938,575.1563 L1368.1406,575.1563 L1368.1406,564.9063 L1365,564.9063 L1365,562.7656 L1373.7344,562.7656 L1373.7344,564.9063 L1370.5938,564.9063 L1370.5938,575.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="1390.25" y="572.5605">urt_osThreadFunction_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1323" x2="1573" y1="584.4063" y2="584.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1323" x2="1573" y1="592.4063" y2="592.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="1328" y="606.6167">urt_osThreadFunction_t (arg : void*) : void</text><!--MD5=[ab5f611d45c3fa10609c33f780d8c3e1]
18
class urt_osThreadTerminateSignal_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="73.6094" id="urt_osThreadTerminateSignal_t" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="1609" y="545.9063"/><ellipse cx="1630.75" cy="561.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1634.8594,567.9063 L1627.1406,567.9063 L1627.1406,555.5156 L1634.8594,555.5156 L1634.8594,557.6719 L1629.5938,557.6719 L1629.5938,560.3438 L1634.3594,560.3438 L1634.3594,562.5 L1629.5938,562.5 L1629.5938,565.75 L1634.8594,565.75 L1634.8594,567.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="195" x="1646.25" y="566.0605">urt_osThreadTerminateSignal_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1610" x2="1850" y1="577.9063" y2="577.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="1615" y="592.1167">URT_THREAD_TERMINATE_REQUEST = 15</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="1615" y="604.9214">URT_THREAD_TERMINATE_KILL = 9</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1610" x2="1850" y1="611.5156" y2="611.5156"/><!--MD5=[47d14ad2c233fae1b32b8d0a283e820a]
19
class urt_osThreadState_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="137.6328" id="urt_osThreadState_t" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="1886" y="513.9063"/><ellipse cx="1930.75" cy="529.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1934.8594,535.9063 L1927.1406,535.9063 L1927.1406,523.5156 L1934.8594,523.5156 L1934.8594,525.6719 L1929.5938,525.6719 L1929.5938,528.3438 L1934.3594,528.3438 L1934.3594,530.5 L1929.5938,530.5 L1929.5938,533.75 L1934.8594,533.75 L1934.8594,535.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="128" x="1951.25" y="534.0605">urt_osThreadState_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1887" x2="2111" y1="545.9063" y2="545.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="1892" y="560.1167">URT_THREAD_STATE_INACTIVE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="1892" y="572.9214">URT_THREAD_STATE_RUNNING = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="1892" y="585.7261">URT_THREAD_STATE_READY = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="1892" y="598.5308">URT_THREAD_STATE_SLEEPING = 3</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="213" x="1892" y="611.3354">URT_THREAD_STATE_SUSPENDED = 4</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="1892" y="624.1401">URT_THREAD_STATE_WAITING = 5</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="1892" y="636.9448">URT_THREAD_STATE_TERMINATED = 6</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1887" x2="2111" y1="643.5391" y2="643.5391"/><!--MD5=[0a16224ede9ffa9bb2d34e085a076e6d]
20
class urt_osThread_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="363.3125" id="urt_osThread_t" style="stroke: #A80036; stroke-width: 1.5;" width="778" x="1328" y="84.9063"/><ellipse cx="1665.75" cy="100.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1666.5938,107.6563 L1664.1406,107.6563 L1664.1406,97.4063 L1661,97.4063 L1661,95.2656 L1669.7344,95.2656 L1669.7344,97.4063 L1666.5938,97.4063 L1666.5938,107.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="1686.25" y="105.0605">urt_osThread_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1329" x2="2105" y1="116.9063" y2="116.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="1334" y="131.1167">URT_THREAD_SLEEP_MAX : float</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="225" x="1334" y="143.9214">URT_THREAD_SSLEP_MAX : unsigned int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="233" x="1334" y="156.7261">URT_THREAD_MSLEEP_MAX : unsigned int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="224" x="1334" y="169.5308">URT_THREAD_USLEEP_MAX : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1329" x2="2105" y1="176.125" y2="176.125"/><ellipse cx="1339" cy="187.125" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="248" x="1348" y="190.3354">URT_THREAD_MEMORY (varname, stacksize)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1329" x2="2105" y1="196.9297" y2="196.9297"/><ellipse cx="1339" cy="207.9297" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="752" x="1348" y="211.1401">urtThreadInit (memory : void*, size : size_t, prio : urt_osThreadPrio_t, func : urt_osThreadFunction_t*, arg : void*) : urt_osThread_t*</text><ellipse cx="1339" cy="220.7344" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="272" x="1348" y="223.9448">urtThreadStart (thread : urt_osThread_t*) : void</text><ellipse cx="1339" cy="233.5391" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="1348" y="236.7495">urtThreadYield (void) : void</text><ellipse cx="1339" cy="246.3438" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1348" y="249.5542">urtThreadGetPriority (void) : urt_osThreadPrio_t</text><ellipse cx="1339" cy="259.1484" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="304" x="1348" y="262.3589">urtThreadSetPriority (prio : urt_osThreadPrio_t) : void</text><ellipse cx="1339" cy="271.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="220" x="1348" y="275.1636">urtThreadSleep (seconds : float) : void</text><ellipse cx="1339" cy="284.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="273" x="1348" y="287.9683">urtThreadSSleep (seconds : unsigned int) : void</text><ellipse cx="1339" cy="297.5625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="297" x="1348" y="300.7729">urtThreadMSleep (milliseconds : unsigned int) : void</text><ellipse cx="1339" cy="310.3672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="297" x="1348" y="313.5776">urtThreadUSleep (microseconds : urt_delay_t) : void</text><ellipse cx="1339" cy="323.1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1348" y="326.3823">urtThreadSleepUntil (time : urt_osTime_t) : void</text><ellipse cx="1339" cy="335.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="1348" y="339.187">urtThreadExit (void) : void</text><ellipse cx="1339" cy="348.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="518" x="1348" y="351.9917">urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void</text><ellipse cx="1339" cy="361.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="224" x="1348" y="364.7964">urtThreadShouldTerminate (void) : bool</text><ellipse cx="1339" cy="374.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="264" x="1348" y="377.6011">urtThreadJoin (thread : urt_osThread_t*) : void</text><ellipse cx="1339" cy="387.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="1348" y="390.4058">urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t</text><ellipse cx="1339" cy="400" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="237" x="1348" y="403.2104">urtThreadGetSelf (void) : urt_osThread_t*</text><ellipse cx="1339" cy="412.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="380" x="1348" y="416.0151">urtThreadGetChildren (thread : urt_osThread_t*) : urt_osThread_t*</text><ellipse cx="1339" cy="425.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="371" x="1348" y="428.8198">urtThreadGetSibling (thread : urt_osThread_t*) : urt_osThread_t*</text><ellipse cx="1339" cy="438.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="370" x="1348" y="441.6245">urtThreadGetParent (thread : urt_osThread_t*) : urt_osThread_t*</text><!--MD5=[0a4e0f34d8da0ad3ed6ecf72f02e09c8]
21
class urt_osEventMask_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="60.8047" id="urt_osEventMask_t" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="3323" y="552.4063"/><ellipse cx="3400.25" cy="568.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3401.0938,575.1563 L3398.6406,575.1563 L3398.6406,564.9063 L3395.5,564.9063 L3395.5,562.7656 L3404.2344,562.7656 L3404.2344,564.9063 L3401.0938,564.9063 L3401.0938,575.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="3420.75" y="572.5605">urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3324" x2="3602" y1="584.4063" y2="584.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="268" x="3329" y="598.6167">URT_EVENTMASK_MAXPRIO : urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3324" x2="3602" y1="605.2109" y2="605.2109"/><!--MD5=[dc1cc33af288560680c15dec1e56eda0]
22
class urt_osEventFlags_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="48" id="urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="4044" y="717.9063"/><ellipse cx="4059" cy="733.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4059.8438,740.6563 L4057.3906,740.6563 L4057.3906,730.4063 L4054.25,730.4063 L4054.25,728.2656 L4062.9844,728.2656 L4062.9844,730.4063 L4059.8438,730.4063 L4059.8438,740.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4073" y="738.0605">urt_osEventFlags_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4045" x2="4193" y1="749.9063" y2="749.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4045" x2="4193" y1="757.9063" y2="757.9063"/><!--MD5=[e2bbbd64e6979bf7b755747a6c0ba948]
23
class urt_osEventWait_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="86.4141" id="urt_osEventWait_t" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="3675" y="539.9063"/><ellipse cx="3698.1" cy="555.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3702.2094,561.9063 L3694.4906,561.9063 L3694.4906,549.5156 L3702.2094,549.5156 L3702.2094,551.6719 L3696.9438,551.6719 L3696.9438,554.3438 L3701.7094,554.3438 L3701.7094,556.5 L3696.9438,556.5 L3696.9438,559.75 L3702.2094,559.75 L3702.2094,561.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="3713.9" y="560.0605">urt_osEventWait_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3676" x2="3836" y1="571.9063" y2="571.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="3681" y="586.1167">URT_EVENT_WAIT_ONE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="3681" y="598.9214">URT_EVENT_WAIT_ANY = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="3681" y="611.7261">URT_EVENT_WAIT_ALL = 2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3676" x2="3836" y1="618.3203" y2="618.3203"/><!--MD5=[d054ac2eda12ce4b1fe5a18c9be716c1]
24
class urt_osEventListener_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="86.4141" id="urt_osEventListener_t" style="stroke: #A80036; stroke-width: 1.5;" width="494" x="3872" y="539.9063"/><ellipse cx="4047.25" cy="555.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4048.0938,562.6563 L4045.6406,562.6563 L4045.6406,552.4063 L4042.5,552.4063 L4042.5,550.2656 L4051.2344,550.2656 L4051.2344,552.4063 L4048.0938,552.4063 L4048.0938,562.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="4067.75" y="560.0605">urt_osEventListener_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3873" x2="4365" y1="571.9063" y2="571.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3873" x2="4365" y1="579.9063" y2="579.9063"/><ellipse cx="3883" cy="590.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="341" x="3892" y="594.1167">urtEventListenerInit (listener : urt_osEventListener_t*) : void</text><ellipse cx="3883" cy="603.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="458" x="3892" y="606.9214">urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><ellipse cx="3883" cy="616.5156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="468" x="3892" y="619.7261">urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><!--MD5=[4d6906f8b977dc26629fa492460e6327]
25
class urt_osEventSource_t--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="73.6094" id="urt_osEventSource_t" style="stroke: #A80036; stroke-width: 1.5;" width="547" x="4401.5" y="545.9063"/><ellipse cx="4606.25" cy="561.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4607.0938,568.6563 L4604.6406,568.6563 L4604.6406,558.4063 L4601.5,558.4063 L4601.5,556.2656 L4610.2344,556.2656 L4610.2344,558.4063 L4607.0938,558.4063 L4607.0938,568.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="4626.75" y="566.0605">urt_osEventSource_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4402.5" x2="4947.5" y1="577.9063" y2="577.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4402.5" x2="4947.5" y1="585.9063" y2="585.9063"/><ellipse cx="4412.5" cy="596.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="325" x="4421.5" y="600.1167">urtEventSourceInit (source : urt_osEventSource_t*) : void</text><ellipse cx="4412.5" cy="609.7109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="521" x="4421.5" y="612.9214">urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void</text><!--MD5=[04a3b5a37031e2a4d723f19d8adf86f5]
26
class urt_events--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="86.4141" id="urt_events" style="stroke: #A80036; stroke-width: 1.5;" width="845" x="3333.5" y="223.4063"/><ellipse cx="3718.75" cy="239.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3722.9844,235.1719 L3717.7031,235.1719 L3717.7031,237.8438 L3722.5,237.8438 L3722.5,240 L3717.7031,240 L3717.7031,245.4063 L3715.2656,245.4063 L3715.2656,233.0156 L3722.9844,233.0156 L3722.9844,235.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="3739.25" y="243.5605">urt_events</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3334.5" x2="4177.5" y1="255.4063" y2="255.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3334.5" x2="4177.5" y1="263.4063" y2="263.4063"/><ellipse cx="3344.5" cy="274.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="819" x="3353.5" y="277.6167">urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : void</text><ellipse cx="3344.5" cy="287.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="522" x="3353.5" y="290.4214">urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : void</text><ellipse cx="3344.5" cy="300.0156" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="618" x="3353.5" y="303.2261">urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t</text><!--MD5=[0cf29100c96c506429a28b45d347cc92]
27
class urt_streams--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="73.6094" id="urt_streams" style="stroke: #A80036; stroke-width: 1.5;" width="213" x="4972.5" y="229.4063"/><ellipse cx="5037.25" cy="245.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5041.4844,241.1719 L5036.2031,241.1719 L5036.2031,243.8438 L5041,243.8438 L5041,246 L5036.2031,246 L5036.2031,251.4063 L5033.7656,251.4063 L5033.7656,239.0156 L5041.4844,239.0156 L5041.4844,241.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="5057.75" y="249.5605">urt_streams</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4973.5" x2="5184.5" y1="261.4063" y2="261.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4973.5" x2="5184.5" y1="269.4063" y2="269.4063"/><ellipse cx="4983.5" cy="280.4063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="170" x="4992.5" y="283.6167">urtPrintf (fmt : char*, ... ) : int</text><ellipse cx="4983.5" cy="293.2109" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="187" x="4992.5" y="296.4214">urtErrPrintf (fmt : char*, ... ) : int</text><!--MD5=[f106a25c06a671b3918b1a8f37571a4d]
28
class urt_debug--><rect fill="#FEFECE" filter="url(#f8kxwd8v07sjw)" height="60.8047" id="urt_debug" style="stroke: #A80036; stroke-width: 1.5;" width="249" x="5220.5" y="235.9063"/><ellipse cx="5308.75" cy="251.9063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5312.9844,247.6719 L5307.7031,247.6719 L5307.7031,250.3438 L5312.5,250.3438 L5312.5,252.5 L5307.7031,252.5 L5307.7031,257.9063 L5305.2656,257.9063 L5305.2656,245.5156 L5312.9844,245.5156 L5312.9844,247.6719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="5329.25" y="256.0605">urt_debug</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5221.5" x2="5468.5" y1="267.9063" y2="267.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5221.5" x2="5468.5" y1="275.9063" y2="275.9063"/><ellipse cx="5231.5" cy="286.9063" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="223" x="5240.5" y="290.1167">urtDebugAssert (condition : bool) : void</text><!--MD5=[7766572fa0c619a5409829048dc0b6d6]
29
link urt_osCondvar_t to urt_osCondvarWaitStatus_t--><path d="M377,335.4725 C377,395.7343 377,481.6143 377,534.7241 " fill="none" id="urt_osCondvar_t-&gt;urt_osCondvarWaitStatus_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="377,539.7595,381,530.7595,377,534.7595,373,530.7595,377,539.7595" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9b2507ea88616aeae65e3c4d63560016]
30
link urt_osCondvar_t to urt_osMutex_t--><path d="M732.0347,266.4063 C741.9278,266.4063 751.8209,266.4063 761.714,266.4063 " fill="none" id="urt_osCondvar_t-&gt;urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="766.8875,266.4063,757.8875,262.4063,761.8875,266.4063,757.8875,270.4063,766.8875,266.4063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[83094e108045c8f9585007cdb3b7cb2e]
31
link urt_osTimer_t to urt_osTimerCallback_t--><path d="M2930,322.6255 C2930,387.5013 2930,492.2597 2930,546.9925 " fill="none" id="urt_osTimer_t-&gt;urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="2930,552.13,2934,543.13,2930,547.13,2926,543.13,2930,552.13" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8d8c3240b5b2b5edf6544088e583ffa5]
32
link urt_osThread_t to urt_osThreadPrio_t--><path d="M1404.0912,448.0607 C1370.5299,468.0682 1336.9818,488.2931 1305,507.9063 C1300.4333,510.7069 1295.7786,513.5858 1291.0856,516.5085 " fill="none" id="urt_osThread_t-&gt;urt_osThreadPrio_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1286.7663,519.2039,1296.5193,517.8327,1291.0082,516.5568,1292.284,511.0458,1286.7663,519.2039" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[d7d1d43fd970fb07a484642bc19fcb13]
33
link urt_osThread_t to urt_osThreadFunction_t--><path d="M1562.4703,448.2229 C1529.9049,486.5387 1498.9419,522.969 1477.4496,548.2565 " fill="none" id="urt_osThread_t-&gt;urt_osThreadFunction_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1474.0827,552.2179,1482.9591,547.9507,1477.3208,548.408,1476.8634,542.7697,1474.0827,552.2179" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6564761b32ad7eeb5abb8896c72cfca5]
34
link urt_osThread_t to urt_osThreadTerminateSignal_t--><path d="M1724.468,448.2229 C1725.8891,482.8211 1727.247,515.882 1728.2619,540.5898 " fill="none" id="urt_osThread_t-&gt;urt_osThreadTerminateSignal_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1728.4731,545.7329,1732.1002,536.5762,1728.2678,540.7371,1724.107,536.9047,1728.4731,545.7329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[92ba23225d8de8f8080583fedda5e6f8]
35
link urt_osThread_t to urt_osThreadState_t--><path d="M1878.9977,448.2229 C1898.4458,470.0503 1917.3488,491.2658 1934.1816,510.158 " fill="none" id="urt_osThread_t-&gt;urt_osThreadState_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1937.5202,513.905,1934.5194,504.5244,1934.1939,510.1718,1928.5465,509.8464,1937.5202,513.905" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[78b286ab2177e5f7b31e6e832d821818]
36
link urt_osThread_t to urt_osTime_t--><path d="M2106.2402,266.4063 C2116.2156,266.4063 2126.191,266.4063 2136.1664,266.4063 " fill="none" id="urt_osThread_t-&gt;urt_osTime_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="2141.3829,266.4063,2132.3829,262.4063,2136.3829,266.4063,2132.3829,270.4063,2141.3829,266.4063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[659af6ab57e6a38ebfd5c07c5616787c]
37
link urt_osEventListener_t to urt_osEventFlags_t--><path d="M4119,625.934 C4119,653.41 4119,688.3065 4119,712.6092 " fill="none" id="urt_osEventListener_t-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4119,717.6279,4123,708.6279,4119,712.6279,4115,708.6279,4119,717.6279" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[eac11679f26c499aa1c571e1f795945d]
38
link urt_osEventSource_t to urt_osEventFlags_t--><path d="M4545.3444,619.9841 C4438.2675,650.605 4289.6667,693.1005 4199.1503,718.9856 " fill="none" id="urt_osEventSource_t-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4194.0794,720.4357,4203.8323,721.807,4198.8867,719.0609,4201.6328,714.1153,4194.0794,720.4357" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0259cdb10c6c32168d1d17d25519d939]
39
link urt_events to urt_osEventSource_t--><path d="M3880.8968,309.4203 C4060.7953,371.3766 4390.1435,484.8028 4562.7302,544.241 " fill="none" id="urt_events-&gt;urt_osEventSource_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4567.5371,545.8965,4560.3302,539.1838,4562.8096,544.2683,4557.7251,546.7477,4567.5371,545.8965" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0ce043e0e9532fc393f3f8836f5de19a]
40
link urt_events to urt_osEventListener_t--><path d="M3805.3336,309.4203 C3873.2812,368.6639 3995.2046,474.969 4065.3537,536.132 " fill="none" id="urt_events-&gt;urt_osEventListener_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4069.4834,539.7327,4065.3288,530.803,4065.7148,536.4466,4060.0712,536.8327,4069.4834,539.7327" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[430bebba9cd89d3ba8f63b2078968bca]
41
link urt_events to urt_osEventMask_t--><path d="M3716.1798,309.4203 C3657.3869,372.9286 3548.5286,490.5179 3494.7549,548.6046 " fill="none" id="urt_events-&gt;urt_osEventMask_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="3491.2936,552.3434,3500.3429,548.4563,3494.6903,548.6742,3494.4724,543.0216,3491.2936,552.3434" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b1b185abc2161e087cab32ae7fdb2c40]
42
link urt_events to urt_osEventFlags_t--><path d="M3723.8364,309.5381 C3668.5065,389.3648 3569.3959,561.4991 3658,665.9063 C3682.3308,694.5766 3913.2829,721.5873 4038.765,734.3005 " fill="none" id="urt_events-&gt;urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="4043.9214,734.8209,4035.3686,729.9372,4038.9467,734.3187,4034.5652,737.8968,4043.9214,734.8209" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[706a1974d1b474cbba7e7b0213f243a1]
43
link urt_events to urt_osEventWait_t--><path d="M3756,309.4203 C3756,368.1918 3756,473.2779 3756,534.6614 " fill="none" id="urt_events-&gt;urt_osEventWait_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="3756,539.7327,3760,530.7327,3756,534.7327,3752,530.7327,3756,539.7327" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0908992451aa1d580c3cb002bc893baf]
44
@startuml
45

    
46
title **µRtWare**\nOperating System Abstraction Layer (OSAL)
47

    
48

    
49

    
50

    
51

    
52

    
53

    
54

    
55

    
56

    
57

    
58

    
59

    
60
  package "time" <<Rectangle>> {
61
    class urt_osTime_t <<T,00CFFF>> {
62
    + {method} urtTime2Us (t : urt_osTime_t*) : uint64_t
63
    + {method} urtTimeNow (void) : urt_osTime_t
64
    + {method} urtTimeAddUs (time : urt_osTime_t*, offset : urt_delay_t) : void
65
  }
66
}
67

    
68
  package "mutex" <<Rectangle>> {
69
    class urt_osMutex_t <<T,00CFFF>> {
70
    + {method} urtMutexInit (mutex : urt_osMutex_t*) : void
71
    + {method} urtMutexLock (mutex : urt_osMutex_t*) : void
72
    + {method} urtMutexTryLock (mutex : urt_osMutex_t*) : bool
73
    + {method} urtMutexUnlock (mutex : urt_osMutex_t*) : void
74
  }
75
}
76

    
77
  package "condition variable" <<Rectangle>> {
78
    class urt_osCondvarWaitStatus_t <<E,FF7F3F>> {
79
    URT_CONDVAR_WAITSTATUS_SIGNAL = 1
80
    URT_CONDVAR_WAITSTATUS_BROADCAST = 2
81
    URT_CONDVAR_WAITSTATUS_TIMEOUT = 0
82
  }
83

    
84
    class urt_osCondvar_t <<T,00CFFF>> {
85
    + {method} urtCondvarInit (condvar : urt_osCondvar_t*) : void
86
    + {method} urtCondvarSignal (condvar : urt_osCondvar_t*) : void
87
    + {method} urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void
88
    .. URT_CFG_OSAL_CONDVAR_TIMEOUT == false ..
89
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*) : urt_osCondvarWaitStatus_t
90
    .. URT_CFG_OSAL_CONDVAR_TIMEOUT == true ..
91
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t
92
  }
93
}
94

    
95
  package "timer" <<Rectangle>> {
96
    class urt_osTimerCallback_t <<T,00CFFF>> {
97
    urt_osTimerCallback_t (parameter : void*) : void
98
  }
99

    
100
    class urt_osTimer_t <<T,00CFFF>> {
101
    + {method} urtTimerInit (timer : urt_osTimer_t*) : void
102
    + {method} urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void
103
    + {method} urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : void
104
    + {method} urtTimerReset (timer : urt_osTimer_t*) : void
105
    + {method} urtTimerIsArmed (timer : urt_osTimer_t*) : bool
106
  }
107
} 
108

    
109
  package "thread" <<Rectangle>> {
110
    class urt_osThreadPrio_t <<T,00CFFF>> {
111
    URT_THREAD_PRIO_LOW_MIN
112
    URT_THREAD_PRIO_LOW_MAX
113
    URT_THREAD_PRIO_NORMAL_MIN
114
    URT_THREAD_PRIO_NORMAL_MAX
115
    URT_THREAD_PRIO_HIGH_MIN
116
    URT_THREAD_PRIO_HIGH_MAX
117
    URT_THREAD_PRIO_RT_MIN
118
    URT_THREAD_PRIO_RT_MAX
119
  }
120

    
121
    class urt_osThreadFunction_t <<T,00CFFF>> {
122
    urt_osThreadFunction_t (arg : void*) : void
123
  }
124

    
125
    class urt_osThreadTerminateSignal_t <<E,FF7F3F>> {
126
    URT_THREAD_TERMINATE_REQUEST = 15
127
    URT_THREAD_TERMINATE_KILL = 9
128
  }
129

    
130
    class urt_osThreadState_t <<E,FF7F3F>> {
131
    URT_THREAD_STATE_INACTIVE = 0
132
    URT_THREAD_STATE_RUNNING = 1
133
    URT_THREAD_STATE_READY = 2
134
    URT_THREAD_STATE_SLEEPING = 3
135
    URT_THREAD_STATE_SUSPENDED = 4
136
    URT_THREAD_STATE_WAITING = 5
137
    URT_THREAD_STATE_TERMINATED = 6
138
  }
139

    
140
    class urt_osThread_t <<T,00CFFF>> {
141
    URT_THREAD_SLEEP_MAX : float
142
    URT_THREAD_SSLEP_MAX : unsigned int
143
    URT_THREAD_MSLEEP_MAX : unsigned int
144
    URT_THREAD_USLEEP_MAX : urt_delay_t
145
    - -
146
    + {method} URT_THREAD_MEMORY (varname, stacksize)
147
    ..
148
    + {method} urtThreadInit (memory : void*, size : size_t, prio : urt_osThreadPrio_t, func : urt_osThreadFunction_t*, arg : void*) : urt_osThread_t*
149
    + {method} urtThreadStart (thread : urt_osThread_t*) : void
150
    + {method} urtThreadYield (void) : void
151
    + {method} urtThreadGetPriority (void) : urt_osThreadPrio_t
152
    + {method} urtThreadSetPriority (prio : urt_osThreadPrio_t) : void
153
    + {method} urtThreadSleep (seconds : float) : void
154
    + {method} urtThreadSSleep (seconds : unsigned int) : void
155
    + {method} urtThreadMSleep (milliseconds : unsigned int) : void
156
    + {method} urtThreadUSleep (microseconds : urt_delay_t) : void
157
    + {method} urtThreadSleepUntil (time : urt_osTime_t) : void
158
    + {method} urtThreadExit (void) : void
159
    + {method} urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void
160
    + {method} urtThreadShouldTerminate (void) : bool
161
    + {method} urtThreadJoin (thread : urt_osThread_t*) : void
162
    + {method} urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t
163
    + {method} urtThreadGetSelf (void) : urt_osThread_t*
164
    + urtThreadGetChildren (thread : urt_osThread_t*) : urt_osThread_t*
165
    + urtThreadGetSibling (thread : urt_osThread_t*) : urt_osThread_t*
166
    + urtThreadGetParent (thread : urt_osThread_t*) : urt_osThread_t*
167
  }
168
} 
169

    
170
  package "events" <<Rectangle>> {
171
    class urt_osEventMask_t <<T,00CFFF>> {
172
    URT_EVENTMASK_MAXPRIO : urt_osEventMask_t
173
  }
174

    
175
    class urt_osEventFlags_t <<T,00CFFF>> {
176
  }
177

    
178
    class urt_osEventWait_t <<E,FF7F3F>> {
179
    URT_EVENT_WAIT_ONE = 0
180
    URT_EVENT_WAIT_ANY = 1
181
    URT_EVENT_WAIT_ALL = 2
182
  }
183

    
184
    class urt_osEventListener_t <<T,00CFFF>> {
185
    + {method} urtEventListenerInit (listener : urt_osEventListener_t*) : void
186
    + {method} urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
187
    + {method} urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
188
  }
189

    
190
    class urt_osEventSource_t <<T,00CFFF>> {
191
    + {method} urtEventSourceInit (source : urt_osEventSource_t*) : void
192
    + {method} urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void
193
  }
194

    
195
    class urt_events <<F,E0E0E0>> {
196
    + {method} urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : void
197
    + {method} urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : void
198
    + {method} urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t
199
  }
200
} 
201

    
202
  package "streams" <<Rectangle>> {
203
    class urt_streams <<F,E0E0E0>> {
204
    + {method} urtPrintf (fmt : char*, ... ) : int
205
    + {method} urtErrPrintf (fmt : char*, ... ) : int
206
  }
207
}
208

    
209
  package "debug" <<Rectangle>> {
210
    class urt_debug <<F,E0E0E0>> {
211
    + {method} urtDebugAssert (condition : bool) : void
212
  }
213
}
214

    
215

    
216

    
217

    
218
urt_osCondvar_t ..> urt_osCondvarWaitStatus_t
219
urt_osCondvar_t .> urt_osMutex_t
220

    
221
urt_osTimer_t ..> urt_osTimerCallback_t
222

    
223
urt_osThread_t ..> urt_osThreadPrio_t
224
urt_osThread_t ..> urt_osThreadFunction_t
225
urt_osThread_t ..> urt_osThreadTerminateSignal_t
226
urt_osThread_t ..> urt_osThreadState_t
227
urt_osThread_t .> urt_osTime_t
228

    
229
urt_osEventListener_t ..> urt_osEventFlags_t
230
urt_osEventSource_t ..> urt_osEventFlags_t
231
urt_events ..> urt_osEventSource_t
232
urt_events ..> urt_osEventListener_t
233
urt_events ..> urt_osEventMask_t
234
urt_events ..> urt_osEventFlags_t
235
urt_events ..> urt_osEventWait_t
236

    
237

    
238

    
239
@enduml
240

    
241
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
242
(GPL source distribution)
243
Java Runtime: OpenJDK Runtime Environment
244
JVM: OpenJDK 64-Bit Server VM
245
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
246
Operating System: Linux
247
Default Encoding: UTF-8
248
Language: en
249
Country: US
250
--></g></svg>