Package com.avaya.clientservices.sharedcontrol

## Interface SharedControlService

-     public interface SharedControlService

  This service provides the user with the ability to direct media to the Desk Phone (Hard Phone) while issuing signaling commands from the Desk Phone and/or the client.

  Access to the shared control service is provided by the SharedControlService property on the `User` class. A Spark based shared signalling channel is established between the controlling client (soft client) and the controlled device (Desk Phone) through the Aura Session Manager, to keep call states in sync and communicate signaling messages.

  The Shared Control mechanism is a first party control mechanism similar to the CTI interface traditionally provided on Windows PCs except that the controlling and controlled endpoints are endpoints registered with Avaya Aura.

  This feature has two main entities:

  - Controlled Endpoint\Client\Device - Avaya endpoints that support the shared control mechanism advertise their support by inserting "avaya-sc-enabled" tag in the contact URI they register. The clients are currently not planned to be controlled endpoints.
  - Controlling Endpoint\Client - when a user chooses to run the client in the shared control mode, the application does not receive incoming calls from the server but from the controlled endpoint instead. This is done so that all incoming and outgoing requests are sent over to the endpoint that is "actively" registered with Aura (the desk phone) and receives incoming calls. The client always acts as a controlling endpoint.

  Following are the current limitations in Shared Control:

  - Currently only SIP mode is supported for Shared Control.
  - Currently SM is the only Avaya registrar that supports the registration in Shared Control.
  - Currently only Avaya 96x1 desk phones and Summit (H175) series are supported for Shared Control.
  - The server addresses list on the controlling and controlled endpoints should be identical to avoid registration issues.
  - Split media i.e.audio on controlled endpoint and video on controlling endpoint is only supported with Summit (H175) phones.
  - The controlled endpoint supports only one controlling endpoint in Shared Control. The latest controlling endpoint initiating the session controls the controlled endpoint. For instance: if UC client - 1 is in Shared Control with controlled endpoint, and UC client - 2 initiates Shared Control with same controlled endpoint, the session with client - 1 is ended by controlled endpoint.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `activateSharedControl​(ControllableEndpoint controllableEndpoint, SharedControlActionCompletionHandler handler)` | Activates the shared control service.
    `void` | `addListener​(SharedControlServiceListener listener)` | Add a listener for the shared control service events.
    `void` | `deactivateSharedControl​(SharedControlActionCompletionHandler handler)` | Deactivates the shared control service.
    `void` | `removeListener​(SharedControlServiceListener listener)` | Remove a listener for the shared control service events.

- - ### Method Detail

    - #### addListener

          void addListener​(SharedControlServiceListener listener)

      Add a listener for the shared control service events.
      Parameters:
        `listener` - Listener instance to be added.

    - #### removeListener

          void removeListener​(SharedControlServiceListener listener)

      Remove a listener for the shared control service events.
      Parameters:
        `listener` - Listener instance to be removed.

    - #### activateSharedControl

          void activateSharedControl​(ControllableEndpoint controllableEndpoint,
                                     SharedControlActionCompletionHandler handler)

      Activates the shared control service.

      Local calls will be destroyed when system in the activating shared control link state.

      Switching from This Computer mode to Desk Phone Mode - if a user wants to continue the call, a user can bridge - on to that call from the desk phone before switching since MDA is ON and the "Max. Simultaneous Devices" setting is set to 2 (for Shared Control).

      Parameters:
        `controllableEndpoint` - The controllable endpoint to be used in shared control. If not specified (null passed), the first available controllable endpoint is used.
        `handler` - Indicates that the operation is ended and the status of it (success of failure) in the argument.

    - #### deactivateSharedControl

          void deactivateSharedControl​(SharedControlActionCompletionHandler handler)

      Deactivates the shared control service.

      Local calls will be destroyed when the system in the deactivating shared control link state.

      Switching from Desk Phone mode to This Computer mode i.e. deactivating the shared control service - any soft client calls are lost, but the call stays up on the controlled device. As soon as the soft client successfully switches to This Computer, a user can bridge on to the call by joining, essentially have audio coming into the soft client since MDA is ON and the "Max. Simultaneous Devices" setting is set to 2.

      Parameters:
        `handler` - Indicates that the operation is ended end the status of it (success of failure) in the argument.