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