File: statemachine.dot

package info (click to toggle)
swupdate 2025.12%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 10,004 kB
  • sloc: ansic: 66,621; python: 6,291; makefile: 791; sh: 538; javascript: 229
file content (106 lines) | stat: -rw-r--r-- 1,921 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# SPDX-FileCopyrightText: 2022 Stefano Babic <stefano.babic@swupdate.org>
#
# SPDX-License-Identifier: GPL-2.0-only

digraph G {
  ratio="fill";
  size="8.3,11.7!";
  node [fontname = "Handlee"];
  edge [fontname = "Handlee"];

  start [
    label = "System start";
    shape = rect;
    style=filled;
    fillcolor=blue;
  ];
  inccounter [
    label = "bootcounter++";
    shape = rect;
  ];
  bootcounter [
    label = "bootcounter < bootlimit ?";
    shape = diamond;
  ];

  ustate [
    label = "ustate == 1 ?";
    shape = diamond;
  ];
  failed [
    label = "ustate = 3 (FAILED)";
    shape = rect;
  ];
  toggle [
    label = "toggle devices";
    shape = rect;
  ];
  normal [
    label = "normal boot";
    shape = rect;
  ];

  success [
    label = "Success ?";
    shape = diamond;
  ];

  reset [
    label = "System reset";
    shape = rect;
  ];

  rescue [
    label = "Rescue System (ramdisk)";
    shape = rect;
    style=filled;
    fillcolor=red;
  ];

  running [
    label = "OS running";
    shape = rect;
  ];
  running [
    label = "OS running";
    shape = rect;
  ];
  notworking [
    label = "Panic ?\nWatchdog ?\nApp not functional ?";

    shape = diamond;
  ];
  final [
    label = "ustate = 0, bootcounter = 0";
    shape = rect;
  ];
  operational [
    label = "OPERATIONAL";
    shape = oval;
    style=filled;
    fillcolor=green;
  ];
  start -> inccounter;
  inccounter -> bootcounter;
  bootcounter -> ustate [ label = "No" ];
  bootcounter -> normal [ label = "Yes" ];
  ustate:s -> failed [ label = "Yes" ];
  failed -> toggle;
  toggle -> normal;
  normal -> success;
  success -> reset [ label = "No" ];
  success -> running [ label = "Yes" ];
  reset -> start;
  running -> notworking;


  ustate:w -> rescue [ label = "No" ];
  {
    rank=same;
    rescue;
  }

  notworking -> final [ label = "No" ];
  notworking:e -> reset [ label = "Yes"];
  final -> operational;
}