diff options
author | Daniel Tomas <dtomas.nxp@gmail.com> | 2011-07-28 12:40:33 -0700 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2011-08-16 17:54:30 -0700 |
commit | 39038381fd4a9922cdd07251ce1a0a8840681bcd (patch) | |
tree | 7038d0ea35af8e2979099a754a0365635378e830 /src/phLibNfc_SE.c | |
parent | 34af9600bae35a39b5d0ac31123c3d99ae706e5c (diff) | |
download | external_libnfc-nxp-39038381fd4a9922cdd07251ce1a0a8840681bcd.zip external_libnfc-nxp-39038381fd4a9922cdd07251ce1a0a8840681bcd.tar.gz external_libnfc-nxp-39038381fd4a9922cdd07251ce1a0a8840681bcd.tar.bz2 |
Add the NXP_EVT_SE_SWITCH_MODE event support in the libnfc.
This event is used in the SE SetMode API to be able to enable/disable
card emulation with not writting the EEPROM area.
Change-Id: Iace438c3625f6a084c8bcc66d787a7a60d56b8f8
Diffstat (limited to 'src/phLibNfc_SE.c')
-rw-r--r-- | src/phLibNfc_SE.c | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/src/phLibNfc_SE.c b/src/phLibNfc_SE.c index 3c271f3..968c239 100644 --- a/src/phLibNfc_SE.c +++ b/src/phLibNfc_SE.c @@ -473,7 +473,6 @@ NFCSTATUS phLibNfc_SE_SetMode ( phLibNfc_Handle hSE_Handle, switch(eActivation_mode) { case phLibNfc_SE_ActModeVirtual: - case phLibNfc_SE_ActModeDefault: { if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_UICC_INDEX].hSecureElement) { @@ -507,6 +506,69 @@ NFCSTATUS phLibNfc_SE_SetMode ( phLibNfc_Handle hSE_Handle, } } break; + case phLibNfc_SE_ActModeVirtualVolatile: + { + if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_SMARTMX_INDEX].hSecureElement) + { + eEmulationType = NFC_SMARTMX_EMULATION; + /*Enable the SMX -External reader can see it*/ + pLibContext->sCardEmulCfg.config.smartMxCfg.enableEmulation = TRUE; + pLibContext->sSeContext.eActivatedMode = phLibNfc_SE_ActModeVirtualVolatile; + + Status = phHal4Nfc_Switch_SMX_Mode( + pLibContext->psHwReference, + eSmartMx_Virtual, + phLibNfc_SE_SetMode_cb, + pLibContext + ); + } + else if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_UICC_INDEX].hSecureElement) + { + eEmulationType = NFC_UICC_EMULATION; + /*Enable the UICC -External reader can see it*/ + pLibContext->sCardEmulCfg.config.uiccEmuCfg.enableUicc = TRUE; + pLibContext->sSeContext.eActivatedMode = phLibNfc_SE_ActModeVirtualVolatile; + + Status = phHal4Nfc_Switch_Swp_Mode( + pLibContext->psHwReference, + eSWP_Switch_On, + phLibNfc_SE_SetMode_cb, + pLibContext + ); + } + else + { + Status = NFCSTATUS_INVALID_HANDLE; + } + } + break; + case phLibNfc_SE_ActModeDefault: + { + if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_SMARTMX_INDEX].hSecureElement) + { + Status = phHal4Nfc_Switch_SMX_Mode( + pLibContext->psHwReference, + eSmartMx_Default, + phLibNfc_SE_SetMode_cb, + pLibContext + ); + } + else if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_UICC_INDEX].hSecureElement) + { + Status = phHal4Nfc_Switch_Swp_Mode( + pLibContext->psHwReference, + eSWP_Switch_Default, + phLibNfc_SE_SetMode_cb, + pLibContext + ); + } + else + { + Status = NFCSTATUS_INVALID_HANDLE; + } + } + break; + case phLibNfc_SE_ActModeWired: { if(hSE_Handle == sSecuredElementInfo[LIBNFC_SE_SMARTMX_INDEX].hSecureElement) |