<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<glossary id="glossary">
<glossentry id="action"><glossterm>Action</glossterm>
<glossdef>
<para>
An <firstterm>Action</firstterm> is a method call on a
<glossterm>Service</glossterm>, which encapsulated a single piece of
functionality. Actions can have multiple input and output arguments, and
can return error codes. UPnP allows one of the output arguments to be
marked as the <firstterm>return value</firstterm>, but GUPnP doesn't treat
return values specially.
</para>
<para>
Every action argument has a related <glossterm>State Variable</glossterm>,
which determines the type of the argument. Note that even if the argument
wouldn't need a state variable it is still required, due to historical
reasons.
</para>
</glossdef>
</glossentry>
<glossentry id="controlpoint"><glossterm>Control Point</glossterm>
<glossdef>
<para>
A <firstterm>Control Point</firstterm> is an entity on the network which
communicates with other <glossterm>Devices</glossterm> and
<glossterm>Services</glossterm>. In the client/server model the control
point is a client and the <glossterm>Service</glossterm> is a server,
although it is common for devices to also be a control point because
whilst a single control point/service connection is client/server, the
UPnP network as whole is peer-to-peer.
</para>
</glossdef>
</glossentry>
<glossentry id="device"><glossterm>Device</glossterm>
<glossdef>
<para>
A <firstterm>Device</firstterm> is an entity on the network which
communicates using the UPnP standards. This can be a dedicated physical
device such as a router or printer, or a PC which is running software
implementing the UPnP standards.
</para>
<para>
A Device can contain sub-devices, for example a combination
printer/scanner could appear as a general device with a printer
sub-device and a scanner sub-device.
</para>
<para>
Every device has zero or more <glossterm>Services</glossterm>. UPnP defines many standard
device types, which specify services which are required to be implemented.
Alternatively, a non-standard device type could be used. Examples of
standard device types are <literal>MediaRenderer</literal> or
<literal>InternetGatewayDevice</literal>.
</para>
<glossseealso otherterm="service"/>
</glossdef>
</glossentry>
<glossentry>
<glossterm>DIDL-Lite</glossterm>
<glosssee otherterm="didllite"/>
</glossentry>
<glossentry id="didllite"><glossterm>Digital Item Declaration Language - Lite</glossterm>
<acronym>DIDL-Lite</acronym>
<glossdef>
<para>
An XML schema used to represent digital content metadata. Defined by
the UPnP Forum.
</para>
</glossdef>
</glossentry>
<glossentry>
<glossterm>SCPD</glossterm>
<glosssee otherterm="scpd"/>
</glossentry>
<glossentry id="service"><glossterm>Service</glossterm>
<glossdef>
<para>
A <firstterm>Service</firstterm> is a collection of related methods
(called <glossterm>Actions</glossterm>) and public variables (called
<glossterm>State Variables</glossterm>) which together form a logical
interface.
</para>
<para>
UPnP defines standard services that define actions and variables which
must be present and their semantics. Examples of these are
<literal>AVTransport</literal> and <literal>WANIPConnection</literal>.
</para>
<glossseealso otherterm="action"/>
<glossseealso otherterm="device"/>
<glossseealso otherterm="state-variable"/>
</glossdef>
</glossentry>
<glossentry id="scpd">
<glossterm>Service Control Protocol Document</glossterm>
<acronym>SCPD</acronym>
<glossdef>
<para>
An XML document which defines the set of <glossterm>Actions</glossterm>
and <glossterm>State Variables</glossterm> that a
<glossterm>Service</glossterm> implements.
</para>
<glossseealso otherterm="service"/>
<glossseealso otherterm="action"/>
<glossseealso otherterm="state-variable"/>
</glossdef>
</glossentry>
<glossentry id="ssdp">
<glossterm>Simple Service Discovery Protocol</glossterm>
<acronym>SSDP</acronym>
<glossdef>
<para>
UPnP device discovery protocol. Specifies how <glossterm>Devices</glossterm>
advertise their <glossterm>Services</glossterm> in the network and also how
<glossterm>Control Points</glossterm> search for
services and devices respond.
</para>
<glossseealso otherterm="device"/>
<glossseealso otherterm="controlpoint"/>
<glossseealso otherterm="service"/>
</glossdef>
</glossentry>
<glossentry>
<glossterm>SSDP</glossterm>
<glosssee otherterm="ssdp"/>
</glossentry>
<glossentry id="state-variable"><glossterm>State Variable</glossterm>
<glossdef>
<para>
A <firstterm>State Variable</firstterm> is a public variable exposing some
aspect of the service's state. State variables are typed and optionally
are <firstterm>evented</firstterm>, which means that any changes will be
notified. Control points are said to <firstterm>subscribe</firstterm> to
a state variable to receive change notifications.
</para>
</glossdef>
</glossentry>
<glossentry>
<glossterm>UDN</glossterm>
<glosssee otherterm="udn"/>
</glossentry>
<glossentry id="udn">
<glossterm>Unique Device Name</glossterm>
<acronym>UDN</acronym>
<glossdef>
<para>
A a unique identifier which is <emphasis>unique</emphasis> for every
device but <emphasis>never changes</emphasis> for each particular
device.
</para>
<para>
A common practise is to generate a unique UDN on first boot from a
random seed, or use some unique and persistent property such as the
device's MAC address to create the UDN.
</para>
<glossseealso otherterm="device"/>
</glossdef>
</glossentry>
</glossary>