Switch to side-by-side view

--- a/src/upmpdcli.conf-dist
+++ b/src/upmpdcli.conf-dist
@@ -9,62 +9,66 @@
 
 # <grouptitle>MPD parameters</grouptitle>
 
-# <var name="mpdhost"><brief>Host MPD runs on.</brief>
+# <var name="mpdhost" type="string"><brief>Host MPD runs on.</brief>
 # <descr>Defaults to localhost. This can also be specified as -h
 # host</descr></var>
 #mpdhost = localhost
 
-# <var name="mpdport"><brief>IP port used by MPD</brief>. <descr>Can
-# also be specified as -p port. Defaults to the normal MPD port,
-# 6600</descr></var> 
+# <var name="mpdport" type="int" values="0 65635 6600"><brief>IP port used by
+# MPD</brief>. <descr>Can also be specified as -p port. Defaults to the
+# normal MPD port, 6600</descr></var>
 #mpdport = 6600
 
-# <var name="mpdpassword"><brief>MPD password.</brief><descr>Password for
-# connecting to *MPD* (only necessary if password access is enabled in the
-# *MPD* configuration file).</descr></var>
+# <var name="mpdpassword" type="string"><brief>MPD
+# password.</brief><descr>Password for connecting to MPD (only necessary
+# if password access is enabled in the MPD configuration
+# file).</descr></var>
 #mpdpassword =
 
-# <var name="ownqueue"><brief>Set if we own the MPD queue.</brief>.<descr>If
-# this is set (on by default), we own the MPD queue and will fearlessly clear
-# it. Can also be specified as -q 0|1.</descr></var>
+# <var name="ownqueue" type="bool" values="1"><brief>Set if we own the MPD
+# queue.</brief>.<descr>If this is set (on by default), we own the MPD
+# queue and will fearlessly clear it. Can also be specified as -q
+# 0|1.</descr></var>
 #ownqueue = 1
 
 # <grouptitle>Upmpdcli general parameters</grouptitle>
 
-# <var name="friendlyname"><brief>"Friendly Name" for the UPnP Media
-# Renderer.</brief><descr>This will be displayed by most Control Points to
-# identify the Renderer. Some OpenHome Control Points may display the
-# 'ohproductroom' value instead.</descr></var>
+# <var name="friendlyname" type="string"><brief>"Friendly Name" for the
+# UPnP Media Renderer.</brief><descr>This will be displayed by most Control
+# Points to identify the Renderer. Some OpenHome Control Points may display
+# the 'ohproductroom' value instead.</descr></var>
 #friendlyname = UpMpd
 
-# <var name="upnpav"><brief>Enable UPnP AV services
+# <var name="upnpav" type="bool" values="1"><brief>Enable UPnP AV services
 # (0/1).</brief><descr>This is set by default, but it may useful to switch
 # it off with some OpenHome Control Points which are too easily confused by
 # the presence of UPnP AV services.</descr></var>
 #upnpav = 1
 
-# <var name="openhome"><brief>Enable OpenHome services
+# <var name="openhome" type="bool" values="1"><brief>Enable OpenHome services
 # (0/1).</brief><descr>This defaults to 1, as OpenHome queuing is superior
 # for most usages. There should be little reason to turn it
 # off.</descr></var>
 openhome = 1
 
-# <var name="logfilename"><brief>Log file name.</brief><descr>Defaults to
-# stderr. This can also be specified as -d logfilename.</descr></var>
+# <var name="logfilename" type="fn"><brief>Log file
+# name.</brief><descr>Defaults to stderr. This can also be specified as -d
+# logfilename.</descr></var>
 #logfilename = 
 
-# <var name="loglevel"><brief>Log level. 0-4.</brief><descr>Can also be
-# specified as -l loglevel.</descr></var>
+# <var name="loglevel" type="int" values="0 4 0"><brief>Log
+# level. 0-4.</brief><descr>Can also be specified as -l
+# loglevel.</descr></var>
 #loglevel = 3
 
-# <var name="checkcontentformat"><brief>Check that input format is
-# supported.</brief><descr>Extract the protocolinfo information from the
-# input metadata and check it against our supported formats. Set this
-# option to 0 if a control point or media server sends good audio data with
-# bad metadata. Default 1.</descr></var>
+# <var name="checkcontentformat" type="bool" values="1"><brief>Check that
+# input format is supported.</brief><descr>Extract the protocolinfo
+# information from the input metadata and check it against our supported
+# formats. Set this option to 0 if a control point or media server sends
+# good audio data with bad metadata. Default 1.</descr></var>
 #checkcontentformat = 1
 
-# <var name="iconpath"><brief>Path to the Renderer icon.</brief>
+# <var name="iconpath" type="fn"><brief>Path to the Renderer icon.</brief>
 # <descr>The image will be displayed by Control Points which support
 # it. The UPnP protocol has provisions for a renderer to send the URL to a
 # descriptive icon as part of the device description. Due to current (and
@@ -74,18 +78,18 @@
 # up.</descr></var>
 #iconpath = /usr/share/upmpdcli/icon.png
 
-# <var name="pkgdatadir"><brief>XML and other constant data storage
+# <var name="pkgdatadir" type="dfn"><brief>XML and other constant data storage
 # directory.</brief><descr>Default: '$prefix/share/upmpcli' (e.g.:
 # '/usr/share/upmpdcli').</descr></var>
 #pkgdatadir=/usr/share/upmpdcli
 
-# <var name="cachedir"><brief>Directory used to store cached
+# <var name="cachedir" type="dfn"><brief>Directory used to store cached
 # data</brief><descr>Only used for the OpenHome queue metadata for now.
 # The default value is ~/.cache/upmpdcli for normal users or
 # /var/cache/upmpdcli when upmpdcli is started as root.</descr></var>
 #cachedir = /var/cache/upmpdcli
 
-# <var name="presentationhtml"><brief>Path to the presentation HTML
+# <var name="presentationhtml" type="fn"><brief>Path to the presentation HTML
 # document</brief><descr>You can change it to replace the default
 # presentation page. The page will only be read once, when upmpdcli starts
 # up. It can't presently be used for status updates (but I guess that you
@@ -93,63 +97,63 @@
 # HTTP server). Default: '$pkgdatadir/presentation.html'.</descr></var>
 #presentationhtml = /usr/share/upmpdcli/presentation.html
 
-# <var name="pidfile"><brief>Name of lock file used to store the current
-# process pid.</brief><descr>Only used if the process is launched by user
-# root. Used by the init system, and to avoid multiple instances. The only
-# reason to change the value is if you actually want to have several
-# instances running (also change cachedir in this case).</descr></var>
+# <var name="pidfile" type="fn"><brief>Name of lock file used to store the
+# current process pid.</brief><descr>Only used if the process is launched
+# by user root. Used by the init system, and to avoid multiple
+# instances. The only reason to change the value is if you actually want to
+# have several instances running (also change cachedir in this
+# case).</descr></var>
 #pidfile = /var/run/upmpdcli.pid
 
 # <grouptitle>UPnP network parameters</grouptitle>
 
-# <var name="upnpiface"><brief>Network interface to use for
+# <var name="upnpiface" type="string"><brief>Network interface to use for
 # UPnP.</brief><descr>libupnp/pupnp only supports communicating on a single
 # interface and will use the first found, this allows forcing the use of
 # another interface.</descr></var>
 #upnpiface = 
 
-# <var name="upnpip"><brief>IP address to use for UPnP, 
+# <var name="upnpip" type="string"><brief>IP address to use for UPnP, 
 # alternative to using an interface name.</brief></var>
 #upnpip = 
 
-# <var name="upnpport"><brief>Port number used for
-# UPnP.</brief><descr>libupnp/pupnp defaults to using the first free port
-# after 49152. Note that clients do not need to know about the value, which
-# is automatically discovered.</descr></var>
+# <var name="upnpport" type="int" values="0 65635 49152"><brief>Port number
+# used for UPnP.</brief><descr>libupnp/pupnp defaults to using the first
+# free port after 49152. Note that clients do not need to know about the
+# value, which is automatically discovered.</descr></var>
 #upnpport = 
 
 # <grouptitle>Audio control hooks</grouptitle>
 
-# <var name="onstart"><brief>Command to run when playback is about to
-# begin.</brief><descr>Specify the full path to the 
-# program, e.g. /usr/bin/logger.</descr></var>
+# <var name="onstart" type="fn"><brief>Command to run when playback is
+# about to begin.</brief><descr>Specify the full path to the program,
+# e.g. /usr/bin/logger.</descr></var>
 #onstart =
 
-# <var name="onplay"><brief>Command to run when MPD state switches to "PLAY".
-# </brief><descr>Specify the full path to the program,
-# e.g. /usr/bin/logger.</descr></var> 
-# onplay =
-
-# <var name="onstop"><brief>Command to run when MPD state switches to
+# <var name="onplay" type="fn"><brief>Command to run when MPD state
+# switches to "PLAY".  </brief><descr>Specify the full path to the program,
+# e.g. /usr/bin/logger.</descr></var> onplay =
+
+# <var name="onstop" type="fn"><brief>Command to run when MPD state switches to
 # "STOP".</brief><descr>Specify the full path to the program,
 # e.g. /usr/bin/logger.</descr></var>
 #onstop =
 
-# <var name="externalvolumecontrol"><brief>Use external commands to manage
-# the the sound volume (0/1).</brief><descr>This is used in the case where MPD
-# is unable to control the volume, but some other command can, for example
-# if you have an external amp on which it is possible to set and read the
-# volume through scripts. If set, the calls to MPD to set and read the volume
-# will be replaced by executions of 'onvolumechange' and
-# 'getexternalvolume'</descr></var>
+# <var name="externalvolumecontrol" type="fn"><brief>Use external command
+# to manage the the sound volume (0/1).</brief><descr>This is used in the
+# case where MPD is unable to control the volume, but some other command
+# can, for example if you have an external amp on which it is possible to
+# set and read the volume through scripts. If set, the calls to MPD to set
+# and read the volume will be replaced by executions of 'onvolumechange'
+# and 'getexternalvolume'</descr></var>
 #externalvolumecontrol = 
 
-# <var name="getexternalvolume"><brief>Command to run for reading the sound
-# volume.</brief><descr>The command should write a 0-100 numeric value to
-# stdout.</descr></var>
+# <var name="getexternalvolume" type="fn"><brief>Command to run for reading
+# the sound volume.</brief><descr>The command should write a 0-100 numeric
+# value to stdout.</descr></var>
 #getexternalvolume =
 
-# <var name="onvolumechange"><brief>Command to run to set the
+# <var name="onvolumechange" type="fn"><brief>Command to run to set the
 # volume.</brief><descr>Used when 'externalvolumecontrol' is set.
 # Specify the full path to the program, which is called with the volume as
 # the first argument, e.g. /some/script 85.</descr></var>
@@ -157,7 +161,7 @@
 
 # <grouptitle>OpenHome parameters</grouptitle>
 
-# <var name="radiolist"><brief>Path to an external file with radio
+# <var name="radiolist" type="fn"><brief>Path to an external file with radio
 # definitions.</brief><descr>Radio stations can be defined at the end of
 # the the main file, or in a separate one (or both). Using an external file
 # can ease distribution to multiple machines. Either way, each radio
@@ -171,60 +175,62 @@
 # </descr></var>
 #radiolist = /path/to/my/radio/list
 
-# <var name="ohmanufacturername"><brief>Manufacturer name. Does not vary at
-# run-time.</brief></var> 
+# <var name="ohmanufacturername" type="string"><brief>Manufacturer
+# name. Does not vary at run-time.</brief></var>
 #ohmanufacturername = UpMPDCli heavy industries Co.
-# <var name="ohmanufacturerinfo"><brief>Manufacturer information. Does not
+# <var name="ohmanufacturerinfo" type="string"><brief>Manufacturer
+# information. Does not vary at run-time.</brief></var>
+#ohmanufacturerinfo = Such nice guys and gals
+# <var name="ohmanufacturerurl" type="string"><brief>URL for manufacturer
+# web site. Does not vary at run-time.</brief></var>
+#ohmanufacturerurl = http://www.lesbonscomptes.com/upmpdcli
+# <var name="ohmanufacturerimageuri" type="string"><brief>Uri for
+# manufacturer���s logo. Does not vary at run-time.</brief></var>
+#ohmanufacturerimageuri =
+# <var name="ohmodelname" type="string"><brief>Model name. Does not vary at
+# run-time.</brief></var>
+#ohmodelname = UpMPDCli UPnP-MPD gateway
+# <var name="ohmodelinfo" type="string"><brief>Model information. Does not
 # vary at run-time.</brief></var>
-#ohmanufacturerinfo = Such nice guys and gals
-# <var name="ohmanufacturerurl"><brief>URL for manufacturer web site. Does
+#ohmodelinfo =
+# <var name="ohmodelurl" type="string"><brief>URL for model web site. Does
 # not vary at run-time.</brief></var>
-#ohmanufacturerurl = http://www.lesbonscomptes.com/upmpdcli
-# <var name="ohmanufacturerimageuri"><brief>Uri for manufacturer���s logo. Does
+#ohmodelurl = http://www.lesbonscomptes.com/upmpdcli
+# <var name="ohmodelimageuri" type="string"><brief>Uri for model���s
+# icon. Does not vary at run-time.</brief></var>
+#ohmodelimageuri =
+# <var name="ohproductname" type="string"><brief>User-visible product
+# name. By default this is set to ModelName.</brief></var>
+#ohproductname = Upmpdcli
+# <var name="ohproductroom" type="string"><brief>The name of the room where
+# the Product is located.</brief><descr>Set to ���Main Room��� by default,
+# displayed in place of the "friendly name" by some control points.
+# ProductRoom is used to group the Product with other related Products in
+# the same physical room (e.g. a source with a pre-amp). Products which are
+# physically linked must always share the same ProductRoom
+# name.</descr></var>
+#ohproductroom = Main Room
+# <var name="ohproductinfo" type="string"><brief>Product information. Does
 # not vary at run-time.</brief></var>
-#ohmanufacturerimageuri =
-# <var name="ohmodelname"><brief>Model name. Does not vary at
-# run-time.</brief></var> 
-#ohmodelname = UpMPDCli UPnP-MPD gateway
-# <var name="ohmodelinfo"><brief>Model information. Does not vary at
-# run-time.</brief></var> 
-#ohmodelinfo =
-# <var name="ohmodelurl"><brief>URL for model web site. Does not vary at
-# run-time.</brief></var> 
-#ohmodelurl = http://www.lesbonscomptes.com/upmpdcli
-# <var name="ohmodelimageuri"><brief>Uri for model���s icon. Does not vary at
-# run-time.</brief></var>
-#ohmodelimageuri =
-# <var name="ohproductname"><brief>User-visible product name. By default
-# this is set to ModelName.</brief></var>
-#ohproductname = Upmpdcli
-# <var name="ohproductroom"><brief>The name of the room where the Product
-# is located.</brief><descr>Set to ���Main Room��� by default, displayed in
-# place of the "friendly name" by some control points.  ProductRoom is used
-# to group the Product with other related Products in the same physical
-# room (e.g. a source with a pre-amp). Products which are physically linked
-# must always share the same ProductRoom name.</descr></var>
-#ohproductroom = Main Room
-# <var name="ohproductinfo"><brief>Product information. Does not vary at
-# run-time.</brief></var>
 #ohproductinfo =
-# <var name="ohproducturl"><brief>URL for product web site. This may be the
-# UPnP presentation page.</brief></var>
+# <var name="ohproducturl" type="string"><brief>URL for product web
+# site. This may be the UPnP presentation page.</brief></var>
 #ohproducturl =
-# <var name="ohproductimageuri"><brief>Uri for product image. Does not vary
-# at run-time.</brief></var> 
+# <var name="ohproductimageuri" type="string"><brief>Uri for product
+# image. Does not vary at run-time.</brief></var>
 #ohproductimageuri =
 
-# <var name="ohmetapersist"><brief>Save queue metadata to disk
-# (0/1).</brief><descr>This allows persistence of the metadata information
-# across restarts, the default is 1, and there is no reason to turn it
-# off.</descr></var>
+# <var name="ohmetapersist" type="bool" values="1"><brief>Save queue
+# metadata to disk (0/1).</brief><descr>This allows persistence of the
+# metadata information across restarts, the default is 1, and there is no
+# reason to turn it off.</descr></var>
 ohmetapersist = 1
 
-# <var name="ohmetasleep"><brief>Mimimum interval (Seconds) between two
-# cache saves.</brief><descr>Increasing this may improve playlist load
-# speed on a slow device. The default is to start a new save as soon as the
-# previous one is done (if the list changed again inbetween).</descr></var>
+# <var name="ohmetasleep" type="int" values="0 120 0"><brief>Mimimum
+# interval (Seconds) between two cache saves.</brief><descr>Increasing this
+# may improve playlist load speed on a slow device. The default is to start
+# a new save as soon as the previous one is done (if the list changed again
+# inbetween).</descr></var>
 #ohmetasleep = 0
 
 # <grouptitle>Songcast Receiver parameters</grouptitle>
@@ -232,31 +238,36 @@
 # Parameters for the Songcast modes. These are read by either/both the
 # songcast and upmpdcli processes
 
-# <var name="sclogfilename"><brief>Log file name for sc2mpd (default
+# <var name="sclogfilename" type="fn"><brief>Log file name for sc2mpd (default
 # stderr)</brief><descr>The value *must not* be the same as the one used
 # for upmpdcli.</descr></var>
 #sclogfilename = /tmp/scmpdcli.log
 
-# <var name="scloglevel"><brief>Log verbosity for sc2mpd.</brief></var>
+# <var name="scloglevel" type="int" values="0 6 0"><brief>Log verbosity for
+# sc2mpd.</brief></var>
 #scloglevel = 6
 
-# <var name="scplaymethod"><brief>sc2mpd play method
-# (mpd/alsa).</brief><descr>With this set as 'alsa', sc2mpd will send the
-# audio directly to the sound driver, which is the only way to really avoid
-# skips and control the synchronization in multi-room setups.</descr></var>
+# <var name="scplaymethod" type="cstr" values="mpd alsa"><brief>sc2mpd
+# play method (mpd/alsa).</brief><descr>With this set as 'alsa', sc2mpd
+# will send the audio directly to the sound driver, which is the only way
+# to really avoid skips and control the synchronization in multi-room
+# setups.</descr></var>
 #scplaymethod = mpd
 
-# <var name="schttpport"><brief>Port used by sc2mpd for MPD to connect
-# to.</brief><descr>Used only for scplaymethod=mpd. sc2mpd only accepts
-# connections from localhost.</descr></var>
+# <var name="schttpport" type="int" values="0 65635 8768"><brief>Port
+# used by sc2mpd for MPD to connect to.</brief><descr>Used only for
+# scplaymethod=mpd. sc2mpd only accepts connections from
+# localhost.</descr></var>
 #schttpport = 8768
 
-# <var name="scalsadevice"><brief>Alsa device used by sc2mpd for playing
-# audio.</brief><descr>Only used for scplaymethod=alsa. Use 'aplay -L' to
-# see the possible values.</descr></var>
+# <var name="scalsadevice" type="string"><brief>Alsa device used by sc2mpd
+# for playing audio.</brief><descr>Only used for scplaymethod=alsa. Use
+# 'aplay -L' to see the possible values.</descr></var>
 #scalsadevice = default
 
-# <var name="sccvttype"><brief>sc2mpd resampling method.</brief><descr>
+# <var name="sccvttype" type="cstr" values="SRC_SINC_BEST_QUALITY
+# SRC_SINC_MEDIUM_QUALITY SRC_SINC_FASTEST SRC_ZERO_ORDER_HOLD
+# SRC_LINEAR"><brief>sc2mpd resampling method.</brief><descr> 
 # Only used for scplaymethod=alsa. sc2mpd uses libsamplerate. The default
 # method is SRC_SINC_FASTEST and a Rasberry Pi 1 is fast enough to use it.
 # Possible values: SRC_SINC_BEST_QUALITY, SRC_SINC_MEDIUM_QUALITY,
@@ -269,9 +280,9 @@
 # a couple % for the conversion in fact.</descr></var>
 #sccvttype = SRC_SINC_FASTEST.
 
-# <var name="sc2mpd"><brief>Path to sc2mpd.</brief><descr>Only useful if it
-# is not in /usr/bin and the location is not in the $PATH for the init
-# scripts.</descr></var>
+# <var name="sc2mpd" type="string"><brief>Path to
+# sc2mpd.</brief><descr>Only useful if it is not in /usr/bin and the
+# location is not in the $PATH for the init scripts.</descr></var>
 #sc2mpd = /usr/bin/sc2mpd
 
 # <grouptitle>Songcast Sender parameters</grouptitle>
@@ -279,24 +290,24 @@
 # Parameters tor the Sender/Receiver mode. Only does anything if
 # scplaymethod is alsa
 
-# <var name="scsenderpath"><brief>Path to the script which starts the
-# auxiliary mpd and the sender process.</brief></var>
+# <var name="scsenderpath" type="string"><brief>Path to the script which
+# starts the auxiliary mpd and the sender process.</brief></var>
 #scsenderpath = /usr/bin/scmakempdsender
 
-# <var name="scstreamscaled"><brief>Decide if we scale the songcast
-# stream.</brief><descr>If set, MPD software volume control will be applied
-# to the stream. True by default: using a Control Point to set the volume
-# on the upmpdcli instance which started the Sender affects the volume for
-# all Receivers.</descr></var>
+# <var name="scstreamscaled" type="bool" values="1"><brief>Decide if we
+# scale the songcast stream.</brief><descr>If set, MPD software volume
+# control will be applied to the stream. True by default: using a Control
+# Point to set the volume on the upmpdcli instance which started the Sender
+# affects the volume for all Receivers.</descr></var>
 #scstreamscaled = 1
 
-# <var name="scsendermpdport"><brief>localhost port to use by the auxiliary
-# mpd.</brief></var>
+# <var name="scsendermpdport" type="int" values="0 65635 6700">
+# <brief>localhost port to be used by the auxiliary mpd.</brief></var>
 #scsendermpdport = 6700
 
-# <var name="scripts_dir"><brief>Location for the scripts used to set up
-# additional external sources.</brief><descr>See the Songcast Sender
-# support documentation page.</descr></var>
+# <var name="scripts_dir" type="dfn"><brief>Location for the scripts used
+# to set up additional external sources.</brief><descr>See the Songcast
+# Sender support documentation page.</descr></var>
 #scripts_dir = /usr/share/upmpdcli/src_scripts
 
 # Initial / default List of radios borrowed from misc sources. Edit to taste