summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2022-09-16 19:02:16 +0200
committerJaroslav Kysela <perex@perex.cz>2022-09-16 19:02:16 +0200
commit595115758be25e7c17c9e843eb0e418848b99a82 (patch)
tree63cd7abf71cd88552e97d7600b1acb104bbc8045
parent0222f45d11e8b71bf651b985b00fdb0addbf3eed (diff)
downloadalsa-lib-595115758be25e7c17c9e843eb0e418848b99a82.tar.gz
doc: ucm - add sequence graphs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--doc/pictures/Makefile.am10
-rw-r--r--doc/pictures/ucm-seq-boot.puml17
-rw-r--r--doc/pictures/ucm-seq-boot.svg27
-rw-r--r--doc/pictures/ucm-seq-device.puml26
-rw-r--r--doc/pictures/ucm-seq-device.svg36
-rw-r--r--doc/pictures/ucm-seq-verb.puml30
-rw-r--r--doc/pictures/ucm-seq-verb.svg40
-rw-r--r--src/ucm/ucm_confdoc.h7
8 files changed, 192 insertions, 1 deletions
diff --git a/doc/pictures/Makefile.am b/doc/pictures/Makefile.am
index 17b6e12d..df3128bd 100644
--- a/doc/pictures/Makefile.am
+++ b/doc/pictures/Makefile.am
@@ -1 +1,9 @@
-EXTRA_DIST=wave1.gif wave2.gif
+GIT_FILES=$(wildcard *.gif)
+PUML_FILES=$(wildcard *.puml)
+SVG_FILES=$(PUML_FILES:.puml=.svg)
+EXTRA_DIST=$(GIT_FILES) $(PUML_FILES) $(SVG_FILES)
+
+all: $(SVG_FILES)
+
+.puml.svg:
+ plantuml -tsvg $<
diff --git a/doc/pictures/ucm-seq-boot.puml b/doc/pictures/ucm-seq-boot.puml
new file mode 100644
index 00000000..3b797280
--- /dev/null
+++ b/doc/pictures/ucm-seq-boot.puml
@@ -0,0 +1,17 @@
+@startuml
+title "UCM sequence boot order (using udev and alsactl)"
+
+start
+:Sound card detected (udev);
+:UCM: FixedBootSequence;
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+ :UCM: BootSequence;
+else (present)
+ :alsactl: Restore state (from asound.state);
+endif
+:Standard sound card use (with or without UCM);
+:Save sound card state (asound.state);
+:Sound card detached;
+stop
+
+@enduml
diff --git a/doc/pictures/ucm-seq-boot.svg b/doc/pictures/ucm-seq-boot.svg
new file mode 100644
index 00000000..867c817e
--- /dev/null
+++ b/doc/pictures/ucm-seq-boot.svg
@@ -0,0 +1,27 @@
+<?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" contentStyleType="text/css" height="508px" preserveAspectRatio="none" style="width:500px;height:508px;background:#FFFFFF;" version="1.1" viewBox="0 0 500 508" width="500px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="411" x="43" y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="401" x="48" y="32.9951">UCM sequence boot order (using udev and alsactl)</text><ellipse cx="215.5" cy="57.2969" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="197" x="117" y="87.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="177" x="127" y="108.4355">Sound card detected (udev)</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="179" x="126" y="141.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="159" x="136" y="162.4043">UCM: FixedBootSequence</text><polygon fill="#F1F1F1" points="106.5,195.2344,324.5,195.2344,336.5,207.2344,324.5,219.2344,106.5,219.2344,94.5,207.2344,106.5,195.2344" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="218" x="106.5" y="211.0425">Card state (/var/lib/alsa/asound.state)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" x="28.5" y="204.6401">not present</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" x="336.5" y="204.6401">present</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="147" x="11" y="229.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="127" x="21" y="250.373">UCM: BootSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="285" x="204" y="229.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="265" x="214" y="250.373">alsactl: Restore state (from asound.state)</text><polygon fill="#F1F1F1" points="215.5,269.2031,227.5,281.2031,215.5,293.2031,203.5,281.2031,215.5,269.2031" style="stroke:#181818;stroke-width:0.5;"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="317" x="57" y="313.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="297" x="67" y="334.3418">Standard sound card use (with or without UCM)</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="260" x="85.5" y="367.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="240" x="95.5" y="388.3105">Save sound card state (asound.state)</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="156" x="137.5" y="421.1406"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="136" x="147.5" y="442.2793">Sound card detached</text><ellipse cx="215.5" cy="486.1094" rx="11" ry="11" style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="215.5" cy="486.1094" fill="#222222" rx="6" ry="6" style="stroke:#111111;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="67.2969" y2="87.2969"/><polygon fill="#181818" points="211.5,77.2969,215.5,87.2969,219.5,77.2969,215.5,81.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="121.2656" y2="141.2656"/><polygon fill="#181818" points="211.5,131.2656,215.5,141.2656,219.5,131.2656,215.5,135.2656" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="94.5" x2="84.5" y1="207.2344" y2="207.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="84.5" y1="207.2344" y2="229.2344"/><polygon fill="#181818" points="80.5,219.2344,84.5,229.2344,88.5,219.2344,84.5,223.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="336.5" x2="346.5" y1="207.2344" y2="207.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" x2="346.5" y1="207.2344" y2="229.2344"/><polygon fill="#181818" points="342.5,219.2344,346.5,229.2344,350.5,219.2344,346.5,223.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="84.5" y1="263.2031" y2="281.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="84.5" x2="203.5" y1="281.2031" y2="281.2031"/><polygon fill="#181818" points="193.5,277.2031,203.5,281.2031,193.5,285.2031,197.5,281.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" x2="346.5" y1="263.2031" y2="281.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="346.5" x2="227.5" y1="281.2031" y2="281.2031"/><polygon fill="#181818" points="237.5,277.2031,227.5,281.2031,237.5,285.2031,233.5,281.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="175.2344" y2="195.2344"/><polygon fill="#181818" points="211.5,185.2344,215.5,195.2344,219.5,185.2344,215.5,189.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="293.2031" y2="313.2031"/><polygon fill="#181818" points="211.5,303.2031,215.5,313.2031,219.5,303.2031,215.5,307.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="347.1719" y2="367.1719"/><polygon fill="#181818" points="211.5,357.1719,215.5,367.1719,219.5,357.1719,215.5,361.1719" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="401.1406" y2="421.1406"/><polygon fill="#181818" points="211.5,411.1406,215.5,421.1406,219.5,411.1406,215.5,415.1406" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="215.5" x2="215.5" y1="455.1094" y2="475.1094"/><polygon fill="#181818" points="211.5,465.1094,215.5,475.1094,219.5,465.1094,215.5,469.1094" style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[e09ca9f4b18fe6c64001e568b14569ed]
+@startuml
+title "UCM sequence boot order (using udev and alsactl)"
+
+start
+:Sound card detected (udev);
+:UCM: FixedBootSequence;
+if (Card state (/var/lib/alsa/asound.state)) then (not present)
+ :UCM: BootSequence;
+else (present)
+ :alsactl: Restore state (from asound.state);
+endif
+:Standard sound card use (with or without UCM);
+:Save sound card state (asound.state);
+:Sound card detached;
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg> \ No newline at end of file
diff --git a/doc/pictures/ucm-seq-device.puml b/doc/pictures/ucm-seq-device.puml
new file mode 100644
index 00000000..a1c3f8cd
--- /dev/null
+++ b/doc/pictures/ucm-seq-device.puml
@@ -0,0 +1,26 @@
+@startuml
+title "UCM device sequence graph"
+
+start
+split
+ :Enable device;
+ :EnableSequence;
+ :Use device;
+ :Disable device;
+ :DisableSequence;
+split again
+ :Switch device;
+ :Disable old device;
+ if (TransitionSequence) then (present)
+ :TransitionSequence;
+ :Enable new device;
+ else (not present)
+ :Disable old device;
+ :DisableSequence;
+ :Enable new device;
+ :EnableSequence;
+ endif
+end split
+stop
+
+@enduml
diff --git a/doc/pictures/ucm-seq-device.svg b/doc/pictures/ucm-seq-device.svg
new file mode 100644
index 00000000..fff208dc
--- /dev/null
+++ b/doc/pictures/ucm-seq-device.svg
@@ -0,0 +1,36 @@
+<?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" contentStyleType="text/css" height="598px" preserveAspectRatio="none" style="width:462px;height:598px;background:#FFFFFF;" version="1.1" viewBox="0 0 462 598" width="462px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="236" x="111.5" y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="226" x="116.5" y="32.9951">UCM device sequence graph</text><ellipse cx="222" cy="57.2969" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.5;" x1="75.5" x2="302.75" y1="87.2969" y2="87.2969"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="107" x="22" y="161.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="87" x="32" y="182.4043">Enable device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" x="12.5" y="217.7188"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="106" x="22.5" y="238.8574">EnableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="88" x="31.5" y="286.6875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="68" x="41.5" y="307.8262">Use device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="110" x="20.5" y="355.6563"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="90" x="30.5" y="376.7949">Disable device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="11" y="424.625"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109" x="21" y="445.7637">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="104" x="250.75" y="107.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="84" x="260.75" y="128.4355">Switch device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="236.25" y="163.75"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="113" x="246.25" y="184.8887">Disable old device</text><polygon fill="#F1F1F1" points="246.25,220.2031,359.25,220.2031,371.25,232.2031,359.25,244.2031,246.25,244.2031,234.25,232.2031,246.25,220.2031" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="113" x="246.25" y="236.0112">TransitionSequence</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" x="190.25" y="229.6089">present</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" x="371.25" y="229.6089">not present</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="145" x="150" y="254.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="125" x="160" y="275.3418">TransitionSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="136" x="154.5" y="323.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="116" x="164.5" y="344.3105">Enable new device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="133" x="316.5" y="254.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="113" x="326.5" y="275.3418">Disable old device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="318.5" y="323.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109" x="328.5" y="344.3105">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="136" x="315" y="392.1406"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="116" x="325" y="413.2793">Enable new device</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" x="320" y="461.1094"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="106" x="330" y="482.248">EnableSequence</text><polygon fill="#F1F1F1" points="302.75,501.0781,314.75,513.0781,302.75,525.0781,290.75,513.0781,302.75,501.0781" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:1.5;" x1="75.5" x2="302.75" y1="545.0781" y2="545.0781"/><ellipse cx="222" cy="576.0781" rx="11" ry="11" style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="222" cy="576.0781" fill="#222222" rx="6" ry="6" style="stroke:#111111;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="195.2344" y2="217.7188"/><polygon fill="#181818" points="71.5,207.7188,75.5,217.7188,79.5,207.7188,75.5,211.7188" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="251.6875" y2="286.6875"/><polygon fill="#181818" points="71.5,276.6875,75.5,286.6875,79.5,276.6875,75.5,280.6875" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="320.6563" y2="355.6563"/><polygon fill="#181818" points="71.5,345.6563,75.5,355.6563,79.5,345.6563,75.5,349.6563" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="389.625" y2="424.625"/><polygon fill="#181818" points="71.5,414.625,75.5,424.625,79.5,414.625,75.5,418.625" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="141.2656" y2="163.75"/><polygon fill="#181818" points="298.75,153.75,302.75,163.75,306.75,153.75,302.75,157.75" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="222.5" y1="288.1719" y2="323.1719"/><polygon fill="#181818" points="218.5,313.1719,222.5,323.1719,226.5,313.1719,222.5,317.1719" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="288.1719" y2="323.1719"/><polygon fill="#181818" points="379,313.1719,383,323.1719,387,313.1719,383,317.1719" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="357.1406" y2="392.1406"/><polygon fill="#181818" points="379,382.1406,383,392.1406,387,382.1406,383,386.1406" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="426.1094" y2="461.1094"/><polygon fill="#181818" points="379,451.1094,383,461.1094,387,451.1094,383,455.1094" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="234.25" x2="222.5" y1="232.2031" y2="232.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="222.5" y1="232.2031" y2="254.2031"/><polygon fill="#181818" points="218.5,244.2031,222.5,254.2031,226.5,244.2031,222.5,248.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="371.25" x2="383" y1="232.2031" y2="232.2031"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="232.2031" y2="254.2031"/><polygon fill="#181818" points="379,244.2031,383,254.2031,387,244.2031,383,248.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="222.5" y1="357.1406" y2="513.0781"/><line style="stroke:#181818;stroke-width:1.0;" x1="222.5" x2="290.75" y1="513.0781" y2="513.0781"/><polygon fill="#181818" points="280.75,509.0781,290.75,513.0781,280.75,517.0781,284.75,513.0781" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="383" y1="495.0781" y2="513.0781"/><line style="stroke:#181818;stroke-width:1.0;" x1="383" x2="314.75" y1="513.0781" y2="513.0781"/><polygon fill="#181818" points="324.75,509.0781,314.75,513.0781,324.75,517.0781,320.75,513.0781" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="197.7188" y2="220.2031"/><polygon fill="#181818" points="298.75,210.2031,302.75,220.2031,306.75,210.2031,302.75,214.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="88.7969" y2="161.2656"/><polygon fill="#181818" points="71.5,151.2656,75.5,161.2656,79.5,151.2656,75.5,155.2656" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="88.7969" y2="107.2969"/><polygon fill="#181818" points="298.75,97.2969,302.75,107.2969,306.75,97.2969,302.75,101.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75.5" x2="75.5" y1="458.5938" y2="545.0781"/><polygon fill="#181818" points="71.5,535.0781,75.5,545.0781,79.5,535.0781,75.5,539.0781" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="302.75" x2="302.75" y1="525.0781" y2="545.0781"/><polygon fill="#181818" points="298.75,535.0781,302.75,545.0781,306.75,535.0781,302.75,539.0781" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="222" x2="222" y1="67.2969" y2="87.2969"/><polygon fill="#181818" points="218,77.2969,222,87.2969,226,77.2969,222,81.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="222" x2="222" y1="546.5781" y2="565.0781"/><polygon fill="#181818" points="218,555.0781,222,565.0781,226,555.0781,222,559.0781" style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[9943065c368326033cbbfb71ee762752]
+@startuml
+title "UCM device sequence graph"
+
+start
+split
+ :Enable device;
+ :EnableSequence;
+ :Use device;
+ :Disable device;
+ :DisableSequence;
+split again
+ :Switch device;
+ :Disable old device;
+ if (TransitionSequence) then (present)
+ :TransitionSequence;
+ :Enable new device;
+ else (not present)
+ :Disable old device;
+ :DisableSequence;
+ :Enable new device;
+ :EnableSequence;
+ endif
+end split
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg> \ No newline at end of file
diff --git a/doc/pictures/ucm-seq-verb.puml b/doc/pictures/ucm-seq-verb.puml
new file mode 100644
index 00000000..e0e54805
--- /dev/null
+++ b/doc/pictures/ucm-seq-verb.puml
@@ -0,0 +1,30 @@
+@startuml
+title "UCM verb sequence graph"
+
+
+start
+split
+ :Enable verb;
+ :SectionDefaults sequence;
+ :EnableSequence;
+
+ :Enable, use and disable verb devices;
+
+ :Disable verb;
+ :DisableSequence;
+split again
+ :Switch verb;
+ :Disable old verb;
+ if (TransitionSequence) then (present)
+ :TransitionSequence;
+ :Enable new verb;
+ else (not present)
+ :Disable old verb;
+ :DisableSequence;
+ :Enable new verb;
+ :EnableSequence;
+ endif
+end split
+stop
+
+@enduml
diff --git a/doc/pictures/ucm-seq-verb.svg b/doc/pictures/ucm-seq-verb.svg
new file mode 100644
index 00000000..82eb9da6
--- /dev/null
+++ b/doc/pictures/ucm-seq-verb.svg
@@ -0,0 +1,40 @@
+<?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" contentStyleType="text/css" height="584px" preserveAspectRatio="none" style="width:583px;height:584px;background:#FFFFFF;" version="1.1" viewBox="0 0 583 584" width="583px" zoomAndPan="magnify"><defs/><g><rect height="26.2969" style="stroke:#00000000;stroke-width:1.0;fill:none;" width="220" x="180.25" y="15"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="210" x="185.25" y="32.9951">UCM verb sequence graph</text><ellipse cx="285" cy="57.2969" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.5;" x1="137.5" x2="429.5" y1="87.2969" y2="87.2969"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="94" x="90.5" y="139.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="74" x="100.5" y="160.4355">Enable verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="185" x="45" y="208.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="165" x="55" y="229.4043">SectionDefaults sequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" x="74.5" y="277.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="106" x="84.5" y="298.373">EnableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="253" x="11" y="333.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="233" x="21" y="354.3418">Enable, use and disable verb devices</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="97" x="89" y="389.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="77" x="99" y="410.3105">Disable verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="73" y="445.1406"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109" x="83" y="466.2793">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="91" x="384" y="107.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="71" x="394" y="128.4355">Switch verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="369.5" y="176.2656"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="100" x="379.5" y="197.4043">Disable old verb</text><polygon fill="#F1F1F1" points="373,245.2344,486,245.2344,498,257.2344,486,269.2344,373,269.2344,361,257.2344,373,245.2344" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="113" x="373" y="261.0425">TransitionSequence</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="44" x="317" y="254.6401">present</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" x="498" y="254.6401">not present</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="145" x="278.5" y="279.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="125" x="288.5" y="300.373">TransitionSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="123" x="289.5" y="335.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="103" x="299.5" y="356.3418">Enable new verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="120" x="448" y="279.2344"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="100" x="458" y="300.373">Disable old verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="129" x="443.5" y="335.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109" x="453.5" y="356.3418">DisableSequence</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="123" x="446.5" y="391.1719"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="103" x="456.5" y="412.3105">Enable new verb</text><rect fill="#F1F1F1" height="33.9688" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="126" x="445" y="447.1406"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="106" x="455" y="468.2793">EnableSequence</text><polygon fill="#F1F1F1" points="429.5,487.1094,441.5,499.1094,429.5,511.1094,417.5,499.1094,429.5,487.1094" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:1.5;" x1="137.5" x2="429.5" y1="531.1094" y2="531.1094"/><ellipse cx="285" cy="562.1094" rx="11" ry="11" style="stroke:#222222;stroke-width:1.0;fill:none;"/><ellipse cx="285" cy="562.1094" fill="#222222" rx="6" ry="6" style="stroke:#111111;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="173.2656" y2="208.2656"/><polygon fill="#181818" points="133.5,198.2656,137.5,208.2656,141.5,198.2656,137.5,202.2656" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="242.2344" y2="277.2344"/><polygon fill="#181818" points="133.5,267.2344,137.5,277.2344,141.5,267.2344,137.5,271.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="311.2031" y2="333.2031"/><polygon fill="#181818" points="133.5,323.2031,137.5,333.2031,141.5,323.2031,137.5,327.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="367.1719" y2="389.1719"/><polygon fill="#181818" points="133.5,379.1719,137.5,389.1719,141.5,379.1719,137.5,383.1719" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="423.1406" y2="445.1406"/><polygon fill="#181818" points="133.5,435.1406,137.5,445.1406,141.5,435.1406,137.5,439.1406" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="141.2656" y2="176.2656"/><polygon fill="#181818" points="425.5,166.2656,429.5,176.2656,433.5,166.2656,429.5,170.2656" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" y1="313.2031" y2="335.2031"/><polygon fill="#181818" points="347,325.2031,351,335.2031,355,325.2031,351,329.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="313.2031" y2="335.2031"/><polygon fill="#181818" points="504,325.2031,508,335.2031,512,325.2031,508,329.2031" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="369.1719" y2="391.1719"/><polygon fill="#181818" points="504,381.1719,508,391.1719,512,381.1719,508,385.1719" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="425.1406" y2="447.1406"/><polygon fill="#181818" points="504,437.1406,508,447.1406,512,437.1406,508,441.1406" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="361" x2="351" y1="257.2344" y2="257.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" y1="257.2344" y2="279.2344"/><polygon fill="#181818" points="347,269.2344,351,279.2344,355,269.2344,351,273.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="498" x2="508" y1="257.2344" y2="257.2344"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="257.2344" y2="279.2344"/><polygon fill="#181818" points="504,269.2344,508,279.2344,512,269.2344,508,273.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" x2="351" y1="369.1719" y2="499.1094"/><line style="stroke:#181818;stroke-width:1.0;" x1="351" x2="417.5" y1="499.1094" y2="499.1094"/><polygon fill="#181818" points="407.5,495.1094,417.5,499.1094,407.5,503.1094,411.5,499.1094" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="508" y1="481.1094" y2="499.1094"/><line style="stroke:#181818;stroke-width:1.0;" x1="508" x2="441.5" y1="499.1094" y2="499.1094"/><polygon fill="#181818" points="451.5,495.1094,441.5,499.1094,451.5,503.1094,447.5,499.1094" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="210.2344" y2="245.2344"/><polygon fill="#181818" points="425.5,235.2344,429.5,245.2344,433.5,235.2344,429.5,239.2344" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="88.7969" y2="139.2969"/><polygon fill="#181818" points="133.5,129.2969,137.5,139.2969,141.5,129.2969,137.5,133.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="88.7969" y2="107.2969"/><polygon fill="#181818" points="425.5,97.2969,429.5,107.2969,433.5,97.2969,429.5,101.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="137.5" x2="137.5" y1="479.1094" y2="531.1094"/><polygon fill="#181818" points="133.5,521.1094,137.5,531.1094,141.5,521.1094,137.5,525.1094" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="429.5" x2="429.5" y1="511.1094" y2="531.1094"/><polygon fill="#181818" points="425.5,521.1094,429.5,531.1094,433.5,521.1094,429.5,525.1094" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="285" x2="285" y1="67.2969" y2="87.2969"/><polygon fill="#181818" points="281,77.2969,285,87.2969,289,77.2969,285,81.2969" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="285" x2="285" y1="532.6094" y2="551.1094"/><polygon fill="#181818" points="281,541.1094,285,551.1094,289,541.1094,285,545.1094" style="stroke:#181818;stroke-width:1.0;"/><!--MD5=[b20d35c68d0851020e52c93753caf6f4]
+@startuml
+title "UCM verb sequence graph"
+
+
+start
+split
+ :Enable verb;
+ :SectionDefaults sequence;
+ :EnableSequence;
+
+ :Enable, use and disable verb devices;
+
+ :Disable verb;
+ :DisableSequence;
+split again
+ :Switch verb;
+ :Disable old verb;
+ if (TransitionSequence) then (present)
+ :TransitionSequence;
+ :Enable new verb;
+ else (not present)
+ :Disable old verb;
+ :DisableSequence;
+ :Enable new verb;
+ :EnableSequence;
+ endif
+end split
+stop
+
+@enduml
+
+PlantUML version 1.2022.5(Sat Apr 30 12:55:52 CEST 2022)
+(LGPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: cs
+Country: CZ
+--></g></svg> \ No newline at end of file
diff --git a/src/ucm/ucm_confdoc.h b/src/ucm/ucm_confdoc.h
index 27ec722e..cf928c67 100644
--- a/src/ucm/ucm_confdoc.h
+++ b/src/ucm/ucm_confdoc.h
@@ -218,6 +218,11 @@ SectionModifier."Capture Voice" {
}
~~~
+### Sequence graphs
+
+\image html ucm-seq-verb.svg
+\image html ucm-seq-device.svg
+
### Sequence commands
Command name | Description
@@ -278,6 +283,8 @@ configuration like volumes or switches. The alsactl ensures the persistency (sto
the state of the controls to the /var tree and loads the previous state in the next
boot).
+\image html ucm-seq-boot.svg
+
### Device volume
It is expected that the applications handle the volume settings. It is not recommended