Symbian3/PDK/Source/GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Tue, 30 Mar 2010 11:56:28 +0100
changeset 5 f345bda72bc4
parent 3 46218c8b8afa
child 14 578be2adaf3e
permissions -rw-r--r--
Week 12 contribution of PDK documentation_content. See release notes for details. Fixes Bug 2054, Bug 1583, Bug 381, Bug 390, Bug 463, Bug 1897, Bug 344, Bug 1319, Bug 394, Bug 1520, Bug 1522, Bug 1892"

<?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>