Symbian3/SDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita
changeset 7 51a74ef9ed63
child 8 ae94777fff8f
equal deleted inserted replaced
6:43e37759235e 7:51a74ef9ed63
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
       
     3 <!-- This component and the accompanying materials are made available under the terms of the License 
       
     4 "Eclipse Public License v1.0" which accompanies this distribution, 
       
     5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
       
     6 <!-- Initial Contributors:
       
     7     Nokia Corporation - initial contribution.
       
     8 Contributors: 
       
     9 -->
       
    10 <!DOCTYPE concept
       
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
       
    12 <concept id="GUID-95493C3D-58C6-5EBF-85E1-167D58E68658" xml:lang="en"><title>Bluetooth
       
    13 Remote Control Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody>
       
    14 <section><title>Purpose</title> <p>The Bluetooth Remote Control Framework
       
    15 provides the APIs needed to send (<xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>)
       
    16 and receive (<xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>) remote control commands
       
    17 to/from a Bluetooth enabled device. </p> <p><b>In this overview </b> </p> <p>You
       
    18 will learn about the Bluetooth Remote Control Framework. Several tutorials
       
    19 are provided, links are at the end of the overview, to help get you started
       
    20 writing remote control applications. </p> </section>
       
    21 <section><title>Architectural relationships</title> <p>The Bluetooth subsystem
       
    22 provides a number of APIs that you will use to establish a connection to a
       
    23 Bluetooth device that provides the required services. The APIs you need to
       
    24 know about include: </p> <ul>
       
    25 <li id="GUID-2CE04B62-CBF3-5051-808A-ED69036ED66A"><p><xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Bluetooth
       
    26 User</xref>  </p> <p>Establishing a Bluetooth connection. </p> </li>
       
    27 <li id="GUID-4677DB2E-5D9F-5FBC-A2A6-5C0C909C84C7"><p><xref href="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita">Bluetooth
       
    28 SDP</xref>  </p> <p>Finding a device that can provide the necessary services. </p> </li>
       
    29 <li id="GUID-9990C09D-EEFA-5F00-B6E8-85BD96BFB685"><p><xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial
       
    30 Comms C32</xref>  </p> <p>The serial communications framework. </p> </li>
       
    31 <li id="GUID-6D927D93-DD66-507A-99C6-4301CAA9F9D7"><p><xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Socket
       
    32 Server</xref>  </p> <p>The interface to protocols. </p> </li>
       
    33 </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
       
    34 Video Remote Control Profile</xref> (AVRCP) is implemented by the Remote Control
       
    35 Framework. A remote control bearer plug-in is required, which uses socket
       
    36 APIs internally to send and receive Audio Video Control Transport Protocol
       
    37 (AVCTP) data over ESock. </p> </section>
       
    38 <section><title>Key Concepts</title><dl>
       
    39 <dlentry>
       
    40 <dt>Controller</dt>
       
    41 <dd><p>The controller is a device that sends a control message or command
       
    42 to a target device and is ready to capture responses. </p> </dd>
       
    43 </dlentry>
       
    44 <dlentry>
       
    45 <dt>Target</dt>
       
    46 <dd><p>The target is a device that accepts the control message or command
       
    47 from the controller, invokes necessary procedures and sends out responses
       
    48 to controller. </p> </dd>
       
    49 </dlentry>
       
    50 <dlentry>
       
    51 <dt>Bearer</dt>
       
    52 <dd><p>The bearer is a carrier that acts like a vehicle of transmission for
       
    53 remote control messages. The bearer here is an Ecom plugin to the RemCon server. </p> </dd>
       
    54 </dlentry>
       
    55 <dlentry>
       
    56 <dt> Audio Video Remote Control Profile (AVRCP)</dt>
       
    57 <dd><p>The bearer that plugs into the RemCon server and transmits remote control
       
    58 messages (commands) and status responses. </p> </dd>
       
    59 </dlentry>
       
    60 <dlentry>
       
    61 <dt>Converter</dt>
       
    62 <dd><p>This is an ECom plug-in that converts the message format from the Client
       
    63 side API to the bearer format and vice versa. </p> </dd>
       
    64 </dlentry>
       
    65 <dlentry>
       
    66 <dt>Audio Video Control Transport Protocol (AVCTP)</dt>
       
    67 <dd><p>The protocol that defines the methods and messages used for controlling
       
    68 Audio/Video devices. </p> </dd>
       
    69 </dlentry>
       
    70 <dlentry>
       
    71 <dt>Audio Video Distribution Transport Protocol (AVDTP)</dt>
       
    72 <dd><p>The AVDTP is used to send frames of encoded multimedia data over Bluetooth. </p> </dd>
       
    73 </dlentry>
       
    74 </dl></section>
       
    75 <section><title>Description</title> <p>The Bluetooth Remote Control Framework
       
    76 provides APIs that make it possible for a device to participate in remote
       
    77 control relationship. The framework can be used to create an application with
       
    78 one of three behavior sets, they are: </p> <ul>
       
    79 <li id="GUID-B46D2342-789A-5503-B208-8685A07BEB3C"><p>Device acts as a remote
       
    80 controller </p> </li>
       
    81 <li id="GUID-85E8A346-1EAC-5A7C-A976-26E3ADC0FEDD"><p>Device is controlled
       
    82 remotely </p> </li>
       
    83 <li id="GUID-901A5D9A-B7A0-5429-A8EA-0D4E6B458CF6"><p>Combination of the above
       
    84 in a single device / application. </p> </li>
       
    85 </ul> <p><b>Remote Controller</b> </p> <p>As a controller the device will
       
    86 send commands to a target device. A controller can be connection-orientated,
       
    87 meaning it identifies a specific device to control and maintains a connection
       
    88 with that device, or connectionless, meaning remote control commands are sent
       
    89 out into the air for any receptive device to accept. </p> <p>The Controller
       
    90 APIs allow an application to send commands to a remote controlled device. </p> <p>Controller
       
    91 APIs include: </p> <ol id="GUID-C467E8F2-446E-5FFA-8703-81D1F8329C98">
       
    92 <li id="GUID-9D5A6982-FA04-5AC9-A0AE-D38CBC6A2E34"><p> <xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>  </p> </li>
       
    93 <li id="GUID-E26F43AD-B427-57AB-B2AE-9E38C39B3F28"><p> <xref href="GUID-73C622B9-A91F-35B2-82D5-4D0AFCE0E220.dita"><apiname>CRemConTargetSelectorPlugin</apiname></xref>  </p> </li>
       
    94 <li id="GUID-DDDCFAFE-FD7D-5DB4-98A8-CD958048CC12"><p> <xref href="GUID-E11AC4F0-EFBF-3AED-9FB5-EE3974A54768.dita"><apiname>CRemConBearerPlugin</apiname></xref>  </p> </li>
       
    95 <li id="GUID-FB5D8C52-CCF2-52A4-8184-CF5E96C0FE17"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
       
    96 <li id="GUID-D6069C5A-2693-59E7-90B1-39EFD170D734"><p> <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita"><apiname>CRemConInterfaceSelector</apiname></xref>  </p> </li>
       
    97 </ol> <p><b>Controlled Remotely</b> </p> <p>Known as the target device, this
       
    98 device receives commands from a controller. Target devices may only be connectionless,
       
    99 meaning they will always respond to valid remote control commands, regardless
       
   100 of the source of said commands. </p> <p>The Target API enables applications
       
   101 to receive commands and to query for information from the controller. </p> <p>Target
       
   102 APIs include: </p> <ol id="GUID-B773F2C2-D2BE-5B86-94BE-536C7A1FB903">
       
   103 <li id="GUID-FD6A5629-FC0A-5BA1-A7FD-F2237DBB5883"><p> <xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>  </p> </li>
       
   104 <li id="GUID-2E055556-D061-5993-95FB-66FA9DDAF0A8"><p> <xref href="GUID-7750ED3F-322E-3933-A3F7-6BB8AEE3F627.dita"><apiname>MRemConInterfaceIf</apiname></xref>  </p> </li>
       
   105 <li id="GUID-FCA09A7B-5DBB-50BB-92F9-B10706C3AC06"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
       
   106 </ol> <p><b>How Remote Control Works</b> </p> <p>The following diagram shows
       
   107 how the Remote Control Framework works for a handsfree headset example. </p> <fig id="GUID-C42AEF1A-3E1E-5CD1-84AE-80657ACEA1E1">
       
   108 <title>                 Bluetooth Remote Control Headset               </title>
       
   109 <desc><p>The controller application uses the Controller API, which is connected
       
   110 to the RemCon Server. The ECom plugin or AVRCP in this case is plugged into
       
   111 the RemCon server. The message format from the Controller API is converted
       
   112 into AVRCP format by the Converter plugin which in turn converts it into target
       
   113 API format at the other end. The target APIs invoke the necessary actions
       
   114 on the application and update the RemCon server of the status. The applicable
       
   115 Audio Video Distribution Transport Protocol (AVDTP) is used to deliver the
       
   116 output stream from the multimedia application to the controller device. The
       
   117 RemCon Server status is updated to the Controller through the AVRCP bearer. </p> </desc>
       
   118 <image href="GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e130266_href.jpg" placement="inline"/>
       
   119 </fig> </section>
       
   120 <section><title>What's next?</title> <p>The following tutorial series has
       
   121 been provided to make writing remote control applications easier. </p> <ul>
       
   122 <li id="GUID-5C8E6A29-4F25-58FD-9622-D23F81670953"><p><xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
       
   123 Control Basics</xref>  </p> </li>
       
   124 <li id="GUID-27F6911B-0072-5324-9645-D9BDA3ABA7F3"><p><xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
       
   125 as Controller</xref>  </p> </li>
       
   126 <li id="GUID-25FD58EC-A89C-5C25-A9BB-37A305BA0084"><p><xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
       
   127 as Target</xref>  </p> </li>
       
   128 <li id="GUID-567F3EF0-B3CD-5482-A7C8-7CDEBDF4F034"><p><xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
       
   129 and Responses</xref>  </p> </li>
       
   130 </ul> </section>
       
   131 </conbody></concept>