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

/** @cond */
interface IDiagFuseService {
/** @endcond */

  /**
   * @addtogroup IDiagFuseService
   * @{
   */

  /**
   * Error codes
   */
  /** @cond */
  /* Generic functionality error codes in TZ */
  error SECBOOT_TOOL_TZ_SUCCESS;
  error SECBOOT_TOOL_TZ_FAILURE;
  error SECBOOT_TOOL_TZ_ERR_TOOL_NOT_SUPPORTED;
  error SECBOOT_TOOL_TZ_ERR_INVALID_RSP_PKT;
  error SECBOOT_TOOL_TZ_ERR_INVALID_RSP_PKT_SIZE;
  error SECBOOT_TOOL_TZ_ERR_INVALID_REQ_PKT;
  error SECBOOT_TOOL_TZ_ERR_INVALID_REQ_PKT_SIZE;
  error SECBOOT_TOOL_TZ_ERR_INVALID_OPERATION_ID;
  error SECBOOT_TOOL_TZ_ERR_INVALID_FEATURE_ID;
  error SECBOOT_TOOL_TZ_ERR_INVALID_RSP_PAYLOAD_TYPE;
  error SECBOOT_TOOL_TZ_ERR_MEMORY_ALLOC_FAILED;

  /* Specific feature error codes */

  /* Sec Elf comparison */
  error SECBOOT_TOOL_TZ_ERR_FEAT_SECELF_COMP_NOT_SUPPORTED;
  error SECBOOT_TOOL_TZ_ERR_FEAT_SECELF_COMP_INVALID_ADDRESS;
  error SECBOOT_TOOL_TZ_ERR_FEAT_SECELF_COMP_INVALID_NO_OF_ENTRIES;
  error SECBOOT_TOOL_TZ_ERR_FEAT_SECELF_COMP_INVALID_IN_PAYLOAD_SIZE;
  error SECBOOT_TOOL_TZ_ERR_FEAT_SECELF_COMP_INVALID_OUT_PAYLOAD_SIZE;  

  /* Get Secure State */
  error SECBOOT_TOOL_TZ_ERR_FEAT_GET_SEC_STATE;
  error SECBOOT_TOOL_TZ_ERR_FEAT_GET_SEC_STATE_INVALID_OUT_PAYLOAD_SIZE;

  /**
    Secure boot tool syscall entry function. 
    
    @param [in] inBuf         Input buffer or Request packet.
    @param [out] outBuf       Output buffer or Response packet.
    
    @return returning above list of interface error.
  */
  method secbootToolGetInfo(in buffer inBuf, out buffer outBuf);

  /** @} */ /* end_addtogroup IDiagFuseService */
  /** @endcond */

};

