395 lines
14 KiB
Plaintext
395 lines
14 KiB
Plaintext
/*
|
|
* Copyright (c), NXP Semiconductors Gratkorn / Austria
|
|
*
|
|
* (C)NXP Semiconductors
|
|
* All rights are reserved. Reproduction in whole or in part is
|
|
* prohibited without the written consent of the copyright owner.
|
|
* NXP reserves the right to make changes without notice at any time.
|
|
* NXP makes no warranty, expressed, implied or statutory, including but
|
|
* not limited to any implied warranty of merchantability or fitness for any
|
|
*particular purpose, or that the use will not infringe any third party patent,
|
|
* copyright or trademark. NXP must not be liable for any loss or damage
|
|
* arising from its use.
|
|
*/
|
|
|
|
/** \file
|
|
* Generic FeliCa Application Component of Reader Library Framework.
|
|
* $Author$
|
|
* $Revision$ (v07.10.00)
|
|
* $Date$
|
|
*
|
|
* History:
|
|
* RSn: Generated 26. January 2010
|
|
*
|
|
*/
|
|
|
|
#include <phalFelica.h>
|
|
#include <ph_RefDefs.h>
|
|
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
#include "Sw/phalFelica_Sw.h"
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
#ifdef NXPBUILD__PHAL_FELICA
|
|
|
|
#ifndef NXPRDLIB_REM_GEN_INTFS
|
|
|
|
phStatus_t phalFelica_RequestResponse(
|
|
void * pDataParams,
|
|
uint8_t * pMode
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_RequestResponse");
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pMode);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pMode);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_RequestResponse((phalFelica_Sw_DataParams_t *)pDataParams, pMode);
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
#ifdef NXPBUILD__PH_LOG
|
|
if ((status & PH_ERR_MASK) == PH_ERR_SUCCESS)
|
|
{
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_DEBUG, pMode_log, pMode, 1);
|
|
}
|
|
#endif
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
phStatus_t phalFelica_RequestService(
|
|
void * pDataParams,
|
|
uint8_t bTxNumServices,
|
|
uint8_t* pTxServiceList,
|
|
uint8_t* pRxNumServices,
|
|
uint8_t* pRxServiceList
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_RequestService");
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pTxServiceList);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pRxServiceList);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pTxServiceList_log, pTxServiceList, bTxNumServices);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pTxServiceList);
|
|
PH_ASSERT_NULL (pRxNumServices);
|
|
PH_ASSERT_NULL (pRxServiceList);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_RequestService((phalFelica_Sw_DataParams_t *)pDataParams, bTxNumServices, pTxServiceList, pRxNumServices, pRxServiceList);
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pRxServiceList_log, pRxServiceList, *pRxNumServices);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
phStatus_t phalFelica_Read(
|
|
void * pDataParams,
|
|
uint8_t bNumServices,
|
|
uint8_t* pServiceList,
|
|
uint8_t bTxNumBlocks,
|
|
uint8_t* pBlockList,
|
|
uint8_t bBlockListLength,
|
|
uint8_t* pRxNumBlocks,
|
|
uint8_t* pBlockData
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_Read");
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pServiceList);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pBlockList);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pBlockData);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pServiceList_log, pServiceList, bNumServices);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pBlockList_log, pBlockList, bBlockListLength);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pServiceList);
|
|
PH_ASSERT_NULL (pBlockList);
|
|
PH_ASSERT_NULL (pRxNumBlocks);
|
|
PH_ASSERT_NULL (pBlockData);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_Read((phalFelica_Sw_DataParams_t *)pDataParams, bNumServices, pServiceList, bTxNumBlocks, pBlockList, bBlockListLength, pRxNumBlocks, pBlockData);
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
#ifdef NXPBUILD__PH_LOG
|
|
if ((status & PH_ERR_MASK) == PH_ERR_SUCCESS)
|
|
{
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_DEBUG, pBlockData_log, pBlockData, *pRxNumBlocks);
|
|
}
|
|
#endif
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
phStatus_t phalFelica_Write(
|
|
void * pDataParams,
|
|
uint8_t bNumServices,
|
|
uint8_t* pServiceList,
|
|
uint8_t bNumBlocks,
|
|
uint8_t* pBlockList,
|
|
uint8_t bBlockListLength,
|
|
uint8_t* pBlockData
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_Write");
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pServiceList);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pBlockData);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pServiceList_log, pServiceList, bNumServices);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pBlockData_log, pBlockData, bBlockListLength);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pServiceList);
|
|
PH_ASSERT_NULL (pBlockList);
|
|
PH_ASSERT_NULL (pBlockData);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_Write((phalFelica_Sw_DataParams_t *)pDataParams, bNumServices, pServiceList, bNumBlocks, pBlockList, bBlockListLength, pBlockData);
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
phStatus_t phalFelica_GetConfig(
|
|
void* pDataParams,
|
|
uint16_t wConfig,
|
|
uint16_t* pValue
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_GetConfig");
|
|
/*PH_LOG_HELPER_ALLOCATE_PARAMNAME(pDataParams);*/
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(wConfig);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pValue);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_DEBUG, wConfig_log, &wConfig);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pValue);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_GetConfig((phalFelica_Sw_DataParams_t *)pDataParams, wConfig, pValue );
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
#ifdef NXPBUILD__PH_LOG
|
|
if ((status & PH_ERR_MASK) == PH_ERR_SUCCESS)
|
|
{
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_DEBUG, pValue_log, pValue);
|
|
}
|
|
#endif
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
phStatus_t phalFelica_ActivateCard(
|
|
void* pDataParams,
|
|
uint8_t* pSystemCode,
|
|
uint8_t bTimeSlot,
|
|
uint8_t* pRxBuffer,
|
|
uint8_t* pRxLength,
|
|
uint8_t* pMoreCardsAvailable
|
|
)
|
|
{
|
|
phStatus_t PH_MEMLOC_REM status;
|
|
|
|
PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phalFelica_ActivateCard");
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pSystemCode);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(bTimeSlot);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pRxBuffer);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(pMoreCardsAvailable);
|
|
PH_LOG_HELPER_ALLOCATE_PARAMNAME(status);
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pSystemCode_log, pSystemCode, 2);
|
|
PH_LOG_HELPER_ADDPARAM_UINT8(PH_LOG_LOGTYPE_INFO, bTimeSlot_log, &bTimeSlot);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_ENTER);
|
|
PH_ASSERT_NULL (pDataParams);
|
|
PH_ASSERT_NULL (pSystemCode);
|
|
PH_ASSERT_NULL (pRxBuffer);
|
|
PH_ASSERT_NULL (pRxLength);
|
|
PH_ASSERT_NULL (pMoreCardsAvailable);
|
|
|
|
/* Check data parameters */
|
|
if (PH_GET_COMPCODE(pDataParams) != PH_COMP_AL_FELICA)
|
|
{
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
/* perform operation on active layer */
|
|
switch (PH_GET_COMPID(pDataParams))
|
|
{
|
|
#ifdef NXPBUILD__PHAL_FELICA_SW
|
|
case PHAL_FELICA_SW_ID:
|
|
status = phalFelica_Sw_ActivateCard( (phalFelica_Sw_DataParams_t *)pDataParams, pSystemCode, bTimeSlot, pRxBuffer, pRxLength, pMoreCardsAvailable);
|
|
break;
|
|
#endif /* NXPBUILD__PHAL_FELICA_SW */
|
|
|
|
default:
|
|
status = PH_ADD_COMPCODE_FIXED(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_AL_FELICA);
|
|
break;
|
|
}
|
|
|
|
PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName);
|
|
PH_LOG_HELPER_ADDPARAM_BUFFER(PH_LOG_LOGTYPE_INFO, pRxBuffer_log, pRxBuffer, *pRxLength);
|
|
PH_LOG_HELPER_ADDPARAM_UINT8(PH_LOG_LOGTYPE_INFO, pMoreCardsAvailable_log, pMoreCardsAvailable);
|
|
PH_LOG_HELPER_ADDPARAM_UINT16(PH_LOG_LOGTYPE_INFO, status_log, &status);
|
|
PH_LOG_HELPER_EXECUTE(PH_LOG_OPTION_CATEGORY_LEAVE);
|
|
|
|
return status;
|
|
}
|
|
|
|
#endif /* NXPRDLIB_REM_GEN_INTFS */
|
|
|
|
#endif /* NXPBUILD__PHAL_FELICA */
|