Revision ee83a495

View differences:

doc/activitydiagrams/contributemessages.iuml
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
partition "contribute messages" {
23
  fork
24
    :set next pointer of topic's latest message to first message to contribute;
25
  fork again
26
    :set next pointer of last message to contribute to the message after the topic's latest message;
27
  endfork
28
}
29

  
doc/activitydiagrams/core/urtCoreGetService.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="596px" preserveAspectRatio="none" style="width:499px;height:596px;" version="1.1" viewBox="0 0 499 596" width="499px" zoomAndPan="magnify"><defs><filter height="300%" id="f1s3gz6elyl2re" 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="204" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="181" x="158" y="47.6611">urtCoreGetService()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="251.5" y="68.6143"/><path d="M157,72.8594 L157,168.5234 L487,168.5234 L487,82.8594 L477,72.8594 L157,72.8594 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M477,72.8594 L477,82.8594 L487,82.8594 L477,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="258.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="262.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="262.5" y="89.4263">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="101" x="280.5" y="89.4263">: urt_serviceid_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="385.5" x2="487" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="219" x="163" y="105.0591">Identifier of the service to retrieve.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="487" y1="113.125" y2="113.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="487" y1="115.125" y2="115.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="245" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="249" y="129.6919"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="249" y="129.6919">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="298" y="129.6919">: urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="399" x2="487" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="274" x="163" y="145.3247">Returns a pointer to the requested service.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="163" y="160.4575">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="216" y="160.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="252" y="160.4575">if no service matches the given ID.</text><ellipse cx="322" cy="198.5234" fill="#000000" filter="url(#f1s3gz6elyl2re)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="283.5" y="228.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="293.5" y="249.6621">lock core</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="252" y="282.4922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="262" y="303.6309">access first service</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="238" y="393.7808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="248" y="414.9194">proceed to next service</text><polygon fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" points="254,336.4609,390,336.4609,402,349.2656,390,362.0703,254,362.0703,242,349.2656,254,336.4609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="326" y="372.2808">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="254" y="346.6714">Service is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="336" y="346.6714">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="254" y="359.4761">and service ID is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="228" y="346.6714">no</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="275.5" y="469.7495"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="285.5" y="490.8882">unlock core</text><polygon fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" points="252,523.7183,392,523.7183,404,536.5229,392,549.3276,252,549.3276,240,536.5229,252,523.7183" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="252" y="533.9287">Service is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="334" y="533.9287">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="252" y="546.7334">and service ID matches?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="220" y="533.9287">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="404" y="533.9287">no</text><path d="M10,559.3276 L10,584.4604 A0,0 0 0 0 10,584.4604 L199,584.4604 A0,0 0 0 0 199,584.4604 L199,577.3276 L219,571.894 L199,569.3276 L199,569.3276 L189,559.3276 L10,559.3276 A0,0 0 0 0 10,559.3276 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M189,559.3276 L189,569.3276 L199,569.3276 L189,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="16" y="576.3945">Returns pointer to service.</text><ellipse cx="230" cy="571.894" fill="#FFFFFF" filter="url(#f1s3gz6elyl2re)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="230" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M273,559.3276 L273,584.4604 A0,0 0 0 0 273,584.4604 L383,584.4604 A0,0 0 0 0 383,584.4604 L383,577.3276 L403,571.894 L383,569.3276 L383,569.3276 L373,559.3276 L273,559.3276 A0,0 0 0 0 273,559.3276 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M373,559.3276 L373,569.3276 L383,569.3276 L373,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="279" y="576.3945">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="332" y="576.3945">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="364" y="576.3945">.</text><ellipse cx="414" cy="571.894" fill="#FFFFFF" filter="url(#f1s3gz6elyl2re)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="414" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="168.5234" y2="188.5234"/><polygon fill="#A80036" points="318,178.5234,322,188.5234,326,178.5234,322,182.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="208.5234" y2="228.5234"/><polygon fill="#A80036" points="318,218.5234,322,228.5234,326,218.5234,322,222.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="262.4922" y2="282.4922"/><polygon fill="#A80036" points="318,272.4922,322,282.4922,326,272.4922,322,276.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="362.0703" y2="393.7808"/><polygon fill="#A80036" points="318,383.7808,322,393.7808,326,383.7808,322,387.7808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="427.7495" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="418" y1="437.7495" y2="437.7495"/><polygon fill="#A80036" points="414,401.9604,418,391.9604,422,401.9604,418,397.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="418" x2="418" y1="349.2656" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="418" x2="402" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="412,345.2656,402,349.2656,412,353.2656,408,349.2656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="242" x2="226" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="222,387.9604,226,397.9604,230,387.9604,226,391.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="226" x2="226" y1="349.2656" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="226" x2="322" y1="449.7495" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="449.7495" y2="469.7495"/><polygon fill="#A80036" points="318,459.7495,322,469.7495,326,459.7495,322,463.7495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="316.4609" y2="336.4609"/><polygon fill="#A80036" points="318,326.4609,322,336.4609,326,326.4609,322,330.4609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="230" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="230" x2="230" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="226,550.894,230,560.894,234,550.894,230,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="404" x2="414" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="414" x2="414" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="410,550.894,414,560.894,418,550.894,414,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="503.7183" y2="523.7183"/><polygon fill="#A80036" points="318,513.7183,322,523.7183,326,513.7183,322,517.7183" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7678d951c90c7df700bc271ce4fad75f]
2
@startuml
3

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

  
6

  
7
note
8
  - - **id** : urt_serviceid_t - -
9
  Identifier of the service to retrieve.
10
  ====
11
  - - **return** : urt_service_t* - -
12
  Returns a pointer to the requested service.
13
  Returns ""NULL"" if no service matches the given ID.
14
endnote
15

  
16

  
17
start
18
:lock core;
19
:access first service;
20
while (Service is not ""NULL""\nand service ID is lower?) is (yes)
21
  :proceed to next service;
22
endwhile (no)
23
:unlock core;
24
if (Service is not ""NULL""\nand service ID matches?) then (yes)
25
  stop
26
  note
27
    Returns pointer to service.
28
  endnote
29
else (no)
30
  stop
31
  note
32
    Returns ""NULL"".
33
  endnote
34
endif
35

  
36

  
37
@enduml
38

  
39
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
40
(GPL source distribution)
41
Java Runtime: OpenJDK Runtime Environment
42
JVM: OpenJDK 64-Bit Server VM
43
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
44
Operating System: Linux
45
Default Encoding: UTF-8
46
Language: en
47
Country: US
48
--></g></svg>
doc/activitydiagrams/core/urtCoreGetService.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**\nurtCoreGetService()\n
27

  
28
/'### PARAMETERS & RETURN ####################################################'/
29

  
30
note
31
  -- **id** : urt_serviceid_t --
32
  Identifier of the service to retrieve.
33
  ====
34
  -- **return** : urt_service_t* --
35
  Returns a pointer to the requested service.
36
  Returns ""NULL"" if no service matches the given ID.
37
endnote
38

  
39
/'### PROCEDURE ##############################################################'/
40

  
41
start
42
:lock core;
43
:access first service;
44
while (Service is not ""NULL""\nand service ID is lower?) is (yes)
45
  :proceed to next service;
46
endwhile (no)
47
:unlock core;
48
if (Service is not ""NULL""\nand service ID matches?) then (yes)
49
  stop
50
  note
51
    Returns pointer to service.
52
  endnote
53
else (no)
54
  stop
55
  note
56
    Returns ""NULL"".
57
  endnote
58
endif
59

  
60
/'### OUTRO ##################################################################'/
61

  
62
@enduml
doc/activitydiagrams/core/urtCoreGetTopic.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="596px" preserveAspectRatio="none" style="width:472px;height:596px;" version="1.1" viewBox="0 0 472 596" width="472px" zoomAndPan="magnify"><defs><filter height="300%" id="fsrkmh5myir7y" 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="190.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="163" x="153.5" y="47.6611">urtCoreGetTopic()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="238" y="68.6143"/><path d="M144,72.8594 L144,168.5234 L460,168.5234 L460,82.8594 L450,72.8594 L144,72.8594 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M450,72.8594 L450,82.8594 L460,82.8594 L450,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="245.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="249.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="249.5" y="89.4263">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="87" x="267.5" y="89.4263">: urt_topicid_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="358.5" x2="460" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="205" x="150" y="105.0591">Identifier of the topic to retrieve.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="460" y1="113.125" y2="113.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="460" y1="115.125" y2="115.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="232" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="236" y="129.6919"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="236" y="129.6919">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="285" y="129.6919">: urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="372" x2="460" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="260" x="150" y="145.3247">Returns a pointer to the requested topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="150" y="160.4575">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="203" y="160.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="206" x="239" y="160.4575">if no topic matches the given ID.</text><ellipse cx="302" cy="198.5234" fill="#000000" filter="url(#fsrkmh5myir7y)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="263.5" y="228.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="273.5" y="249.6621">lock core</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="238.5" y="282.4922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="107" x="248.5" y="303.6309">access first topic</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="224.5" y="393.7808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="234.5" y="414.9194">proceed to next topic</text><polygon fill="#FEFECE" filter="url(#fsrkmh5myir7y)" points="241,336.4609,363,336.4609,375,349.2656,363,362.0703,241,362.0703,229,349.2656,241,336.4609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="306" y="372.2808">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="241" y="346.6714">Topic ist not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="315" y="346.6714">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="241" y="359.4761">and topic ID is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="215" y="346.6714">no</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="255.5" y="469.7495"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="265.5" y="490.8882">unlock core</text><polygon fill="#FEFECE" filter="url(#fsrkmh5myir7y)" points="239,523.7183,365,523.7183,377,536.5229,365,549.3276,239,549.3276,227,536.5229,239,523.7183" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="239" y="533.9287">Topic is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="309" y="533.9287">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="126" x="239" y="546.7334">and topic ID matches?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="207" y="533.9287">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="377" y="533.9287">no</text><path d="M10,559.3276 L10,584.4604 A0,0 0 0 0 10,584.4604 L185,584.4604 A0,0 0 0 0 185,584.4604 L185,577.3276 L205,571.894 L185,569.3276 L185,569.3276 L175,559.3276 L10,559.3276 A0,0 0 0 0 10,559.3276 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M175,559.3276 L175,569.3276 L185,569.3276 L175,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="16" y="576.3945">Returns pointer to topic.</text><ellipse cx="216" cy="571.894" fill="#FFFFFF" filter="url(#fsrkmh5myir7y)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="216" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M247,559.3276 L247,584.4604 A0,0 0 0 0 247,584.4604 L357,584.4604 A0,0 0 0 0 357,584.4604 L357,577.3276 L377,571.894 L357,569.3276 L357,569.3276 L347,559.3276 L247,559.3276 A0,0 0 0 0 247,559.3276 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M347,559.3276 L347,569.3276 L357,569.3276 L347,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="253" y="576.3945">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="306" y="576.3945">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="338" y="576.3945">.</text><ellipse cx="388" cy="571.894" fill="#FFFFFF" filter="url(#fsrkmh5myir7y)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="388" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="168.5234" y2="188.5234"/><polygon fill="#A80036" points="298,178.5234,302,188.5234,306,178.5234,302,182.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="208.5234" y2="228.5234"/><polygon fill="#A80036" points="298,218.5234,302,228.5234,306,218.5234,302,222.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="262.4922" y2="282.4922"/><polygon fill="#A80036" points="298,272.4922,302,282.4922,306,272.4922,302,276.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="362.0703" y2="393.7808"/><polygon fill="#A80036" points="298,383.7808,302,393.7808,306,383.7808,302,387.7808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="427.7495" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="391.5" y1="437.7495" y2="437.7495"/><polygon fill="#A80036" points="387.5,401.9604,391.5,391.9604,395.5,401.9604,391.5,397.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.5" x2="391.5" y1="349.2656" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.5" x2="375" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="385,345.2656,375,349.2656,385,353.2656,381,349.2656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="229" x2="212.5" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="208.5,387.9604,212.5,397.9604,216.5,387.9604,212.5,391.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="212.5" x2="212.5" y1="349.2656" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="212.5" x2="302" y1="449.7495" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="449.7495" y2="469.7495"/><polygon fill="#A80036" points="298,459.7495,302,469.7495,306,459.7495,302,463.7495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="316.4609" y2="336.4609"/><polygon fill="#A80036" points="298,326.4609,302,336.4609,306,326.4609,302,330.4609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="227" x2="216" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="216" x2="216" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="212,550.894,216,560.894,220,550.894,216,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="377" x2="388" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="388" x2="388" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="384,550.894,388,560.894,392,550.894,388,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="503.7183" y2="523.7183"/><polygon fill="#A80036" points="298,513.7183,302,523.7183,306,513.7183,302,517.7183" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e10488ce6407e6aad5cae1b04658f332]
2
@startuml
3

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

  
6

  
7
note
8
  - - **id** : urt_topicid_t - -
9
  Identifier of the topic to retrieve.
10
  ====
11
  - - **return** : urt_topic_t* - -
12
  Returns a pointer to the requested topic.
13
  Returns ""NULL"" if no topic matches the given ID.
14
endnote
15

  
16

  
17
start
18
:lock core;
19
:access first topic;
20
while (Topic ist not ""NULL""\nand topic ID is lower?) is (yes)
21
  :proceed to next topic;
22
endwhile (no)
23
:unlock core;
24
if (Topic is not ""NULL""\nand topic ID matches?) then (yes)
25
  stop
26
  note
27
    Returns pointer to topic.
28
  endnote
29
else (no)
30
  stop
31
  note
32
    Returns ""NULL"".
33
  endnote
34
endif
35

  
36

  
37
@enduml
38

  
39
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
40
(GPL source distribution)
41
Java Runtime: OpenJDK Runtime Environment
42
JVM: OpenJDK 64-Bit Server VM
43
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
44
Operating System: Linux
45
Default Encoding: UTF-8
46
Language: en
47
Country: US
48
--></g></svg>
doc/activitydiagrams/core/urtCoreGetTopic.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**\nurtCoreGetTopic()\n
27

  
28
/'### PARAMETERS & RETURN ####################################################'/
29

  
30
note
31
  -- **id** : urt_topicid_t --
32
  Identifier of the topic to retrieve.
33
  ====
34
  -- **return** : urt_topic_t* --
35
  Returns a pointer to the requested topic.
36
  Returns ""NULL"" if no topic matches the given ID.
37
endnote
38

  
39
/'### PROCEDURE ##############################################################'/
40

  
41
start
42
:lock core;
43
:access first topic;
44
while (Topic ist not ""NULL""\nand topic ID is lower?) is (yes)
45
  :proceed to next topic;
46
endwhile (no)
47
:unlock core;
48
if (Topic is not ""NULL""\nand topic ID matches?) then (yes)
49
  stop
50
  note
51
    Returns pointer to topic.
52
  endnote
53
else (no)
54
  stop
55
  note
56
    Returns ""NULL"".
57
  endnote
58
endif
59

  
60
/'### OUTRO ##################################################################'/
61

  
62
@enduml
doc/activitydiagrams/core/urtCoreInit.svg
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg&q