// Copyright (c) 2016 Qualcomm Technologies, Inc.  All Rights Reserved.
// Qualcomm Technologies Proprietary and Confidential.

/**
 * @brief
 * Hdcp2p2 Service provides interface to query info such as topology from
 * hdcp2p2 trusted app.
 *
 */

/** Topology Info **/
struct IHdcp2p2Service_Topology {

   uint32 depth;
   /**< Repeater cascade depth. */

   uint32 deviceCount;
   /**< Number of attached downstream devices. */

   uint32 maxDevicesExceeded;
   /**< Topology error indicator. When set to one,
        more than 31 downstream devices are attached */

   uint32 maxCascadeExceeded;
   /**< Topology error indicator. When set to one,
        more than four levels of repeaters have been
        cascaded together. */

   uint32 hdcp2LegacyDeviceDownstream;
   /**< When set to one, indicates presence of an
        HDCP2.0 or HDCP2.1 complaint device in the
        topology. */

   uint32 hdcp1DeviceDownstream;
   /**< When set to one, indicates presence of an
        HDCP1.x complaint device in the topology. */
};


interface IHdcp2p2Service
{
   /**
   * Corresponds to enum qsee_hdcp_device_t
   * These constants define the device types
   */
   const uint32 HDCP_TXMTR_HDMI = 0x8001;
   const uint32 HDCP_TXMTR_DP   = 0x8002;
   const uint32 HDCP_TXMTR_ALL	= 0x800F;

   /**
   * Get HDCP2.2 Topology
   * @param[in] deviceType HDCP device type
   * @param[out] receiverIdList Returns downstream receiver id list here,
   *                            caller allocates memory.
   * @param[out] IHdcp2p2Service_Topology Returns topology here,
   *                                      caller allocates memory.
   */
   method getTopology(in uint32 deviceType, out uint8[] receiverIdList,  out IHdcp2p2Service_Topology topology);
};

