Updated API reference 53/102753/4
authorSzymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
Tue, 6 Dec 2016 11:18:01 +0000 (12:18 +0100)
committerSzymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
Fri, 9 Dec 2016 08:43:19 +0000 (09:43 +0100)
PS2: [LB] Fixed updated code snippets to follow the code writing rules

Change-Id: I1041b8267add273f4977dd161fd621026b03ac13
Signed-off-by: Szymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
org.tizen.web.apireference/html/device_api/mobile/tizen/convergence.html
org.tizen.web.apireference/html/device_api/tv/tizen/convergence.html
org.tizen.web.apireference/html/device_api/wearable/tizen/convergence.html

index 1d49f5e..1926935 100644 (file)
@@ -7,7 +7,7 @@
 </head>
 <body id="page-content" onload="prettyPrint()">
 <div class="api" id="::Convergence">
-<div class="supported-platforms"><img class="mobile-optional" title="Optional, Supported by Tizen Mobile emulator" src="mobile_s_w_optional.png"></div>
+<div class="supported-platforms"><img class="mobile-mandatory emulator" title="Mandatory, Supported by Tizen Mobile emulator" src="mobile_s_w.png"></div>
 <div class="title"><h1>Convergence API</h1></div>
 <div class="brief">
  The Convergence API defines interfaces and methods
@@ -73,6 +73,9 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <li>
                     1.5. <a href="#ConnectionState">ConnectionState</a>
 </li>
+<li>
+                    1.6. <a href="#ServiceType">ServiceType</a>
+</li>
 </ul>
 </li>
 <li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
@@ -106,13 +109,15 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </li>
 <li>2.15. <a href="#ConnectSuccessCallback">ConnectSuccessCallback</a>
 </li>
-<li>2.16. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
+<li>2.16. <a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a>
 </li>
-<li>2.17. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
+<li>2.17. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
 </li>
-<li>2.18. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+<li>2.18. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
 </li>
-<li>2.19. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
+<li>2.19. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+</li>
+<li>2.20. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
 </li>
 </ul>
 </li>
@@ -177,10 +182,12 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <tr>
 <td><a href="#RemoteAppControlService">RemoteAppControlService</a></td>
 <td>
+<div>void <a href="#RemoteAppControlService::start">start</a> (<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::stop">stop</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::connect">connect</a> (<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::disconnect">disconnect</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback)</div>
 </td>
 </tr>
 <tr>
@@ -204,13 +211,20 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </tr>
 <tr>
 <td><a href="#RemoteAppControlCallback">RemoteAppControlCallback</a></td>
-<td><div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div></td>
+<td>
+<div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div>
+<div>void <a href="#RemoteAppControlCallback::onfailure">onfailure</a> ()</div>
+</td>
 </tr>
 <tr>
 <td><a href="#ConnectSuccessCallback">ConnectSuccessCallback</a></td>
 <td><div>void <a href="#ConnectSuccessCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
 </tr>
 <tr>
+<td><a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a></td>
+<td><div>void <a href="#RemoteAppControlStartCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
+</tr>
+<tr>
 <td><a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a></td>
 <td><div>void <a href="#AppCommunicationSuccessCallback::onsuccess">onsuccess</a> (<a href="#ChannelInfo">ChannelInfo</a> channelInfo)</div></td>
 </tr>
@@ -309,6 +323,30 @@ CONNECTING - Connecting state.             </li>
           </ul>
          </div>
 </div>
+<div class="enum" id="ServiceType">
+<a class="backward-compatibility-anchor" name="::Convergence::ServiceType"></a><h3>1.6. ServiceType</h3>
+<div class="brief">
+ Enumeration of service type.
+          </div>
+<pre class="webidl prettyprint">    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The following values are supported:
+          </p>
+          <ul>
+            <li>
+APP_COMM_CLIENT - Application communication client service.             </li>
+            <li>
+APP_COMM_SERVER - Application communication server service.             </li>
+            <li>
+REMOTE_APP_CONTROL - Remote application control service.             </li>
+          </ul>
+         </div>
+</div>
 </div>
 <div class="interfaces" id="interfaces-section">
 <h2>2. Interfaces</h2>
@@ -494,7 +532,7 @@ discovery.
 <span class="name">timeout</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  Duration of discovery procedure in seconds. If this
 value is omitted or <em>null</em> is passed, the default timeout
-is 60 seconds.
+is 5 seconds.
                 </li>
         </ul>
 </div>
@@ -699,6 +737,8 @@ device-to-device services.
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -720,7 +760,18 @@ This interface defines common property for all device-to-device services
             Since: </span>
  3.0
             </p>
-</li></ul>
+</li>
+<li class="attribute" id="Service::type">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">ServiceType </span><span class="name">type</span></span><div class="brief">
+ The service type.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="AppCommunicationService">
@@ -819,6 +870,8 @@ The ErrorCallback is launched with these error types:
             <ul>
               <li>
  AbortError: If any system error occurred              </li>
+              <li>
+ InvalidStateError: If the service has already started the channel. Note some services don't require a connection and disconnection procedures              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -864,11 +917,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is started already. <br>Note some services don't require
-a connection and disconnection procedures.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -937,7 +985,7 @@ function onstarted(channelinfo, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -956,7 +1004,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1026,8 +1074,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1074,10 +1123,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1180,7 +1225,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1199,7 +1244,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1283,8 +1328,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1339,10 +1385,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1433,7 +1475,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1452,7 +1494,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1536,8 +1578,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1577,10 +1620,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1686,7 +1725,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1705,7 +1744,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1843,9 +1882,9 @@ function onstarted(channel, clientinfo)
 
 /* Create an instance of app communication server service object */
 var service = new tizen.AppCommunicationServerService();
-var service.start(requestChannel, onstarted, onerror);
 /* Register listener to receive notifications from remote service */
 service.setListener(onnotify);
+service.start(requestChannel, onstarted, onerror);
 </pre>
 </div>
 <div class="output">
@@ -1905,7 +1944,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.start(requestChannel, onstarted, onerror);
@@ -1925,7 +1964,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2070,6 +2109,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. The framework automatically determines which connectivity
@@ -2117,11 +2160,11 @@ function onerror(err)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;else if (service.type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;}
@@ -2139,14 +2182,14 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2225,6 +2268,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <p><span class="remark"> Remark: </span>
  Example of using can be found at <a href="convergence.html#AppCommunicationClientService::connect">connect()</a> code example.
             </p>
@@ -2292,6 +2338,9 @@ Listening to service update notifications            </li>
 Sending data for the service            </li>
           </ul>
          </div>
+<p class="warning"><b>Warning:</b>
+ AppCommunicationServerService API is supported on Tizen 3.0 TV product only.
+          </p>
 <p><span class="remark"> Remark: </span>
  application server service is used without discovery phase.
 The developer should instantiate a standalone service object using
@@ -2318,6 +2367,11 @@ var service = new tizen.AppCommunicationServerService();
 remote application control service features.
           </div>
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -2326,13 +2380,15 @@ remote application control service features.
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -2355,6 +2411,287 @@ Receiving app control results            </li>
       <div class="methods">
 <h4>Methods</h4>
 <dl>
+<dt class="method" id="RemoteAppControlService::start">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::start"></a><code><b><span class="methodName">start</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Starts and initiates remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method starts the remote app control service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<p><span class="remark"> Remark : </span>
+ Before using this method for remote application service, the service must be connected with the
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is already started.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote app control service started');
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote app control service started
+</pre>
+</div>
+</dd>
+<dt class="method" id="RemoteAppControlService::stop">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::stop"></a><code><b><span class="methodName">stop</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Stops remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method stops and release internally allocated resources for remote service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is not started yet.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstopped()
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service stopped');
+&nbsp;&nbsp;&nbsp;/* Disconnect */
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service started');
+&nbsp;&nbsp;&nbsp;/* Stop the service */
+&nbsp;&nbsp;&nbsp;service.stop(onstopped, onerror);
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote App Control service started
+Remote App Control service stopped
+</pre>
+</div>
+</dd>
 <dt class="method" id="RemoteAppControlService::connect">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::connect"></a><code><b><span class="methodName">connect</span></b></code>
 </dt>
@@ -2387,6 +2724,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. Framework automatically determines which connectivity
@@ -2433,15 +2774,7 @@ function onerror(err)
 
 function onconnected(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof AppCommunicationClientService))
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;service.disconnect();
 }
 
@@ -2456,14 +2789,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2480,15 +2806,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2499,9 +2818,6 @@ catch (err)
   - type: TV
   - service amount: 2
  &lt;&lt; Device discovery has finished
- Connected to the service
- Connected to the app communication client service
- Connected to the service
  Connected to the remote app control service
  </pre>
 </div>
@@ -2541,6 +2857,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
 <ul>
@@ -2596,7 +2915,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState == "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2644,7 +2963,7 @@ catch (err)
 <div class="brief">
  Sends the given application ID to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2679,7 +2998,7 @@ invalid value              </li>
  Before using this method, the service must be connected
 with
 <a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
-correspondingly.
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2727,24 +3046,26 @@ function onerror(err)
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data) 
+function onsuccess()
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;console.log('clientId: ' + clientId);
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('The application has launched successfully');
 }
 
-function onconnected(service)
+function onstarted(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;console.log('Service started');
 
 &nbsp;&nbsp;&nbsp;/* Launching server app remotely */
 &nbsp;&nbsp;&nbsp;service.launch(requestAppId, remoteAppControlCallback, onerror);
 }
 
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
 var discoverySuccessCallback =
 {
 &nbsp;&nbsp;&nbsp;onfound: function(device)
@@ -2756,7 +3077,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2774,15 +3095,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2794,6 +3108,8 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
+ The application has launched successfully
  </pre>
 </div>
 </dd>
@@ -2804,7 +3120,7 @@ catch (err)
 <div class="brief">
  Sends an app control to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2834,7 +3150,8 @@ The ErrorCallback is launched with these error types:
             </p>
 <p><span class="remark"> Remark: </span>
  Before using this method, the service must be connected with
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2855,6 +3172,10 @@ The ErrorCallback is launched with these error types:
 <span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  The method to invoke on failure.
                 </li>
+          <li class="param">
+<span class="name">replyCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke when the application gets back result from the remote service.
+                </li>
         </ul>
 </div>
 <div class="exceptionlist">
@@ -2882,26 +3203,47 @@ var requestAppControl = new tizen.ApplicationControl('http://tizen.org/appcontro
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null, 'image/jpeg', null,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[new tizen.ApplicationControlData('images', [testImgData])]);
 
+function onsuccess()
+{
+&nbsp;&nbsp;&nbsp;console.log('Launch application control succeed');
+}
+
 function onerror(err)
 {
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data)
+var remoteAppControlCallback =
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
+&nbsp;&nbsp;&nbsp;onsuccess: function(data)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i = 0; i &lt; data.length; i++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key : " + data[i].key + "value : " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+&nbsp;&nbsp;&nbsp;/* Callee returned failure */
+&nbsp;&nbsp;&nbsp;onfailure: function()
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('The launch application control failed');
 &nbsp;&nbsp;&nbsp;}
 }
 
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Service started');
+
+&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
+&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, onsuccess, onerror, remoteAppControlCallback);
+}
+
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
 
-&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
-&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, remoteAppControlCallback, onerror);
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
 }
 
 var discoverySuccessCallback =
@@ -2915,7 +3257,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2953,6 +3295,7 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
  </pre>
 </div>
 </dd>
@@ -3052,57 +3395,56 @@ array which is to be delivered to a remote service.
 </dl>
 </div>
 </div>
-<div class="dictionary" id="ClientInfo">
+<div class="interface" id="ClientInfo">
 <a class="backward-compatibility-anchor" name="::Convergence::ClientInfo"></a><h3>2.12. ClientInfo</h3>
 <div class="brief">
- The dictionary that specifies client information.
+ The interface specifies client information.
           </div>
-<pre class="webidl prettyprint">    dictionary ClientInfo {
-        boolean isHost;
+<pre class="webidl prettyprint">    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };</pre>
 <p><span class="version">
             Since: </span>
  3.0
           </p>
 <div class="attributes">
-<h4>Dictionary members</h4>
-<dl>
-<dt class="member" id="ClientInfo::isHost"><span class="attrName">boolean isHost</span></dt>
-<dd>
-<div class="brief">
- The value indicating if the service is local (true) or
-remote (false).
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ClientInfo::isHost">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">boolean </span><span class="name">isHost</span></span><div class="brief">
+ The value indicating if the service is local (true) or remote (false).
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::clientId"><span class="attrName">DOMString clientId</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::clientId">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">DOMString </span><span class="name">clientId</span></span><div class="brief">
  The unique client id.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::connectionTime"><span class="attrName">long connectionTime</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::connectionTime">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">long </span><span class="name">connectionTime</span></span><div class="brief">
  The connection time in milliseconds.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="DiscoverySuccessCallback">
@@ -3187,13 +3529,14 @@ procedure.
 <div class="interface" id="RemoteAppControlCallback">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback"></a><h3>2.14. RemoteAppControlCallback</h3>
 <div class="brief">
- The <em>RemoteAppControlCallback</em> interface defines the
-success method to be invoked when a service sends app control
-successfully.
+ The RemoteAppControlCallback specifies callbacks that are invoked as a reply
+from the requested application control within the application control requester.
           </div>
 <pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -3202,8 +3545,7 @@ successfully.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#RemoteAppControlService::launch">launch()</a> and
-<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> methods.
+<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> method.
           </p>
          </div>
 <div class="methods">
@@ -3214,8 +3556,7 @@ The callback of this type is invoked in
 </dt>
 <dd>
 <div class="brief">
- The RemoteAppControlCallback callback specifies success callbacks that are invoked as a reply
-from the requested application control within the application control requester.
+ Called when the received reply from the requested application on the remote device has no errors.
             </div>
 <div class="synopsis"><pre class="signature prettyprint">void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
              </pre></div>
@@ -3233,6 +3574,20 @@ from the requested application control within the application control requester.
         </ul>
 </div>
 </dd>
+<dt class="method" id="RemoteAppControlCallback::onfailure">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback::onfailure"></a><code><b><span class="methodName">onfailure</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the received reply from the requested application on the remote device contains any error.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onfailure();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</dd>
 </dl>
 </div>
 </div>
@@ -3253,8 +3608,8 @@ to be invoked when a service is connected.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> and
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> methods.
+<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> of AppCommunicationClientService and
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> of RemoteAppControlService methods.
           </p>
          </div>
 <div class="methods">
@@ -3277,7 +3632,56 @@ The callback of this type is invoked in
 <p><span class="param">Parameters:</span></p>
 <ul>
           <li class="param">
-<span class="name">service</span>:
+<span class="name">service</span>: 
+ The connected service on a remote device.
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="RemoteAppControlStartCallback">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback"></a><h3>2.16. RemoteAppControlStartCallback</h3>
+<div class="brief">
+ The <em>RemoteAppControlStartCallback</em> interface defines the success method
+to be invoked when a RemoteAppControlService is started.
+          </div>
+<pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The callback of this type is invoked in
+<a href="convergence.html#RemoteAppControlService::start">start()</a> of RemoteAppControlService methods.
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="RemoteAppControlStartCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the service connection is established.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Service">Service</a> service);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">service</span>: 
  The connected service on a remote device.
                 </li>
         </ul>
@@ -3287,7 +3691,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationSuccessCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.16. AppCommunicationSuccessCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.17. AppCommunicationSuccessCallback</h3>
 <div class="brief">
  The <em>AppCommunicationSuccessCallback</em> interface defines the success method
 to be invoked when a service operation, such as stop or send is successful.
@@ -3337,7 +3741,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationStartCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.17. AppCommunicationStartCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.18. AppCommunicationStartCallback</h3>
 <div class="brief">
  The <em>AppCommunicationStartCallback</em> interface defines the success method
 to be invoked when a start service operation is successful.
@@ -3390,7 +3794,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationClientListCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.18. AppCommunicationClientListCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.19. AppCommunicationClientListCallback</h3>
 <div class="brief">
  The <em>AppCommunicationClientListCallback</em> interface defines the
 method to be invoked when requested a list of clients, connected to
@@ -3440,7 +3844,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationListenerCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.19. AppCommunicationListenerCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.20. AppCommunicationListenerCallback</h3>
 <div class="brief">
  The <em>AppCommunicationListenerCallback</em> interface defines the
 method to be invoked when a service notification is received
@@ -3526,6 +3930,8 @@ declare the following feature requirements in the config file:
 
     enum ConnectionState{"CONNECTED", "NOT_CONNECTED", "CONNECTING"};
 
+    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};
+
     [Constructor(DOMString uri, DOMString id)]
     interface ChannelInfo {
       attribute DOMString uri;
@@ -3561,6 +3967,8 @@ declare the following feature requirements in the config file:
     [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };
 
     [NoInterfaceObject] interface AppCommunicationService : <a href="#Service">Service</a> {
@@ -3604,6 +4012,11 @@ declare the following feature requirements in the config file:
     };
 
     [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -3612,13 +4025,15 @@ declare the following feature requirements in the config file:
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };
 
     dictionary PayloadString {
@@ -3633,12 +4048,12 @@ declare the following feature requirements in the config file:
         byte[] value;
     };
 
-    dictionary ClientInfo {
-        boolean isHost;
+    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };
 
     [Callback, NoInterfaceObject] interface DiscoverySuccessCallback {
@@ -3651,6 +4066,8 @@ declare the following feature requirements in the config file:
     [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };
 
     [Callback=FunctionOnly, NoInterfaceObject] interface ConnectSuccessCallback {
@@ -3658,6 +4075,11 @@ declare the following feature requirements in the config file:
         void onsuccess(<a href="#Service">Service</a> service);
     };
 
+    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };
+
     [Callback=FunctionOnly, NoInterfaceObject] interface AppCommunicationSuccessCallback {
 
         void onsuccess(<a href="#ChannelInfo">ChannelInfo</a> channelInfo);
index 096e116..b83c819 100644 (file)
@@ -72,6 +72,9 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <li>
                     1.5. <a href="#ConnectionState">ConnectionState</a>
 </li>
+<li>
+                    1.6. <a href="#ServiceType">ServiceType</a>
+</li>
 </ul>
 </li>
 <li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
@@ -105,13 +108,15 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </li>
 <li>2.15. <a href="#ConnectSuccessCallback">ConnectSuccessCallback</a>
 </li>
-<li>2.16. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
+<li>2.16. <a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a>
 </li>
-<li>2.17. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
+<li>2.17. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
 </li>
-<li>2.18. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+<li>2.18. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
 </li>
-<li>2.19. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
+<li>2.19. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+</li>
+<li>2.20. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
 </li>
 </ul>
 </li>
@@ -176,10 +181,12 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <tr>
 <td><a href="#RemoteAppControlService">RemoteAppControlService</a></td>
 <td>
+<div>void <a href="#RemoteAppControlService::start">start</a> (<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::stop">stop</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::connect">connect</a> (<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::disconnect">disconnect</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback)</div>
 </td>
 </tr>
 <tr>
@@ -203,13 +210,20 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </tr>
 <tr>
 <td><a href="#RemoteAppControlCallback">RemoteAppControlCallback</a></td>
-<td><div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div></td>
+<td>
+<div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div>
+<div>void <a href="#RemoteAppControlCallback::onfailure">onfailure</a> ()</div>
+</td>
 </tr>
 <tr>
 <td><a href="#ConnectSuccessCallback">ConnectSuccessCallback</a></td>
 <td><div>void <a href="#ConnectSuccessCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
 </tr>
 <tr>
+<td><a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a></td>
+<td><div>void <a href="#RemoteAppControlStartCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
+</tr>
+<tr>
 <td><a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a></td>
 <td><div>void <a href="#AppCommunicationSuccessCallback::onsuccess">onsuccess</a> (<a href="#ChannelInfo">ChannelInfo</a> channelInfo)</div></td>
 </tr>
@@ -308,6 +322,30 @@ CONNECTING - Connecting state.             </li>
           </ul>
          </div>
 </div>
+<div class="enum" id="ServiceType">
+<a class="backward-compatibility-anchor" name="::Convergence::ServiceType"></a><h3>1.6. ServiceType</h3>
+<div class="brief">
+ Enumeration of service type.
+          </div>
+<pre class="webidl prettyprint">    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The following values are supported:
+          </p>
+          <ul>
+            <li>
+APP_COMM_CLIENT - Application communication client service.             </li>
+            <li>
+APP_COMM_SERVER - Application communication server service.             </li>
+            <li>
+REMOTE_APP_CONTROL - Remote application control service.             </li>
+          </ul>
+         </div>
+</div>
 </div>
 <div class="interfaces" id="interfaces-section">
 <h2>2. Interfaces</h2>
@@ -493,7 +531,7 @@ discovery.
 <span class="name">timeout</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  Duration of discovery procedure in seconds. If this
 value is omitted or <em>null</em> is passed, the default timeout
-is 60 seconds.
+is 5 seconds.
                 </li>
         </ul>
 </div>
@@ -698,6 +736,8 @@ device-to-device services.
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -719,7 +759,18 @@ This interface defines common property for all device-to-device services
             Since: </span>
  3.0
             </p>
-</li></ul>
+</li>
+<li class="attribute" id="Service::type">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">ServiceType </span><span class="name">type</span></span><div class="brief">
+ The service type.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="AppCommunicationService">
@@ -818,6 +869,8 @@ The ErrorCallback is launched with these error types:
             <ul>
               <li>
  AbortError: If any system error occurred              </li>
+              <li>
+ InvalidStateError: If the service has already started the channel. Note some services don't require a connection and disconnection procedures              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -863,11 +916,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is started already. <br>Note some services don't require
-a connection and disconnection procedures.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -936,7 +984,7 @@ function onstarted(channelinfo, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -955,7 +1003,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1025,8 +1073,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1073,10 +1122,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1179,7 +1224,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1198,7 +1243,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1282,8 +1327,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1338,10 +1384,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1432,7 +1474,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1451,7 +1493,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1535,8 +1577,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1576,10 +1619,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1617,15 +1656,16 @@ function onstarted(channel, clientinfo)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.stop(requestChannel2, onstopped);
 &nbsp;&nbsp;&nbsp;}
 }
-</pre>
-</div>
 
-<div class="output">
-<span class="title"><p>Output example:</p></span><pre>
 /* Create an instance of app communication server service object */
 var service = new tizen.AppCommunicationServerService();
 service.start(requestChannel1, onstarted, onerror);
 service.start(requestChannel2, onstarted, onerror);
+</pre>
+</div>
+
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre>
 Channel started
 channel uri: targetApp0.main
 channel id: chA
@@ -1684,7 +1724,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1703,7 +1743,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1841,9 +1881,9 @@ function onstarted(channel, clientinfo)
 
 /* Create an instance of app communication server service object */
 var service = new tizen.AppCommunicationServerService();
-var service.start(requestChannel, onstarted, onerror);
 /* Register listener to receive notifications from remote service */
 service.setListener(onnotify);
+service.start(requestChannel, onstarted, onerror);
 </pre>
 </div>
 <div class="output">
@@ -1903,7 +1943,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.start(requestChannel, onstarted, onerror);
@@ -1923,7 +1963,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2068,6 +2108,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. The framework automatically determines which connectivity
@@ -2115,11 +2159,11 @@ function onerror(err)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;else if (service.type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;}
@@ -2137,14 +2181,14 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2223,6 +2267,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <p><span class="remark"> Remark: </span>
  Example of using can be found at <a href="convergence.html#AppCommunicationClientService::connect">connect()</a> code example.
             </p>
@@ -2290,6 +2337,9 @@ Listening to service update notifications            </li>
 Sending data for the service            </li>
           </ul>
          </div>
+<p class="warning"><b>Warning:</b>
+ AppCommunicationServerService API is supported on Tizen 3.0 TV product only.
+          </p>
 <p><span class="remark"> Remark: </span>
  application server service is used without discovery phase.
 The developer should instantiate a standalone service object using
@@ -2316,6 +2366,11 @@ var service = new tizen.AppCommunicationServerService();
 remote application control service features.
           </div>
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -2324,13 +2379,15 @@ remote application control service features.
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -2353,6 +2410,287 @@ Receiving app control results            </li>
       <div class="methods">
 <h4>Methods</h4>
 <dl>
+<dt class="method" id="RemoteAppControlService::start">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::start"></a><code><b><span class="methodName">start</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Starts and initiates remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method starts the remote app control service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<p><span class="remark"> Remark : </span>
+ Before using this method for remote application service, the service must be connected with the
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is already started.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote app control service started');
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote app control service started
+</pre>
+</div>
+</dd>
+<dt class="method" id="RemoteAppControlService::stop">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::stop"></a><code><b><span class="methodName">stop</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Stops remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method stops and release internally allocated resources for remote service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is not started yet.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstopped()
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service stopped');
+&nbsp;&nbsp;&nbsp;/* Disconnect */
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service started');
+&nbsp;&nbsp;&nbsp;/* Stop the service */
+&nbsp;&nbsp;&nbsp;service.stop(onstopped, onerror);
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote App Control service started
+Remote App Control service stopped
+</pre>
+</div>
+</dd>
 <dt class="method" id="RemoteAppControlService::connect">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::connect"></a><code><b><span class="methodName">connect</span></b></code>
 </dt>
@@ -2385,6 +2723,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. Framework automatically determines which connectivity
@@ -2431,15 +2773,7 @@ function onerror(err)
 
 function onconnected(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof AppCommunicationClientService))
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;service.disconnect();
 }
 
@@ -2454,14 +2788,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2478,15 +2805,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2497,9 +2817,6 @@ catch (err)
   - type: TV
   - service amount: 2
  &lt;&lt; Device discovery has finished
- Connected to the service
- Connected to the app communication client service
- Connected to the service
  Connected to the remote app control service
  </pre>
 </div>
@@ -2539,6 +2856,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
 <ul>
@@ -2594,7 +2914,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState == "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2642,7 +2962,7 @@ catch (err)
 <div class="brief">
  Sends the given application ID to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2677,7 +2997,7 @@ invalid value              </li>
  Before using this method, the service must be connected
 with
 <a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
-correspondingly.
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2725,24 +3045,26 @@ function onerror(err)
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data) 
+function onsuccess()
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;console.log('clientId: ' + clientId);
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('The application has launched successfully');
 }
 
-function onconnected(service)
+function onstarted(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;console.log('Service started');
 
 &nbsp;&nbsp;&nbsp;/* Launching server app remotely */
 &nbsp;&nbsp;&nbsp;service.launch(requestAppId, remoteAppControlCallback, onerror);
 }
 
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
 var discoverySuccessCallback =
 {
 &nbsp;&nbsp;&nbsp;onfound: function(device)
@@ -2754,7 +3076,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2772,15 +3094,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2792,6 +3107,8 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
+ The application has launched successfully
  </pre>
 </div>
 </dd>
@@ -2802,7 +3119,7 @@ catch (err)
 <div class="brief">
  Sends an app control to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2832,7 +3149,8 @@ The ErrorCallback is launched with these error types:
             </p>
 <p><span class="remark"> Remark: </span>
  Before using this method, the service must be connected with
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2853,6 +3171,10 @@ The ErrorCallback is launched with these error types:
 <span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  The method to invoke on failure.
                 </li>
+          <li class="param">
+<span class="name">replyCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke when the application gets back result from the remote service.
+                </li>
         </ul>
 </div>
 <div class="exceptionlist">
@@ -2880,26 +3202,47 @@ var requestAppControl = new tizen.ApplicationControl('http://tizen.org/appcontro
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null, 'image/jpeg', null,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[new tizen.ApplicationControlData('images', [testImgData])]);
 
+function onsuccess()
+{
+&nbsp;&nbsp;&nbsp;console.log('Launch application control succeed');
+}
+
 function onerror(err)
 {
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data)
+var remoteAppControlCallback =
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
+&nbsp;&nbsp;&nbsp;onsuccess: function(data)
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i = 0; i &lt; data.length; i++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key : " + data[i].key + "value : " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+&nbsp;&nbsp;&nbsp;/* Callee returned failure */
+&nbsp;&nbsp;&nbsp;onfailure: function()
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('The launch application control failed');
 &nbsp;&nbsp;&nbsp;}
 }
 
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Service started');
+
+&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
+&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, onsuccess, onerror, remoteAppControlCallback);
+}
+
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
 
-&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
-&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, remoteAppControlCallback, onerror);
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
 }
 
 var discoverySuccessCallback =
@@ -2913,7 +3256,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2951,6 +3294,7 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
  </pre>
 </div>
 </dd>
@@ -3050,57 +3394,56 @@ array which is to be delivered to a remote service.
 </dl>
 </div>
 </div>
-<div class="dictionary" id="ClientInfo">
+<div class="interface" id="ClientInfo">
 <a class="backward-compatibility-anchor" name="::Convergence::ClientInfo"></a><h3>2.12. ClientInfo</h3>
 <div class="brief">
- The dictionary that specifies client information.
+ The interface specifies client information.
           </div>
-<pre class="webidl prettyprint">    dictionary ClientInfo {
-        boolean isHost;
+<pre class="webidl prettyprint">    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };</pre>
 <p><span class="version">
             Since: </span>
  3.0
           </p>
 <div class="attributes">
-<h4>Dictionary members</h4>
-<dl>
-<dt class="member" id="ClientInfo::isHost"><span class="attrName">boolean isHost</span></dt>
-<dd>
-<div class="brief">
- The value indicating if the service is local (true) or
-remote (false).
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ClientInfo::isHost">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">boolean </span><span class="name">isHost</span></span><div class="brief">
+ The value indicating if the service is local (true) or remote (false).
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::clientId"><span class="attrName">DOMString clientId</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::clientId">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">DOMString </span><span class="name">clientId</span></span><div class="brief">
  The unique client id.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::connectionTime"><span class="attrName">long connectionTime</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::connectionTime">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">long </span><span class="name">connectionTime</span></span><div class="brief">
  The connection time in milliseconds.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="DiscoverySuccessCallback">
@@ -3185,13 +3528,14 @@ procedure.
 <div class="interface" id="RemoteAppControlCallback">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback"></a><h3>2.14. RemoteAppControlCallback</h3>
 <div class="brief">
- The <em>RemoteAppControlCallback</em> interface defines the
-success method to be invoked when a service sends app control
-successfully.
+ The RemoteAppControlCallback specifies callbacks that are invoked as a reply
+from the requested application control within the application control requester.
           </div>
 <pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -3200,8 +3544,7 @@ successfully.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#RemoteAppControlService::launch">launch()</a> and
-<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> methods.
+<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> method.
           </p>
          </div>
 <div class="methods">
@@ -3212,8 +3555,7 @@ The callback of this type is invoked in
 </dt>
 <dd>
 <div class="brief">
- The RemoteAppControlCallback callback specifies success callbacks that are invoked as a reply
-from the requested application control within the application control requester.
+ Called when the received reply from the requested application on the remote device has no errors.
             </div>
 <div class="synopsis"><pre class="signature prettyprint">void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
              </pre></div>
@@ -3231,6 +3573,20 @@ from the requested application control within the application control requester.
         </ul>
 </div>
 </dd>
+<dt class="method" id="RemoteAppControlCallback::onfailure">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback::onfailure"></a><code><b><span class="methodName">onfailure</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the received reply from the requested application on the remote device contains any error.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onfailure();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</dd>
 </dl>
 </div>
 </div>
@@ -3251,8 +3607,8 @@ to be invoked when a service is connected.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> and
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> methods.
+<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> of AppCommunicationClientService and
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> of RemoteAppControlService methods.
           </p>
          </div>
 <div class="methods">
@@ -3275,7 +3631,56 @@ The callback of this type is invoked in
 <p><span class="param">Parameters:</span></p>
 <ul>
           <li class="param">
-<span class="name">service</span>:
+<span class="name">service</span>: 
+ The connected service on a remote device.
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="RemoteAppControlStartCallback">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback"></a><h3>2.16. RemoteAppControlStartCallback</h3>
+<div class="brief">
+ The <em>RemoteAppControlStartCallback</em> interface defines the success method
+to be invoked when a RemoteAppControlService is started.
+          </div>
+<pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The callback of this type is invoked in
+<a href="convergence.html#RemoteAppControlService::start">start()</a> of RemoteAppControlService methods.
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="RemoteAppControlStartCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the service connection is established.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Service">Service</a> service);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">service</span>: 
  The connected service on a remote device.
                 </li>
         </ul>
@@ -3285,7 +3690,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationSuccessCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.16. AppCommunicationSuccessCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.17. AppCommunicationSuccessCallback</h3>
 <div class="brief">
  The <em>AppCommunicationSuccessCallback</em> interface defines the success method
 to be invoked when a service operation, such as stop or send is successful.
@@ -3335,7 +3740,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationStartCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.17. AppCommunicationStartCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.18. AppCommunicationStartCallback</h3>
 <div class="brief">
  The <em>AppCommunicationStartCallback</em> interface defines the success method
 to be invoked when a start service operation is successful.
@@ -3388,7 +3793,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationClientListCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.18. AppCommunicationClientListCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.19. AppCommunicationClientListCallback</h3>
 <div class="brief">
  The <em>AppCommunicationClientListCallback</em> interface defines the
 method to be invoked when requested a list of clients, connected to
@@ -3438,7 +3843,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationListenerCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.19. AppCommunicationListenerCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.20. AppCommunicationListenerCallback</h3>
 <div class="brief">
  The <em>AppCommunicationListenerCallback</em> interface defines the
 method to be invoked when a service notification is received
@@ -3524,6 +3929,8 @@ declare the following feature requirements in the config file:
 
     enum ConnectionState{"CONNECTED", "NOT_CONNECTED", "CONNECTING"};
 
+    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};
+
     [Constructor(DOMString uri, DOMString id)]
     interface ChannelInfo {
       attribute DOMString uri;
@@ -3559,6 +3966,8 @@ declare the following feature requirements in the config file:
     [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };
 
     [NoInterfaceObject] interface AppCommunicationService : <a href="#Service">Service</a> {
@@ -3602,6 +4011,11 @@ declare the following feature requirements in the config file:
     };
 
     [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -3610,13 +4024,15 @@ declare the following feature requirements in the config file:
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };
 
     dictionary PayloadString {
@@ -3631,12 +4047,12 @@ declare the following feature requirements in the config file:
         byte[] value;
     };
 
-    dictionary ClientInfo {
-        boolean isHost;
+    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };
 
     [Callback, NoInterfaceObject] interface DiscoverySuccessCallback {
@@ -3649,6 +4065,8 @@ declare the following feature requirements in the config file:
     [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };
 
     [Callback=FunctionOnly, NoInterfaceObject] interface ConnectSuccessCallback {
@@ -3656,6 +4074,11 @@ declare the following feature requirements in the config file:
         void onsuccess(<a href="#Service">Service</a> service);
     };
 
+    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };
+
     [Callback=FunctionOnly, NoInterfaceObject] interface AppCommunicationSuccessCallback {
 
         void onsuccess(<a href="#ChannelInfo">ChannelInfo</a> channelInfo);
index 810c477..f4e698e 100644 (file)
@@ -73,6 +73,9 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <li>
                     1.5. <a href="#ConnectionState">ConnectionState</a>
 </li>
+<li>
+                    1.6. <a href="#ServiceType">ServiceType</a>
+</li>
 </ul>
 </li>
 <li>2. <a href="#interfaces-section">Interfaces</a><ul class="toc">
@@ -106,13 +109,15 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </li>
 <li>2.15. <a href="#ConnectSuccessCallback">ConnectSuccessCallback</a>
 </li>
-<li>2.16. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
+<li>2.16. <a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a>
 </li>
-<li>2.17. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
+<li>2.17. <a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a>
 </li>
-<li>2.18. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+<li>2.18. <a href="#AppCommunicationStartCallback">AppCommunicationStartCallback</a>
 </li>
-<li>2.19. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
+<li>2.19. <a href="#AppCommunicationClientListCallback">AppCommunicationClientListCallback</a>
+</li>
+<li>2.20. <a href="#AppCommunicationListenerCallback">AppCommunicationListenerCallback</a>
 </li>
 </ul>
 </li>
@@ -177,10 +182,12 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 <tr>
 <td><a href="#RemoteAppControlService">RemoteAppControlService</a></td>
 <td>
+<div>void <a href="#RemoteAppControlService::start">start</a> (<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::stop">stop</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::connect">connect</a> (<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
 <div>void <a href="#RemoteAppControlService::disconnect">disconnect</a> (optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
-<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launch">launch</a> (<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback)</div>
+<div>void <a href="#RemoteAppControlService::launchAppControl">launchAppControl</a> (<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback)</div>
 </td>
 </tr>
 <tr>
@@ -204,13 +211,20 @@ Tizen 3.0 only supports Wi-Fi for Convergence services. More connectivity, such
 </tr>
 <tr>
 <td><a href="#RemoteAppControlCallback">RemoteAppControlCallback</a></td>
-<td><div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div></td>
+<td>
+<div>void <a href="#RemoteAppControlCallback::onsuccess">onsuccess</a> (optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data)</div>
+<div>void <a href="#RemoteAppControlCallback::onfailure">onfailure</a> ()</div>
+</td>
 </tr>
 <tr>
 <td><a href="#ConnectSuccessCallback">ConnectSuccessCallback</a></td>
 <td><div>void <a href="#ConnectSuccessCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
 </tr>
 <tr>
+<td><a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a></td>
+<td><div>void <a href="#RemoteAppControlStartCallback::onsuccess">onsuccess</a> (<a href="#Service">Service</a> service)</div></td>
+</tr>
+<tr>
 <td><a href="#AppCommunicationSuccessCallback">AppCommunicationSuccessCallback</a></td>
 <td><div>void <a href="#AppCommunicationSuccessCallback::onsuccess">onsuccess</a> (<a href="#ChannelInfo">ChannelInfo</a> channelInfo)</div></td>
 </tr>
@@ -309,6 +323,30 @@ CONNECTING - Connecting state.             </li>
           </ul>
          </div>
 </div>
+<div class="enum" id="ServiceType">
+<a class="backward-compatibility-anchor" name="::Convergence::ServiceType"></a><h3>1.6. ServiceType</h3>
+<div class="brief">
+ Enumeration of service type.
+          </div>
+<pre class="webidl prettyprint">    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The following values are supported:
+          </p>
+          <ul>
+            <li>
+APP_COMM_CLIENT - Application communication client service.             </li>
+            <li>
+APP_COMM_SERVER - Application communication server service.             </li>
+            <li>
+REMOTE_APP_CONTROL - Remote application control service.             </li>
+          </ul>
+         </div>
+</div>
 </div>
 <div class="interfaces" id="interfaces-section">
 <h2>2. Interfaces</h2>
@@ -494,7 +532,7 @@ discovery.
 <span class="name">timeout</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  Duration of discovery procedure in seconds. If this
 value is omitted or <em>null</em> is passed, the default timeout
-is 60 seconds.
+is 5 seconds.
                 </li>
         </ul>
 </div>
@@ -699,6 +737,8 @@ device-to-device services.
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -720,7 +760,18 @@ This interface defines common property for all device-to-device services
             Since: </span>
  3.0
             </p>
-</li></ul>
+</li>
+<li class="attribute" id="Service::type">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">ServiceType </span><span class="name">type</span></span><div class="brief">
+ The service type.
+            </div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="AppCommunicationService">
@@ -819,6 +870,8 @@ The ErrorCallback is launched with these error types:
             <ul>
               <li>
  AbortError: If any system error occurred              </li>
+              <li>
+ InvalidStateError: If the service has already started the channel. Note some services don't require a connection and disconnection procedures              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -864,11 +917,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is started already. <br>Note some services don't require
-a connection and disconnection procedures.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -937,7 +985,7 @@ function onstarted(channelinfo, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -956,7 +1004,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1026,8 +1074,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1074,10 +1123,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1180,7 +1225,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1199,7 +1244,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1283,8 +1328,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1339,10 +1385,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1433,7 +1475,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1452,7 +1494,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1536,8 +1578,9 @@ The ErrorCallback is launched with these error types:
               <li>
  AbortError: If any system error occurred              </li>
               <li>
- InvalidValuesError: If any of the input parameters contain an
-invalid value              </li>
+ InvalidValuesError: If any of the input parameters contain an invalid value              </li>
+              <li>
+ InvalidStateError: If the service has not started the channel              </li>
             </ul>
            </div>
 <p><span class="privilegelevel">
@@ -1577,10 +1620,6 @@ parameter.
  with error type SecurityError, if the
 application does not have the privilege to call this method.
                 </p></li>
-<li class="list"><p>
- with error type InvalidStateError, if the
-service is not started yet.
-                </p></li>
 </ul>
 </li></ul>
         </div>
@@ -1618,15 +1657,16 @@ function onstarted(channel, clientinfo)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.stop(requestChannel2, onstopped);
 &nbsp;&nbsp;&nbsp;}
 }
-</pre>
-</div>
 
-<div class="output">
-<span class="title"><p>Output example:</p></span><pre>
 /* Create an instance of app communication server service object */
 var service = new tizen.AppCommunicationServerService();
 service.start(requestChannel1, onstarted, onerror);
 service.start(requestChannel2, onstarted, onerror);
+</pre>
+</div>
+
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre>
 Channel started
 channel uri: targetApp0.main
 channel id: chA
@@ -1685,7 +1725,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientService = service;
@@ -1704,7 +1744,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -1842,9 +1882,9 @@ function onstarted(channel, clientinfo)
 
 /* Create an instance of app communication server service object */
 var service = new tizen.AppCommunicationServerService();
-var service.start(requestChannel, onstarted, onerror);
 /* Register listener to receive notifications from remote service */
 service.setListener(onnotify);
+service.start(requestChannel, onstarted, onerror);
 </pre>
 </div>
 <div class="output">
@@ -1904,7 +1944,7 @@ function onstarted(channel, clientinfo)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.start(requestChannel, onstarted, onerror);
@@ -1924,7 +1964,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2069,6 +2109,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. The framework automatically determines which connectivity
@@ -2116,11 +2160,11 @@ function onerror(err)
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;if (service.type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
 &nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;else if (service.type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;}
@@ -2138,14 +2182,14 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "APP_COMM_CLIENT")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2224,6 +2268,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <p><span class="remark"> Remark: </span>
  Example of using can be found at <a href="convergence.html#AppCommunicationClientService::connect">connect()</a> code example.
             </p>
@@ -2291,6 +2338,9 @@ Listening to service update notifications            </li>
 Sending data for the service            </li>
           </ul>
          </div>
+<p class="warning"><b>Warning:</b>
+ AppCommunicationServerService API is supported on Tizen 3.0 TV product only.
+          </p>
 <p><span class="remark"> Remark: </span>
  application server service is used without discovery phase.
 The developer should instantiate a standalone service object using
@@ -2317,6 +2367,11 @@ var service = new tizen.AppCommunicationServerService();
 remote application control service features.
           </div>
 <pre class="webidl prettyprint">    [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -2325,13 +2380,15 @@ remote application control service features.
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -2354,6 +2411,287 @@ Receiving app control results            </li>
       <div class="methods">
 <h4>Methods</h4>
 <dl>
+<dt class="method" id="RemoteAppControlService::start">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::start"></a><code><b><span class="methodName">start</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Starts and initiates remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method starts the remote app control service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<p><span class="remark"> Remark : </span>
+ Before using this method for remote application service, the service must be connected with the
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is already started.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote app control service started');
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote app control service started
+</pre>
+</div>
+</dd>
+<dt class="method" id="RemoteAppControlService::stop">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::stop"></a><code><b><span class="methodName">stop</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Stops remote service.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="description">
+            <p>
+This method stops and release internally allocated resources for remote service.
+            </p>
+           </div>
+<div class="description">
+            <p>
+The ErrorCallback is launched with these error types:
+            </p>
+            <ul>
+              <li>
+ AbortError: If any system error occurred              </li>
+            </ul>
+           </div>
+<p><span class="privilege">
+            Privilege: </span>
+ http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">successCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on success
+                </li>
+          <li class="param">
+<span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke on failure
+                </li>
+        </ul>
+</div>
+<div class="exceptionlist">
+<p><span class="except">Exceptions:</span></p>
+          <ul class="exception"><li>WebAPIException<ul>
+<li class="list"><p>
+ with error type TypeMismatchError, if any
+input parameter is not compatible with the expected type for that
+parameter.
+                </p></li>
+<li class="list"><p>
+ with error type SecurityError, if the
+application does not have the privilege to call this method.
+                </p></li>
+<li class="list"><p>
+ with error type InvalidStateError, if the
+the service is not started yet.
+                </p></li>
+<li class="list"><p>
+ with error type AbortError, if the
+other error occurs during start.
+                </p></li>
+</ul>
+</li></ul>
+        </div>
+<div class="example">
+<span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">
+function onerror(err)
+{
+&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
+}
+
+function onstopped()
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service stopped');
+&nbsp;&nbsp;&nbsp;/* Disconnect */
+&nbsp;&nbsp;&nbsp;service.disconnect();
+}
+
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Remote App Control service started');
+&nbsp;&nbsp;&nbsp;/* Stop the service */
+&nbsp;&nbsp;&nbsp;service.stop(onstopped, onerror);
+}
+
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
+var discoverySuccessCallback =
+{
+&nbsp;&nbsp;&nbsp;onfound: function(device)
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Found a device');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - id: " + device.id);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - name: " + device.name);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - type: " + device.type);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].start(onstarted, onerror);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+
+&nbsp;&nbsp;&nbsp;onfinished: function(foundDevices) 
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(' Device discovery has finished');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - devices found: " + foundDevices.length);
+&nbsp;&nbsp;&nbsp;}
+};
+
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
+</pre>
+</div>
+<div class="output">
+<span class="title"><p>Output example:</p></span><pre> &gt;&gt; STARTING DEVICE DISCOVERY
+&lt;&lt; Found a device
+&nbsp;&nbsp;&nbsp;- id: de2bea-ddvia
+&nbsp;&nbsp;&nbsp;- name : deviceA
+&nbsp;&nbsp;&nbsp;- type : TV
+&nbsp;&nbsp;&nbsp;- service amount: 2
+&lt;&lt; Device discovery has finished
+Connected to the remote app control service
+Remote App Control service started
+Remote App Control service stopped
+</pre>
+</div>
+</dd>
 <dt class="method" id="RemoteAppControlService::connect">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlService::connect"></a><code><b><span class="methodName">connect</span></b></code>
 </dt>
@@ -2386,6 +2724,10 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Connecting is only supported for services on devices not connected via WiFi.
+For devices connected via WiFi, <a href="convergence.html#ConnectionState">connectionState</a> will always be <em>"CONNECTED"</em>.
+            </p>
 <p><span class="remark"> Remark: </span>
  App developers do not need to specify the connectivity type
 explicitly. Framework automatically determines which connectivity
@@ -2432,15 +2774,7 @@ function onerror(err)
 
 function onconnected(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
-&nbsp;&nbsp;&nbsp;if (service instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
-&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;else if (service instanceof AppCommunicationClientService))
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Connected to the app communication client service');
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('Connected to the remote app control service');
 &nbsp;&nbsp;&nbsp;service.disconnect();
 }
 
@@ -2455,14 +2789,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device.services[i].connect(onconnected, onerror);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (device.services[i] instanceof AppCommunicationClientService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2479,15 +2806,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2498,9 +2818,6 @@ catch (err)
   - type: TV
   - service amount: 2
  &lt;&lt; Device discovery has finished
- Connected to the service
- Connected to the app communication client service
- Connected to the service
  Connected to the remote app control service
  </pre>
 </div>
@@ -2540,6 +2857,9 @@ The ErrorCallback is launched with these error types:
             Privilege: </span>
  http://tizen.org/privilege/internet <br>http://tizen.org/privilege/bluetooth
             </p>
+<p class="warning"><b>Warning:</b>
+ Disconnecting is only supported for services on devices not connected via WiFi.
+            </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
 <ul>
@@ -2595,7 +2915,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState == "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2643,7 +2963,7 @@ catch (err)
 <div class="brief">
  Sends the given application ID to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2678,7 +2998,7 @@ invalid value              </li>
  Before using this method, the service must be connected
 with
 <a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
-correspondingly.
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2726,24 +3046,26 @@ function onerror(err)
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data) 
+function onsuccess()
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;console.log('clientId: ' + clientId);
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
-&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
-&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;console.log('The application has launched successfully');
 }
 
-function onconnected(service)
+function onstarted(service)
 {
-&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;console.log('Service started');
 
 &nbsp;&nbsp;&nbsp;/* Launching server app remotely */
 &nbsp;&nbsp;&nbsp;service.launch(requestAppId, remoteAppControlCallback, onerror);
 }
 
+function onconnected(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Connected to the service');
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
+}
+
 var discoverySuccessCallback =
 {
 &nbsp;&nbsp;&nbsp;onfound: function(device)
@@ -2755,7 +3077,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2773,15 +3095,8 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;}
 };
 
-try
-{
-&nbsp;&nbsp;&nbsp;console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
-&nbsp;&nbsp;&nbsp;tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
-}
-catch (err)
-{
-&nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
-}
+console.log('&gt;&gt; STARTING DEVICE DISCOVERY');
+tizen.convergence.startDiscovery(discoverySuccessCallback, onerror, 60 * 60);
 </pre>
 </div>
 <div class="output">
@@ -2793,6 +3108,8 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
+ The application has launched successfully
  </pre>
 </div>
 </dd>
@@ -2803,7 +3120,7 @@ catch (err)
 <div class="brief">
  Sends an app control to launch an application on the remote device.
             </div>
-<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback);
+<div class="synopsis"><pre class="signature prettyprint">void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl, optional <a href="application.html#ApplicationId">ApplicationId</a>? appId, optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback, optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback, optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback);
              </pre></div>
 <p><span class="version">
             Since: </span>
@@ -2833,7 +3150,8 @@ The ErrorCallback is launched with these error types:
             </p>
 <p><span class="remark"> Remark: </span>
  Before using this method, the service must be connected with
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method.
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> method
+and started with <a href="convergence.html#RemoteAppControlService::start">start()</a> method.
             </p>
 <div class="parameters">
 <p><span class="param">Parameters:</span></p>
@@ -2854,6 +3172,10 @@ The ErrorCallback is launched with these error types:
 <span class="name">errorCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>:
  The method to invoke on failure.
                 </li>
+          <li class="param">
+<span class="name">replyCallback</span><span class="optional"> [optional]</span><span class="optional"> [nullable]</span>: 
+ The method to invoke when the application gets back result from the remote service.
+                </li>
         </ul>
 </div>
 <div class="exceptionlist">
@@ -2881,26 +3203,47 @@ var requestAppControl = new tizen.ApplicationControl('http://tizen.org/appcontro
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;null, 'image/jpeg', null,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[new tizen.ApplicationControlData('images', [testImgData])]);
 
+function onsuccess()
+{
+&nbsp;&nbsp;&nbsp;console.log('Launch application control succeed');
+}
+
 function onerror(err)
 {
 &nbsp;&nbsp;&nbsp;console.log(err.name + ': ' + err.message);
 }
 
-function remoteAppControlCallback(data)
+var remoteAppControlCallback =
 {
-&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
-&nbsp;&nbsp;&nbsp;for (var i = 0; i  data.length; i++)
+&nbsp;&nbsp;&nbsp;onsuccess: function(data)
 &nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key: " + data[i].key + "value: " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('On remote app control service reply');
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i = 0; i &lt; data.length; i++)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("key : " + data[i].key + "value : " + data[i].value[0]);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+&nbsp;&nbsp;&nbsp;},
+&nbsp;&nbsp;&nbsp;/* Callee returned failure */
+&nbsp;&nbsp;&nbsp;onfailure: function()
+&nbsp;&nbsp;&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('The launch application control failed');
 &nbsp;&nbsp;&nbsp;}
 }
 
+function onstarted(service)
+{
+&nbsp;&nbsp;&nbsp;console.log('Service started');
+
+&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
+&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, onsuccess, onerror, remoteAppControlCallback);
+}
+
 function onconnected(service)
 {
 &nbsp;&nbsp;&nbsp;console.log('Connected to the service');
 
-&nbsp;&nbsp;&nbsp;/* Send data to the remote service */
-&nbsp;&nbsp;&nbsp;service.launchAppControl(requestAppControl, null, remoteAppControlCallback, onerror);
+&nbsp;&nbsp;&nbsp;/* Start the service */
+&nbsp;&nbsp;&nbsp;service.start(onstarted, onerror);
 }
 
 var discoverySuccessCallback =
@@ -2914,7 +3257,7 @@ var discoverySuccessCallback =
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(" - service amount: " + device.services.length);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i in device.services)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i] instanceof RemoteAppControlService)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].type === "REMOTE_APP_CONTROL")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (device.services[i].connectionState != "CONNECTED")
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
@@ -2952,6 +3295,7 @@ catch (err)
   - service amount: 2
  &lt;&lt; Device discovery has finished
  Connected to the service
+ Service started
  </pre>
 </div>
 </dd>
@@ -3051,57 +3395,56 @@ array which is to be delivered to a remote service.
 </dl>
 </div>
 </div>
-<div class="dictionary" id="ClientInfo">
+<div class="interface" id="ClientInfo">
 <a class="backward-compatibility-anchor" name="::Convergence::ClientInfo"></a><h3>2.12. ClientInfo</h3>
 <div class="brief">
- The dictionary that specifies client information.
+ The interface specifies client information.
           </div>
-<pre class="webidl prettyprint">    dictionary ClientInfo {
-        boolean isHost;
+<pre class="webidl prettyprint">    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };</pre>
 <p><span class="version">
             Since: </span>
  3.0
           </p>
 <div class="attributes">
-<h4>Dictionary members</h4>
-<dl>
-<dt class="member" id="ClientInfo::isHost"><span class="attrName">boolean isHost</span></dt>
-<dd>
-<div class="brief">
- The value indicating if the service is local (true) or
-remote (false).
+<h4>Attributes</h4>
+<ul>
+<li class="attribute" id="ClientInfo::isHost">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">boolean </span><span class="name">isHost</span></span><div class="brief">
+ The value indicating if the service is local (true) or remote (false).
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::clientId"><span class="attrName">DOMString clientId</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::clientId">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">DOMString </span><span class="name">clientId</span></span><div class="brief">
  The unique client id.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-<dt class="member" id="ClientInfo::connectionTime"><span class="attrName">long connectionTime</span></dt>
-<dd>
-<div class="brief">
+</li>
+<li class="attribute" id="ClientInfo::connectionTime">
+<span class="attrName"><span class="readonly">                readonly
+</span><span class="type">long </span><span class="name">connectionTime</span></span><div class="brief">
  The connection time in milliseconds.
             </div>
 <p><span class="version">
             Since: </span>
  3.0
             </p>
-</dd>
-</dl>
+</li>
+</ul>
 </div>
 </div>
 <div class="interface" id="DiscoverySuccessCallback">
@@ -3186,13 +3529,14 @@ procedure.
 <div class="interface" id="RemoteAppControlCallback">
 <a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback"></a><h3>2.14. RemoteAppControlCallback</h3>
 <div class="brief">
- The <em>RemoteAppControlCallback</em> interface defines the
-success method to be invoked when a service sends app control
-successfully.
+ The RemoteAppControlCallback specifies callbacks that are invoked as a reply
+from the requested application control within the application control requester.
           </div>
 <pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };</pre>
 <p><span class="version">
             Since: </span>
@@ -3201,8 +3545,7 @@ successfully.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#RemoteAppControlService::launch">launch()</a> and
-<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> methods.
+<a href="convergence.html#RemoteAppControlService::launchAppControl">launchAppControl()</a> method.
           </p>
          </div>
 <div class="methods">
@@ -3213,8 +3556,7 @@ The callback of this type is invoked in
 </dt>
 <dd>
 <div class="brief">
- The RemoteAppControlCallback callback specifies success callbacks that are invoked as a reply
-from the requested application control within the application control requester.
+ Called when the received reply from the requested application on the remote device has no errors.
             </div>
 <div class="synopsis"><pre class="signature prettyprint">void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
              </pre></div>
@@ -3232,6 +3574,20 @@ from the requested application control within the application control requester.
         </ul>
 </div>
 </dd>
+<dt class="method" id="RemoteAppControlCallback::onfailure">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlCallback::onfailure"></a><code><b><span class="methodName">onfailure</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the received reply from the requested application on the remote device contains any error.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onfailure();
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+</dd>
 </dl>
 </div>
 </div>
@@ -3252,8 +3608,8 @@ to be invoked when a service is connected.
 <div class="description">
           <p>
 The callback of this type is invoked in
-<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> and
-<a href="convergence.html#RemoteAppControlService::connect">connect()</a> methods.
+<a href="convergence.html#AppCommunicationClientService::connect">connect()</a> of AppCommunicationClientService and
+<a href="convergence.html#RemoteAppControlService::connect">connect()</a> of RemoteAppControlService methods.
           </p>
          </div>
 <div class="methods">
@@ -3276,7 +3632,56 @@ The callback of this type is invoked in
 <p><span class="param">Parameters:</span></p>
 <ul>
           <li class="param">
-<span class="name">service</span>:
+<span class="name">service</span>: 
+ The connected service on a remote device.
+                </li>
+        </ul>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="interface" id="RemoteAppControlStartCallback">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback"></a><h3>2.16. RemoteAppControlStartCallback</h3>
+<div class="brief">
+ The <em>RemoteAppControlStartCallback</em> interface defines the success method
+to be invoked when a RemoteAppControlService is started.
+          </div>
+<pre class="webidl prettyprint">    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };</pre>
+<p><span class="version">
+            Since: </span>
+ 3.0
+          </p>
+<div class="description">
+          <p>
+The callback of this type is invoked in
+<a href="convergence.html#RemoteAppControlService::start">start()</a> of RemoteAppControlService methods.
+          </p>
+         </div>
+<div class="methods">
+<h4>Methods</h4>
+<dl>
+<dt class="method" id="RemoteAppControlStartCallback::onsuccess">
+<a class="backward-compatibility-anchor" name="::Convergence::RemoteAppControlStartCallback::onsuccess"></a><code><b><span class="methodName">onsuccess</span></b></code>
+</dt>
+<dd>
+<div class="brief">
+ Called when the service connection is established.
+            </div>
+<div class="synopsis"><pre class="signature prettyprint">void onsuccess(<a href="#Service">Service</a> service);
+             </pre></div>
+<p><span class="version">
+            Since: </span>
+ 3.0
+            </p>
+<div class="parameters">
+<p><span class="param">Parameters:</span></p>
+<ul>
+          <li class="param">
+<span class="name">service</span>: 
  The connected service on a remote device.
                 </li>
         </ul>
@@ -3286,7 +3691,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationSuccessCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.16. AppCommunicationSuccessCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationSuccessCallback"></a><h3>2.17. AppCommunicationSuccessCallback</h3>
 <div class="brief">
  The <em>AppCommunicationSuccessCallback</em> interface defines the success method
 to be invoked when a service operation, such as stop or send is successful.
@@ -3336,7 +3741,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationStartCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.17. AppCommunicationStartCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationStartCallback"></a><h3>2.18. AppCommunicationStartCallback</h3>
 <div class="brief">
  The <em>AppCommunicationStartCallback</em> interface defines the success method
 to be invoked when a start service operation is successful.
@@ -3389,7 +3794,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationClientListCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.18. AppCommunicationClientListCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationClientListCallback"></a><h3>2.19. AppCommunicationClientListCallback</h3>
 <div class="brief">
  The <em>AppCommunicationClientListCallback</em> interface defines the
 method to be invoked when requested a list of clients, connected to
@@ -3439,7 +3844,7 @@ The callback of this type is invoked in
 </div>
 </div>
 <div class="interface" id="AppCommunicationListenerCallback">
-<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.19. AppCommunicationListenerCallback</h3>
+<a class="backward-compatibility-anchor" name="::Convergence::AppCommunicationListenerCallback"></a><h3>2.20. AppCommunicationListenerCallback</h3>
 <div class="brief">
  The <em>AppCommunicationListenerCallback</em> interface defines the
 method to be invoked when a service notification is received
@@ -3525,6 +3930,8 @@ declare the following feature requirements in the config file:
 
     enum ConnectionState{"CONNECTED", "NOT_CONNECTED", "CONNECTING"};
 
+    enum ServiceType{"APP_COMM_CLIENT", "APP_COMM_SERVER", "REMOTE_APP_CONTROL"};
+
     [Constructor(DOMString uri, DOMString id)]
     interface ChannelInfo {
       attribute DOMString uri;
@@ -3560,6 +3967,8 @@ declare the following feature requirements in the config file:
     [NoInterfaceObject] interface Service {
 
         readonly attribute <a href="#ConnectionState">ConnectionState</a> connectionState;
+
+        readonly attribute <a href="#ServiceType">ServiceType</a> type;
     };
 
     [NoInterfaceObject] interface AppCommunicationService : <a href="#Service">Service</a> {
@@ -3603,6 +4012,11 @@ declare the following feature requirements in the config file:
     };
 
     [NoInterfaceObject] interface RemoteAppControlService : <a href="#Service">Service</a> {
+        void start(<a href="#RemoteAppControlStartCallback">RemoteAppControlStartCallback</a> successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
+        void stop(optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+                  optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void connect(<a href="#ConnectSuccessCallback">ConnectSuccessCallback</a> successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
@@ -3611,13 +4025,15 @@ declare the following feature requirements in the config file:
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launch(<a href="application.html#ApplicationId">ApplicationId</a> appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
             optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
 
         void launchAppControl(<a href="application.html#ApplicationControl">ApplicationControl</a> appControl,
             optional <a href="application.html#ApplicationId">ApplicationId</a>? appId,
-            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? successCallback,
-            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+            optional <a href="tizen.html#SuccessCallback">SuccessCallback</a>? successCallback,
+            optional <a href="tizen.html#ErrorCallback">ErrorCallback</a>? errorCallback,
+            optional <a href="#RemoteAppControlCallback">RemoteAppControlCallback</a>? replyCallback) raises(<a href="tizen.html#WebAPIException">WebAPIException</a>);
+
     };
 
     dictionary PayloadString {
@@ -3632,12 +4048,12 @@ declare the following feature requirements in the config file:
         byte[] value;
     };
 
-    dictionary ClientInfo {
-        boolean isHost;
+    [NoInterfaceObject] interface ClientInfo {
+        readonly attribute boolean isHost;
 
-        DOMString clientId;
+        readonly attribute DOMString clientId;
 
-        long connectionTime;
+        readonly attribute long connectionTime;
     };
 
     [Callback, NoInterfaceObject] interface DiscoverySuccessCallback {
@@ -3650,6 +4066,8 @@ declare the following feature requirements in the config file:
     [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlCallback {
 
         void onsuccess(optional <a href="application.html#ApplicationControlData">ApplicationControlData</a>[]? data);
+
+        void onfailure();
     };
 
     [Callback=FunctionOnly, NoInterfaceObject] interface ConnectSuccessCallback {
@@ -3657,6 +4075,11 @@ declare the following feature requirements in the config file:
         void onsuccess(<a href="#Service">Service</a> service);
     };
 
+    [Callback=FunctionOnly, NoInterfaceObject] interface RemoteAppControlStartCallback {
+
+        void onsuccess(<a href="#Service">Service</a> service);
+    };
+
     [Callback=FunctionOnly, NoInterfaceObject] interface AppCommunicationSuccessCallback {
 
         void onsuccess(<a href="#ChannelInfo">ChannelInfo</a> channelInfo);