Statistics
| Branch: | Revision:

urtware / doc / statediagrams / general / initialization.uml @ 6ebd2388

History | View | Annotate | Download (1.937 KB)

1 6ebd2388 Thomas Schöpping
/'
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..2018  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
@startuml
23
24
title **µRtWare**\nInitialization\n
25
26
27
28
start
29
fork
30
  fork
31
    partition "urt_core_t" {
32
      note
33
        must be initialized statically
34
        (in startup thread)
35
      endnote
36
      :initialize members;
37
    }
38
  fork again
39
    partition "urt_osThread_t" {
40
      :initialize work area;
41
      note
42
        must be initialized statically
43
        (in preamble / static memory allocation)
44
      endnote
45
      :initialize members;
46
    }
47
  endfork
48
  fork
49
    partition "urt_topic_t" {
50
      :initialize members;
51
      :insert self to topic list;
52
    }
53
    partition "urt_publisher_t" {
54
      :initialize members;
55
      :find topic in topic list;
56
      if (Any messages to contribute?) then (yes)
57
        :lock topic;
58
        :contribute messages;
59
        :unlock topic;
60
      else (no)
61
      endif
62
    }
63
  fork again
64
    partition "urt_node_t" {
65
      :initialize members;
66
      :insert self to node list;
67
    }
68
  endfork
69
fork again
70
  partition "urt_subscriber_t" {
71
    :initialize members;
72
  }
73
fork again
74
  partition "urt_message_t" {
75
    :initialize members;
76
  }
77
endfork
78
stop
79
80
@enduml