blob: 003de1ae88c01d37aa1f933789b1baca23552e32 [file] [log] [blame]
/*
*
* 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