Symbian3/SDK/Source/GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 7 51a74ef9ed63
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-8451102A-8E68-5C86-9E40-D53183E32261" xml:lang="en"><title>Bluetooth
SDP Overview</title><shortdesc>The Bluetooth Service Discovery Protocol (SDP) component enables
you to register services to the SDP database and query the database for available
services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-C24E4D4D-7A0A-4BC6-A16F-6D4DDFFF17E7"><title>Purpose</title> <p>The Symbian platform Bluetooth Service
Discovery Protocol (SDP) component provides APIs that allow you to register
services to the SDP database or query the database for available services.
This functionality is provided by the two SDP APIs: </p> <ul>
<li id="GUID-F5D35BDC-9FEC-5C29-9DB0-BAF1BF8F44B8"><p><xref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita">SDP
Database</xref>  </p> </li>
<li id="GUID-A153C7B6-0B8C-5DA6-B765-8B60C1D39227"><p><xref href="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita">SDP
Agent</xref>  </p> </li>
</ul> <p> </p> </section>
<section id="GUID-EE776EBD-D97F-4037-8E1D-ADB1F7CC17DA"><title>Required background</title> <p>You need to be familiar with
the following: </p> <ul>
<li id="GUID-26920C05-C124-5276-A73B-952078316D88"><p><xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Symbian
platform Bluetooth User</xref>  </p> </li>
<li id="GUID-89FB4CCE-8A1A-5ACA-AE34-57EA9DDFE6B5"><p><xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita">Symbian
platform Bluetooth Protocols</xref>  </p> </li>
<li id="GUID-1623B937-2D45-5092-8A66-416FF2E930C2"><p>The Bluetooth Service
Discovery Protocol specification, Volume 3 Part C of the Specification of
the Bluetooth System, available at <xref href="http://www.bluetooth.com/" scope="external">www.bluetooth.com/</xref>  </p> </li>
<li id="GUID-DDA0875F-0256-5454-907A-D52B33AAA613"><p>UUID Values for SDP
services. </p> </li>
</ul> <p> </p> </section>
<section id="GUID-520ED67C-25D2-472E-9686-EB86B74E7ADB"><title>Key concepts and terms</title> <p>The following terms are
used frequently throughout the SDP Overviews and Tutorials. </p> <dl>
<dlentry>
<dt>Service Discovery Database</dt>
<dd><p>This is the database that stores information about available services.
If you are writing an application to advertise a specific service you will
use the SDP Database APIs to register your service and if you are writing
an application that needs to search for available services on other devices
you will use the SDP Agent APIs. </p> </dd>
</dlentry>
<dlentry>
<dt>Service Record</dt>
<dd><p>A data record for an individual service in the service discovery database. </p> </dd>
</dlentry>
<dlentry>
<dt>Service Record Attribute</dt>
<dd><p>An attribute of the service that is stored in the service record. We
will discuss service record attributes in greater detail in "<xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP
Service records and attributes</xref> ". </p> </dd>
</dlentry>
<dlentry>
<dt>UUID</dt>
<dd><p>Universally Unique Identifier - See the Service Discovery Protocol
Assigned Numbers listing from the Bluetooth SIG for a current list of default
UUIDs. </p> </dd>
</dlentry>
<dlentry>
<dt>DEA</dt>
<dd><p>Data element alternative - A sequence of data elements of which one
must be selected. </p> </dd>
</dlentry>
<dlentry>
<dt>DES</dt>
<dd><p>Data element sequence - A sequence of data elements. </p> </dd>
</dlentry>
</dl> </section>
<section id="GUID-6F36EC26-5A7B-411D-8F27-3A4A00FAE184"><title>Architecture</title> <p>A service wishing to advertise on
the SDP server must create a session with the SDP server using <xref href="GUID-0879B4D7-A6FA-382F-A124-0234BA89D33D.dita"><apiname>RSdp</apiname></xref>.
A subsession must be created through <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita"><apiname>RSdpDatabase</apiname></xref> to access
the database. A subsession allows service records and their attributes to
be added, deleted and updated in the database. The application uses <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref> to
query the services and has to implement <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> or <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita"><apiname>MSdpElementBuilder</apiname></xref> interfaces
to handle and organize responses from the server. </p> <p><b>SDP Database </b> </p> <p>The SDP database maintains a list of service
records that describe the characteristics of services on the local device
that may be used by a remote device via Bluetooth. Each service record contains
information about a single service. </p> <p><b>SDP Agent </b> </p> <p>The SDP agent retrieves information from a service
record in the SDP database by issuing an SDP request. If an application chooses
to use a service, it opens a separate connection with the service provider.
For example; </p> <p>if you need to print a document on your Symbian platform
phone you could: </p> <ol id="GUID-CC0974A0-26EA-599B-A624-1CCAA8CF218E">
<li id="GUID-7C120CC4-EAC2-5F9F-A086-336F42554403"><p>do an SDP search for
devices offering a print service. </p> </li>
<li id="GUID-FCD7AD1B-CA98-53E2-99F2-77C6E9FC9A36"><p>Should a device be found
offering the print service you would further query it for connection details. </p> </li>
<li id="GUID-0ADFC4F6-810B-566F-A611-6A21784B9CCC"><p>With that information
your application would then create a Bluetooth connection to the device in
question using the connection configuration required and print the document. </p> </li>
</ol> </section>
<section id="GUID-E968CA22-FBD7-48F1-B538-D19CF84F1F80"><title>SDP library details</title> <p>The Bluetooth SDP component
has two published libraries. The DLLs that provides the functionality and
the libraries to which your code must link are identified below. </p> <table id="GUID-22CB200C-4F18-59DC-8F6F-2F8BE70B4CF9">
<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
<thead>
<row>
<entry>DLL</entry>
<entry>LIB</entry>
<entry>Short description</entry>
</row>
</thead>
<tbody>
<row>
<entry><p> <filepath>sdpdatabase.dll</filepath>  </p> </entry>
<entry><p> <filepath>sdpdatabase.lib</filepath>  </p> </entry>
<entry><p>Allows a local service to register itself to a local Bluetooth service
database. </p> </entry>
</row>
<row>
<entry><p> <filepath>sdpagent.dll</filepath>  </p> </entry>
<entry><p> <filepath>sdpagent.lib</filepath>  </p> </entry>
<entry><p>Enables a Bluetooth device to discover the Bluetooth services, and
the attributes of those services, that are available on a remote Bluetooth
device. </p> </entry>
</row>
</tbody>
</tgroup>
</table> </section>
<section id="GUID-9033AE9C-0C92-4B5C-BBDD-51ACF8707B1D"><title>Typical uses</title> <p>The following are typical uses for
the SDP Database and SDP Agent APIs: </p> <p><b>SDP
Database</b> </p> <p>The SDP Database API provides access to the database
for creating and maintaining records of services and setting the service attributes. </p> <p>For
more information see: </p> <ul>
<li id="GUID-EA5A4019-2F62-534A-8795-FD7873462DD5"><p><xref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita">SDP
Database Overview</xref>  </p> </li>
<li id="GUID-D336C6C6-55A6-5007-BD7C-A18408EAE150"><p><xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP
Service records and attributes</xref>  </p> </li>
</ul> <p>The typical uses for the SDP Database are: </p> <ul>
<li id="GUID-F88F0267-8BFA-52F1-88CB-A436CB0CBC33"><p><xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting
to the service discovery database</xref>  </p> </li>
<li id="GUID-BF5ABE0A-0329-5C72-8445-C169102485D6"><p><xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling
SDP attributes</xref>  </p> </li>
<li id="GUID-1EFA60F1-B700-52A5-BB25-A118167D93CE"><p><xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering
Services</xref>  </p> </li>
<li id="GUID-AA370FC4-E2EE-5C0C-B199-DB187AEC9582"><p><xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting
service record attributes</xref>  </p> </li>
</ul> </section>
</conbody></concept>