diff options
Diffstat (limited to 'src/phLibNfc.c')
-rw-r--r-- | src/phLibNfc.c | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/src/phLibNfc.c b/src/phLibNfc.c index 9c7db4f..92bdc40 100644 --- a/src/phLibNfc.c +++ b/src/phLibNfc.c @@ -31,6 +31,8 @@ ************************* Header Files **************************************** */ +#define LOG_TAG "NFC" + #include <phLibNfc.h> #include <phDal4Nfc.h> #include <phHal4Nfc.h> @@ -45,6 +47,8 @@ *************************** Macro's ****************************************** */ +extern int dlopen_firmware(); + #ifndef STATIC_DISABLE #define STATIC static #else @@ -106,6 +110,7 @@ NFCSTATUS phLibNfc_HW_Reset () { NFCSTATUS Status = NFCSTATUS_SUCCESS; + Status = phDal4Nfc_Reset(1); Status = phDal4Nfc_Reset(0); Status = phDal4Nfc_Reset(1); @@ -117,6 +122,13 @@ NFCSTATUS phLibNfc_Download_Mode () return phDal4Nfc_Download(); } +int phLibNfc_Load_Firmware_Image () +{ + int status; + status = dlopen_firmware(); + return status; +} + extern uint8_t nxp_nfc_isoxchg_timeout; NFCSTATUS phLibNfc_SetIsoXchgTimeout(uint8_t timeout) { @@ -124,12 +136,40 @@ NFCSTATUS phLibNfc_SetIsoXchgTimeout(uint8_t timeout) { return NFCSTATUS_SUCCESS; } +int phLibNfc_GetIsoXchgTimeout() { + return nxp_nfc_isoxchg_timeout; +} + extern uint32_t nxp_nfc_hci_response_timeout; NFCSTATUS phLibNfc_SetHciTimeout(uint32_t timeout_in_ms) { nxp_nfc_hci_response_timeout = timeout_in_ms; return NFCSTATUS_SUCCESS; } +int phLibNfc_GetHciTimeout() { + return nxp_nfc_hci_response_timeout; +} + +extern uint32_t nxp_nfc_felica_timeout; +NFCSTATUS phLibNfc_SetFelicaTimeout(uint8_t timeout_in_ms) { + nxp_nfc_felica_timeout = timeout_in_ms; + return NFCSTATUS_SUCCESS; +} + +int phLibNfc_GetFelicaTimeout() { + return nxp_nfc_felica_timeout; +} + +extern uint8_t nxp_nfc_mifareraw_timeout; +NFCSTATUS phLibNfc_SetMifareRawTimeout(uint8_t timeout) { + nxp_nfc_mifareraw_timeout = timeout; + return NFCSTATUS_SUCCESS; +} + +int phLibNfc_GetMifareRawTimeout() { + return nxp_nfc_mifareraw_timeout; +} + /** * Initialize the phLibNfc interface. */ @@ -580,6 +620,7 @@ NFCSTATUS phLibNfc_Mgt_Reset(void *pContext) } /* No device is connected */ gpphLibContext->Connected_handle = 0x00; + gpphLibContext->Prev_Connected_handle = 0x00; gpphLibContext->ReleaseType = NFC_INVALID_RELEASE_TYPE; gpphLibContext->eLibNfcCfgMode = NFC_DISCOVERY_STOP; /*Lib Nfc Stack is initilized and in idle state*/ @@ -826,10 +867,15 @@ NFCSTATUS phLibNfc_Mgt_GetstackCapabilities( gpphLibContext->psHwReference->device_info.model_id; (void)memcpy(phLibNfc_StackCapabilities->psDevCapabilities.full_version, gpphLibContext->psHwReference->device_info.full_version,NXP_FULL_VERSION_LEN); - /* Check the firmware version */ - phLibNfc_StackCapabilities->psDevCapabilities.firmware_update_info = memcmp(phLibNfc_StackCapabilities->psDevCapabilities.full_version, nxp_nfc_full_version, - NXP_FULL_VERSION_LEN); + if (nxp_nfc_full_version == NULL) { + // Couldn't load firmware, just pretend we're up to date. + LOGW("Firmware image not available: this device might be running old NFC firmware!"); + phLibNfc_StackCapabilities->psDevCapabilities.firmware_update_info = 0; + } else { + phLibNfc_StackCapabilities->psDevCapabilities.firmware_update_info = memcmp(phLibNfc_StackCapabilities->psDevCapabilities.full_version, nxp_nfc_full_version, + NXP_FULL_VERSION_LEN); + } if(NFCSTATUS_SUCCESS != RetVal) { |