Writing mdtoceditor plugins
Minidisc Toc Editor provides a framework for editing and saving of minidisc Table of Contents (TOC).
It sends sequences of IR signals to transmit the TOC to the minidisc deck. But different models of
minidisc decks require completely different sequences of IR signals, so the process of creating
these sequences is highly deck specific.
To simplify adding code for not yet supported decks as comfortable as possible,
all deck specific code is isolated in loadable plugins. Each plugin is written in the script language
Tcl, what makes it possible to implement code without
spending time or money for a development environment.
Each plugin has to implement a set of operations. Operations that are not supported by a specific
deck can be omitted and will be disabled in mdtoceditor. There is a
template plugin file that can be copied and
adjusted. The template file contains a documentation for all required operations.
Beside basic Tcl syntax, plugins can/must use the additional
commands:
ircmd adds exactly one command to the command sequence. A command might be an infrared command
a delay or a user callback. An infrared command is the name of a button, how it is defined
in the lircd config file. (Often /etc/lircd.conf). A command can be sent once or for a period of
time. A delay is a period of time, that will suspend the execution of the sequence. A user callback
will result in calling the plugin while processing the sequence. Duration is number followed by an
optional unit s for seconds, or ms for miliseconds. If no unit is given, the duration will be a
multiplicated with the delay base value, from the delay proc of the plugin. Examples: 2, 2s, 2000ms.
ircmd IRCOMMAND [DURATION]
An IRCOMMAND is the name of a button, how it is defined in the lircd config file.
ircmd delay [DURATION]
ircmd user CALLBACK
When processing a user command, mdtoceditor will call the user procedure of the
plugin and passes CALLBACK to identify the type of callback. The plugin might return an additional sequence
that will be processed directly before continueing the original sequence.
dialog enables the plugin to lead dialogs with the user. They are necessairy for decks that can't be
label discs by the remote completel and require user interactions. Currently two type
of dialogs are implemted:
dialog select QUESTION PRESELECTION OPTION1 ...
dialog returns the selected option, or -1 otherwise. (f.e Cancel)
dialog note NOTE
dialog returns 0 if ok, or -1 otherwise.