NXP PN7160 Istruzioni per i controller NFC basati su NCI
L'infurmazione di u documentu
infurmazione | Cuntinutu |
Parole chjave | PN7160, PN7220, NCI, EMVCo, NFC Forum, Android, NFC |
Astrattu | Stu documentu descrive cumu portà a liberazione di middleware cumuni PN7160/PN7220 à Android 14. |
Questa guida furnisce struzzioni dettagliate nantu à cumu integrà i controller NFC basati in NXP NCI, PN7160 è PN7220, in un ambiente Android. U prucessu implica l'installazione di u driver di kernel necessariu è a cunfigurazione di MW (vede [1]). Per più infurmazione, riferite à a pagina di u produttu per PN7160 [2] è PN7220 [3]. U Prughjettu Android Open Source (AOSP) hè statu aghjurnatu per incorpore supportu per i cuntrolli NFC PN7160 è PN7220.
U PN7220 vene in duie cunfigurazioni: unicu host è dual-host. A pila hè generalmente a stessa per i dui. In u modu dual-host, SMCU hè aghjuntu chì significa chì tutti i travaglii ligati EMVCo sò eseguiti nantu à SMCU. In singlehost EMVCo hè eseguitu in una pila MW dedicata EMVCo
Android MW stack
A Figura 1 illustra l'architettura di a pila Android NFC PN7220.
- U NXP I2C Driver hè un modulu di kernel chì permette l'accessu à e risorse hardware di PN7220.
- U modulu HAL hè una implementazione di a strata di astrazione hardware specifica per u controller NXP NFC.
- LibNfc-Nci hè una libreria nativa chì furnisce funziunalità NFC.
- NFC JNI agisce cum'è un ponte trà Java è classi Native.
- U Framework NFC è EMVCo hè un modulu di u framework di l'applicazione chì permette l'accessu à e funziunalità NFC è EMVCo.
A Figura 2 mostra l'architettura di a pila Android NFC PN7160.
Figura 2. PN7160 Android MW stack
- U NXP I2C Driver hè un modulu di kernel chì permette l'accessu à e risorse hardware di PN7160.
- U modulu HAL hè una implementazione di a strata di astrazione hardware specifica per u controller NXP NFC.
- LibNfc-nci hè una libreria nativa chì furnisce funziunalità NFC.
- NFC JNI agisce cum'è un ponte trà Java è classi Native.
- L'NFC hè un modulu di u framework di l'applicazione chì permette l'accessu à e funziunalità NFC.
- U codice fonte MW hè u listessu per PN7160 è PN7220, ma ci sò uni pochi limitazioni.
A Tabella 1 mostra caratteristiche micca supportate di ogni controller NFC.
Table 1. Funzioni senza supportu
Controller NFC | Funzioni micca supportate |
PN7160 |
|
PN7220 |
|
Nota: Da Android 14 in poi, P2P ùn hè micca supportatu ancu in PN7160.
Driver di u kernel
Per stabilisce a cunnessione cù u PN7220 o PN7160, a pila Android usa u driver di kernel nxpnfc. Si pò truvà in [4].
Dettagli di u driver
PN7220 supporta l'interfaccia fisica I2C, mentri PN7160 supporta l'interfaccia fisica I2C o SPI. Quandu hè stallatu in u kernel, u driver hè espostu via u node di u dispositivu in /dev/nxpnfc.
Nota: PN7160 è PN7220 utilizanu dui drivers differenti, a selezzione di u driver currettu hè necessariu basatu annantu à u tipu di chip.
Ottene u codice fonte di u driver PN7160
Copia u repository di driver nfcandroid_platform_drivers/drivers/pn7160/nfc in u repertoriu di u kernel, rimpiazzendu l'implementazione esistente. Vede [4] per u kernel files.
$rm -rf drivers/nfc
$git clone "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -b
br_ar_14_comm_infra_dev
Questu finisci cù u cartulare drivers/nfc chì cuntene i seguenti files:
- README.md: infurmazione di repository
- Fatefile: cunduttore intestatu fàfile
- Kconfig: cunfigurazione di u driver file
- Licenza: termini di licenza di cunduttore
- nfc sottocartella chì cuntene:
- commoc.c: implementazione di driver genericu
- common.h: definizione di l'interfaccia generica di u driver
- i2c_drv.c: implementazione di driver specifichi i2c
- - i2c_drv.h: definizione di l'interfaccia di u driver specificu i2c
- spi_drv.c: implementazione di u driver specificu spi
- spi_drv.h: definizione di l'interfaccia di u driver specificu spi
- Fatefile: fàfile chì hè inclusu in a marcafile di u cunduttore
- Kbuild => custruisce file
- Kconfig => cunfigurazione di u driver file
Ottene u codice fonte di u driver PN7220
Copia u nfcandroid_platform_drivers/drivers/pn7220cs/nfc (single-host usecase) o nfcandroid_platform_ drivers/drivers/pn7220cms/nfc (dual-host usecase) in u kernel directory drivers/nfc, rimpiazzà u driver esistente. Vede [4] per u kernel files.
$rm -rf drivers/nfc$git clone "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -bbr_ar_14_comm_infra_dev
Dopu stu cumandamentu, u cartulare drivers/nfc cuntene i seguenti files:
- README.md: infurmazione di repository
- Fatefile: cunduttore intestatu fàfile
- Kconfig: cunfigurazione di u driver file
- Licenza: termini di licenza di cunduttore
- nfc sottocartella chì cuntene:
- commoc.c: implementazione di driver genericu
- common.h: definizione di l'interfaccia generica di u driver
- i2c_drv.c: implementazione di driver specifichi i2c
- i2c_drv.h: Definizione di l'interfaccia di driver specifichi i2c
- Fatefile: fàfile chì hè inclusu in a marcafile di u cunduttore
- Kbuild => custruisce file
- Kconfig => cunfigurazione di u driver file
Custruì u driver
L'arburu di u dispositivu hè rispunsevuli di aghjunghje u driver à u kernel è di carricà in u boot di u dispositivu.
Dopu avè aghjurnatu a specificazione di l'arburu di u dispusitivu, l'arburu di l'arburu di a piattaforma deve esse ricustruita. NXP consiglia di utilizà a versione di kernel 5.10 perchè furnisce una validazione cumpleta.
Per custruisce u driver, i seguenti passi deve esse realizatu:
- Pigliate u driver di kernel
- Ottene u codice fonte per u driver
- Mudificà a definizione di l'arburu di u dispusitivu, chì hè unicu à u dispusitivu in usu.
- Custruisce u driver:
a. Per mezu di a prucedura di menuconfig, aghjunghje u driver di destinazione in a custruzzione.
Dopu avè ricustruitu u kernel cumpletu, u driver serà inclusu in l'imaghjini di u kernel. Tutte l'imaghjini novi di u kernel devenu esse copiate in a custruzione AOSP.
adattazione AOSP
NXP aghjusta mudificazioni à u codice AOSP. Questu significa chì u codice AOSP hè utilizatu com'è fundazione, ma estendu per e funzioni specifiche NXP. [5] hè l'AOSP attuale tag utilizatu da NXP. Dopu avè ottenutu l'AOSP build, u codice AOSP esistente deve esse rimpiazzatu, è un numeru di patch deve esse applicatu.
Nota: Una versione diversa di u codice AOSP pò esse aduprata, ma mudificazioni supplementari deve esse realizatu.
AOSP custruisce
Ottene u codice fonte AOSP.
$ repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r2 $ repo sync
Nota: U strumentu repo deve esse stallatu nant'à u sistema. Vede [6] per l'istruzzioni.
Custruisce u codice fonte.
$cd Android_AROOT
$source build/envsetup.sh
$lunch select_target #target hè DH chì vulemu aduprà per example: evk_8mn-userdebug
$ fà -j
Copia tutti i repositori NXP in u locu di destinazione.
Tabella 2. Branche per a versione specifica di Android
versione Android | Branca |
Android 14 | br_ar_14_comm_infra_dev |
Nota: Mentre a clonazione, hè impurtante selezziunà u ramu currettu.
Table 3. Clone repository
AOSP Repos | NXP GitHub Repos |
"$ANDROID_ROOT"/pacchetti/ apps/Nfc | https://github.com/nxp-nfc-infra/nxp_nci_hal_nfc/tree/br_ar_14_comm_infra_dev |
"$ANDROID_ROOT"/system/nfc | https://github.com/nxp-nfc-infra/nxp_nci_hal_libnfc-nci/tree/br_ar_14_comm_infra_dev |
"$ANDROID_ROOT"/hardware/ nxp/nfc | https://github.com/nxp-nfc-infra/nfcandroid_nfc_hidlimpl/tree/br_ar_14_comm_infra_dev |
"$ANDROID_ROOT"/vendor/nxp/ quadri | https://github.com/nxp-nfc-infra/nfcandroid_frameworks/tree/br_ar_14_comm_infra_dev |
"$ANDROID_ROOT"/hardware/ nxp/emvco | https://github.com/nxp-nfc-infra/nfcandroid_emvco_aidlimpl/tree/ br_ar_14_comm_infra_dev |
"$ANDROID_ROOT" | https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/tree/ br_ar_14_comm_infra_dev |
Table 4. Clone repository per l'applicazioni di teste è u supportu TDA
Folder in GitHub | AOSP Repos | NXP GitHub | IC Supportatu |
test_apps/SMCU_Switch | "$ANDROID_ROOT"/
pacchetti/applicazioni/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
test_apps/EMVCoMode SwitchApp | "$ANDROID_ROOT"/
pacchetti/applicazioni/Nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
test_apps/Cockpit | "$ANDROID_ROOT"/
hardware/nxp/nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
test_apps/SelfTest | "$ANDROID_ROOT"/
hardware/nxp/nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
test_apps/SelfTest_pn7160 | "$ANDROID_ROOT"/
hardware/nxp/nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7160 |
test_apps/load_unload | "$ANDROID_ROOT"/
hardware/nxp/nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
test_apps/SelfTestAidl | "$ANDROID_ROOT"/
hardware/nxp/nfc/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
nfc_tda | "$ANDROID_ROOT"/sistema/ | https://github.com/ nxp-nfc-infra/ | PN7220 |
emvco_tda | "$ANDROID_ROOT"/
hardware/nxp/emvco/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
emvco_tda_test | "$ANDROID_ROOT"/
hardware/nxp/emvco/ |
https://github.com/ nxp-nfc-infra/ | PN7220 |
NfcTdaTestApp | "$ANDROID_ROOT"/
pacchetti/applicazioni/Nfc/ |
https://github.com/ nxp-nfc-infra/nfcandroid_infra_comm_libs | PN7220 |
Applica patchs
Table 5. Apply patches
Nota: Verificate l'output dopu l'applicazione di u patch, se ogni prublema hè stata osservata durante u patch.
Aggiungi librerie FW. Vede [8] per FW.
Nota: Ùn hè micca obligatoriu. FW pò esse sempre aghjurnatu.
Per PN7160:
$git clone https://github.com/NXP/nfc-NXPNFCC_FW.git
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit/libpn7160_fw.so AROOT/vendor/
nxp/7160/firmware/lib64/libpn7160_fw.so
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/32-bit/libpn7160_fw.so AROOT/vendor/
nxp/7160/firmware/lib/libpn7160_fw.so
Per PN7220:
$git clone https://github.com/NXP/nfc-NXPNFCC_FW.git
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit/libpn7220_64bit.so AROOT/vendor/nxp/
pn7220/firmware/lib64/libpn72xx_fw.so
Aghjunghjendu NFC à a custruzione
In u dispusitivu.mk makefile (per esample, device/brand/platform/device.mk), includenu una marca specificafiles:
$(call inherit-product, vendor/nxp/nfc/device-nfc.mk)
In u BoardConfig.mk fatefile (per esample, device/brand/platform/BoardConfig.mk), includenu una marca specificafile:
-include vendor/nxp/nfc/BoardConfigNfc.mk
Aghjunghjite l'applicazione DTA
$git clone https://github.com/NXPNFCProject/NXPAndroidDTA.git $patch -p1 nfc-dta.patch #situatu in https://github.com/nxp-nfc-infra/ nfcandroid_platform_reference/tree/br_ar_14_comm_infra_dev/build build_mw_patches/db845c $ cp -r nfc-dta /system/nfc-dta $/system/nfc-dta/$ mm -j
Custruite AOSP cù cambiamenti:
$cd framework/base
$mm
$cd ../..
$cd venditore/nxp/frameworks
$mm #dopu à questu, com.nxp.emvco.jar è com.nxp.nfc.jar duveranu esse fora /
destinazione/prodotto/xxxx/sistema/framwework/
$cd ../../..
$cd hardware/nxp/nfc
$mm
$cd ../../..
$ fà -j
Avà, lampu u dispusitivu cù novi images Android.
Android NFC Apps è Lib nantu à i miri
Dopu à a custruzzione, e librerie create deve esse stallate nantu à u dispusitivu di destinazione. A Sezione 4.2 specifica u locu di u prughjettu, a biblioteca currispundente è u locu di u dispositivu di destinazione induve esse installatu.
Nota: I binari EMVCo sò applicabili solu cù PN7220.
Table 6. Cumpilatu files cù u scopu di u dispusitivu
Locu di u prugettu | Cumpilatu Files | Cumenti | Situazione in u dispusitivu di destinazione |
"$ANDROID_ROOT"/
pacchetti/apps/Nfc |
NfcNci.odex NfcNci.vdex lib/NfcNci.apk oat/libnfc_nci_jni.so | /system/app/NfcNci/ avena/bracciu64/
/system/app/NfcNci/ avena/bracciu64/ /system/app/NfcNci/ /system/lib64/ |
|
"$ANDROID_ROOT"/
sistema / nfc |
libnfc_nci.so | /system/lib64/ | |
"$ANDROID_ROOT"/
system/nfc_tda" |
nfc_tda.so | Applicabile solu per a funzione CT. | /system/lib64/ |
"$ANDROID_ROOT"/
hardware/nxp/nfc |
nfc_nci_nxp_pn72xx.so android.hardware.nfc_72xx@1.2-service android.hardware.nfc_72xx@1.2-service.rc android.hardware.nfc@1.0.so android.hardware.nfc@1.1.so android.hardware.nfc@1.2.so venditore.nxp.nxpnfc@2.0.so venditore.nxp.nxpnfc@1.0.so | /vendor/lib64
/vendor/bin/hw/ /vendor/etc/init /system/lib64/ /system/lib64/ /system/lib64/ /vendor/lib64/ /vendor/lib64/ |
|
"$ANDROID_ROOT/
hardware / interfacce / nfc " |
android.hardware.nfc-V1-ndk.so android.hardware.nfc@1.0.so android.hardware.nfc@1.1.so android.hardware.nfc@1.2.so android.hardware.nfc@1.0.so android.hardware.nfc@1.1.so android.hardware.nfc@1.2.so | /system\/ib64/
/system/lib64/ /system/lib64/ /system/lib64/ /vendor/lib64/ /vendor/lib64/ /vendor/lib64/ |
|
"$ANDROID_ROOT"/
venditore/nxp/frameworks |
com.nxp.emvco.jar (PN7220) com.nxp.nfc.jar | /system/framework
/system/framework |
|
"$ANDROID_ROOT"/
hardware/nxp/emvco |
emvco_poller.so (PN7220) vendor.nxp.emvco-V1-ndk.so vendor.nxp.emvco-V2-ndk.so vendor.nxp.emvco-V2-ndk.so vendor.nxp.emvco-service vendor.nxp. emvco-service.rc | /vendor/lib64/
/system/lib64/ /system/lib64/ /vendor/lib64/ /vendor/bin/hw/ /vendor/etc/init/ |
|
"$ANDROID_ROOT/
hardware/nxp/emvco_tda” |
emvco_tda.so | Applicabile solu per a funzione CT. | /vendor/lib64/ |
Block mapping
Mapping the block name from Section 1 to target location in AOSP code.
Table 7. Patch location in NFC Stack
Block name | Situazione in codice AOSP |
NFC HAL è EMVCo HAL | hardware / interfacce / |
Pila NFC | hardware/nxp/nfc/ |
EMVCo L1 Data Exchange Layer = EMVCo Stack | hardware/nxp/emvco/ |
LibNfc-Nci | sistema/nfc/ |
NFC JNI | pacchetti/applicazioni/nfc/ |
Serviziu NFC | pacchetti/applicazioni/nfc/ |
Framework NFC | frameworks/base/ |
Quadru EMVCo | venditore/nxp/frameworks/ |
EMVCo AP
PN7220 MW stack estende u codice AOSP cù EMVCo MW stack. Questa sezione descrive l'API EMVCo.
Nota: L'API pò esse chjamatu solu quandu si usa PN7220 IC. Sè u chjamà cù PN7160 IC, l'API ùn funziona micca. EMVCo Profile Scuperta. Quelli API ponu esse aduprati cù contactless è contactless profiles.
registerEMVCoEventListener()
- ndk::ScopedAStatus registerEMVCoEventListener (const std::shared_ptr< INxpEmvcoClientCallback > & in_clientCallback, bool * in_aidl_return)
- Descrizzione: Registrate a funzione di callback EMVCo per riceve l'avvenimenti da un dispositivu di ascolta
- Nota: Questa funzione deve esse da ballà prima di invucà qualsiasi altra API.
- Parametri:
- [in] *in_clientCallback: hà una callback HAL di u cliente EMVCo
- [in] *in_aidl_return: indica u statu di registru in ritornu à u chjamante
- Ritorna
- boolean ritorna veru, se successu è torna falsu, s'ellu ùn hè micca successu à registrà
uttene u Modu di scuperta attuale ()
- ndk::ScopedAStatus getCurrentDiscoveryMode(::aidl::vendor::nxp::emvco::NxpDiscoveryMode * _aidl_return)
- Descrizzione: torna l'attuale pro attivufile tipu.
- Ritorna
- NxpDiscoveryMode - NFC / EMVCo / Unknown
onNfcStateChange()
- ndk::ScopedAStatus onNfcStateChange (NxpNfcState in_nfcState)
- Descrizzione: aghjurnatu u statu NFC à EMVCo HAL.
- Parametri:
- [in] in_nfcState: specifica u statu NFC
- Ritorni:
- nuddu
registerNFCStateChangeCallback()
- ndk::ScopedAStatus registerNFCStateChangeCallback ( const std::shared_ptr< ::aidl::vendor::nxp::emvco::INxpNfcStateChangeRequestCallback > & in_nfcStateChangeRequestCallback, bool * _aidl_re
- Descrizzione: Registrate una funzione di callback NFC per riceve l'avvenimenti da un dispositivu di ascolta.
- Nota: Questa funzione deve esse chjamata prima di invucà qualsiasi altra API.
- Parametri:
- [in] in_nfcStateChangeCallback: INxpNfcStateChangeRequestCallback a funzione di callback di l'avvenimentu chì deve esse passatu da u chjamante. Duverebbe implementà per accende / disattiva NFC basatu nantu à a dumanda ricevuta.
- Ritorni: boolean ritorna vera, se u successu è ritorna false, s'ellu ùn hè micca statu registratu.
setByteConfig()
ndk::ScopedAStatus setByteConfig ( ::aidl::vendor::nxp::emvco::NxpConfigType
in_type,
int32_t in_length,
int8_t in_value,
::aidl::vendor::nxp::emvco::NxpEmvcoStatus * _aidl_return
setEMVCoMode()
ndk::ScopedAStatus setEMVCoMode ( int8_t in_disc_mask,
bool in_isStartEMVCo )
- Descrizzione: Cumincia u modu EMVCo cù u Device-Controller. Una volta chì u Canale di Dati di l'Applicazione hè stabilitu, l'Applicazione pò mandà à inizià u modu EMVCo cù u Dispositivu-Controller.
- Parametri:
- [in] in_disc_mask EMVCo: e tecnulugia di polling sò cunfigurate attraversu stu paràmetru
- [in]in_isStartEMVCo: specifica per inizià o piantà u modu EMVCo
- Ritorni:
- nuddu
setLed()
ndk::ScopedAStatus setLed ( ::aidl::vendor::nxp::emvco::NxpLedControl
in_ledControl,
::aidl::vendor::nxp::emvco::NxpEmvcoStatus * emvco_status)
Per Cuntattate EMVCo, i seguenti API ponu esse aduprati sopra à i precedenti.
closeTDA()
ndk::ScopedAStatus closeTDA ( int8_t in_tdaID, bool in_standBy )
- Descrizzione: Chiude a smart card cunnessa cù TDA
- Parametri:
- [in] tdaID: id di u slot tda da chjude
- Eccezzioni:
- EMVCO_STATUS_INVALID_PARAMETER, se furnitu tdaID ùn hè micca validu
- EMVCO_STATUS_FEATURE_NOT_SUPPORTED quandu a funzione di a carta di cuntattu ùn hè micca supportata.
- Ritorni:
- nuddu
scopre TDA()
ndk::ScopedAStatus discoverTDA
(std::vector<::aidl::vendor::nxp::emvco::NxpEmvcoTDAInfo > * emvcoTDAInfo)
Descrizzione: discoverTDA furnisce tutti i dettagli di a smart card cunnessa nantu à TDA
- Parametri:
- [in]*in_clientCallback: furnisce u statu EMVCo è u statu TDA cum'è callback
- Eccezzioni:
- EMVCO_STATUS_FEATURE_NOT_SUPPORTED quandu a funzione di a carta di cuntattu ùn hè micca supportata.
- Ritorni:
- NxpEmvcoTDAInfo[] torna tutte e smart card cunnesse nantu à TDA. emvcoTDAInfo validu hè ricevutu solu quandu u statutu hè EMVCO_STATUS_OK
openTDA()
ndk::ScopedAStatus openTDA ( int8_t in_tdaID, bool in_standBy, int8_t * out_connID )
Descrizzione: apre a smart card cunnessa cù TDA
- Parametri:
- [in]tdaID: tda id di a smart card ricevuta attraversu discoverTDA
- Eccezzioni:
- EMVCO_STATUS_INVALID_PARAMETER, se furnitu tdaID ùn hè micca validu
- EMVCO_STATUS_FEATURE_NOT_SUPPORTED quandu a funzione di a carta di cuntattu ùn hè micca supportata.
- Ritorni:
- byte torna l'id di cunnessione di a smart card. ID di cunnessione validu ricevutu solu quandu u statutu hè EMVCO_STATUS_OK
registerEMVCoCTListener()
ndk::ScopedAStatus registerEMVCoCTListener (const std::shared_ptr<::aidl::vendor::nxp::emvco::INxpEmvcoTDACallback > & in_in_clientCallback, bool * _aidl_return)
- Descrizzione: registra a callback EMVCoCT à a pila EMVCo
- Parametri:
- [in]*in_in_clientCallback: furnisce u statu EMVCo è u statu TDA cum'è callback
- Ritorni:
- nuddu
riceve ()
ndk::ScopedAStatus transceive (const std::vector< uint8_t > & in_cmd_data, std::vector< uint8_t > * out_rsp_data )
- Descrizzione: manda dati di l'applicazione cù u Device-Controller è riceve dati di risposta da u controller
- Nota: L'ID di cunnessione di u TDA deve esse aghjuntu cum'è parte di l'intestazione NCI.
- Parametri:
- [in]in_cmd_data: Buffer di dati di cumanda di l'applicazione
- Eccezzioni:
- EMVCO_STATUS_INVALID_PARAMETER, se l'ID di cunnessione furnitu ùn hè micca validu
- EMVCO_STATUS_FEATURE_NOT_SUPPORTED quandu a funzione di a carta di cuntattu ùn hè micca supportata.
- Ritorni:
- Risposta APDU ricevuta da u cuntrollu. Risposta valida APDU ricevuta solu quandu u statutu hè EMVCO_STATUS_OK
Per EMVCo senza contactu, i seguenti API ponu esse chjamati:
registerEMVCoEventListener()
ndk::ScopedAStatus registerEMVCoEventListener (const std::shared_ptr< INxpEmvcoClientCallback > & in_clientCallback, bool * _aidl_return )
- Descrizzione: Registrate una funzione di callback EMVCo per riceve l'avvenimenti da un dispositivu di ascolta.
- Nota: Questa funzione deve esse chjamata prima di invucà qualsiasi altra API.
- Parametri:
- [in] * in_clientCallback: hà una callback HAL di u cliente EMVCo
- [in]*in_aidl_return: indica u statu di registru in ritornu à u chjamante
- Ritorni:
- boolean ritorna veru, se successu è torna falsu, s'ellu ùn hè micca successu à registrà
setEMVCoMode()
ndk::ScopedAStatus setEMVCoMode ( int8_t in_config, bool in_isStartEMVCo )
- Descrizzione: Cumincia u modu EMVCo cù u Device-Controller. Una volta chì u Canale di Dati di l'Applicazione hè stabilitu, l'Applicazione pò mandà à inizià u modu EMVCo cù u Dispositivu-Controller.
- Parametri:
- [in]in_config: E tecnulugie di polling EMVCo sò cunfigurate attraversu stu paràmetru
- [in]in_isStartEMVCo: specifica per inizià o piantà u modu EMVCo
- Ritorni:
- nuddu
StopRFDisovery ()
ndk::ScopedAStatus stopRFDisovery
( ::aidl::vendor::nxp::emvco::NxpDeactivationType in_deactivationType, ::aidl::vendor::nxp::emvco::NxpEmvcoStatus * emvco_status )
- Descrizzione: ferma u campu RF è si move in u statu di disattivazione specificatu.
- Parametri:
- [in]in_deactivationType: specifica u statu da esse dopu a disattivazione RF
- Ritorni:
- NxpEmvcoStatus torna EMVCO_STATUS_OK se u cumandamentu hè statu processatu bè è torna EMVCO_STATUS_FAILED, se u cumandamentu ùn hè micca processatu per via di un statu invalidu. U modu EMVCo deve esse ON per chjamà sta API
riceve ()
ndk::ScopedAStatus transceive (const std::vector< uint8_t > & in_data, int32_t * _aidl_return )
- Descrizzione: mandà dati dumanda cù u Device-Controller.
- Nota: In casu, se l'invio di dati hè fallutu, l'Applicazione invocà di novu open() prima di invucà sta API.
- Parametri:
- (in]in_data : Buffer di dati di l'applicazione
- Ritorni:
- NxpEmvcoStatus chì indica u statu di esecuzione
Cunfigurazione files PN7160
Per PN7160, ci sò dui cunfigurazioni diffirenti files.
- libnfc-nci.conf
- libnfc-nxp.conf
Nota: Cunfigurazione files furniti da NXP sò examples liati à a scheda demo di u controller NFC. Quessi files deve esse aduttatu secondu l'integrazione mirata.
Cunfigurazione files deve esse piazzatu in u locu di destinazione (vede Table 8).
Table 8. Locu di cunfigurazione files
Nome di cunfigurazione file | Locu in u dispusitivu |
libnfc-nci.conf | sistema / ecc |
libnfc-nxp.conf | venditore / ecc |
Per avè più infurmazione nantu à a cunfigurazione files, vede [9].
Cunfigurazione files PN7220
Per PN7220, ci sò cinque cunfigurazioni diffirenti files.
- libemvco-nxp.conf
- libnfc-nci.conf
- libnfc-nxp.conf
- libnfc-nxp-eeprom.conf
- libnfc-nxp-rfExt.conf
Nota: Cunfigurazione files furniti da NXP sò examples liati à a scheda demo di u controller NFC. Quessi files deve esse aduttatu secondu l'integrazione mirata
Cunfigurazione files deve esse piazzatu in u locu di destinazione (vede Table 9).
Table 9. Locu di cunfigurazione files
Nome di cunfigurazione file | Locu in u dispusitivu |
libemvco-nxp.conf | venditore / ecc |
libnfc-nci.conf | sistema / ecc |
libnfc-nxp.conf | venditore / ecc |
libnfc-nxp-eeprom.conf | venditore / ecc |
libnfc-nxprfExt.conf | venditore / ecc |
Per avè più infurmazione nantu à a cunfigurazione files, vede [9].
Applicazione DTA
Per permette a prova di certificazione di u Forum NFC, hè furnita una applicazione di prova di u dispositivu. Hè cumpostu di parechji cumpunenti in i diversi strati Android, chì deve esse custruitu è inclusi in l'imagine Android.
Per spinghje l'applicazione DTA, i seguenti passi devenu esse eseguiti:
- Copia tutti i DTA files à un locu
$cp -rf "out/target/product/hikey960/system/lib64/libosal.so" / DTA-PN7220
$cp -rf "out/target/product/hikey960/system/lib64/libmwif.so"/DTA-PN7220
$cp -rf "out/target/product/hikey960/system/lib64/libdta.so"/DTA-PN7220
$cp -rf "out/target/product/hikey960/system/lib64/libdta_jni.so" /DTA-PN7220
$cp -rf "out/target/product/hikey960/system/app/NxpDTA/NxpDTA.apk"/DTAPN7220 - Push the binari à u dispusitivu cum'è quì sottu
adb shell mkdir /system/app/NxpDTA/
adb push libosal.so /system/lib64/
adb push libdta.so /system/lib64/
adb push libdta_jni.so /system/lib64/
adb push libmwif.so /system/lib64/
adb push NxpDTA.apk /system/app/NxpDTA/
Dopu avè lampatu u mira, l'applicazione DTA deve esse presente in a lista di l'applicazioni installate. Vede [7] per una descrizzione dettagliata di cumu utilizà l'applicazione.
Abbreviazioni
Table 10. Abbreviations
Acronimu | Descrizzione |
APDU | unità di dati di u protocolu di l'applicazione |
AOSP | Prughjettu Android Open Source |
DH | host di u dispusitivu |
HAL | strata di astrazione hardware |
FW | firmware |
I2C | Circuitu Inter-Integratu |
LPCD | rilevazione di carte di bassa putenza |
NCI | Interfaccia di cuntrollu NFC |
NFC | cumunicazione vicinu à u campu |
MW | middleware |
PLL | loop in fase di blocco |
P2P | peer to peer |
RF | freccia radio |
SDA | dati seriali |
SMCU | microcontroller sicuru |
SW | software |
Referenze
- Repository GitHub - PN7160 è PN7220 Common MW: (ligame)
- Web pagina - PN7160 - Controller NFC Plug and Play cù Firmware Integratu è Interfaccia NCI (ligame)
- Web pagina - PN7220 - Controller NFC conforme à EMV L1 cù interfaccia NCI chì supporta l'applicazioni EMV è NFC Forum (ligame)
- Repository GitHub - Driver di kernel PN7160 è PN7220: (ligame)
- Risorse - AOSP r2 tag (ligame)
- Risorse - Strumenti di cuntrollu di fonte (ligame)
- Guida di l'usu - UG10068 - PN7220 - Guida di partenza rapida (ligame)
- Repositoriu GitHub - Locu FW PN7160 è PN7220: (ligame)
- Nota d'applicazione - AN14431 - cunfigurazione PN7160 / PN7220 files (ligame)
Nota nantu à u codice fonte in u documentu
Exampu codice mostratu in stu documentu hà i seguenti copyright è licenza BSD-3-Clause:
Copyright 2024 NXP A ridistribuzione è l'usu in forme binari è fonti, cù o senza mudificazione, sò permessi, basta chì e seguenti cundizioni sò soddisfatte
- I redistribuzioni di u codice fonte devenu mantene l'avvisu di copyright sopra, sta lista di cundizioni è a seguente disclaimer.
- Redistribuzioni in forma binaria deve ripruduce l'avvisu di copyright sopra, sta lista di e cundizioni è a seguente disclaimer in a documentazione è / o altri materiali deve esse furnitu cù a distribuzione.
- Nè u nome di u detentore di i diritti d'autore nè i nomi di i so cuntributori ponu esse aduprati per appruvà o prumove i prudutti derivati da stu software senza un permessu scrittu specificu.
QUESTU SOFTWARE hè furnitu da i detentori di diritti d'autore è i cuntributori "cum'è" è ogni garanzia espressa o IMPLICITA, INCLUSI, MA NON LIMITATA, E GARANTIE IMPLICITE DI COMMERCIABILITÀ E IDONEITA' PER UN PUBLIC PARTICULARI SONT DISCLAIMED. IN NESSUN CASU U COPYRIGHT O CONTRIBUTORS SERÀ RESPONSABILI PER QUALSIASI DANNI DIRETTI, INDIRETTI, INCIDENTALI, SPECIALI, ESEMPLARI O CONSEGUENTI (INCLUSU, MA NON LIMITATI À, L'ACQUISSIONE DI BEN SOSTITUTI O SERVIZI, PERDITA DI PROFITTI, SERVIZI; O INTERRUPZIONE D'AFFARI) QUANTÀ CAUSATA E IN QUALSIASI TEORIA DI RESPONSABILITÀ, SIA IN CONTRATTU, STRICT RESPONSABILITÀ, O TORT (INCLUSU NELLIGENZA O ALTRE) SURGIENDU IN QUALSUNA MANIERA DA L'USU DI STESS SOFTWARE, ANCHE SE AVVISU DI A POSSIBILITÀ DI SSE.
Storia di rivisione
Table 11. Storia di rivisione
Document ID | Data di liberazione | Descrizzione |
AN14430 v.1.0 | 03 settembre 2024 | • Versione iniziale |
L'infurmazione legale
Definizioni
Draft - Un statutu di draft nantu à un documentu indica chì u cuntenutu hè sempre sottu re internuview è sottumessu à appruvazioni formale, chì pò esse risultatu in mudificazioni o aghjunte. NXP Semiconductors ùn dà alcuna rapprisintazioni o garanzie in quantu à l'accuratezza o a completezza di l'infurmazioni incluse in una versione bozza di un documentu è ùn hà micca responsabilità per e cunsequenze di l'usu di tali informazioni.
Disclaimers
Garanzia limitata è responsabilità - L'infurmazione in stu documentu hè ritenuta precisa è affidabile. Tuttavia, NXP Semiconductors ùn dà alcuna rapprisintazioni o garanzie, espresse o implicite, in quantu à l'accuratezza o a completezza di tali informazioni è ùn anu micca responsabilità per e cunsequenze di l'usu di tali informazioni. NXP Semiconductors ùn assume micca rispunsabilità per u cuntenutu di stu documentu se furnitu da una fonte d'infurmazioni fora di NXP Semiconductors.
In nessun casu, NXP Semiconductors serà rispunsevule per danni indiretti, incidentali, punitivi, speciali o cunsequenziali (inclusi - senza limitazione - prufitti persi, risparmii persi, interruzioni di l'affari, costi ligati à a rimozione o a sostituzione di qualsiasi prudutti o carichi di rilavorazione) sia. o micca tali danni sò basati in tort (cumpresa negligenza), garanzia, violazione di cuntrattu o qualsiasi altra teoria legale.
Malgradu qualsiasi dannu chì u cliente puderia incorre per qualsiasi ragione, a responsabilità cumulativa è cumulativa di NXP Semiconductors versu u cliente per i prudutti descritti quì serà limitata in cunfurmità cù i Termini è e cundizioni di vendita cummerciale di NXP Semiconductors.
U dirittu di fà cambiamenti - NXP Semiconductors si riserva u dirittu di fà cambiamenti à l'infurmazioni publicate in stu documentu, cumprese senza limitazione specificazioni è descrizzioni di i prudutti, in ogni mumentu è senza avvisu. Stu documentu rimpiazza è rimpiazza tutte l'infurmazioni furnite prima di a publicazione di questu.
Idoneità à l'usu - I prudutti NXP Semiconductors ùn sò micca cuncepiti, autorizati o garantiti per esse adattati per l'usu in supportu di vita, sistemi o equipaggiamenti critichi per a vita o per a sicurezza, nè in applicazioni induve fallimentu o malfunzionamentu di un pruduttu NXP Semiconductors pò esse ragionevolmente aspettatu. per risultatu in ferite persunale, morte o danni severi à a pruprietà o à l'ambiente. NXP Semiconductors è i so fornitori ùn accettanu alcuna responsabilità per l'inclusione è / o l'usu di i prudutti NXP Semiconductors in tali equipaghji o applicazioni è per quessa, tali inclusioni è / o usu sò à u risicu di u cliente.
Applicazioni - L'applicazioni chì sò descritte quì per qualsiasi di sti prudutti sò solu per scopi illustrativi. NXP Semiconductors ùn face alcuna rappresentanza o garanzia chì tali applicazioni seranu adattate per l'usu specificatu senza più teste o mudificazione.
I clienti sò rispunsevuli di u disignu è u funziunamentu di e so applicazioni è prudutti chì utilizanu i prudutti NXP Semiconductors, è NXP Semiconductors ùn accetta micca responsabilità per qualsiasi assistenza cù applicazioni o cuncepimentu di i prudutti di i clienti. Hè a sola rispunsabilità di u cliente per determinà se u pruduttu NXP Semiconductors hè adattatu è adattatu per l'applicazioni di u cliente è i prudutti pianificati, è ancu per l'applicazione pianificata è l'usu di i clienti di terze parti di u cliente. I Clienti duveranu furnisce un disignu adattatu è salvaguardi operativi per minimizzà i risichi assuciati cù e so applicazioni è prudutti.
NXP Semiconductors ùn accetta alcuna responsabilità in relazione à qualsiasi difettu, dannu, costi o prublema chì hè basatu annantu à qualsiasi debule o predefinitu in l'applicazioni o i prudutti di u cliente, o l'applicazione o l'usu da u cliente (s) terzu di u cliente. U Cliente hè rispunsevuli di fà tutte e teste necessarie per l'applicazioni è i prudutti di u cliente chì utilizanu i prudutti NXP Semiconductors per evità un difettu di l'applicazioni è i prudutti o di l'applicazione o l'usu da i clienti di terzu di u cliente. NXP ùn accetta alcuna responsabilità in questu rispettu.
Termini è cundizioni di vendita cummerciale - I prudutti di NXP Semiconductors sò venduti sottumessi à i termini è e cundizioni generali di vendita cummerciale, cum'è publicatu in https://www.nxp.com/profile/terms, salvo accordu altrimenti in un accordu individuale scrittu validu. In casu chì un accordu individuale hè cunclusu solu i termini è e cundizioni di l'accordu rispettivu sò applicati. NXP Semiconductors si oppone espressamente à applicà i termini è e cundizioni generali di u cliente in quantu à l'acquistu di i prudutti NXP Semiconductors da u cliente.
U cuntrollu di l'esportazione - Stu ducumentu è ancu l'articulu (s) descritti quì ponu esse sottumessi à e regule di cuntrollu di l'esportazione. L'esportazione pò esse bisognu di una autorizazione previa da l'autorità competenti.
Idoneità per l'usu in i prudutti chì ùn sò micca qualificati per l'automobile - A menu chì stu documentu dichjara espressamente chì stu pruduttu specificu NXP Semiconductors hè qualificatu per l'automobile, u pruduttu ùn hè micca adattatu per l'usu di l'automobile. Ùn hè nè qualificatu nè testatu in cunfurmità cù e teste di l'automobile o i requisiti di l'applicazione. NXP Semiconductors ùn accetta alcuna responsabilità per l'inclusione è / o l'usu di prudutti qualificati micca di l'automobile in l'equipaggiu o l'applicazioni di l'automobile.
In l'eventu chì u cliente usa u pruduttu per u disignu è l'usu in l'applicazioni automobilistiche à e specificazioni è i standard di l'automobile, u cliente (a) utilizerà u pruduttu senza a garanzia di u pruduttu di NXP Semiconductors per tali applicazioni, usu è specificazioni automobilistiche, è ( b) ogni volta chì u cliente usa u pruduttu per l'applicazioni automobilistiche al di là di e specificazioni di NXP Semiconductors, tale usu serà solu à u risicu di u cliente, è (c) u cliente indennizza cumplettamente NXP Semiconductors per qualsiasi responsabilità, danni o rivendicazioni di produttu falluti risultanti da u disignu di u cliente è l'usu di u pruduttu per l'applicazioni automobilistiche oltre a garanzia standard di NXP Semiconductors è e specificazioni di produttu di NXP Semiconductors
Publicazioni HTML - Una versione HTML, se dispunibule, di stu documentu hè furnita cum'è cortesia. L'infurmazione definitiva hè contenuta in u documentu applicabile in formatu PDF. Se ci hè una discrepanza trà u documentu HTML è u documentu PDF, u documentu PDF hà priorità.
Traduzioni - Una versione non-inglese (traduttu) di un documentu, cumprese l'infurmazioni legali in quellu documentu, hè solu per riferimentu. A versione inglese prevalerà in casu di qualsiasi discrepanza trà e versioni tradutte è inglesi.
Sicurezza - U Cliente capisce chì tutti i prudutti NXP ponu esse sughjetti à vulnerabilità micca identificate o ponu sustene standard di sicurezza stabiliti o specificazioni cù limitazioni cunnisciute. U Cliente hè rispunsevule per u disignu è u funziunamentu di e so applicazioni è prudutti in tuttu u so ciclu di vita per riduce l'effettu di queste vulnerabilità nantu à l'applicazioni è i prudutti di u cliente. A rispunsabilità di u Cliente si estende ancu à altre tecnulugia aperte è / o proprietarie supportate da i prudutti NXP per l'usu in l'applicazioni di u cliente. NXP ùn accetta alcuna responsabilità per alcuna vulnerabilità. U Cliente deve cuntrollà regularmente l'aghjurnamenti di sicurezza da NXP è seguite in modu adattatu. U Cliente deve selezziunà i prudutti cù caratteristiche di sicurezza chì risponde megliu à e regule, i regulamenti è i normi di l'applicazione prevista è pigliate e decisioni finali di cuncepimentu riguardanti i so prudutti è hè solu rispunsevule per u rispettu di tutti i requisiti legali, regulatori è di sicurezza in quantu à i so prudutti, indipendentamente. di qualsiasi informazione o supportu chì pò esse furnitu da NXP.
NXP hà una Squadra di Risposta à Incidenti di Sicurezza di u Produttu (PSIRT) (accessibile à PSIRT@nxp.com) chì gestisce l'investigazione, i rapporti è a liberazione di soluzioni per e vulnerabilità di sicurezza di i prudutti NXP.
NXP BV - NXP BV ùn hè micca una sucietà operativa è ùn distribuisce o vende prudutti.
Licenze
Acquistu di IC NXP cù tecnulugia NFC - L'acquistu di un IC NXP Semiconductors chì hè in cunfurmità cù unu di i standard di Near Field Communication (NFC) ISO/IEC 18092 è ISO/IEC 21481 ùn trasmette micca una licenza implicita sottu à qualsiasi drittu di brevettu violatu da l'implementazione di qualsiasi di questi standard. L'acquistu di NXP Semiconductors IC ùn include micca una licenza per alcuna patente NXP (o altru dirittu IP) chì copre cumminazioni di quelli prudutti cù altri prudutti, sia hardware o software.
Marchi
Avvisu: Tutte e marche riferite, i nomi di i prudutti, i nomi di serviziu, è i marchi sò a pruprietà di i so rispettivi pruprietarii. NXP - a parola è u logo sò marchi di NXP BV I2C-bus - u logo hè una marca di NXP BV
Per piacè esse cuscenti chì avvisi impurtanti riguardanti stu documentu è u pruduttu (s) descritti quì, sò stati inclusi in a sezione "Informazioni legali".
© 2024 NXP BV Tutti i diritti riservati.
Per più infurmazione, visitate: https://www.nxp.com
Documenti / Risorse
![]() |
NXP PN7160 Controller NFC Basati NCI [pdf] Istruzzioni PN7160, PN7220, PN7160 Controller NFC Basati NCI, PN7160, Controller NFC Basati NCI, Controller NFC Basati, Controller NFC, Controllers |