/** * @file a71ch_com_scp.c * @author NXP Semiconductors * @version 1.0 * @par License * * Copyright 2016,2018,2020 NXP * SPDX-License-Identifier: Apache-2.0 * * @par Description * Implementation of basic communication functionality between Host and A71CH. * @par History * 1.0 1-oct-2016 : Initial version * *****************************************************************************/ #if defined(SSS_USE_FTR_FILE) #include "fsl_sss_ftr.h" #else #include "fsl_sss_ftr_default.h" #endif #include #include #include #include #include #include "sm_api.h" #include "sm_apdu.h" #include "sm_errors.h" #include "sm_printf.h" #include "sm_types.h" #include "ax_common.h" #include "ax_scp.h" #include "a71ch_util.h" #if SSS_HAVE_SSCP #include "fsl_sscp_a71ch.h" #endif //Also do select after opening the connection #define OPEN_AND_SELECT 0 #ifdef TDA8029_UART #include "smComAlpar.h" #include "smUart.h" #endif #if defined(SCI2C) #include "smComSCI2C.h" #endif #if defined(SPI) #include "smComSCSPI.h" #endif #if defined(PCSC) #include "smComPCSC.h" #endif #if defined(SMCOM_JRCP_V1) #include "smComSocket.h" #endif #if defined(SMCOM_JRCP_V2) #include "smComJRCP.h" #endif #if defined(RJCT_VCOM) #include "smComSerial.h" #endif #if defined(T1oI2C) #include "smComT1oI2C.h" #endif #include "global_platf.h" /// @cond Optional diagnostics functionality // #define FLOW_VERBOSE #ifdef FLOW_VERBOSE #define FPRINTF(...) printf(__VA_ARGS__) #else #define FPRINTF(...) #endif /// @endcond /** * Resumes the communication with the Security Module including the secure messaging from the previously * retrieved communication state and SCP03 session state. * * @param[in] commState communication state * @param[in] scp03State SCP03 session state * * @retval ::SW_OK Upon successful execution */ U16 SM_ResumeConnection( SmCommState_t *commState, Scp03SessionState_t *scp03State) { U16 sw = SW_OK; #if defined(SCI2C) U8 atrDummy[32]; U16 atrDummyLen = sizeof(atrDummy); #endif FPRINTF("** Session State re-used **\r\n"); FPRINTF("***************************\r\n"); #ifdef TDA8029_UART smComAlpar_Init(); smUartSetBaudRate(commState->param2); #elif defined(SCI2C) sw = smComSCI2C_Open( NULL, RESUME_SCI2C, (U8)(commState->param1), atrDummy, &atrDummyLen); #else AX_UNUSED_ARG(commState); #endif #if !defined(NO_SECURE_CHANNEL_SUPPORT) SCP_SetScpSessionState(scp03State); DEV_SetResumeHostChannelState(); #endif return sw; }