/* | |
* | |
* Copyright 2016-2020 NXP | |
* SPDX-License-Identifier: Apache-2.0 | |
*/ | |
/** | |
* @par Description | |
* Interface of installable communication layer to exchange APDU's between Host and Secure Module. | |
*/ | |
#ifndef _SCCOM_H_ | |
#define _SCCOM_H_ | |
#include "sm_types.h" | |
#include "apduComm.h" | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
#define SMCOM_OK 0x9000 //!< Communication successful | |
#define SMCOM_SND_FAILED 0x7010 //!< Communication failed while sending data | |
#define SMCOM_RCV_FAILED 0x7011 //!< Communication failed while receiving data | |
#define SMCOM_COM_FAILED 0x7012 //!< Cannot open communication link with ax device | |
#define SMCOM_PROTOCOL_FAILED 0x7013 //!< APDU exchange protocol failed to be established successfully | |
#define SMCOM_NO_ATR 0x7014 //!< No ATR can be retrieved | |
#define SMCOM_NO_PRIOR_INIT 0x7015 //!< The callbacks doing the actual transfer have not been installed | |
#define SMCOM_COM_ALREADY_OPEN 0x7016 //!< Communication link is already open with device | |
#define SMCOM_COM_INIT_FAILED 0x7017 //!< Communication init failed | |
/* ------------------------------------------------------------------------- */ | |
typedef U32 (*ApduTransceiveFunction_t) (void* conn_ctx, apdu_t * pAdpu); | |
typedef U32 (*ApduTransceiveRawFunction_t) (void* conn_ctx, U8 * pTx, U16 txLen, U8 * pRx, U32 * pRxLen); | |
U16 smCom_Init(ApduTransceiveFunction_t pTransceive, ApduTransceiveRawFunction_t pTransceiveRaw); | |
void smCom_DeInit(void); | |
U32 smCom_Transceive(void *conn_ctx, apdu_t *pApdu); | |
U32 smCom_TransceiveRaw(void *conn_ctx, U8 *pTx, U16 txLen, U8 *pRx, U32 *pRxLen); | |
#if defined(SMCOM_JRCP_V2) | |
void smCom_Echo(void *conn_ctx, const char *comp, const char *level, const char *buffer); | |
#endif | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif |