378 lines
24 KiB
C
378 lines
24 KiB
C
|
|
/**********************************************************************************************************************
|
||
|
|
* COPYRIGHT
|
||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
||
|
|
* \verbatim
|
||
|
|
* Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved.
|
||
|
|
*
|
||
|
|
* This software is copyright protected and proprietary to Vector Informatik GmbH.
|
||
|
|
* Vector Informatik GmbH grants to you only those rights as set out in the license conditions.
|
||
|
|
* All other rights remain with Vector Informatik GmbH.
|
||
|
|
* \endverbatim
|
||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
||
|
|
* FILE DESCRIPTION
|
||
|
|
* -----------------------------------------------------------------------------------------------------------------*/
|
||
|
|
/*! \file Crypto_30_vHsm_Ipc.h
|
||
|
|
* \brief MICROSAR vHsm Crypto Driver (Crypto)
|
||
|
|
*
|
||
|
|
* \details Inter-processor communication between Host and Vector Hardware Security Module Firmware.
|
||
|
|
*
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* REVISION HISTORY
|
||
|
|
* -------------------------------------------------------------------------------------------------------------------
|
||
|
|
* Refer to the module's header file.
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
#if !defined (CRYPTO_30_VHSM_IPC_H)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_H
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* INCLUDES
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
# include "Crypto_30_vHsm_Cfg.h"
|
||
|
|
# include "Crypto_30_vHsm_Types.h"
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* GLOBAL CONSTANT MACROS
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
/* API services IDs */
|
||
|
|
# define CRYPTO_30_VHSM_IPC_SID_TRANSMITJOBREQUEST (0x80u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_SID_RECEIVEJOBRESPONSES (0x81u)
|
||
|
|
|
||
|
|
/* Development error types */
|
||
|
|
# define CRYPTO_30_VHSM_IPC_E_NO_ERROR (0xFFu)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_E_PARAM_POINTER (0x81u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_E_INVALID_CHANNEL (0x82u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_E_CANNOT_ALLOCATE_JOBREQUEST_BUFFER (0x83u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_E_CANNOT_COPY_JOBREQUEST_DATA (0x84u)
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_MANAGEMENT_JOBREQUEST_ID Crypto_30_vHsm_GetManagementDriverObjectOfvHsm()
|
||
|
|
# define CRYPTO_30_VHSM_ACCEPT_ANY_JOBID (0xFFFFFFFFu)
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_JOBREQUEST_ID_BITPOSITION (0u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBREQUEST_OBJECTID_BITPOSITION (8u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBREQUEST_REDIRECTION_BITPOSITION (16u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBREQUEST_COUNTER_BITPOSITION (24u)
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_ID_BITPOSITION (0u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_STATE_BITPOSITION (8u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_RESULT_BITPOSITION (16u)
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_COUNTER_BITPOSITION (24u)
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_ID_MASK (0x000000FFu)
|
||
|
|
# define CRYPTO_30_VHSM_JOBRESPONSE_COUNTER_MASK (0xFF000000u)
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* GLOBAL FUNCTION MACROS
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
/* IPC */
|
||
|
|
/* PRQA S 3453 IpcMacros3543 */ /* MD_CRYPTO_30_VHSM_3453_IPC_MACRO */
|
||
|
|
# define Crypto_30_vHsm_Ipc_IsHsmReady(partitionIdx) (Crypto_30_vHsm_Ipc_GetReadyFlag(partitionIdx) == 0xdeadbeefu)
|
||
|
|
# define Crypto_30_vHsm_Ipc_EndRamExec(partitionIdx) Crypto_30_vHsm_Ipc_SetEndRamExecFlag(partitionIdx, TRUE)
|
||
|
|
# define Crypto_30_vHsm_Ipc_IsRamExec(partitionIdx) Crypto_30_vHsm_Ipc_GetRamExecFlag(partitionIdx)
|
||
|
|
# define Crypto_30_vHsm_Ipc_IsDetReported(partitionIdx) Crypto_30_vHsm_Ipc_GetDetReportFlag(partitionIdx)
|
||
|
|
|
||
|
|
# if (CRYPTO_30_VHSM_NUMBER_OF_IPC_INSTANCES<2)
|
||
|
|
# define Crypto_30_vHsm_GetPartitionIdxOptimized(partitionIdx) 0u
|
||
|
|
# else
|
||
|
|
# define Crypto_30_vHsm_GetPartitionIdxOptimized(partitionIdx) (partitionIdx)
|
||
|
|
# endif
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetMemoryPtr8(partitionIdx, offset) (&(((P2VAR(uint8, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR))Crypto_30_vHsm_Ipc_MemoryPtrOfPartition[Crypto_30_vHsm_GetPartitionIdxOptimized(partitionIdx)])[offset]))
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, offset) (*(volatile uint32*)&(((P2VAR(uint8, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR))Crypto_30_vHsm_Ipc_MemoryPtrOfPartition[Crypto_30_vHsm_GetPartitionIdxOptimized(partitionIdx)])[offset]))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetTxChannelBuffer(partitionIdx, txChannelId) (Crypto_30_vHsm_Ipc_GetMemoryPtr8(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.txChannelMemoryLayout[txChannelId].bufferOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetTxChannelWriteIdx(partitionIdx, txChannelId) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.txChannelMemoryLayout[txChannelId].writeIdxOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetTxChannelReadIdx(partitionIdx, txChannelId) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.txChannelMemoryLayout[txChannelId].readIdxOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetRxChannelBuffer(partitionIdx, rxChannelId) (Crypto_30_vHsm_Ipc_GetMemoryPtr8(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.rxChannelMemoryLayout[rxChannelId].bufferOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetRxChannelWriteIdx(partitionIdx, rxChannelId) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.rxChannelMemoryLayout[rxChannelId].writeIdxOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetRxChannelReadIdx(partitionIdx, rxChannelId) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.rxChannelMemoryLayout[rxChannelId].readIdxOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetRamExecFlag(partitionIdx) ((boolean)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.ramExecFlagOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_SetEndRamExecFlag(partitionIdx, value) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.endRamExecFlagOffset) = (value))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetReadyFlag(partitionIdx) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.readyFlagOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetDetReportFlag(partitionIdx) ((boolean)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detReportFlagOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_SetDetReportFlag(partitionIdx, value) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detReportFlagOffset) = (value))
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetDetModuleId(partitionIdx) ((uint16)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detModuleIdOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetDetInstanceId(partitionIdx) ((uint8)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detInstanceIdOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetDetApiId(partitionIdx) ((uint8)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detApiIdOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_GetDetErrorId(partitionIdx) ((uint8)Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.detErrorIdOffset))
|
||
|
|
|
||
|
|
# define Crypto_30_vHsm_Ipc_vHsmProtocolVersion(partitionIdx) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.protocolInfoOffset))
|
||
|
|
# define Crypto_30_vHsm_Ipc_DriverProtocolVersion(partitionIdx) (Crypto_30_vHsm_Ipc_GetMemoryValue32(partitionIdx, Crypto_30_vHsm_Ipc_MemoryLayout.protocolInfoOffset+4u))
|
||
|
|
|
||
|
|
/* PRQA L:IpcMacros3543 */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_IPC_CHANNELSTATE_FREE (0x00u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_CHANNELSTATE_ASYNC (CRYPTO_PROCESSING_ASYNC + 1u)
|
||
|
|
# define CRYPTO_30_VHSM_IPC_CHANNELSTATE_SYNC (CRYPTO_PROCESSING_SYNC + 1u)
|
||
|
|
|
||
|
|
/*! Serialize a uint32 to the IPC buffer with the offset and increment the offset by 4 afterwards */
|
||
|
|
# define Crypto_30_vHsm_Serialize_Uint32(value, bufferPtr) (*(P2VAR(uint32, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR))(bufferPtr)) = (uint32)(value) /* PRQA S 3453 */ /* MD_MSR_FctLikeMacro */
|
||
|
|
|
||
|
|
/*! Serialize a pointer to the IPC buffer with the offset and increment the offset by 4 afterwards */
|
||
|
|
# define Crypto_30_vHsm_Serialize_Ptr32(value, bufferPtr) (*(P2VAR(uint32, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR))(bufferPtr)) = (uint32)(value) /* PRQA S 3453 */ /* MD_MSR_FctLikeMacro */
|
||
|
|
|
||
|
|
/*! Deserialize a uint32 to the IPC buffer with the offset and increment the offset by 4 afterwards */
|
||
|
|
# define Crypto_30_vHsm_Deserialize_Uint32(bufferPtr) (*(P2CONST(uint32, AUTOMATIC, CRYPTO_30_VHSM_APPL_DATA))(bufferPtr)) /* PRQA S 3453 */ /* MD_MSR_FctLikeMacro */
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* GLOBAL DATA TYPES AND STRUCTURES
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
typedef struct Crypto_30_vHsm_Ipc_Channel_MemoryLayoutTypeStruct
|
||
|
|
{
|
||
|
|
uint32 writeIdxOffset; /*!< Shared memory offset to buffer reserved for write index (value equals index of next free entry) of channel. */
|
||
|
|
uint32 readIdxOffset; /*!< Shared memory offset to buffer reserved for read index (value equals index of next pending entry) of channel. */
|
||
|
|
uint32 bufferOffset; /*!< Shared memory offset to buffer reserved for all channel entries. */
|
||
|
|
} Crypto_30_vHsm_Ipc_Channel_MemoryLayoutType;
|
||
|
|
|
||
|
|
typedef struct Crypto_30_vHsm_Ipc_MemoryLayoutTypeStruct
|
||
|
|
{
|
||
|
|
uint32 protocolInfoOffset; /*!< Shared memory offsets to buffers reserved for vHSM protocol info. */
|
||
|
|
Crypto_30_vHsm_Ipc_Channel_MemoryLayoutType txChannelMemoryLayout[CRYPTO_30_VHSM_IPC_CHANNELS]; /*!< Describes the memory layout of all TX channels. */
|
||
|
|
Crypto_30_vHsm_Ipc_Channel_MemoryLayoutType rxChannelMemoryLayout[CRYPTO_30_VHSM_IPC_CHANNELS]; /*!< Describes the memory layout of all RX channels. */
|
||
|
|
uint32 stackProtectionCanaryPE1Offset; /*!< Shared memory offsets to buffers reserved for vHSM stack protection canary Appl Core 1. */
|
||
|
|
uint32 stackProtectionCanaryPE2Offset; /*!< Shared memory offsets to buffers reserved for vHSM stack protection canary Appl Core 2. */
|
||
|
|
uint32 seedOffset; /*!< Shared memory offset to buffer reserved for vHSM random seed. */
|
||
|
|
uint32 detModuleIdOffset; /*!< Shared memory offsets to buffers reserved for vHSM development error detection (DET module). */
|
||
|
|
uint32 detInstanceIdOffset; /*!< Shared memory offsets to buffers reserved for vHSM development error detection (DET instance id). */
|
||
|
|
uint32 detApiIdOffset; /*!< Shared memory offsets to buffers reserved for vHSM development error detection (DET api id). */
|
||
|
|
uint32 detErrorIdOffset; /*!< Shared memory offsets to buffers reserved for vHSM development error detection (DET error id). */
|
||
|
|
uint32 readyFlagOffset; /*!< Shared memory offset to buffer reserved for vHSM Ready flag. */
|
||
|
|
uint32 endRamExecFlagOffset; /*!< Shared memory offset to buffer reserved for vHSM End-RAM-Execution flag. */
|
||
|
|
uint32 ramExecFlagOffset; /*!< Shared memory offset to buffer reserved for vHSM Is-RAM-Execution flag. */
|
||
|
|
uint32 detReportFlagOffset; /*!< Shared memory offset to buffer reserved for vHSM Det-Report flag. */
|
||
|
|
|
||
|
|
} Crypto_30_vHsm_Ipc_MemoryLayoutType;
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* GLOBAL DATA PROTOTYPES
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_IPC_MEMORY_VAR_NOINIT_32BIT
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_IPC_MEMORY_VAR_NOINIT_32BIT
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_VAR_NOINIT_32BIT
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
/*! Pointer to the IPC memory */
|
||
|
|
extern P2VAR(uint32, CRYPTO_30_VHSM_VAR_NOINIT, CRYPTO_30_VHSM_VAR_NOINIT) Crypto_30_vHsm_Ipc_MemoryPtrOfPartition[CRYPTO_30_VHSM_NUMBER_OF_IPC_INSTANCES];
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_VAR_NOINIT_32BIT
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_CONST_UNSPECIFIED
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
/*! Layout of the IPC memory */
|
||
|
|
extern CONST(Crypto_30_vHsm_Ipc_MemoryLayoutType, CRYPTO_30_VHSM_CONST) Crypto_30_vHsm_Ipc_MemoryLayout;
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_CONST_UNSPECIFIED
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* GLOBAL FUNCTION PROTOTYPES
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_CODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_TransmitRequest()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Transmit job request
|
||
|
|
* \details -
|
||
|
|
* \param[in] txChannelId Valid TX channel Id
|
||
|
|
* \param[in] jobRequestId Valid job request Id
|
||
|
|
* \return TRUE if the job request was correctly transmitted, otherwise E_NOT_OK
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant TRUE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(Std_ReturnType, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_TransmitRequest(
|
||
|
|
Crypto_30_vHsm_ChannelIdType txChannelId,
|
||
|
|
Crypto_30_vHsm_JobRequestIterType jobRequestId);
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_CODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_RAMCODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_ReceiveResponse()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Receive job responses
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partition index
|
||
|
|
* \param[in] rxChannelId Valid RX channel Id
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant TRUE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_ReceiveResponse(
|
||
|
|
Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx,
|
||
|
|
Crypto_30_vHsm_ChannelIdType rxChannelId);
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_RAMCODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_CODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# if (CRYPTO_30_VHSM_DEV_ERROR_REPORT == STD_ON)
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_GetDet()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Get DET error
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partitionIdx
|
||
|
|
* \param[out] moduleId Valid pointer to hold module ID
|
||
|
|
* \param[out] instanceId Valid pointer to hold instance ID
|
||
|
|
* \param[out] apiId Valid pointer to hold API ID
|
||
|
|
* \param[out] errorId Valid pointer to hold error ID
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant TRUE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_GetDet(
|
||
|
|
Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx,
|
||
|
|
P2VAR(uint16, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR) moduleId,
|
||
|
|
P2VAR(uint8, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR) instanceId,
|
||
|
|
P2VAR(uint8, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR) apiId,
|
||
|
|
P2VAR(uint8, AUTOMATIC, CRYPTO_30_VHSM_APPL_VAR) errorId);
|
||
|
|
# endif /* (CRYPTO_30_VHSM_DEV_ERROR_REPORT == STD_ON) */
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_ProcessChannels()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Process IPC channels
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partition index
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_ProcessChannels(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_ProcessCallbacks()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Process IPC callbacks
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partitionIdx
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
* \trace CREQ-Crypto-AsyncCallout
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_ProcessCallbacks(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_HandleDet()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Checks if vHSM invokes a DET error and forwards it to Det module
|
||
|
|
* \details Gets parameters from IPC, acknowledges the handling and calls Det_ReportError
|
||
|
|
* \param[in] partitionIdx Valid partitionIdx
|
||
|
|
* \pre -
|
||
|
|
* \context TASK, ISR2
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_HandleDet(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_MainFunctionHandler()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Main function handling the IPC
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partitionIdx
|
||
|
|
* \pre -
|
||
|
|
* \context TASK
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_MainFunctionHandler(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_InitMemoryHandler()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*! \brief The function initializes partition specific variables, which cannot be initialized with the startup code.
|
||
|
|
* \details Initialize component variables at power up.
|
||
|
|
* \param[in] partitionIdx Valid identifier of the partition.
|
||
|
|
* \pre Module is uninitialized.
|
||
|
|
* \context TASK
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_InitMemoryHandler(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_ResponseIsrHandler()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Response isr handler called by the ISR
|
||
|
|
* \details -
|
||
|
|
* \param[in] partitionIdx Valid partitionIdx
|
||
|
|
* \pre -
|
||
|
|
* \context ISR2
|
||
|
|
* \reentrant FALSE
|
||
|
|
* \synchronous TRUE
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_ResponseIsrHandler(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_CODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_START_SEC_RAMCODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* Crypto_30_vHsm_Ipc_WaitForHsmRamForPartition()
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
/*!
|
||
|
|
* \brief Waits in the RAM for the vHsm Ready flag.
|
||
|
|
* \details This is only needed because the vHsm has no control over the application core startup when a debugger is attached.
|
||
|
|
* When a debugger is attached, all cores will startup immediately.
|
||
|
|
* \param[in] partitionIdx Valid Partition Index
|
||
|
|
* \pre -
|
||
|
|
* \context TASK
|
||
|
|
* \reentrant TRUE
|
||
|
|
* \synchronous TRUE
|
||
|
|
* \trace CREQ-Crypto-WaitLoopCallout
|
||
|
|
*********************************************************************************************************************/
|
||
|
|
FUNC(void, CRYPTO_30_VHSM_CODE) Crypto_30_vHsm_Ipc_WaitForHsmRamForPartition(Crypto_30_vHsm_PartitionIdentifiersIterType partitionIdx);
|
||
|
|
|
||
|
|
# define CRYPTO_30_VHSM_STOP_SEC_RAMCODE
|
||
|
|
# include "Crypto_30_vHsm_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */
|
||
|
|
|
||
|
|
#endif /* !defined (CRYPTO_30_VHSM_IPC_H) */
|
||
|
|
|
||
|
|
/**********************************************************************************************************************
|
||
|
|
* END OF FILE: Crypto_30_vHsm_Ipc.h
|
||
|
|
*********************************************************************************************************************/
|