Symbian3/SDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?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-95493C3D-58C6-5EBF-85E1-167D58E68658" xml:lang="en"><title>Bluetooth
Remote Control Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<section><title>Purpose</title> <p>The Bluetooth Remote Control Framework
provides the APIs needed to send (<xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>)
and receive (<xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>) remote control commands
to/from a Bluetooth enabled device. </p> <p><b>In this overview </b> </p> <p>You
will learn about the Bluetooth Remote Control Framework. Several tutorials
are provided, links are at the end of the overview, to help get you started
writing remote control applications. </p> </section>
<section><title>Architectural relationships</title> <p>The Bluetooth subsystem
provides a number of APIs that you will use to establish a connection to a
Bluetooth device that provides the required services. The APIs you need to
know about include: </p> <ul>
<li id="GUID-2CE04B62-CBF3-5051-808A-ED69036ED66A"><p><xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Bluetooth
User</xref>  </p> <p>Establishing a Bluetooth connection. </p> </li>
<li id="GUID-4677DB2E-5D9F-5FBC-A2A6-5C0C909C84C7"><p><xref href="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita">Bluetooth
SDP</xref>  </p> <p>Finding a device that can provide the necessary services. </p> </li>
<li id="GUID-9990C09D-EEFA-5F00-B6E8-85BD96BFB685"><p><xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial
Comms C32</xref>  </p> <p>The serial communications framework. </p> </li>
<li id="GUID-6D927D93-DD66-507A-99C6-4301CAA9F9D7"><p><xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Socket
Server</xref>  </p> <p>The interface to protocols. </p> </li>
</ul> <p>The <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-7251B0E5-D6B1-524B-9714-6A469F8E1CB3">Audio
Video Remote Control Profile</xref> (AVRCP) is implemented by the Remote Control
Framework. A remote control bearer plug-in is required, which uses socket
APIs internally to send and receive Audio Video Control Transport Protocol
(AVCTP) data over ESock. </p> </section>
<section><title>Key Concepts</title><dl>
<dlentry>
<dt>Controller</dt>
<dd><p>The controller is a device that sends a control message or command
to a target device and is ready to capture responses. </p> </dd>
</dlentry>
<dlentry>
<dt>Target</dt>
<dd><p>The target is a device that accepts the control message or command
from the controller, invokes necessary procedures and sends out responses
to controller. </p> </dd>
</dlentry>
<dlentry>
<dt>Bearer</dt>
<dd><p>The bearer is a carrier that acts like a vehicle of transmission for
remote control messages. The bearer here is an Ecom plugin to the RemCon server. </p> </dd>
</dlentry>
<dlentry>
<dt> Audio Video Remote Control Profile (AVRCP)</dt>
<dd><p>The bearer that plugs into the RemCon server and transmits remote control
messages (commands) and status responses. </p> </dd>
</dlentry>
<dlentry>
<dt>Converter</dt>
<dd><p>This is an ECom plug-in that converts the message format from the Client
side API to the bearer format and vice versa. </p> </dd>
</dlentry>
<dlentry>
<dt>Audio Video Control Transport Protocol (AVCTP)</dt>
<dd><p>The protocol that defines the methods and messages used for controlling
Audio/Video devices. </p> </dd>
</dlentry>
<dlentry>
<dt>Audio Video Distribution Transport Protocol (AVDTP)</dt>
<dd><p>The AVDTP is used to send frames of encoded multimedia data over Bluetooth. </p> </dd>
</dlentry>
</dl></section>
<section><title>Description</title> <p>The Bluetooth Remote Control Framework
provides APIs that make it possible for a device to participate in remote
control relationship. The framework can be used to create an application with
one of three behavior sets, they are: </p> <ul>
<li id="GUID-B46D2342-789A-5503-B208-8685A07BEB3C"><p>Device acts as a remote
controller </p> </li>
<li id="GUID-85E8A346-1EAC-5A7C-A976-26E3ADC0FEDD"><p>Device is controlled
remotely </p> </li>
<li id="GUID-901A5D9A-B7A0-5429-A8EA-0D4E6B458CF6"><p>Combination of the above
in a single device / application. </p> </li>
</ul> <p><b>Remote Controller</b> </p> <p>As a controller the device will
send commands to a target device. A controller can be connection-orientated,
meaning it identifies a specific device to control and maintains a connection
with that device, or connectionless, meaning remote control commands are sent
out into the air for any receptive device to accept. </p> <p>The Controller
APIs allow an application to send commands to a remote controlled device. </p> <p>Controller
APIs include: </p> <ol id="GUID-C467E8F2-446E-5FFA-8703-81D1F8329C98">
<li id="GUID-9D5A6982-FA04-5AC9-A0AE-D38CBC6A2E34"><p> <xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>  </p> </li>
<li id="GUID-E26F43AD-B427-57AB-B2AE-9E38C39B3F28"><p> <xref href="GUID-73C622B9-A91F-35B2-82D5-4D0AFCE0E220.dita"><apiname>CRemConTargetSelectorPlugin</apiname></xref>  </p> </li>
<li id="GUID-DDDCFAFE-FD7D-5DB4-98A8-CD958048CC12"><p> <xref href="GUID-E11AC4F0-EFBF-3AED-9FB5-EE3974A54768.dita"><apiname>CRemConBearerPlugin</apiname></xref>  </p> </li>
<li id="GUID-FB5D8C52-CCF2-52A4-8184-CF5E96C0FE17"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
<li id="GUID-D6069C5A-2693-59E7-90B1-39EFD170D734"><p> <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita"><apiname>CRemConInterfaceSelector</apiname></xref>  </p> </li>
</ol> <p><b>Controlled Remotely</b> </p> <p>Known as the target device, this
device receives commands from a controller. Target devices may only be connectionless,
meaning they will always respond to valid remote control commands, regardless
of the source of said commands. </p> <p>The Target API enables applications
to receive commands and to query for information from the controller. </p> <p>Target
APIs include: </p> <ol id="GUID-B773F2C2-D2BE-5B86-94BE-536C7A1FB903">
<li id="GUID-FD6A5629-FC0A-5BA1-A7FD-F2237DBB5883"><p> <xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>  </p> </li>
<li id="GUID-2E055556-D061-5993-95FB-66FA9DDAF0A8"><p> <xref href="GUID-7750ED3F-322E-3933-A3F7-6BB8AEE3F627.dita"><apiname>MRemConInterfaceIf</apiname></xref>  </p> </li>
<li id="GUID-FCA09A7B-5DBB-50BB-92F9-B10706C3AC06"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
</ol> <p><b>How Remote Control Works</b> </p> <p>The following diagram shows
how the Remote Control Framework works for a handsfree headset example. </p> <fig id="GUID-C42AEF1A-3E1E-5CD1-84AE-80657ACEA1E1">
<title>                 Bluetooth Remote Control Headset               </title>
<desc><p>The controller application uses the Controller API, which is connected
to the RemCon Server. The ECom plugin or AVRCP in this case is plugged into
the RemCon server. The message format from the Controller API is converted
into AVRCP format by the Converter plugin which in turn converts it into target
API format at the other end. The target APIs invoke the necessary actions
on the application and update the RemCon server of the status. The applicable
Audio Video Distribution Transport Protocol (AVDTP) is used to deliver the
output stream from the multimedia application to the controller device. The
RemCon Server status is updated to the Controller through the AVRCP bearer. </p> </desc>
<image href="GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e123728_href.jpg" placement="inline"/>
</fig> </section>
<section><title>What's next?</title> <p>The following tutorial series has
been provided to make writing remote control applications easier. </p> <ul>
<li id="GUID-5C8E6A29-4F25-58FD-9622-D23F81670953"><p><xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
Control Basics</xref>  </p> </li>
<li id="GUID-27F6911B-0072-5324-9645-D9BDA3ABA7F3"><p><xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
as Controller</xref>  </p> </li>
<li id="GUID-25FD58EC-A89C-5C25-A9BB-37A305BA0084"><p><xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
as Target</xref>  </p> </li>
<li id="GUID-567F3EF0-B3CD-5482-A7C8-7CDEBDF4F034"><p><xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
and Responses</xref>  </p> </li>
</ul> </section>
</conbody></concept>