/****************************************************************************** * * Copyright (C) 2018 ST Microelectronics S.A. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ******************************************************************************/ #ifndef _STESEAPI_H_ #define _STESEAPI_H_ #include typedef struct StEse_data { uint16_t len; /*!< length of the buffer */ uint8_t* p_data; /*!< pointer to a buffer */ } StEse_data; typedef enum { ESESTATUS_SUCCESS, ESESTATUS_FAILED, ESESTATUS_INVALID_PARAMETER, ESESTATUS_NOT_INITIALISED, ESESTATUS_ALREADY_INITIALISED, ESESTATUS_FEATURE_NOT_SUPPORTED, ESESTATUS_CONNECTION_SUCCESS, ESESTATUS_CONNECTION_FAILED, ESESTATUS_BUSY, ESESTATUS_UNKNOWN_ERROR, } ESESTATUS; typedef enum { ESE_STATUS_CLOSE = 0x00, ESE_STATUS_OPEN, } SpiEse_status; /* SPI Control structure */ typedef struct ese_Context { SpiEse_status EseLibStatus; /* Indicate if Ese Lib is open or closed */ void* pDevHandle; } ese_Context_t; /** * StEse_init * * This function initializes protocol stack instance variables * * @param void * * @return This function return ESESTATUS_SUCCES (0) in case of success * In case of failure returns other failure value. * */ ESESTATUS StEse_init(); /** * StEse_Transceive * * This function prepares the C-APDU, send to ESE and then receives the * response from ESE, decode it and returns data. * * @param pCmd: Command to eSE * @param pRsp: Response from eSE (Returned data to be freed * after copying) * * @return ESESTATUS_SUCCESS On Success ESESTATUS_SUCCESS else proper error code * */ ESESTATUS StEse_Transceive(StEse_data* pCmd, StEse_data* pRsp); /** * StEse_close * * This function close the ESE interface and free all resources. * * @param void * * @return ESESTATUS_SUCCESS Always return ESESTATUS_SUCCESS (0). * */ ESESTATUS StEse_close(void); /** * StEseApi_isOpen * * This function checks if the hal is opened. * * @param void * * @return false if it is close, otherwise true * */ bool StEseApi_isOpen(); /** * StEse_getAtr * * This function get the last ATR received. * * @param void * * @return pointer to the ATR array. * */ uint8_t* StEse_getAtr(void); /** * StEse_Reset * * This function get the last ATR received. * * @param void * * @return ESESTATUS_SUCCESS is successful, ESESTATUS_SUCCESS otherwise * */ ESESTATUS StEse_Reset(void); #endif /* _STESEAPI_H_ */