2006-07-20 13:51:17 +02:00
|
|
|
|
Portable SDK for UPnP* Devices (libupnp)
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
Copyright (c) 2000-2003 Intel Corporation - All Rights Reserved.
|
|
|
|
|
Copyright (c) 2005-2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
2006-07-04 04:49:47 +02:00
|
|
|
|
Copyright (c) 2006 Michel Pfeiffer and others <virtual_worlds@gmx.de>
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
See LICENSE for details.
|
|
|
|
|
|
|
|
|
|
This file contains information about the above product in the following
|
|
|
|
|
sections:
|
|
|
|
|
|
|
|
|
|
1. Release Contents
|
|
|
|
|
2. Package Contents
|
|
|
|
|
3. System Requirements
|
|
|
|
|
4. Build Instructions
|
|
|
|
|
5. Install/Uninstall Instructions
|
|
|
|
|
6. Product Release Notes
|
|
|
|
|
7. New Features
|
|
|
|
|
8. Support and Contact Information
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1) Release Contents
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
The Portable SDK for UPnP Devices is an SDK for development of UPnP device
|
|
|
|
|
and control point applications. It consists of the core UPnP
|
2006-06-06 10:51:22 +02:00
|
|
|
|
protocols along with a UPnP-specific eXtensible Markup Language (XML) parser
|
|
|
|
|
supporting the Document Object Model (DOM) Level 2 API and an optional,
|
|
|
|
|
integrated mini web server for serving UPnP related documents.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2) Package Contents
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
The SDK for UPnP Devices contains the following:
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
README This file. Contains the installation and build instructions.
|
|
|
|
|
LICENSE The licensing terms the SDK is distributed under.
|
|
|
|
|
NEWS Changes and new features.
|
|
|
|
|
ixml\doc The files for generating the XML parser documentation from
|
|
|
|
|
the source code.
|
|
|
|
|
ixml\inc The public include files required to use the XML parser.
|
|
|
|
|
ixml\src The source code to the XML parser library.
|
|
|
|
|
threadutil\inc The public include files required to the threading
|
|
|
|
|
utility library.
|
|
|
|
|
threadutil\src The source code to the threading utility library.
|
|
|
|
|
upnp\doc The files for generating the SDK documentation from the
|
|
|
|
|
source code.
|
|
|
|
|
upnp\inc The public include files required to use the SDK.
|
|
|
|
|
upnp\src The source files comprising the SDK, libupnp.so.
|
|
|
|
|
upnp\sample A sample device and control point application, illustrating the
|
|
|
|
|
usage of the SDK.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3) System Requirements
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
The SDK for UPnP Devices is designed to compile and run under several
|
|
|
|
|
operating systems. It does, however, have dependencies on some
|
2006-06-06 10:51:22 +02:00
|
|
|
|
packages that may not be installed by default. All packages that it
|
2006-07-20 13:51:17 +02:00
|
|
|
|
requires are listed below.
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
libpthread The header and library are installed as part of the glibc-devel
|
|
|
|
|
package (or equivalent).
|
|
|
|
|
|
|
|
|
|
Additionally, the documentation for the SDK can be auto-generated from
|
|
|
|
|
the UPNP.H header file using DOC++, a documentation system for C, C++,
|
|
|
|
|
IDL, and Java*. DOC++ generates the documentation in HTML or TeX format.
|
|
|
|
|
Using some additional tools, the TeX output can be converted into a
|
|
|
|
|
PDF file. To generate the documentation these tools are required:
|
|
|
|
|
|
|
|
|
|
DOC++ The homepage for DOC++ is http://docpp.sourceforge.net/.
|
|
|
|
|
The current version as of this release of the SDK is
|
|
|
|
|
version 3.4.9. DOC++ is the only requirement for generating
|
|
|
|
|
the HTML documentation.
|
|
|
|
|
LaTeX/TeX To generate the PDF documentation, LaTeX and TeX tools are
|
|
|
|
|
necessary. The tetex and tetex-latex packages provide these
|
|
|
|
|
tools.
|
|
|
|
|
dvips dvips converts the DVI file produced by LaTeX into a PostScript*
|
|
|
|
|
file. The tetex-dvips package provides this tool.
|
|
|
|
|
ps2pdf The final step to making the PDF is converting the PostStript
|
|
|
|
|
into Portable Document Format. The ghostscript package provides
|
|
|
|
|
this tool.
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
For the UPnP library to function correctly, networking must be configured
|
2006-06-06 10:51:22 +02:00
|
|
|
|
properly for multicasting. To do this:
|
|
|
|
|
|
|
|
|
|
route add -net 239.0.0.0 netmask 255.0.0.0 eth0
|
|
|
|
|
|
|
|
|
|
where 'eth0' is the network adapter that the UPnP library will use. Without
|
|
|
|
|
this addition, device advertisements and control point searches will not
|
|
|
|
|
function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4) Build Instructions
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
CORE LIBRARIES
|
|
|
|
|
|
|
|
|
|
The in the examples below, replace $(LIBUPNP) with "libupnp-x.y.z",
|
|
|
|
|
with x, y, and z corresponding to the version of the library that you have.
|
|
|
|
|
|
|
|
|
|
All pieces of the SDK are configured and built from the $(LIBUPNP) directory.
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
will build a version of the binaries without debug support, and with default
|
|
|
|
|
options enabled (see below for options available at configure time).
|
|
|
|
|
|
2006-07-04 04:49:47 +02:00
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure CFLAGS="-DSPARC_SOLARIS -mtune=<cputype> -mcpu=<cputype>"
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
will build a Sparc Solaris version of the binaries without debug support
|
|
|
|
|
and with default options enabled (see below for options available at
|
|
|
|
|
configure time). Please note: <cputype> has to be replaced by a token that
|
|
|
|
|
fits to your platform and CPU (e.g. "supersparc").
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
To build the documentation, assuming all the necessary tools are installed
|
|
|
|
|
(see section 3) :
|
|
|
|
|
|
|
|
|
|
To generate the HTML documentation:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% make html
|
|
|
|
|
|
|
|
|
|
To generate the PDF file:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% make pdf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A few options are available at configure time. Use "./configure --help"
|
|
|
|
|
to display a complete list of options. Note that these options
|
|
|
|
|
may be combined in any order.
|
|
|
|
|
After installation, the file <upnp/upnpconfig.h> will provide a summary
|
|
|
|
|
of the optional features that have been included in the library.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --enable-debug
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
will build a debug version with symbols support.
|
|
|
|
|
|
|
|
|
|
To build the library with the optional, integrated mini web server (note
|
|
|
|
|
that this is the default):
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --enable-webserver
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
To build without:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --disable-webserver
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
The SDK also contains some additional helper APIs, declared in
|
2006-06-06 10:51:22 +02:00
|
|
|
|
inc/tools/upnptools.h. If these additional tools are not required, they can
|
|
|
|
|
be compiled out:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --disable-tools
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
By default, the tools are included in the library.
|
|
|
|
|
|
|
|
|
|
To further remove code that is not required, the library can be build with or
|
|
|
|
|
with out the control point (client) or device specific code. To remove this
|
|
|
|
|
code:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --disable-client
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
to remove client only code or:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --disable-device
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
to remove device only code.
|
|
|
|
|
|
|
|
|
|
By default, both client and device code is included in the library. The
|
|
|
|
|
integrated web server is automatically removed when configuring with
|
|
|
|
|
--disable-device.
|
|
|
|
|
|
|
|
|
|
To build the library without large-file support (enabled by default) :
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --disable-largefile
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To remove all the targets, object files, and built documentation:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% make clean
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CROSS COMPILATION
|
|
|
|
|
|
|
|
|
|
To cross compile the SDK, a special "configure" directive is all that is
|
|
|
|
|
required:
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --host=arm-linux
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
This will invoke the "arm-linux-gcc" cross compiler to build the library.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAMPLES
|
|
|
|
|
|
|
|
|
|
The SDK contains two samples: a TV device application and a control point
|
|
|
|
|
that talks with the TV device. They are found in the $(LIBUPNP)/upnp/sample
|
|
|
|
|
directory.
|
|
|
|
|
|
|
|
|
|
To build the samples (note: this is the default behaviour):
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)
|
|
|
|
|
% ./configure --enable-samples
|
|
|
|
|
% make
|
|
|
|
|
|
|
|
|
|
will build the sample device "$(LIBUPNP)/upnp/upnp_tv_device" and
|
|
|
|
|
sample control point "$(LIBUPNP)/upnp/upnp_tv_ctrlpt".
|
|
|
|
|
Note : the sample device won't be built if --disable-device has been
|
|
|
|
|
configured, and the sample control point won't be build if --disable-client
|
|
|
|
|
has been configured.
|
|
|
|
|
|
|
|
|
|
To run the sample device, you need the "$(LIBUPNP)/upnp/sample/tvdevice/web"
|
|
|
|
|
sub-directory. Example :
|
|
|
|
|
|
|
|
|
|
% cd $(LIBUPNP)/upnp/sample/tvdevice
|
|
|
|
|
% ../../upnp_tv_device
|
|
|
|
|
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
|
|
|
|
|
SOLARIS BUILD
|
|
|
|
|
|
|
|
|
|
The building process for the Solaris operating system is similar to the one
|
|
|
|
|
described above. Only the call to ./configure has to be done using an
|
|
|
|
|
additional parameter:
|
|
|
|
|
|
|
|
|
|
./configure CFLAGS="-mcpu=<cputype> -mtune=<cputype> -DSPARC_SOLARIS"
|
|
|
|
|
|
|
|
|
|
where <cputype> has to be replaced by the appropriate CPU tuning flag (e.g.
|
|
|
|
|
"supersparc"). Afterwards
|
|
|
|
|
|
|
|
|
|
make
|
|
|
|
|
make install
|
|
|
|
|
|
|
|
|
|
can be called as described above.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WINDOWS BUILD
|
|
|
|
|
|
|
|
|
|
In order to build libupnp under Windows the pthreads-w32 package is required.
|
|
|
|
|
You can download a self-extracting ZIP file from the following location:
|
|
|
|
|
|
|
|
|
|
ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe
|
|
|
|
|
|
|
|
|
|
Execute the self-extracting archive and copy the Pre-build.2 folder to the
|
|
|
|
|
top level source folder.
|
|
|
|
|
Rename Pre-build.2 to pthreads.
|
|
|
|
|
Open the provided workspace build\libupnp.dsw with Visual C++ 6.0 and select
|
|
|
|
|
Build->Build libupnp.dll (F7)
|
|
|
|
|
|
2006-08-04 07:46:06 +02:00
|
|
|
|
For building a static library instead of a DLL and for using the static
|
|
|
|
|
pthreads-w32 library following switches need to be defined additionally:
|
|
|
|
|
|
|
|
|
|
UPNP_STATIC_LIB - for creating a statically linkable UPnP-library
|
|
|
|
|
PTW32_STATIC_LIB - for using the static pthreads32 library
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
|
2006-06-06 10:51:22 +02:00
|
|
|
|
5) Install/Uninstall Instructions
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
Install
|
|
|
|
|
|
|
|
|
|
The top-level makefile for the UPnP SDK contains rules to install the
|
|
|
|
|
necessary components. To install the SDK, as root:
|
|
|
|
|
|
|
|
|
|
make install
|
|
|
|
|
|
|
|
|
|
Uninstall
|
|
|
|
|
|
|
|
|
|
Likewise, the top-level makefile contains an uninstall rule, reversing
|
|
|
|
|
the steps in the install:
|
|
|
|
|
|
|
|
|
|
make uninstall
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6) Product Release Notes
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
The SDK for UPnP Devices v1.2.1a has these known issues:
|
|
|
|
|
|
|
|
|
|
- The UPnP library may not work with older versions of gcc and libstdc++,
|
|
|
|
|
causing a segmentation fault when the library loads. It is recommended
|
|
|
|
|
that gcc version 2.9 or later be used in building library.
|
|
|
|
|
- The UPnP library does not work the glibc 2.1.92-14 that ships with
|
|
|
|
|
Red Hat 7.0. For the library to function, you must updated the glibc
|
|
|
|
|
and glibc-devel packages to 2.1.94-3 or later. There is some issue with
|
|
|
|
|
libpthreads that has been resolved in the 2.1.94 version.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7) New Features
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
See NEWS file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8) Support and Contact Information
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
2006-07-20 13:51:17 +02:00
|
|
|
|
Intel is not providing support for the SDK for UPnP Devices. Mailing lists
|
|
|
|
|
and discussion boards can be found at http://www.libupnp.org/.
|
2006-06-06 10:51:22 +02:00
|
|
|
|
|
|
|
|
|
If you find this SDK useful, please send an email to upnp@intel.com and let
|
|
|
|
|
us know.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Other brands, names, and trademarks are the property of their respective
|
|
|
|
|
owners.
|
|
|
|
|
|