| /** |
| * @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 <sm_const.h> |
| #include <assert.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| #include <string.h> |
| #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(IPC) |
| #include "smComIpc.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; |
| } |
| |