Sequences¶
The sequences are a custom scripting system for UCM. These are used in the
EnableSequence and DisableSequence blocks in the usecase files and in the
BootSequence and SequenceDefaults in the master file:
EnableSequence [
cset "name='Master Playback Switch' on"
cset "name='AIF1 DA0 Stereo Playback Route' Mix Mono"
cset "name='Earpiece Playback Volume' 100%"
cdev "hw:0"
usleep 10000
msleep 10
exec "apt-get install pipewire"
shell "-dnf purge linux"
cset-bin-file "path-to-the-file.bin"
cset-tlv ????
cset-new "name='Cool demo Switch' type=bool,count=1 off"
ctl-remove ???
sysw "-/class/sound/example/attach:coolvalue"
cfg-save ???
comment "Yes this does nothing"
]
Every line in the sequence is a command that will be executed in the defined order. The
most common command is cset whichs sets the value of an alsa control.
cset¶
The cset command takes a single string as argument which is a control set description. The syntax of this
is the same as the amixer cset commandline tool.
cdev¶
The cdev command allows the script to switch to another device to manage in the middle of
the sequence. The sequence starts off controlling the controls in the PCM defined in
the PlaybackPCM or CapturePCM in the variables section.
usleep / msleep¶
This is for inserting a delay before executing the rest of the commands. The usleep
command takes the sleep time in microseconds and the msleep command takes it in
milliseconds.
exec / shell¶
The exec and shell commands add arbitrary command executing to the mix. The difference between exec and shell is that exec will run the defined command with fork() andexecve() and shell will dump the command straight into system()
If the first char of the command is “-” the return status of the executed command is ignored.
The main usecase for this seems to be calling modprobe
sysw¶
Sysw is the sysfs write command. The first part is the file in sysfs to write without the leading /sys, then a colon and the value to write to the sysfs node.
This command also accepts “-” as the first character to make this ignore errors.
The main usecase for this seems to be calling “attach” nodes in sysfs to bind leds.
cset-new¶
This command can be used to define a new control. This seems to be used in the BootSequence to define a dummy switch to control leds.