phStatus_t phhalHw_ReadRegister( void * pDataParams, uint8_t bAddress, uint8_t * pValue ) { phStatus_t PH_MEMLOC_REM status; PH_LOG_HELPER_ALLOCATE_TEXT(bFunctionName, "phhalHw_ReadRegister"); /*PH_LOG_HELPER_ALLOCATE_PARAMNAME(pDataParams);*/ PH_LOG_HELPER_ALLOCATE_PARAMNAME(bAddress); 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_UINT8(PH_LOG_LOGTYPE_DEBUG, bAddress_log, &bAddress); 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_HAL) { 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 PH_ADD_COMPCODE(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_HAL); } /* perform operation on active layer */ switch (PH_GET_COMPID(pDataParams)) { #ifdef NXPBUILD__PHHAL_HW_RC663 case PHHAL_HW_RC663_ID: status = phhalHw_Rc663_ReadRegister((phhalHw_Rc663_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_RC663 */ #ifdef NXPBUILD__PHHAL_HW_RC523 case PHHAL_HW_RC523_ID: status = phhalHw_Rc523_ReadRegister((phhalHw_Rc523_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_RC523 */ #ifdef NXPBUILD__PHHAL_HW_RD70X case PHHAL_HW_RD70X_ID: status = phhalHw_Rd70x_ReadRegister((phhalHw_Rd70x_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_RD70X */ #ifdef NXPBUILD__PHHAL_HW_RD710 case PHHAL_HW_RD710_ID: status = phhalHw_Rd710_ReadRegister((phhalHw_Rd710_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_RD710 */ #ifdef NXPBUILD__PHHAL_HW_CALLBACK case PHHAL_HW_CALLBACK_ID: status = phhalHw_Callback_ReadRegister((phhalHw_Callback_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_CALLBACK */ #ifdef NXPBUILD__PHHAL_HW_RC632 case PHHAL_HW_RC632_ID: status = phhalHw_Rc632_ReadRegister((phhalHw_Rc632_DataParams_t *)pDataParams, bAddress, pValue); break; #endif /* NXPBUILD__PHHAL_HW_RC632 */ default: status = PH_ADD_COMPCODE(PH_ERR_INVALID_DATA_PARAMS, PH_COMP_HAL); break; } PH_LOG_HELPER_ADDSTRING(PH_LOG_LOGTYPE_INFO, bFunctionName); PH_LOG_HELPER_ADDPARAM_UINT8(PH_LOG_LOGTYPE_DEBUG, pValue_log, pValue); 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 NfcRdLibInit(void) { phStatus_t status; /* * Initialize the Reader BAL (Bus Abstraction Layer) component */ status = phbalReg_Stub_Init(&sBalReader, sizeof(phbalReg_Stub_DataParams_t)); CHECK_SUCCESS(status); /* * Initialize the OSAL Events. */ status = phOsal_Event_Init(); CHECK_STATUS(status); // Start interrupt thread Set_Interrupt(); /* * Set HAL type in BAL */ #ifdef NXPBUILD__PHHAL_HW_PN5180 status = phbalReg_SetConfig(&sBalReader, PHBAL_REG_CONFIG_HAL_HW_TYPE, PHBAL_REG_HAL_HW_PN5180); #endif #ifdef NXPBUILD__PHHAL_HW_RC523 status = phbalReg_SetConfig(&sBalReader, PHBAL_REG_CONFIG_HAL_HW_TYPE, PHBAL_REG_HAL_HW_RC523); #endif #ifdef NXPBUILD__PHHAL_HW_RC663 status = phbalReg_SetConfig(&sBalReader, PHBAL_REG_CONFIG_HAL_HW_TYPE, PHBAL_REG_HAL_HW_RC663); #endif CHECK_STATUS(status); status = phbalReg_SetPort(&sBalReader, (uint8_t *) SPI_CONFIG); CHECK_STATUS(status); /* * Open BAL */ status = phbalReg_OpenPort(&sBalReader); CHECK_STATUS(status); /* * Initialize the Reader HAL (Hardware Abstraction Layer) component */ status = phhalHw_Nfc_IC_Init(&sHal_Nfc_Ic, sizeof(phhalHw_Nfc_Ic_DataParams_t), &sBalReader, 0, bHalBufferTx, sizeof(bHalBufferTx), bHalBufferRx, sizeof(bHalBufferRx)); CHECK_SUCCESS(status); /* * Set the parameter to use the SPI interface */ sHal_Nfc_Ic.sHal.bBalConnectionType = PHHAL_HW_BAL_CONNECTION_SPI; Configure_Device(&sHal_Nfc_Ic); /* * Set the generic pointer */ pHal = &sHal_Nfc_Ic.sHal; /* * Initializing specific objects for the communication with MIFARE (R) Classic cards. The MIFARE (R) Classic card * is compliant of ISO 14443-3 and ISO 14443-4 */ /* * Initialize the I14443-A PAL layer */ status = phpalI14443p3a_Sw_Init(&spalI14443p3a, sizeof(phpalI14443p3a_Sw_DataParams_t), &sHal_Nfc_Ic.sHal); CHECK_STATUS(status); /* * Initialize the I14443-A PAL component */ status = phpalI14443p4a_Sw_Init(&spalI14443p4a, sizeof(phpalI14443p4a_Sw_DataParams_t), &sHal_Nfc_Ic.sHal); CHECK_STATUS(status); /* * Initialize the I14443-4 PAL component */ status = phpalI14443p4_Sw_Init(&spalI14443p4, sizeof(phpalI14443p4_Sw_DataParams_t), &sHal_Nfc_Ic.sHal); CHECK_STATUS(status); /* * Initialize the I14443-B PAL component */ status = phpalI14443p3b_Sw_Init(&spalI14443p3b, sizeof(phpalI14443p3b_Sw_DataParams_t), &sHal_Nfc_Ic.sHal); CHECK_STATUS(status); /* * Initialize the MIFARE PAL component */ status = phpalMifare_Sw_Init(&spalMifare, sizeof(phpalMifare_Sw_DataParams_t), &sHal_Nfc_Ic.sHal, NULL); CHECK_STATUS(status); /* * Initialize the discover component */ status = phacDiscLoop_Sw_Init(&sDiscLoop, sizeof(phacDiscLoop_Sw_DataParams_t), &sHal_Nfc_Ic.sHal); CHECK_SUCCESS(status); /* * Load profile for Discovery loop */ LoadProfile(); status = phalMfc_Sw_Init(&salMfc, sizeof(phalMfc_Sw_DataParams_t), &spalMifare, NULL); CHECK_STATUS(status); /* * Read the version of the reader IC */ #if defined NXPBUILD__PHHAL_HW_RC523 status = phhalHw_Rc523_ReadRegister(&sHal_Nfc_Ic.sHal, PHHAL_HW_RC523_REG_VERSION, &bDataBuffer[0]); CHECK_SUCCESS(status); #endif #if defined NXPBUILD__PHHAL_HW_RC663 status = phhalHw_Rc663_ReadRegister(&sHal_Nfc_Ic.sHal, PHHAL_HW_RC663_REG_VERSION, &bDataBuffer[0]); CHECK_SUCCESS(status); #endif /* * Return Success */ return PH_ERR_SUCCESS; }