Revision 4d55cea4

View differences:

doc/classdiagrams/config.svg
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="290px" preserveAspectRatio="none" style="width:308px;height:290px;" version="1.1" viewBox="0 0 308 290" width="308px" zoomAndPan="magnify"><defs><filter height="300%" id="fvia6mr5z56ky" 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="107.5" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="120" x="92" y="37.6611">Configuration</text><!--MD5=[e443ac33c80100c2d54e1f5fe669f6d7]
2
class urt_config--><rect fill="#FEFECE" filter="url(#fvia6mr5z56ky)" height="230.4609" id="urt_config" style="stroke: #A80036; stroke-width: 1.5;" width="290" x="7" y="48.9063"/><ellipse cx="116.75" cy="64.9063" fill="#BFBFBF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M119.7188,70.5469 Q119.1406,70.8438 118.5,70.9844 Q117.8594,71.1406 117.1563,71.1406 Q114.6563,71.1406 113.3281,69.5 Q112.0156,67.8438 112.0156,64.7188 Q112.0156,61.5938 113.3281,59.9375 Q114.6563,58.2813 117.1563,58.2813 Q117.8594,58.2813 118.5,58.4375 Q119.1563,58.5938 119.7188,58.8906 L119.7188,61.6094 Q119.0938,61.0313 118.5,60.7656 Q117.9063,60.4844 117.2813,60.4844 Q115.9375,60.4844 115.25,61.5625 Q114.5625,62.625 114.5625,64.7188 Q114.5625,66.8125 115.25,67.8906 Q115.9375,68.9531 117.2813,68.9531 Q117.9063,68.9531 118.5,68.6875 Q119.0938,68.4063 119.7188,67.8281 L119.7188,70.5469 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="137.25" y="69.0605">urt_config</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="296" y1="80.9063" y2="80.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="159" x="13" y="95.1167">URT_CFG_DELAY_WIDTH : int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="169" x="13" y="107.9214">URT_CFG_TOPICID_WIDTH : int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="13" y="120.7261">URT_CFG_SERVICEID_WIDTH : int</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="13" y="133.5308">URT_CFG_NODESTAGE_WIDTH : int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="296" y1="140.125" y2="140.125"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="13" y="154.3354">URT_CFG_DEBUG_ENABLED : bool</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="296" y1="160.9297" y2="160.9297"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="197" x="13" y="175.1401">URT_CFG_PUBSUB_ENABLED : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="204" x="13" y="187.9448">URT_CFG_PUBSUB_PROFILING : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="278" x="13" y="200.7495">URT_CFG_PUBSUB_QOS_DEADLINECHECKS : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="252" x="13" y="213.5542">URT_CFG_PUBSUB_QOS_RATECHECKS : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="13" y="226.3589">URT_CFG_PUBSUB_QOS_JITTERCHECKS : bool</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="296" y1="232.9531" y2="232.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="13" y="247.1636">URT_CFG_RPC_ENABLED : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="13" y="259.9683">URT_CFG_RPC_PROFILING : bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="233" x="13" y="272.7729">URT_CFG_RPC_QOS_JITTERCHECKS : bool</text><!--MD5=[fa463d24fc3844a76136af04696c4d0a]
3
@startuml
4

  
5
title **µRtWare**\nConfiguration
6

  
7

  
8

  
9

  
10

  
11

  
12

  
13

  
14

  
15

  
16

  
17

  
18

  
19
  class urt_config <<C,BFBFBF>> {
20
  URT_CFG_DELAY_WIDTH : int
21
  URT_CFG_TOPICID_WIDTH : int
22
  URT_CFG_SERVICEID_WIDTH : int
23
  URT_CFG_NODESTAGE_WIDTH : int
24
  ..
25
  URT_CFG_DEBUG_ENABLED : bool
26
  ..
27
  URT_CFG_PUBSUB_ENABLED : bool
28
  URT_CFG_PUBSUB_PROFILING : bool
29
  URT_CFG_PUBSUB_QOS_DEADLINECHECKS : bool
30
  URT_CFG_PUBSUB_QOS_RATECHECKS : bool
31
  URT_CFG_PUBSUB_QOS_JITTERCHECKS : bool
32
  ..
33
  URT_CFG_RPC_ENABLED : bool
34
  URT_CFG_RPC_PROFILING : bool
35
  URT_CFG_RPC_QOS_JITTERCHECKS : bool
36
}
37

  
38

  
39

  
40

  
41

  
42
@enduml
43

  
44
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
45
(GPL source distribution)
46
Java Runtime: OpenJDK Runtime Environment
47
JVM: OpenJDK 64-Bit Server VM
48
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
49
Operating System: Linux
50
Default Encoding: UTF-8
51
Language: en
52
Country: US
53
--></g></svg>
doc/classdiagrams/config.uml
1
/'
2
µRtWare is a lightweight publish/subscribe middleware for real-time
3
applications. It was developed as part of the software habitat for the
4
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well.
5

  
6
Copyright (C) 2018..2020  Thomas Schöpping et al.
7

  
8
This program is free software: you can redistribute it and/or modify
9
it under the terms of the GNU General Public License as published by
10
the Free Software Foundation, either version 3 of the License, or
11
(at your option) any later version.
12

  
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
GNU General Public License for more details.
17

  
18
You should have received a copy of the GNU General Public License
19
along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
'/
21

  
22
/'### INTRO ##################################################################'/
23

  
24
@startuml
25

  
26
title **µRtWare**\nConfiguration
27

  
28
!include ../functions.iuml
29

  
30
/'### ENTITIES ###############################################################'/
31

  
32
!startsub ENTITIES
33

  
34
/' Not a type but a set of configuration macros. '/
35
$configuration("urt_config") {
36
    'Selector to specify the width of urt_delay_t type (32 or 64).
37
  URT_CFG_DELAY_WIDTH : int
38
    'Selector to specify the width of the urt_topicid_t type (8, 16, 32 or 64).
39
  URT_CFG_TOPICID_WIDTH : int
40
    'Selector to specify the width of the urt_serviceid_t type (8, 16, 32 or 64).
41
  URT_CFG_SERVICEID_WIDTH : int
42
    'Selector to specify the width of the urt_nodestage_t type (8, 16, 32 or 64).
43
  URT_CFG_NODESTAGE_WIDTH : int
44
  ..
45
    'Selection to en-/disable debug checks.
46
  URT_CFG_DEBUG_ENABLED : bool
47
  ..
48
    'Selection ed-/disable publush-subscribe functionality.
49
  URT_CFG_PUBSUB_ENABLED : bool
50
    'Selection to en-/disable profiling for publish-subscribe.
51
  URT_CFG_PUBSUB_PROFILING : bool
52
    'Selection to en-/disable QoS deadline checks (e.g. timers) for publish-subscribe.
53
  URT_CFG_PUBSUB_QOS_DEADLINECHECKS : bool
54
    'Selection to en-/disable QoS rate checks (e.g. timers) for publish-subscribe.
55
  URT_CFG_PUBSUB_QOS_RATECHECKS : bool
56
    'Selection to en-/disable QoS jitter checks for publish-subscribe.
57
  URT_CFG_PUBSUB_QOS_JITTERCHECKS : bool
58
  ..
59
    'Selection to en-/disable RPC functionality.
60
  URT_CFG_RPC_ENABLED : bool
61
    'Selection to en-/disable profiling of RPCs.
62
  URT_CFG_RPC_PROFILING : bool
63
    'Selection to en-/disable QoS jitter checks for RPCs.
64
  URT_CFG_RPC_QOS_JITTERCHECKS : bool
65
}
66

  
67
!endsub
68

  
69
/'### DEPENDENCIES & LAYOUT ##################################################'/
70

  
71
!startsub DEPENDENCIES
72
!endsub
73

  
74
/'### OUTRO ##################################################################'/
75

  
76
@enduml
77

  
doc/classdiagrams/osal.svg
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="759px" preserveAspectRatio="none" style="width:5287px;height:759px;" version="1.1" viewBox="0 0 5287 759" width="5287px" zoomAndPan="magnify"><defs><filter height="300%" id="f1o4xjkf1sw9ns" 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="2606.5" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="387" x="2457.5" y="37.6611">Operating System Abstraction Layer (OSAL)</text><!--MD5=[2e45f233f6bb64aa81ebe67fb6de8946]
2
cluster condition variable--><rect fill="#FFFFFF" filter="url(#f1o4xjkf1sw9ns)" height="431.5" style="stroke: #000000; stroke-width: 1.5;" width="726" x="14" y="177.4063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="140" x="307" y="192.4014">condition variable</text><!--MD5=[c7113df1f710ca294cbd01734aa00974]
3
cluster timer--><rect fill="#FFFFFF" filter="url(#f1o4xjkf1sw9ns)" height="425.5" style="stroke: #000000; stroke-width: 1.5;" width="798" x="2817" y="170.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="3195.5" y="185.9014">timer</text><!--MD5=[107bb3f79455a18bd83c75ada1ac7979]
4
cluster thread--><rect fill="#FFFFFF" filter="url(#f1o4xjkf1sw9ns)" height="583" style="stroke: #000000; stroke-width: 1.5;" width="1039" x="1073" y="57.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="1566.5" y="72.9014">thread</text><!--MD5=[8d74b40516bd265adb19f202ab81f40d]
5
cluster events--><rect fill="#FFFFFF" filter="url(#f1o4xjkf1sw9ns)" height="565" style="stroke: #000000; stroke-width: 1.5;" width="1642" x="3634" y="183.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="4428" y="198.9014">events</text><!--MD5=[52fa11869cb40c93fa7702378ddd839e]
6
class urt_osCondvarWaitStatus_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="86.4141" id="urt_osCondvarWaitStatus_t" style="stroke: #A80036; stroke-width: 1.5;" width="270" x="242" y="514.9063"/><ellipse cx="288.25" cy="530.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M292.3594,536.9063 L284.6406,536.9063 L284.6406,524.5156 L292.3594,524.5156 L292.3594,526.6719 L287.0938,526.6719 L287.0938,529.3438 L291.8594,529.3438 L291.8594,531.5 L287.0938,531.5 L287.0938,534.75 L292.3594,534.75 L292.3594,536.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="308.75" y="535.0605">urt_osCondvarWaitStatus_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="546.9063" y2="546.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="248" y="561.1167">URT_CONDVAR_WAITSTATUS_SIGNAL = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="258" x="248" y="573.9214">URT_CONDVAR_WAITSTATUS_BROADCAST = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="239" x="248" y="586.7261">URT_CONDVAR_WAITSTATUS_TIMEOUT = 0</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243" x2="511" y1="593.3203" y2="593.3203"/><!--MD5=[004fc5dee471033e8e4138c1c73f0692]
7
class urt_osCondvar_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="99.2188" id="urt_osCondvar_t" style="stroke: #A80036; stroke-width: 1.5;" width="710" x="22" y="204.4063"/><ellipse cx="322.25" cy="220.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M323.0938,227.1563 L320.6406,227.1563 L320.6406,216.9063 L317.5,216.9063 L317.5,214.7656 L326.2344,214.7656 L326.2344,216.9063 L323.0938,216.9063 L323.0938,227.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="342.75" y="224.5605">urt_osCondvar_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="731" y1="236.4063" y2="236.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="731" y1="244.4063" y2="244.4063"/><ellipse cx="33" cy="255.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="258.6167">urtCondvarInit (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="268.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="271.4214">urtCondvarSignal (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="281.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="284.2261">urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void</text><ellipse cx="33" cy="293.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="684" x="42" y="297.0308">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t</text><!--MD5=[93799a03260ba286abda700174f4f205]
8
class urt_osTimerCallback_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="60.8047" id="urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="3073" y="527.4063"/><ellipse cx="3143.75" cy="543.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3144.5938,550.1563 L3142.1406,550.1563 L3142.1406,539.9063 L3139,539.9063 L3139,537.7656 L3147.7344,537.7656 L3147.7344,539.9063 L3144.5938,539.9063 L3144.5938,550.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="3164.25" y="547.5605">urt_osTimerCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3074" x2="3358" y1="559.4063" y2="559.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3074" x2="3358" y1="567.4063" y2="567.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="274" x="3079" y="581.6167">urt_osTimerCallback_t (parameter : void*) : void</text><!--MD5=[0b340d7b925b1eab6a1b7e084f68a7c2]
9
class urt_osTimer_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="112.0234" id="urt_osTimer_t" style="stroke: #A80036; stroke-width: 1.5;" width="782" x="2825" y="197.9063"/><ellipse cx="3169.75" cy="213.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3170.5938,220.6563 L3168.1406,220.6563 L3168.1406,210.4063 L3165,210.4063 L3165,208.2656 L3173.7344,208.2656 L3173.7344,210.4063 L3170.5938,210.4063 L3170.5938,220.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="3190.25" y="218.0605">urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2826" x2="3606" y1="229.9063" y2="229.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2826" x2="3606" y1="237.9063" y2="237.9063"/><ellipse cx="2836" cy="248.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="240" x="2845" y="252.1167">urtTimerInit (timer : urt_osTimer_t*) : void</text><ellipse cx="2836" cy="261.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="705" x="2845" y="264.9214">urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t</text><ellipse cx="2836" cy="274.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="756" x="2845" y="277.7261">urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t</text><ellipse cx="2836" cy="287.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="300" x="2845" y="290.5308">urtTimerReset (timer : urt_osTimer_t*) : urt_status_t</text><ellipse cx="2836" cy="300.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="271" x="2845" y="303.3354">urtTimerIsArmed (timer : urt_osTimer_t*) : bool</text><!--MD5=[86c16d91227b9a9ec3b6b9b0285de4e9]
10
class urt_osThreadPrio_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="150.4375" id="urt_osThreadPrio_t" style="stroke: #A80036; stroke-width: 1.5;" width="197" x="1081.5" y="482.9063"/><ellipse cx="1117.65" cy="498.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1118.4938,505.6563 L1116.0406,505.6563 L1116.0406,495.4063 L1112.9,495.4063 L1112.9,493.2656 L1121.6344,493.2656 L1121.6344,495.4063 L1118.4938,495.4063 L1118.4938,505.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="1136.35" y="503.0605">urt_osThreadPrio_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1082.5" x2="1277.5" y1="514.9063" y2="514.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="160" x="1087.5" y="529.1167">URT_THREAD_PRIO_LOW_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="163" x="1087.5" y="541.9214">URT_THREAD_PRIO_LOW_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="182" x="1087.5" y="554.7261">URT_THREAD_PRIO_NORMAL_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="1087.5" y="567.5308">URT_THREAD_PRIO_NORMAL_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="164" x="1087.5" y="580.3354">URT_THREAD_PRIO_HIGH_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="167" x="1087.5" y="593.1401">URT_THREAD_PRIO_HIGH_MAX</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="1087.5" y="605.9448">URT_THREAD_PRIO_RT_MIN</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="153" x="1087.5" y="618.7495">URT_THREAD_PRIO_RT_MAX</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1082.5" x2="1277.5" y1="625.3438" y2="625.3438"/><!--MD5=[69d8aab9aa387a2f5052ea3da80e80ea]
11
class urt_osThreadFunction_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="60.8047" id="urt_osThreadFunction_t" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1314" y="527.4063"/><ellipse cx="1361.75" cy="543.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1362.5938,550.1563 L1360.1406,550.1563 L1360.1406,539.9063 L1357,539.9063 L1357,537.7656 L1365.7344,537.7656 L1365.7344,539.9063 L1362.5938,539.9063 L1362.5938,550.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="1382.25" y="547.5605">urt_osThreadFunction_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1315" x2="1565" y1="559.4063" y2="559.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1315" x2="1565" y1="567.4063" y2="567.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="1320" y="581.6167">urt_osThreadFunction_t (arg : void*) : void</text><!--MD5=[ab5f611d45c3fa10609c33f780d8c3e1]
12
class urt_osThreadTerminateSignal_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="73.6094" id="urt_osThreadTerminateSignal_t" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="1601" y="520.9063"/><ellipse cx="1622.75" cy="536.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1626.8594,542.9063 L1619.1406,542.9063 L1619.1406,530.5156 L1626.8594,530.5156 L1626.8594,532.6719 L1621.5938,532.6719 L1621.5938,535.3438 L1626.3594,535.3438 L1626.3594,537.5 L1621.5938,537.5 L1621.5938,540.75 L1626.8594,540.75 L1626.8594,542.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="195" x="1638.25" y="541.0605">urt_osThreadTerminateSignal_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1602" x2="1842" y1="552.9063" y2="552.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="1607" y="567.1167">URT_THREAD_TERMINATE_REQUEST = 15</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="1607" y="579.9214">URT_THREAD_TERMINATE_KILL = 9</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1602" x2="1842" y1="586.5156" y2="586.5156"/><!--MD5=[47d14ad2c233fae1b32b8d0a283e820a]
13
class urt_osThreadState_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="137.6328" id="urt_osThreadState_t" style="stroke: #A80036; stroke-width: 1.5;" width="226" x="1878" y="488.9063"/><ellipse cx="1922.75" cy="504.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1926.8594,510.9063 L1919.1406,510.9063 L1919.1406,498.5156 L1926.8594,498.5156 L1926.8594,500.6719 L1921.5938,500.6719 L1921.5938,503.3438 L1926.3594,503.3438 L1926.3594,505.5 L1921.5938,505.5 L1921.5938,508.75 L1926.8594,508.75 L1926.8594,510.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="128" x="1943.25" y="509.0605">urt_osThreadState_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1879" x2="2103" y1="520.9063" y2="520.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="1884" y="535.1167">URT_THREAD_STATE_INACTIVE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="1884" y="547.9214">URT_THREAD_STATE_RUNNING = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="1884" y="560.7261">URT_THREAD_STATE_READY = 2</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="199" x="1884" y="573.5308">URT_THREAD_STATE_SLEEPING = 3</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="213" x="1884" y="586.3354">URT_THREAD_STATE_SUSPENDED = 4</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="1884" y="599.1401">URT_THREAD_STATE_WAITING = 5</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="1884" y="611.9448">URT_THREAD_STATE_TERMINATED = 6</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1879" x2="2103" y1="618.5391" y2="618.5391"/><!--MD5=[0a16224ede9ffa9bb2d34e085a076e6d]
14
class urt_osThread_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="337.7031" id="urt_osThread_t" style="stroke: #A80036; stroke-width: 1.5;" width="560" x="1442" y="84.9063"/><ellipse cx="1670.75" cy="100.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1671.5938,107.6563 L1669.1406,107.6563 L1669.1406,97.4063 L1666,97.4063 L1666,95.2656 L1674.7344,95.2656 L1674.7344,97.4063 L1671.5938,97.4063 L1671.5938,107.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="1691.25" y="105.0605">urt_osThread_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1443" x2="2001" y1="116.9063" y2="116.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="179" x="1448" y="131.1167">URT_THREAD_SLEEP_MAX : float</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1448" y="143.9214">URT_THREAD_SSLEP_MAX : urt_delay_t</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="225" x="1448" y="156.7261">URT_THREAD_MSLEEP_MAX : urt_delay_t</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="224" x="1448" y="169.5308">URT_THREAD_USLEEP_MAX : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1443" x2="2001" y1="176.125" y2="176.125"/><ellipse cx="1453" 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="1462" y="190.3354">URT_THREAD_MEMORY (varname, stacksize)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1443" x2="2001" y1="196.9297" y2="196.9297"/><ellipse cx="1453" 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="534" x="1462" y="211.1401">urtThreadInit (memory : void*, size : size_t, func : urt_osThreadFunction_t*) : urt_osThread_t*</text><ellipse cx="1453" 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="490" x="1462" y="223.9448">urtThreadStart (thread : urt_osThread_t*, prio : urt_osThreadPrio_t, arg : void*) : void</text><ellipse cx="1453" 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="1462" y="236.7495">urtThreadYield (void) : void</text><ellipse cx="1453" 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="1462" y="249.5542">urtThreadGetPriority (void) : urt_osThreadPrio_t</text><ellipse cx="1453" 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="1462" y="262.3589">urtThreadSetPriority (prio : urt_osThreadPrio_t) : void</text><ellipse cx="1453" 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="294" x="1462" y="275.1636">urtThreadSuspend (thread : urt_osThread_t*) : void</text><ellipse cx="1453" 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="335" x="1462" y="287.9683">urtThreadResume (thread : urt_osThread_t*) : urt_status_t</text><ellipse cx="1453" 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="220" x="1462" y="300.7729">urtThreadSleep (seconds : float) : void</text><ellipse cx="1453" 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="265" x="1462" y="313.5776">urtThreadSSleep (seconds : urt_delay_t) : void</text><ellipse cx="1453" 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="289" x="1462" y="326.3823">urtThreadMSleep (milliseconds : urt_delay_t) : void</text><ellipse cx="1453" 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="297" x="1462" y="339.187">urtThreadUSleep (microseconds : urt_delay_t) : void</text><ellipse cx="1453" 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="271" x="1462" y="351.9917">urtThreadSleepUntil (time : urt_osTime_t) : void</text><ellipse cx="1453" 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="146" x="1462" y="364.7964">urtThreadExit (void) : void</text><ellipse cx="1453" 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="518" x="1462" y="377.6011">urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void</text><ellipse cx="1453" 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="264" x="1462" y="390.4058">urtThreadJoin (thread : urt_osThread_t*) : void</text><ellipse cx="1453" 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="387" x="1462" y="403.2104">urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t</text><ellipse cx="1453" 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="237" x="1462" y="416.0151">urtThreadGetSelf (void) : urt_osThread_t*</text><!--MD5=[0a4e0f34d8da0ad3ed6ecf72f02e09c8]
15
class urt_osEventMask_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="60.8047" id="urt_osEventMask_t" style="stroke: #A80036; stroke-width: 1.5;" width="280" x="3642" y="527.4063"/><ellipse cx="3719.25" cy="543.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3720.0938,550.1563 L3717.6406,550.1563 L3717.6406,539.9063 L3714.5,539.9063 L3714.5,537.7656 L3723.2344,537.7656 L3723.2344,539.9063 L3720.0938,539.9063 L3720.0938,550.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="3739.75" y="547.5605">urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3643" x2="3921" y1="559.4063" y2="559.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="268" x="3648" y="573.6167">URT_EVENTMASK_MAXPRIO : urt_osEventMask_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3643" x2="3921" y1="580.2109" y2="580.2109"/><!--MD5=[dc1cc33af288560680c15dec1e56eda0]
16
class urt_osEventFlags_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="48" id="urt_osEventFlags_t" style="stroke: #A80036; stroke-width: 1.5;" width="150" x="4363" y="692.9063"/><ellipse cx="4378" cy="708.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4378.8438,715.6563 L4376.3906,715.6563 L4376.3906,705.4063 L4373.25,705.4063 L4373.25,703.2656 L4381.9844,703.2656 L4381.9844,705.4063 L4378.8438,705.4063 L4378.8438,715.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4392" y="713.0605">urt_osEventFlags_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4364" x2="4512" y1="724.9063" y2="724.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4364" x2="4512" y1="732.9063" y2="732.9063"/><!--MD5=[e2bbbd64e6979bf7b755747a6c0ba948]
17
class urt_osEventWait_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="86.4141" id="urt_osEventWait_t" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="3994" y="514.9063"/><ellipse cx="4017.1" cy="530.9063" fill="#FF7F3F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4021.2094,536.9063 L4013.4906,536.9063 L4013.4906,524.5156 L4021.2094,524.5156 L4021.2094,526.6719 L4015.9438,526.6719 L4015.9438,529.3438 L4020.7094,529.3438 L4020.7094,531.5 L4015.9438,531.5 L4015.9438,534.75 L4021.2094,534.75 L4021.2094,536.9063 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="4032.9" y="535.0605">urt_osEventWait_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3995" x2="4155" y1="546.9063" y2="546.9063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="4000" y="561.1167">URT_EVENT_WAIT_ONE = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="4000" y="573.9214">URT_EVENT_WAIT_ANY = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="4000" y="586.7261">URT_EVENT_WAIT_ALL = 2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3995" x2="4155" y1="593.3203" y2="593.3203"/><!--MD5=[d054ac2eda12ce4b1fe5a18c9be716c1]
18
class urt_osEventListener_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="86.4141" id="urt_osEventListener_t" style="stroke: #A80036; stroke-width: 1.5;" width="494" x="4191" y="514.9063"/><ellipse cx="4366.25" cy="530.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4367.0938,537.6563 L4364.6406,537.6563 L4364.6406,527.4063 L4361.5,527.4063 L4361.5,525.2656 L4370.2344,525.2656 L4370.2344,527.4063 L4367.0938,527.4063 L4367.0938,537.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="4386.75" y="535.0605">urt_osEventListener_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4192" x2="4684" y1="546.9063" y2="546.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4192" x2="4684" y1="554.9063" y2="554.9063"/><ellipse cx="4202" cy="565.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="4211" y="569.1167">urtEventListenerInit (listener : urt_osEventListener_t*) : void</text><ellipse cx="4202" cy="578.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="4211" y="581.9214">urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><ellipse cx="4202" cy="591.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="4211" y="594.7261">urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t</text><!--MD5=[4d6906f8b977dc26629fa492460e6327]
19
class urt_osEventSource_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="73.6094" id="urt_osEventSource_t" style="stroke: #A80036; stroke-width: 1.5;" width="547" x="4720.5" y="520.9063"/><ellipse cx="4925.25" cy="536.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4926.0938,543.6563 L4923.6406,543.6563 L4923.6406,533.4063 L4920.5,533.4063 L4920.5,531.2656 L4929.2344,531.2656 L4929.2344,533.4063 L4926.0938,533.4063 L4926.0938,543.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="129" x="4945.75" y="541.0605">urt_osEventSource_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4721.5" x2="5266.5" y1="552.9063" y2="552.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4721.5" x2="5266.5" y1="560.9063" y2="560.9063"/><ellipse cx="4731.5" cy="571.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="4740.5" y="575.1167">urtEventSourceInit (source : urt_osEventSource_t*) : void</text><ellipse cx="4731.5" cy="584.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="4740.5" y="587.9214">urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void</text><!--MD5=[04a3b5a37031e2a4d723f19d8adf86f5]
20
class urt_events--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="86.4141" id="urt_events" style="stroke: #A80036; stroke-width: 1.5;" width="890" x="3642" y="210.9063"/><ellipse cx="4049.75" cy="226.9063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4053.9844,222.6719 L4048.7031,222.6719 L4048.7031,225.3438 L4053.5,225.3438 L4053.5,227.5 L4048.7031,227.5 L4048.7031,232.9063 L4046.2656,232.9063 L4046.2656,220.5156 L4053.9844,220.5156 L4053.9844,222.6719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="4070.25" y="231.0605">urt_events</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3643" x2="4531" y1="242.9063" y2="242.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3643" x2="4531" y1="250.9063" y2="250.9063"/><ellipse cx="3653" cy="261.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="864" x="3662" y="265.1167">urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : urt_status_t</text><ellipse cx="3653" cy="274.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="567" x="3662" y="277.9214">urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : urt_status_t</text><ellipse cx="3653" cy="287.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="618" x="3662" y="290.7261">urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t</text><!--MD5=[3677786d1f00795918091b0110bfa4af]
21
class urt_osTime_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="86.4141" id="urt_osTime_t" style="stroke: #A80036; stroke-width: 1.5;" width="425" x="2120.5" y="210.9063"/><ellipse cx="2289.25" cy="226.9063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2290.0938,233.6563 L2287.6406,233.6563 L2287.6406,223.4063 L2284.5,223.4063 L2284.5,221.2656 L2293.2344,221.2656 L2293.2344,223.4063 L2290.0938,223.4063 L2290.0938,233.6563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="2309.75" y="231.0605">urt_osTime_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2121.5" x2="2544.5" y1="242.9063" y2="242.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2121.5" x2="2544.5" y1="250.9063" y2="250.9063"/><ellipse cx="2131.5" cy="261.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="231" x="2140.5" y="265.1167">urtTime2Us (t : urt_osTime_t*) : uint64_t</text><ellipse cx="2131.5" cy="274.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="189" x="2140.5" y="277.9214">urtTimeNow (void) : urt_osTime_t</text><ellipse cx="2131.5" cy="287.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="399" x="2140.5" y="290.7261">urtTimeAddUs (time : urt_osTime_t*, offset : uint32_t) : urt_osTime_t*</text><!--MD5=[532279a7a1cac9af7f32856ca2ae6b9b]
22
class urt_osMutex_t--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="99.2188" id="urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.5;" width="298" x="767" y="204.4063"/><ellipse cx="868.25" cy="220.4063" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M869.0938,227.1563 L866.6406,227.1563 L866.6406,216.9063 L863.5,216.9063 L863.5,214.7656 L872.2344,214.7656 L872.2344,216.9063 L869.0938,216.9063 L869.0938,227.1563 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="888.75" y="224.5605">urt_osMutex_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="236.4063" y2="236.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="768" x2="1064" y1="244.4063" y2="244.4063"/><ellipse cx="778" cy="255.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="245" x="787" y="258.6167">urtMutexInit (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="268.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="253" x="787" y="271.4214">urtMutexLock (mutex : urt_osMutex_t*) : void</text><ellipse cx="778" cy="281.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="272" x="787" y="284.2261">urtMutexTryLock (mutex : urt_osMutex_t*) : bool</text><ellipse cx="778" cy="293.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="265" x="787" y="297.0308">urtMutexUnlock (mutex : urt_osMutex_t*) : void</text><!--MD5=[0cf29100c96c506429a28b45d347cc92]
23
class urt_streams--><rect fill="#FEFECE" filter="url(#f1o4xjkf1sw9ns)" height="73.6094" id="urt_streams" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="2580.5" y="216.9063"/><ellipse cx="2643.25" cy="232.9063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2647.4844,228.6719 L2642.2031,228.6719 L2642.2031,231.3438 L2647,231.3438 L2647,233.5 L2642.2031,233.5 L2642.2031,238.9063 L2639.7656,238.9063 L2639.7656,226.5156 L2647.4844,226.5156 L2647.4844,228.6719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="2663.75" y="237.0605">urt_streams</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2581.5" x2="2788.5" y1="248.9063" y2="248.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2581.5" x2="2788.5" y1="256.9063" y2="256.9063"/><ellipse cx="2591.5" 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="166" x="2600.5" y="271.1167">urtPrintf(fmt : char*, ... ) : int</text><ellipse cx="2591.5" 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="183" x="2600.5" y="283.9214">urtErrPrintf(fmt : char*, ... ) : int</text><!--MD5=[7766572fa0c619a5409829048dc0b6d6]
24
link urt_osCondvar_t to urt_osCondvarWaitStatus_t--><path d="M377,303.4257 C377,360.4234 377,453.4073 377,509.8014 " 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,514.8055,381,505.8055,377,509.8055,373,505.8055,377,514.8055" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9b2507ea88616aeae65e3c4d63560016]
25
link urt_osCondvar_t to urt_osMutex_t--><path d="M732.0347,253.9063 C741.9278,253.9063 751.8209,253.9063 761.714,253.9063 " 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,253.9063,757.8875,249.9063,761.8875,253.9063,757.8875,257.9063,766.8875,253.9063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[83094e108045c8f9585007cdb3b7cb2e]
26
link urt_osTimer_t to urt_osTimerCallback_t--><path d="M3216,310.0189 C3216,371.8862 3216,469.5749 3216,521.9342 " 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="3216,527.1651,3220,518.1651,3216,522.1651,3212,518.1651,3216,527.1651" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8d8c3240b5b2b5edf6544088e583ffa5]
27
link urt_osThread_t to urt_osThreadPrio_t--><path d="M1441.9776,400.8869 C1393.2866,427.5518 1343.4045,455.5841 1297,482.9063 C1292.3837,485.6243 1287.688,488.435 1282.9614,491.3019 " 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="1278.6134,493.9495,1288.3807,492.6849,1282.8839,491.3489,1284.2199,485.8521,1278.6134,493.9495" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[d7d1d43fd970fb07a484642bc19fcb13]
28
link urt_osThread_t to urt_osThreadFunction_t--><path d="M1564.9208,423.2399 C1529.4819,461.4435 1495.4158,498.1672 1471.8352,523.5875 " 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="1468.4333,527.2548,1477.4866,523.3768,1471.8337,523.5891,1471.6215,517.9362,1468.4333,527.2548" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6564761b32ad7eeb5abb8896c72cfca5]
29
link urt_osThread_t to urt_osThreadTerminateSignal_t--><path d="M1722,423.2399 C1722,457.6059 1722,490.7744 1722,515.5947 " 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="1722,520.7618,1726,511.7618,1722,515.7618,1718,511.7618,1722,520.7618" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[92ba23225d8de8f8080583fedda5e6f8]
30
link urt_osThread_t to urt_osThreadState_t--><path d="M1871.838,423.2399 C1890.9516,444.8405 1909.6467,465.968 1926.3519,484.8467 " 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="1929.6659,488.5919,1926.6974,479.201,1926.3525,484.8473,1920.7062,484.5024,1929.6659,488.5919" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[78b286ab2177e5f7b31e6e832d821818]
31
link urt_osThread_t to urt_osTime_t--><path d="M2002.1411,253.9063 C2039.8661,253.9063 2077.591,253.9063 2115.316,253.9063 " 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="2120.3973,253.9063,2111.3973,249.9063,2115.3973,253.9063,2111.3973,257.9063,2120.3973,253.9063" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[659af6ab57e6a38ebfd5c07c5616787c]
32
link urt_osEventListener_t to urt_osEventFlags_t--><path d="M4438,600.934 C4438,628.41 4438,663.3065 4438,687.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="4438,692.6279,4442,683.6279,4438,687.6279,4434,683.6279,4438,692.6279" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[eac11679f26c499aa1c571e1f795945d]
33
link urt_osEventSource_t to urt_osEventFlags_t--><path d="M4864.3444,594.9841 C4757.2675,625.605 4608.6667,668.1005 4518.1503,693.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="4513.0794,695.4357,4522.8323,696.807,4517.8867,694.0609,4520.6328,689.1153,4513.0794,695.4357" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0259cdb10c6c32168d1d17d25519d939]
34
link urt_events to urt_osEventSource_t--><path d="M4215.5072,296.9782 C4392.5015,356.3015 4708.6381,462.2613 4878.4989,519.1936 " 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="4883.4814,520.8637,4876.2192,514.2108,4878.7406,519.2746,4873.6768,521.796,4883.4814,520.8637" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[0ce043e0e9532fc393f3f8836f5de19a]
35
link urt_events to urt_osEventListener_t--><path d="M4136.917,297.1392 C4202.4234,353.8742 4316.9494,453.0647 4384.2879,511.3864 " 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="4388.2552,514.8225,4384.0708,505.9067,4384.4757,511.5491,4378.8333,511.954,4388.2552,514.8225" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[430bebba9cd89d3ba8f63b2078968bca]
36
link urt_events to urt_osEventMask_t--><path d="M4043.6248,297.1392 C3982.4716,358.092 3872.1543,468.0476 3816.3369,523.682 " 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="3812.7402,527.2669,3821.9384,523.7465,3816.2816,523.7372,3816.291,518.0803,3812.7402,527.2669" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b1b185abc2161e087cab32ae7fdb2c40]
37
link urt_events to urt_osEventFlags_t--><path d="M4052.173,297.0212 C3993.8544,374.6913 3890.9027,539.453 3977,640.9063 C4001.3308,669.5766 4232.2829,696.5873 4357.765,709.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="4362.9214,709.8209,4354.3686,704.9372,4357.9467,709.3187,4353.5652,712.8968,4362.9214,709.8209" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[706a1974d1b474cbba7e7b0213f243a1]
38
link urt_events to urt_osEventWait_t--><path d="M4085.2934,297.1392 C4083.0762,353.3091 4079.2163,451.093 4076.9056,509.6317 " 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="4076.7007,514.8225,4081.0527,505.9873,4076.898,509.8263,4073.0589,505.6716,4076.7007,514.8225" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[87ef9ac974d8a52180f0f0c2ec91e759]
39
@startuml
40

  
41
title **µRtWare**\nOperating System Abstraction Layer (OSAL)
42

  
43

  
44

  
45

  
46

  
47

  
48

  
49

  
50

  
51

  
52

  
53

  
54

  
55
  class urt_osTime_t <<T,00CFFF>> {
56
  + {method} urtTime2Us (t : urt_osTime_t*) : uint64_t
57
  + {method} urtTimeNow (void) : urt_osTime_t
58
  + {method} urtTimeAddUs (time : urt_osTime_t*, offset : uint32_t) : urt_osTime_t*
59
}
60

  
61
  class urt_osMutex_t <<T,00CFFF>> {
62
  + {method} urtMutexInit (mutex : urt_osMutex_t*) : void
63
  + {method} urtMutexLock (mutex : urt_osMutex_t*) : void
64
  + {method} urtMutexTryLock (mutex : urt_osMutex_t*) : bool
65
  + {method} urtMutexUnlock (mutex : urt_osMutex_t*) : void
66
}
67

  
68
  package "condition variable" <<Rectangle>> {
69
    class urt_osCondvarWaitStatus_t <<E,FF7F3F>> {
70
    URT_CONDVAR_WAITSTATUS_SIGNAL = 1
71
    URT_CONDVAR_WAITSTATUS_BROADCAST = 2
72
    URT_CONDVAR_WAITSTATUS_TIMEOUT = 0
73
  }
74

  
75
    class urt_osCondvar_t <<T,00CFFF>> {
76
    + {method} urtCondvarInit (condvar : urt_osCondvar_t*) : void
77
    + {method} urtCondvarSignal (condvar : urt_osCondvar_t*) : void
78
    + {method} urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void
79
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t
80
  }
81
}
82

  
83
  package "timer" <<Rectangle>> {
84
    class urt_osTimerCallback_t <<T,00CFFF>> {
85
    urt_osTimerCallback_t (parameter : void*) : void
86
  }
87

  
88
    class urt_osTimer_t <<T,00CFFF>> {
89
    + {method} urtTimerInit (timer : urt_osTimer_t*) : void
90
    + {method} urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t
91
    + {method} urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t
92
    + {method} urtTimerReset (timer : urt_osTimer_t*) : urt_status_t
93
    + {method} urtTimerIsArmed (timer : urt_osTimer_t*) : bool
94
  }
95
} 
96

  
97
  package "thread" <<Rectangle>> {
98
    class urt_osThreadPrio_t <<T,00CFFF>> {
99
    URT_THREAD_PRIO_LOW_MIN
100
    URT_THREAD_PRIO_LOW_MAX
101
    URT_THREAD_PRIO_NORMAL_MIN
102
    URT_THREAD_PRIO_NORMAL_MAX
103
    URT_THREAD_PRIO_HIGH_MIN
104
    URT_THREAD_PRIO_HIGH_MAX
105
    URT_THREAD_PRIO_RT_MIN
106
    URT_THREAD_PRIO_RT_MAX
107
  }
108

  
109
    class urt_osThreadFunction_t <<T,00CFFF>> {
110
    urt_osThreadFunction_t (arg : void*) : void
111
  }
112

  
113
    class urt_osThreadTerminateSignal_t <<E,FF7F3F>> {
114
    URT_THREAD_TERMINATE_REQUEST = 15
115
    URT_THREAD_TERMINATE_KILL = 9
116
  }
117

  
118
    class urt_osThreadState_t <<E,FF7F3F>> {
119
    URT_THREAD_STATE_INACTIVE = 0
120
    URT_THREAD_STATE_RUNNING = 1
121
    URT_THREAD_STATE_READY = 2
122
    URT_THREAD_STATE_SLEEPING = 3
123
    URT_THREAD_STATE_SUSPENDED = 4
124
    URT_THREAD_STATE_WAITING = 5
125
    URT_THREAD_STATE_TERMINATED = 6
126
  }
127

  
128
    class urt_osThread_t <<T,00CFFF>> {
129
    URT_THREAD_SLEEP_MAX : float
130
    URT_THREAD_SSLEP_MAX : urt_delay_t
131
    URT_THREAD_MSLEEP_MAX : urt_delay_t
132
    URT_THREAD_USLEEP_MAX : urt_delay_t
133
    - -
134
    + {method} URT_THREAD_MEMORY (varname, stacksize)
135
    ..
136
    + {method} urtThreadInit (memory : void*, size : size_t, func : urt_osThreadFunction_t*) : urt_osThread_t*
137
    + {method} urtThreadStart (thread : urt_osThread_t*, prio : urt_osThreadPrio_t, arg : void*) : void
138
    + {method} urtThreadYield (void) : void
139
    + {method} urtThreadGetPriority (void) : urt_osThreadPrio_t
140
    + {method} urtThreadSetPriority (prio : urt_osThreadPrio_t) : void
141
    + {method} urtThreadSuspend (thread : urt_osThread_t*) : void
142
    + {method} urtThreadResume (thread : urt_osThread_t*) : urt_status_t
143
    + {method} urtThreadSleep (seconds : float) : void
144
    + {method} urtThreadSSleep (seconds : urt_delay_t) : void
145
    + {method} urtThreadMSleep (milliseconds : urt_delay_t) : void
146
    + {method} urtThreadUSleep (microseconds : urt_delay_t) : void
147
    + {method} urtThreadSleepUntil (time : urt_osTime_t) : void
148
    + {method} urtThreadExit (void) : void
149
    + {method} urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void
150
    + {method} urtThreadJoin (thread : urt_osThread_t*) : void
151
    + {method} urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t
152
    + {method} urtThreadGetSelf (void) : urt_osThread_t*
153
  }
154
} 
155

  
156
  package "events" <<Rectangle>> {
157
    class urt_osEventMask_t <<T,00CFFF>> {
158
    URT_EVENTMASK_MAXPRIO : urt_osEventMask_t
159
  }
160

  
161
    class urt_osEventFlags_t <<T,00CFFF>> {
162
  }
163

  
164
    class urt_osEventWait_t <<E,FF7F3F>> {
165
    URT_EVENT_WAIT_ONE = 0
166
    URT_EVENT_WAIT_ANY = 1
167
    URT_EVENT_WAIT_ALL = 2
168
  }
169

  
170
    class urt_osEventListener_t <<T,00CFFF>> {
171
    + {method} urtEventListenerInit (listener : urt_osEventListener_t*) : void
172
    + {method} urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
173
    + {method} urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
174
  }
175

  
176
    class urt_osEventSource_t <<T,00CFFF>> {
177
    + {method} urtEventSourceInit (source : urt_osEventSource_t*) : void
178
    + {method} urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void
179
  }
180

  
181
    class urt_events <<F,E0E0E0>> {
182
    + {method} urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : urt_status_t
183
    + {method} urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : urt_status_t
184
    + {method} urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t
185
  }
186
} 
187

  
188
  class urt_streams <<F,E0E0E0>> {
189
  + {method} urtPrintf(fmt : char*, ... ) : int
190
  + {method} urtErrPrintf(fmt : char*, ... ) : int
191
}
192

  
193

  
194

  
195

  
196
urt_osCondvar_t ..> urt_osCondvarWaitStatus_t
197
urt_osCondvar_t .> urt_osMutex_t
198

  
199
urt_osTimer_t ..> urt_osTimerCallback_t
200

  
201
urt_osThread_t ..> urt_osThreadPrio_t
202
urt_osThread_t ..> urt_osThreadFunction_t
203
urt_osThread_t ..> urt_osThreadTerminateSignal_t
204
urt_osThread_t ..> urt_osThreadState_t
205
urt_osThread_t .> urt_osTime_t
206

  
207
urt_osEventListener_t ..> urt_osEventFlags_t
208
urt_osEventSource_t ..> urt_osEventFlags_t
209
urt_events ..> urt_osEventSource_t
210
urt_events ..> urt_osEventListener_t
211
urt_events ..> urt_osEventMask_t
212
urt_events ..> urt_osEventFlags_t
213
urt_events ..> urt_osEventWait_t
214

  
215

  
216

  
217
@enduml
218

  
219
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
220
(GPL source distribution)
221
Java Runtime: OpenJDK Runtime Environment
222
JVM: OpenJDK 64-Bit Server VM
223
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
224
Operating System: Linux
225
Default Encoding: UTF-8
226
Language: en
227
Country: US
228
--></g></svg>
doc/classdiagrams/osal.uml
1
/'
2
µRtWare is a lightweight publish/subscribe middleware for real-time
3
applications. It was developed as part of the software habitat for the
4
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well.
5

  
6
Copyright (C) 2018..2020  Thomas Schöpping et al.
7

  
8
This program is free software: you can redistribute it and/or modify
9
it under the terms of the GNU General Public License as published by
10
the Free Software Foundation, either version 3 of the License, or
11
(at your option) any later version.
12

  
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
GNU General Public License for more details.
17

  
18
You should have received a copy of the GNU General Public License
19
along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
'/
21

  
22
/'### INTRO ##################################################################'/
23

  
24
@startuml
25

  
26
title **µRtWare**\nOperating System Abstraction Layer (OSAL)
27

  
28
!include ../functions.iuml
29

  
30
/'### ENTITIES ###############################################################'/
31

  
32
!startsub ENTITIES
33

  
34
/' OS time type with arbitrary resolution. '/
35
$type("urt_osTime_t") {
36
    'Converts an OS time to 64 bit microsecond precise value.
37
  + {method} urtTime2Us (t : urt_osTime_t*) : uint64_t
38
    'Retrieves the current time.
39
  + {method} urtTimeNow (void) : urt_osTime_t
40
    'Increase a system time object.
41
  + {method} urtTimeAddUs (time : urt_osTime_t*, offset : uint32_t) : urt_osTime_t*
42
}
43

  
44
/' OS mutex lock interface. '/
45
$type("urt_osMutex_t") {
46
    'Initializes a urt_osMutex_t object.
47
  + {method} urtMutexInit (mutex : urt_osMutex_t*) : void
48
    'Block the thread until the mutex could be locked.
49
  + {method} urtMutexLock (mutex : urt_osMutex_t*) : void
50
    'Tries to lock the mutex, but does not block but immediately returns an indicator.
51
  + {method} urtMutexTryLock (mutex : urt_osMutex_t*) : bool
52
    'Unlocks a previously locked mutex.
53
  + {method} urtMutexUnlock (mutex : urt_osMutex_t*) : void
54
}
55

  
56
/' OS condition variable feature. '/
57
$group("condition variable") {
58
  /' Return type for the wait function on condition variables. '/
59
  $enumeration("urt_osCondvarWaitStatus_t") {
60
      'The condition variable has been signaled.
61
    URT_CONDVAR_WAITSTATUS_SIGNAL = 1
62
      'The condition variable has been broadcasted.
63
    URT_CONDVAR_WAITSTATUS_BROADCAST = 2
64
      'The wait function timed out.
65
    URT_CONDVAR_WAITSTATUS_TIMEOUT = 0
66
  }
67

  
68
  /' Condition variable interface. '/
69
  $type("urt_osCondvar_t") {
70
      'Initializes a urt_osCondvar_t object.
71
    + {method} urtCondvarInit (condvar : urt_osCondvar_t*) : void
72
      'Signals one thread that is waiting for the condition variable.
73
    + {method} urtCondvarSignal (condvar : urt_osCondvar_t*) : void
74
      'Signals all threads that are waiting for the condition variable.
75
    + {method} urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void
76
      'Waits for the condition variable.
77
    + {method} urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_osCondvarWaitStatus_t
78
  }
79
}
80

  
81
/' OS timer feature. '/
82
$group("timer") {
83
  /' Timer callback definition. '/
84
  $type("urt_osTimerCallback_t") {
85
    urt_osTimerCallback_t (parameter : void*) : void
86
  }
87

  
88
  /' OS timer interface. '/
89
  $type("urt_osTimer_t") {
90
      'Initializes an urt_osTimer_t object.
91
    + {method} urtTimerInit (timer : urt_osTimer_t*) : void
92
      'Sets the timer to a specified delay with specified callback and arguments.
93
    + {method} urtTimerSet (timer : urt_osTimer_t*, delay : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t
94
      'Sets the timer to a specified period with specified callback and arguments.
95
    + {method} urtTimerSetPeriodic (timer : urt_osTimer_t*, period : urt_delay_t, callback : urt_osTimerCallback_t*, parameter : void*) : urt_status_t
96
      'Resets the timer.
97
    + {method} urtTimerReset (timer : urt_osTimer_t*) : urt_status_t
98
      'Check whether the timer is already armed.
99
    + {method} urtTimerIsArmed (timer : urt_osTimer_t*) : bool
100
  }
101
} /'condition variable'/
102

  
103
/' OS thread feature. '/
104
$group("thread") {
105
  /' Thread priority type. '/
106
  $type("urt_osThreadPrio_t") {
107
      'Minimum priority for low priority threads.
108
    URT_THREAD_PRIO_LOW_MIN
109
      'Maximum priority for low priority threads.
110
    URT_THREAD_PRIO_LOW_MAX
111
      'Minimum priority for normal priority threads.
112
    URT_THREAD_PRIO_NORMAL_MIN
113
      'Maximum priority for normal priority threads.
114
    URT_THREAD_PRIO_NORMAL_MAX
115
      'Minimum priority for high priority threads.
116
    URT_THREAD_PRIO_HIGH_MIN
117
      'Maximum priority for high priority threads.
118
    URT_THREAD_PRIO_HIGH_MAX
119
      'Minimum priority for real-time threads.
120
    URT_THREAD_PRIO_RT_MIN
121
      'Maximum priority for real-time threads.
122
    URT_THREAD_PRIO_RT_MAX
123
  }
124

  
125
  /' Thread main function type. '/
126
  $type("urt_osThreadFunction_t") {
127
    urt_osThreadFunction_t (arg : void*) : void
128
  }
129

  
130
  /' Thread terminate signals. '/
131
  $enumeration("urt_osThreadTerminateSignal_t") {
132
      'Signal to request termination asap.
133
    URT_THREAD_TERMINATE_REQUEST = 15
134
      'Signal to kill a thread immediately.
135
    URT_THREAD_TERMINATE_KILL = 9
136
  }
137

  
138
  /' Thread execution states. '/
139
  $enumeration("urt_osThreadState_t") {
140
      'Thread has not been started yet.
141
    URT_THREAD_STATE_INACTIVE = 0
142
      'Thread is currently being executed.
143
    URT_THREAD_STATE_RUNNING = 1
144
      'Thread is ready but waiting to be scheduled.
145
    URT_THREAD_STATE_READY = 2
146
      'Thread is actively sleeping.
147
    URT_THREAD_STATE_SLEEPING = 3
148
      'Thread has ben suspended explicitely.
149
    URT_THREAD_STATE_SUSPENDED = 4
150
      'Thread is waiting for something (e.g. Mutex, event, etc.).
151
    URT_THREAD_STATE_WAITING = 5
152
      'Thread has terminated.
153
    URT_THREAD_STATE_TERMINATED = 6
154
  }
155

  
156
  /' OS thread interface. '/
157
  $type("urt_osThread_t") {
158
     'Maximum sleep interval in seconds (as float).
159
    URT_THREAD_SLEEP_MAX : float
160
      'Maximum sleep interval in seconds.
161
    URT_THREAD_SSLEP_MAX : urt_delay_t
162
      'Maximum sleep interval in milliseconds.
163
    URT_THREAD_MSLEEP_MAX : urt_delay_t
164
      'Maximum sleep interval in microseconds.
165
    URT_THREAD_USLEEP_MAX : urt_delay_t
166
    --
167
      'Macro to setup working area as static variable (handles alignment if required).
168
    + {method} URT_THREAD_MEMORY (varname, stacksize)
169
    ..
170
      'Initializes an urt_osThread_t object.
171
    + {method} urtThreadInit (memory : void*, size : size_t, func : urt_osThreadFunction_t*) : urt_osThread_t*
172
      'Starts a thread.
173
    + {method} urtThreadStart (thread : urt_osThread_t*, prio : urt_osThreadPrio_t, arg : void*) : void
174
      'The calling threads yields.
175
    + {method} urtThreadYield (void) : void
176
      'Retrieves the priority of the calling thread.
177
    + {method} urtThreadGetPriority (void) : urt_osThreadPrio_t
178
      'Sets the priority of the calling thread.
179
    + {method} urtThreadSetPriority (prio : urt_osThreadPrio_t) : void
180
      'Suspends a thread so it will no longer be executed.
181
    + {method} urtThreadSuspend (thread : urt_osThread_t*) : void
182
      'Wakes a suspended thread.
183
    + {method} urtThreadResume (thread : urt_osThread_t*) : urt_status_t
184
      'Suspends the calling thread for the specified time.
185
    + {method} urtThreadSleep (seconds : float) : void
186
      'Suspends the calling thread for the specified time.
187
    + {method} urtThreadSSleep (seconds : urt_delay_t) : void
188
      'Suspends the calling thread for the specified time.
189
    + {method} urtThreadMSleep (milliseconds : urt_delay_t) : void
190
      'Suspends the calling thread for the specified time.
191
    + {method} urtThreadUSleep (microseconds : urt_delay_t) : void
192
      'Suspends the calling thread until the specified time.
193
    + {method} urtThreadSleepUntil (time : urt_osTime_t) : void
194
      'The calling thread exits execution (terminates).
195
    + {method} urtThreadExit (void) : void
196
      'Terminates a specified thread.
197
    + {method} urtThreadTerminate (thread : urt_osThread_t*, sig : urt_osThreadTerminateSignal_t) : void
198
      'Waits until the specified thread terminates.
199
    + {method} urtThreadJoin (thread : urt_osThread_t*) : void
200
      'Retrieves the execution state of the specified thread.
201
    + {method} urtThreadGetState (thread : urt_osThread_t*) : urt_osThreadState_t
202
      'Retrieves the calling thread itself.
203
    + {method} urtThreadGetSelf (void) : urt_osThread_t*
204
  }
205
} /'thread'/
206

  
207
/' OS event feature. '/
208
$group("events") {
209
  /' OS event mask type. '/
210
  $type("urt_osEventMask_t") {
211
      'The event mask, which will be handled with maximum priority by the event system.
212
    URT_EVENTMASK_MAXPRIO : urt_osEventMask_t
213
  }
214

  
215
  /' OS event flag type. '/
216
  $type("urt_osEventFlags_t") {
217
  }
218

  
219
  /' OS event wait type. '/
220
  $enumeration("urt_osEventWait_t") {
221
      'Wait for exactly one event.
222
    URT_EVENT_WAIT_ONE = 0
223
      'Wait for at least one event.
224
    URT_EVENT_WAIT_ANY = 1
225
      'Wait for all events.
226
    URT_EVENT_WAIT_ALL = 2
227
  }
228

  
229
  /' OS event listener interface. '/
230
  $type("urt_osEventListener_t") {
231
      'Initializes an urt_osEventListener_t object.
232
    + {method} urtEventListenerInit (listener : urt_osEventListener_t*) : void
233
      'Retrieves the flags of the event listener.
234
    + {method} urtEventListenerGetFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
235
      'Retrieves and clears the flags of the event listener.
236
    + {method} urtEventListenerClearFlags (listener : urt_osEventListener_t*) : urt_osEventFlags_t
237
  }
238

  
239
  /' OS event source interface. '/
240
  $type("urt_osEventSource_t") {
241
      'Initializes an urt_osEventSource_t object.
242
    + {method} urtEventSourceInit (source : urt_osEventSource_t*) : void
243
      'Emits an event.
244
    + {method} urtEventSourceBroadcast (source : urt_osEventSource_t*, flags : urt_osEventFlags_t) : void
245
  }
246

  
247
  /' Not a class/type but a set of static event-related functions. '/
248
  $function("urt_events") {
249
      'Registers a lister to a source.
250
    + {method} urtEventRegister (source : urt_osEventSource_t*, listener : urt_osEventListener_t*, mask : urt_osEventMask_t, flags : urt_osEventFlags_t) : urt_status_t
251
      'Unregisters a listener from a source.
252
    + {method} urtEventUnregister (source _ urt_osEventSource_t*, listener : urt_osEventListener_t*) : urt_status_t
253
      'Blocks the thread until any event occurs or the timeout expires.
254
    + {method} urtEventWait (mask : urt_osEventMask_t, type : urt_osEventWait_t, timeout : urt_delay_t) : urt_osEventMask_t
255
  }
256
} /'events'/
257

  
258
/' Not a class/type but a set of output-related functions. '/
259
$function("urt_streams") {
260
    'Prints a formatted string to the standard output stream (stdout).
261
  + {method} urtPrintf(fmt : char*, ... ) : int
262
    'Prints a formatted string to the standard error stream (stderr).
263
  + {method} urtErrPrintf(fmt : char*, ... ) : int
264
}
265

  
266
!endsub
267

  
268
/'### DEPENDENCIES & LAYOUT ##################################################'/
269

  
270
!startsub DEPENDENCIES
271

  
272
urt_osCondvar_t ..> urt_osCondvarWaitStatus_t
273
urt_osCondvar_t .> urt_osMutex_t
274

  
275
urt_osTimer_t ..> urt_osTimerCallback_t
276

  
277
urt_osThread_t ..> urt_osThreadPrio_t
278
urt_osThread_t ..> urt_osThreadFunction_t
279
urt_osThread_t ..> urt_osThreadTerminateSignal_t
280
urt_osThread_t ..> urt_osThreadState_t
281
urt_osThread_t .> urt_osTime_t
282

  
283
urt_osEventListener_t ..> urt_osEventFlags_t
284
urt_osEventSource_t ..> urt_osEventFlags_t
285
urt_events ..> urt_osEventSource_t
286
urt_events ..> urt_osEventListener_t
287
urt_events ..> urt_osEventMask_t
288
urt_events ..> urt_osEventFlags_t
289
urt_events ..> urt_osEventWait_t
290

  
291
!endsub
292

  
293
/'### OUTRO ##################################################################'/
294

  
295
@enduml
296

  
doc/classdiagrams/overview.svg
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="1736px" preserveAspectRatio="none" style="width:9201px;height:1736px;" version="1.1" viewBox="0 0 9201 1736" width="9201px" zoomAndPan="magnify"><defs><filter height="300%" id="f1hivpbyet8yjp" 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="4529.5" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="87" x="4530.5" y="37.6611">Overview</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="4577" y="58.6143"/><!--cluster primitives--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="382.473,1370.3594,465.473,1370.3594,472.473,1392.6563,1030.47,1392.6563,1030.47,1563.3594,382.473,1563.3594,382.473,1370.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="382.473" x2="472.473" y1="1392.6563" y2="1392.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="77" x="386.473" y="1385.3545">primitives</text><!--cluster OSAL--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="3577.47,887.3594,3625.47,887.3594,3632.47,909.6563,8702.47,909.6563,8702.47,1724.8594,3577.47,1724.8594,3577.47,887.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="3577.47" x2="3632.47" y1="909.6563" y2="909.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="42" x="3581.47" y="902.3545">OSAL</text><!--cluster condition variable--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="4608.47,1068.8594,4754.47,1068.8594,4761.47,1091.1563,5312.47,1091.1563,5312.47,1535.3594,4608.47,1535.3594,4608.47,1068.8594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="4608.47" x2="4761.47" y1="1091.1563" y2="1091.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="140" x="4612.47" y="1083.8545">condition variable</text><!--cluster timer--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="3822.47,1068.8594,3869.47,1068.8594,3876.47,1091.1563,4584.47,1091.1563,4584.47,1522.8594,3822.47,1522.8594,3822.47,1068.8594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="3822.47" x2="3876.47" y1="1091.1563" y2="1091.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="3826.47" y="1083.8545">timer</text><!--cluster thread--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="5336.47,930.3594,5394.47,930.3594,5401.47,952.6563,6405.47,952.6563,6405.47,1567.3594,5336.47,1567.3594,5336.47,930.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5336.47" x2="5401.47" y1="952.6563" y2="952.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="5340.47" y="945.3545">thread</text><!--cluster events--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="6429.47,1075.3594,6489.47,1075.3594,6496.47,1097.6563,8076.47,1097.6563,8076.47,1700.8594,6429.47,1700.8594,6429.47,1075.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="6429.47" x2="6496.47" y1="1097.6563" y2="1097.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="54" x="6433.47" y="1090.3545">events</text><!--cluster middleware--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="880.473,87.3594,978.473,87.3594,985.473,109.6563,3553.47,109.6563,3553.47,1249.3594,880.473,1249.3594,880.473,87.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="880.473" x2="985.473" y1="109.6563" y2="109.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="92" x="884.473" y="102.3545">middleware</text><!--cluster real-time class--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="904.473,463.3594,1025.473,463.3594,1032.473,485.6563,1888.47,485.6563,1888.47,1225.3594,904.473,1225.3594,904.473,463.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="904.473" x2="1032.473" y1="485.6563" y2="485.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="115" x="908.473" y="478.3545">real-time class</text><!--cluster node--><polygon fill="#FFFFFF" filter="url(#f1hivpbyet8yjp)" points="1912.47,722.3594,1958.47,722.3594,1965.47,744.6563,3049.47,744.6563,3049.47,834.3594,1912.47,834.3594,1912.47,722.3594" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="1912.47" x2="1965.47" y1="744.6563" y2="744.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="1916.47" y="737.3545">node</text><!--class urt_delay_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="99.2188" id="urt_delay_t" style="stroke: #A80036; stroke-width: 1.5;" width="100" x="914.473" y="1426.8594"/><ellipse cx="929.473" cy="1442.8594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M930.3168,1449.6094 L927.8636,1449.6094 L927.8636,1439.3594 L924.723,1439.3594 L924.723,1437.2188 L933.4574,1437.2188 L933.4574,1439.3594 L930.3168,1439.3594 L930.3168,1449.6094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="68" x="943.473" y="1447.0137">urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="915.473" x2="1013.473" y1="1458.8594" y2="1458.8594"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="920.473" y="1489.8745">uint32_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="915.473" x2="947.973" y1="1473.2617" y2="1473.2617"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="947.973" y="1476.5698">either</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="980.973" x2="1013.473" y1="1473.2617" y2="1473.2617"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="920.473" y="1519.4839">uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="915.473" x2="958.473" y1="1502.8711" y2="1502.8711"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="958.473" y="1506.1792">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="970.473" x2="1013.473" y1="1502.8711" y2="1502.8711"/><!--class urt_status_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="86.4141" id="urt_status_t" style="stroke: #A80036; stroke-width: 1.5;" width="166" x="713.473" y="1433.3594"/><ellipse cx="755.023" cy="1449.3594" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M759.1324,1455.3594 L751.4136,1455.3594 L751.4136,1442.9688 L759.1324,1442.9688 L759.1324,1445.125 L753.8667,1445.125 L753.8667,1447.7969 L758.6324,1447.7969 L758.6324,1449.9531 L753.8667,1449.9531 L753.8667,1453.2031 L759.1324,1453.2031 L759.1324,1455.3594 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="774.923" y="1453.5137">urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="714.473" x2="878.473" y1="1465.3594" y2="1465.3594"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="119" x="719.473" y="1479.5698">URT_STATUS_OK = 0</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="154" x="719.473" y="1492.3745">URT_STATUS_WARNING = 1</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="144" x="719.473" y="1505.1792">URT_STATUS_ERROR = -1</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="714.473" x2="878.473" y1="1511.7734" y2="1511.7734"/><!--class urt_topicid_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="141.6328" id="urt_topicid_t" style="stroke: #A80036; stroke-width: 1.5;" width="109" x="568.973" y="1405.3594"/><ellipse cx="583.973" cy="1421.3594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M584.8168,1428.1094 L582.3636,1428.1094 L582.3636,1417.8594 L579.223,1417.8594 L579.223,1415.7188 L587.9574,1415.7188 L587.9574,1417.8594 L584.8168,1417.8594 L584.8168,1428.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="597.973" y="1425.5137">urt_topicid_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="569.973" x2="676.973" y1="1437.3594" y2="1437.3594"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="34" x="574.973" y="1451.5698">uin8_t</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="574.973" y="1481.1792">uint16_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="569.973" x2="617.473" y1="1464.5664" y2="1464.5664"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="617.473" y="1467.8745">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="629.473" x2="676.973" y1="1464.5664" y2="1464.5664"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="574.973" y="1510.7886">uint32_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="569.973" x2="617.473" y1="1494.1758" y2="1494.1758"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="617.473" y="1497.4839">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="629.473" x2="676.973" y1="1494.1758" y2="1494.1758"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="574.973" y="1540.3979">uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="569.973" x2="617.473" y1="1523.7852" y2="1523.7852"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="617.473" y="1527.0933">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="629.473" x2="676.973" y1="1523.7852" y2="1523.7852"/><!--class urt_nodestage_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="141.6328" id="urt_nodestage_t" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="398.973" y="1405.3594"/><ellipse cx="413.973" cy="1421.3594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M414.8168,1428.1094 L412.3636,1428.1094 L412.3636,1417.8594 L409.223,1417.8594 L409.223,1415.7188 L417.9574,1415.7188 L417.9574,1417.8594 L414.8168,1417.8594 L414.8168,1428.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="103" x="427.973" y="1425.5137">urt_nodestage_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="399.973" x2="532.973" y1="1437.3594" y2="1437.3594"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="34" x="404.973" y="1451.5698">uin8_t</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="404.973" y="1481.1792">uint16_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="399.973" x2="460.473" y1="1464.5664" y2="1464.5664"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="460.473" y="1467.8745">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="472.473" x2="532.973" y1="1464.5664" y2="1464.5664"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="404.973" y="1510.7886">uint32_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="399.973" x2="460.473" y1="1494.1758" y2="1494.1758"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="460.473" y="1497.4839">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="472.473" x2="532.973" y1="1494.1758" y2="1494.1758"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="45" x="404.973" y="1540.3979">uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="399.973" x2="460.473" y1="1523.7852" y2="1523.7852"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="12" x="460.473" y="1527.0933">or</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="472.473" x2="532.973" y1="1523.7852" y2="1523.7852"/><!--class urt_osTime_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="73.6094" id="urt_osTime_t" style="stroke: #A80036; stroke-width: 1.5;" width="257" x="8428.97" y="1439.3594"/><ellipse cx="8513.72" cy="1455.3594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M8514.5638,1462.1094 L8512.1106,1462.1094 L8512.1106,1451.8594 L8508.97,1451.8594 L8508.97,1449.7188 L8517.7044,1449.7188 L8517.7044,1451.8594 L8514.5638,1451.8594 L8514.5638,1462.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="8534.22" y="1459.5137">urt_osTime_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8429.97" x2="8684.97" y1="1471.3594" y2="1471.3594"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="8429.97" x2="8684.97" y1="1479.3594" y2="1479.3594"/><ellipse cx="8439.97" cy="1491.2617" 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="8448.97" y="1493.5698">urtTime2Us (t : urt_osTime_t*) : uint64_t</text><ellipse cx="8439.97" cy="1504.0664" 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="8448.97" y="1506.3745">urtTimeNow (void) : urt_osTime_t</text><!--class urt_osMutex_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="99.2188" id="urt_osMutex_t" style="stroke: #A80036; stroke-width: 1.5;" width="298" x="8095.47" y="1426.8594"/><ellipse cx="8196.72" cy="1442.8594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M8197.5638,1449.6094 L8195.1106,1449.6094 L8195.1106,1439.3594 L8191.97,1439.3594 L8191.97,1437.2188 L8200.7044,1437.2188 L8200.7044,1439.3594 L8197.5638,1439.3594 L8197.5638,1449.6094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="8217.22" y="1447.0137">urt_osMutex_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8096.47" x2="8392.47" y1="1458.8594" y2="1458.8594"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="8096.47" x2="8392.47" y1="1466.8594" y2="1466.8594"/><ellipse cx="8106.47" cy="1478.7617" 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="8115.47" y="1481.0698">urtMutexInit (mutex : urt_osMutex_t*) : void</text><ellipse cx="8106.47" cy="1491.5664" 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="8115.47" y="1493.8745">urtMutexLock (mutex : urt_osMutex_t*) : void</text><ellipse cx="8106.47" cy="1504.3711" 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="8115.47" y="1506.6792">urtMutexTryLock (mutex : urt_osMutex_t*) : bool</text><ellipse cx="8106.47" cy="1517.1758" 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="8115.47" y="1519.4839">urtMutexUnlock (mutex : urt_osMutex_t*) : void</text><!--class urt_streams--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="73.6094" id="urt_streams" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="3593.97" y="1116.3594"/><ellipse cx="3656.72" cy="1132.3594" fill="#FFFFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3660.9544,1128.125 L3655.6731,1128.125 L3655.6731,1130.7969 L3660.47,1130.7969 L3660.47,1132.9531 L3655.6731,1132.9531 L3655.6731,1138.3594 L3653.2356,1138.3594 L3653.2356,1125.9688 L3660.9544,1125.9688 L3660.9544,1128.125 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="3677.22" y="1136.5137">urt_streams</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3594.97" x2="3801.97" y1="1148.3594" y2="1148.3594"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3594.97" x2="3801.97" y1="1156.3594" y2="1156.3594"/><ellipse cx="3604.97" cy="1168.2617" 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="166" x="3613.97" y="1170.5698">urtPrintf(fmt : char*, ... ) : int</text><ellipse cx="3604.97" cy="1181.0664" 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="183" x="3613.97" y="1183.3745">urtErrPrintf(fmt : char*, ... ) : int</text><!--class urt_condvarStatus_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="86.4141" id="urt_condvarStatus_t" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="4831.47" y="1433.3594"/><ellipse cx="4893.22" cy="1449.3594" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4897.3294,1455.3594 L4889.6106,1455.3594 L4889.6106,1442.9688 L4897.3294,1442.9688 L4897.3294,1445.125 L4892.0638,1445.125 L4892.0638,1447.7969 L4896.8294,1447.7969 L4896.8294,1449.9531 L4892.0638,1449.9531 L4892.0638,1453.2031 L4897.3294,1453.2031 L4897.3294,1455.3594 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="126" x="4913.72" y="1453.5137">urt_condvarStatus_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4832.47" x2="5088.47" y1="1465.3594" y2="1465.3594"/><ellipse cx="4842.47" cy="1477.2617" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="204" x="4851.47" y="1479.5698">URT_CONDVAR_STATUS_SIGNAL = 0</text><ellipse cx="4842.47" cy="1490.0664" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="232" x="4851.47" y="1492.3745">URT_CONDVAR_STATUS_BROADCAST = 1</text><ellipse cx="4842.47" cy="1502.8711" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="213" x="4851.47" y="1505.1792">URT_CONDVAR_STATUS_TIMEOUT = 2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4832.47" x2="5088.47" y1="1511.7734" y2="1511.7734"/><!--class urt_osCondvar_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="99.2188" id="urt_osCondvar_t" style="stroke: #A80036; stroke-width: 1.5;" width="671" x="4624.97" y="1103.8594"/><ellipse cx="4905.72" cy="1119.8594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4906.5638,1126.6094 L4904.1106,1126.6094 L4904.1106,1116.3594 L4900.97,1116.3594 L4900.97,1114.2188 L4909.7044,1114.2188 L4909.7044,1116.3594 L4906.5638,1116.3594 L4906.5638,1126.6094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="4926.22" y="1124.0137">urt_osCondvar_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4625.97" x2="5294.97" y1="1135.8594" y2="1135.8594"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4625.97" x2="5294.97" y1="1143.8594" y2="1143.8594"/><ellipse cx="4635.97" cy="1155.7617" 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="4644.97" y="1158.0698">urtCondvarInit (condvar : urt_osCondvar_t*) : void</text><ellipse cx="4635.97" cy="1168.5664" 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="294" x="4644.97" y="1170.8745">urtConvarSignal (condvar : urt_osCondvar_t*) : void</text><ellipse cx="4635.97" cy="1181.3711" 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="4644.97" y="1183.6792">urtCondvarBroadcast (condvar : urt_osCondvar_t*) : void</text><ellipse cx="4635.97" cy="1194.1758" 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="645" x="4644.97" y="1196.4839">urtCondvarWait (condvar : urt_osCondvar_t*, mutex : urt_osMutex_t*, timeout : urt_delay_t) : urt_condvarStatus_t</text><!--class urt_osTimerCallback_t--><rect fill="#FEFECE" filter="url(#f1hivpbyet8yjp)" height="60.8047" id="urt_osTimerCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="3949.47" y="1445.8594"/><ellipse cx="4020.22" cy="1461.8594" fill="#ADD8E6" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4021.0638,1468.6094 L4018.6106,1468.6094 L4018.6106,1458.3594 L4015.47,1458.3594 L4015.47,1456.2188 L4024.2044,1456.2188 L4024.2044,1458.3594 L4021.0638,1458.3594 L4021.0638,1468.6094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="4040.72&quo