NXP PN7160 NCI ki baze sou NFC enstriksyon kontwolè

Dokiman enfòmasyon 

Enfòmasyon Kontni
Mo kle PN7160, PN7220, NCI, EMVCo, NFC Forum, Android, NFC
Résumé Dokiman sa a dekri kijan pou pò lage PN7160/PN7220 komen middleware sou Android 14.

Gid sa a bay enstriksyon detaye sou fason pou entegre NXP NCI ki baze sou NFC contrôleur, PN7160 ak PN7220, nan yon anviwònman Android. Pwosesis la enplike enstale chofè nwayo ki nesesè yo ak konfigirasyon MW (gade [1]). Pou plis enfòmasyon, al gade nan paj pwodwi pou PN7160 [2] ak PN7220 [3]. Android Open Source Project (AOSP) te mete ajou pou enkòpore sipò pou tou de PN7160 ak PN7220 NFC contrôleur.

PN7220 a vini nan de konfigirasyon: sèl-lame ak doub-lame. Pile a jeneralman menm pou tou de. Nan mòd doub lame, SMCU ajoute sa vle di ke tout travay ki gen rapò ak EMVCo yo egzekite sou SMCU. Nan singlehost EMVCo egzekite nan yon pil EMVCo MW devwe

Android mw pile

Figi 1 montre achitekti PN7220 Android NFC pile a.

  • Chofè NXP I2C a se yon modil nwayo ki pèmèt aksè nan resous pyès ki nan konpitè PN7220.
  • Modil HAL la se yon aplikasyon kouch abstrè pyès ki nan konpitè espesifik NXP NFC kontwolè.
  • LibNfc-Nci se yon bibliyotèk natif natal ki bay fonksyon NFC.
  • NFC JNI aji kòm yon pon ant Java ak klas natif natal.
  • NFC ak EMVCo Framework se yon modil nan kad aplikasyon an ki pèmèt aksè nan fonksyonalite NFC ak EMVCo.

Figi 2 montre achitekti PN7160 Android NFC pile a. 


Figi 2. PN7160 Android MW pile 

  • Chofè NXP I2C a se yon modil nwayo ki pèmèt aksè nan resous pyès ki nan konpitè PN7160.
  • Modil HAL la se yon aplikasyon kouch abstrè pyès ki nan konpitè espesifik NXP NFC kontwolè.
  • LibNfc-nci se yon bibliyotèk natif natal ki bay fonksyon NFC.
  • NFC JNI aji kòm yon pon ant Java ak klas natif natal.
  • NFC a se yon modil nan kad aplikasyon an ki pèmèt aksè nan fonksyonalite NFC.
  • Kòd sous MW la se menm bagay la pou PN7160 ak PN7220, men gen kèk limit.

Tablo 1 montre karakteristik ki pa sipòte chak kontwolè NFC. 

Tablo 1. Karakteristik ki pa sipòte 

NFC kontwolè Karakteristik ki pa sipòte
PN7160
  • EMVCo mw pile
  • SMCU
  • Karakteristik CT
PN7220
  • NFCEE_NDEF

Nòt: Soti nan Android 14 ivè, P2P pa sipòte tou sou PN7160.

Chofè Kernel

Pou etabli koneksyon ak PN7220 oswa PN7160, pile android a sèvi ak chofè a nwayo nxpnfc. Li ka jwenn nan [4].

Detay chofè yo

PN7220 sipòte koòdone fizik I2C, pandan y ap PN7160 sipòte koòdone fizik I2C oswa SPI. Lè enstale nan nwayo a, chofè a ekspoze atravè ne aparèy la nan /dev/nxpnfc.

Nòt: PN7160 ak PN7220 itilize de chofè diferan, seleksyon chofè ki kòrèk la obligatwa ki baze sou kalite chip la.

Jwenn kòd sous chofè PN7160 la

Kopi depo chofè nfcandroid_platform_drivers/drivers/pn7160/nfc nan anyè nwayo a, pou ranplase aplikasyon ki deja egziste a. Gade [4] pou nwayo a files.

$rm -rf chofè/nfc
$git klonaj "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -b
br_ar_14_comm_infra_dev

Sa a fini ak katab chofè/nfc ki gen sa ki annapre yo files:

  • README.md: enfòmasyon depo
  • Fèfile: chofè tit fèfile
  • Kconfig: konfigirasyon chofè file
  • Lisans: tèm lisans chofè
  • nfc sousdosye ki genyen:
    • commoc.c: aplikasyon chofè jenerik
    • common.h: definisyon jenerik koòdone chofè
    • i2c_drv.c: aplikasyon chofè espesifik i2c
    • – i2c_drv.h: i2c espesifik koòdone chofè definisyon
    • spi_drv.c: aplikasyon espesifik chofè spi
    • spi_drv.h: Spi espesifik koòdone chofè definisyon
    • Fèfile: fèfile ki enkli nan make lafile nan chofè a
    • Kbuild => konstwi file
    • Kconfig => konfigirasyon chofè file
Jwenn kòd sous chofè PN7220 la

Kopi nfcandroid_platform_drivers/drivers/pn7220cs/nfc (single-host usecase) oswa nfcandroid_platform_ drivers/drivers/pn7220cms/nfc (doub-host usecase) nan anyè nwayo drivers/nfc, ranplase chofè ki egziste deja. Gade [4] pou nwayo a files.

$rm -rf drivers/nfc$git script "https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git" -bbr_ar_14_comm_infra_dev

Apre kòmandman sa a, katab drivers/nfc gen sa ki annapre yo files:

  • README.md: enfòmasyon depo
  • Fèfile: chofè tit fèfile
  • Kconfig: konfigirasyon chofè file
  • Lisans: tèm lisans chofè
  • nfc sousdosye ki genyen:
    • commoc.c: aplikasyon chofè jenerik
    • common.h: definisyon jenerik koòdone chofè
    • i2c_drv.c: i2c aplikasyon espesifik chofè
    • i2c_drv.h: i2c espesifik koòdone chofè definisyon
    • Fèfile: fèfile ki enkli nan make lafile nan chofè a
    • Kbuild => konstwi file
    • Kconfig => konfigirasyon chofè file
Bati chofè a

Tree aparèy la responsab pou ajoute chofè a nan nwayo a epi chaje li sou bòt aparèy la.

Apre amelyore spesifikasyon devicetree, devicetree ki gen rapò ak platfòm la dwe rebati. NXP rekòmande pou itilize vèsyon kernel 5.10 paske li bay validasyon konplè.

Pou konstwi chofè a, etap sa yo dwe fèt:

  1. Jwenn chofè nwayo a
  2. Jwenn kòd sous chofè a
  3. Modifye definisyon devicetree, ki inik pou aparèy yo itilize a.
  4. Bati chofè a:

a. Atravè pwosedi menuconfig, ajoute chofè sib la nan bati a.

Apre yo fin rebati nwayo a fini, chofè a pral enkli nan imaj nwayo a. Tout nouvo imaj nwayo dwe kopye nan konstriksyon AOSP la.

Adaptasyon AOSP

NXP ajoute modifikasyon nan kòd AOSP la. Sa vle di ke yo itilize kòd AOSP kòm yon fondasyon, men pwolonje pou karakteristik espesifik NXP. [5] se AOSP aktyèl la tag itilize pa NXP. Apre ou fin jwenn konstriksyon AOSP a, yo dwe ranplase kòd AOSP ki deja egziste a, epi yo dwe aplike yon kantite plak.

Nòt: Yon vèsyon diferan nan kòd AOSP a ka itilize, men modifikasyon adisyonèl dwe fèt.

AOSP bati

Jwenn kòd sous AOSP.

$ repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r2 $ repo sync

Nòt: Zouti repo a dwe enstale sou sistèm lan. Gade [6] pou enstriksyon yo.

Bati kòd sous.

$cd Android_AROOT
$source build/envsetup.sh
$lunch select_target #target se DH nou vle itilize pou egzanpample: evk_8mn-userdebug
$fè -j

Kopi tout depo NXP nan kote sib la.

Tablo 2. Branche pou vèsyon espesifik android

Android vèsyon an Branch
Android 14 br_ar_14_comm_infra_dev

Nòt: Pandan klonaj, li enpòtan pou chwazi branch ki kòrèk la.

Tablo 3. Repozitwa klonaj

AOSP Repos NXP GitHub Repos
“$ANDROID_ROOT”/pake/ 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"/machann/nxp/ kad 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

Tablo 4. Repozitwa klonaj pou aplikasyon tès ak sipò TDA 

Dosye nan GitHub AOSP Repos NXP GitHub IC sipòte
test_apps/SMCU_Switch "$ANDROID_ROOT"/

pakè/aplikasyon/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
test_apps/EMVCoMode SwitchApp "$ANDROID_ROOT"/

pakè/aplikasyon/Nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
tès_apps/Cockpit "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTest "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTest_pn7160 "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7160
tès_apps/load_unload "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTestAidl "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/nfc/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_test_apps

PN7220
nfc_tda "$ANDROID_ROOT"/sistèm/ https://github.com/ nxp-nfc-infra/

nfcandroid_infra_comm_libs

PN7220
emvco_tda "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/emvco/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_comm_libs

PN7220
emvco_tda_test "$ANDROID_ROOT"/

pyès ki nan konpitè/nxp/emvco/

https://github.com/ nxp-nfc-infra/

nfcandroid_infra_comm_libs

PN7220
NfcTdaTestApp "$ANDROID_ROOT"/

pakè/aplikasyon/Nfc/

https://github.com/ nxp-nfc-infra/nfcandroid_infra_comm_libs PN7220

Aplike plak

Tablo 5. Aplike plak yo

Kote pou aplike Patch pou aplike Kote plak la
"$ANDROID_ROOT"/build/ bazel/ AROOT_build_bazel. plak https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/build/ fè/ AROOT_build_make. plak https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/build/ byento/ AROOT_build_soong. plak https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

kad/baz/

AROOT_frameworks_ baz.patch https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

kad/natifnatal/

AROOT_frameworks_ natif natal.patch https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

sistèm/logging/

AROOT_system_logging. plak https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

pakè/modil/ bluetooth/

AROOT_packages_modil_Bluethooth. plak https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

kad/pwoto_logging/

AROOT_framework_ proto_logging.patch https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/

Nòt: Tcheke pwodiksyon an apre w fin aplike plak la, si yo te obsève nenpòt pwoblèm pandan patch la.

Ajoute bibliyotèk FW. Gade [8] pou FW.

Nòt: Pa obligatwa. FW ka toujou mete ajou.

Pou PN7160: 

$git klon https://github.com/NXP/nfc-NXPNFCC_FW.git
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit/libpn7160_fw.so AROOT/machann/
nxp/7160/firmware/lib64/libpn7160_fw.so
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/32-bit/libpn7160_fw.so AROOT/machann/
nxp/7160/firmware/lib/libpn7160_fw.so

Pou PN7220: 

$git klon https://github.com/NXP/nfc-NXPNFCC_FW.git
$cp -r nfc-NXPNFCC_FW/InfraFW/pn7220/64-bit/libpn7220_64bit.so AROOT/machann/nxp/
pn7220/firmware/lib64/libpn72xx_fw.so

Ajoute NFC nan bati a

Nan aparèy la.mk fèfile (pou egzanpample, aparèy/mak/platfòm/device.mk), genyen ladan yo fè espesifikfiles:

$(rele inherit-product, vandè/nxp/nfc/device-nfc.mk) 

Nan BoardConfig.mk fè afile (pou egzanpample, aparèy/mak/platfòm/BoardConfig.mk), genyen ladan yo yon make espesifikfile:

-gen ladann vandè/nxp/nfc/BoardConfigNfc.mk 

Ajoute aplikasyon DTA a

$git klon https://github.com/NXPNFCProject/NXPAndroidDTA.git $patch -p1 nfc-dta.patch #situed nan 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

Bati AOSP ak chanjman:

$cd fondasyon/baz
$mm
$cd ../..
$cd vandè/nxp/frameworks
$mm #apre sa a, com.nxp.emvco.jar ak com.nxp.nfc.jar ta dwe anndan deyò/
sib/pwodwi/xxxx/sistèm/framwework/
$cd ../../..
$cd pyès ki nan konpitè/nxp/nfc
$mm
$cd ../../..
$fè -j

Koulye a, flash aparèy la ak nouvo imaj android.

Android NFC Apps ak Lib sou objektif

Apre bati a, bibliyotèk yo kreye yo dwe enstale sou aparèy la sib. Seksyon 4.2 presize kote pwojè a, bibliyotèk ki koresponn lan, ak kote aparèy sib la kote yo dwe enstale.

Nòt: Binè EMVCo yo aplikab sèlman ak PN7220.

Tablo 6. Konpile files ak sib aparèy 

Kote pwojè a Konpile Files Kòmantè Kote nan aparèy sib
"$ANDROID_ROOT"/

pakè/aplikasyon/Nfc

NfcNci.odex NfcNci.vdex lib/NfcNci.apk oat/libnfc_nci_jni.so   /system/app/NfcNci/ avwàn/bra64/

/system/app/NfcNci/ avwàn/bra64/

/system/app/NfcNci/

/system/lib64/

"$ANDROID_ROOT"/

sistèm/nfc

libnfc_nci.so   /system/lib64/
"$ANDROID_ROOT"/

sistèm/nfc_tda”

nfc_tda.so Aplikab sèlman pou karakteristik CT. /system/lib64/
"$ANDROID_ROOT"/

pyès ki nan konpitè/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 machann.nxp.nxpnfc@2.0.so machann.nxp.nxpnfc@1.0.so   /machann/lib64

/machann/bin/hw/

/vendor/etc/init

/system/lib64/

/system/lib64/

/system/lib64/

/machann/lib64/

/machann/lib64/

“$ANDROID_ROOT/

pyès ki nan konpitè/koòdone/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   /sistèm\/ib64/

/system/lib64/

/system/lib64/

/system/lib64/

/machann/lib64/

/machann/lib64/

/machann/lib64/

"$ANDROID_ROOT"/

vandè / nxp / kad

com.nxp.emvco.jar (PN7220) com.nxp.nfc.jar   /system/framework

/system/framework

"$ANDROID_ROOT"/

pyès ki nan konpitè/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   /machann/lib64/

/system/lib64/

/system/lib64/

/machann/lib64/

/machann/bin/hw/

/machann/etc/init/

“$ANDROID_ROOT/

pyès ki nan konpitè/nxp/emvco_tda”

emvco_tda.so Aplikab sèlman pou karakteristik CT. /machann/lib64/
Blòk kat

Kat non blòk soti nan Seksyon 1 pou sib kote nan kòd AOSP.

Tablo 7. Kote plak nan NFC Stack 

non blòk Kote nan kòd AOSP
NFC HAL ak EMVCo HAL pyès ki nan konpitè/koòdone/
Pile NFC pyès ki nan konpitè/nxp/nfc/
EMVCo L1 Done Echanj Kouch = EMVCo Stack pyès ki nan konpitè/nxp/emvco/
LibNfc-Nci sistèm/nfc/
NFC JNI pakè/aplikasyon/nfc/
Sèvis NFC pakè/aplikasyon/nfc/
NFC chapant kad/baz/
EMVCo chapant vandè / nxp / kad /
EMVCo AP

PN7220 MW pile pwolonje kòd AOSP ak EMVCo MW pile. Seksyon sa a dekri API EMVCo yo.

Nòt: Yo ka rele API sèlman lè w ap itilize PN7220 IC. Si w ap rele li ak PN7160 IC, API a pa travay. EMVCo Profile Dekouvèt. API sa yo ka itilize ak kontak ak san kontak profiles.

registerEMVCoEventListener()

  • ndk::ScopedAStatus registerEMVCoEventListener (const std::shared_ptr< INxpEmvcoClientCallback > & in_clientCallback, bool * in_aidl_return)
  • Deskripsyon: Anrejistre fonksyon callback EMVCo pou resevwa evènman yo nan yon aparèy ki koute
  • Nòt: Fonksyon sa a se dwe boul anvan envoke nenpòt lòt api.
  • Paramèt:
    • [nan] *in_clientCallback: gen yon apèl HAL kliyan EMVCo
    • [nan] *in_aidl_return: endike estati anrejistreman an retou moun k ap rele a
  • Retounen
    • boolean retounen vre, si siksè ak retounen fo, si echwe pou enskri

jwenn mòd dekouvèt aktyèl () 

  • ndk::ScopedAStatus getCurrentDiscoveryMode(::aidl::vendor::nxp::emvco::NxpDiscoveryMode * _aidl_return)
  • Deskripsyon: retounen aktyèl pro aktif lafile kalite.
  • Retounen
    • NxpDiscoveryMode - NFC/EMVCo/Unknown

onNfcStateChange() 

  • ndk::ScopedAStatus onNfcStateChange(NxpNfcState nan_nfcState)
  • Deskripsyon: mete ajou eta NFC nan EMVCo HAL.
  • Paramèt:
    • [nan] in_nfcState: espesifye eta NFC la
  • Retounen:
    • anile

registerNFCStateChangeCallback()

  • ndk::ScopedAStatus registerNFCStateChangeCallback ( const std::shared_ptr< ::aidl::vendor::nxp::emvco::INxpNfcStateChangeRequestCallback > & in_nfcStateChangeRequestCallback, bool * _aidl_re
  • Deskripsyon: Anrejistre yon fonksyon apèl NFC pou resevwa evènman yo nan yon aparèy ki koute.
  • Nòt: Fonksyon sa a dwe rele anvan ou envoke nenpòt lòt api.
  • Paramèt:
    • [nan] in_nfcStateChangeCallback: INxpNfcStateChangeRequestCallback fonksyon callback evènman an dwe pase pa moun kap rele a. Li ta dwe aplike pou vire ON/OFF NFC baze sou demann lan resevwa.
  • Retounen: boolean retounen vre, si siksè ak retounen fo, si echwe pou enskri.

setByteConfig ()

ndk::ScopedAStatus setByteConfig ( ::aidl::vendor::nxp::emvco::NxpConfigType
in_type,
int32_t nan_length,
int8_t nan_valè,
::aidl::vendor::nxp::emvco::NxpEmvcoStatus * _aidl_return

setEMVCoMode()

ndk::ScopedAStatus setEMVCoMode ( int8_t in_disc_mask,
bool in_isStartEMVCo )

  • Deskripsyon: Kòmanse mòd EMVCo a ak aparèy-kontwolè a. Yon fwa ke Chanèl Done Aplikasyon an etabli, Aplikasyon an ka voye kòmanse mòd EMVCo a ak Aparèy-Kontwòl la.
  • Paramèt:
    • [nan] in_disc_mask EMVCo: teknoloji biwo vòt yo konfigirasyon atravè paramèt sa a
    • [nan]in_isStartEMVCo: presize pou kòmanse oswa sispann mòd EMVCo a
  • Retounen:
    • anile

setLed()

ndk::ScopedAStatus setLed ( ::aidl::vendor::nxp::emvco::NxpLedControl
in_ledControl,
::aidl::vendor::nxp::emvco::NxpEmvcoStatus * emvco_status)

Pou Kontakte EMVCo, yo ka itilize API sa yo anplis sa yo anvan yo.

fèmenTDA()

ndk::ScopedAStatus closeTDA ( int8_t in_tdaID, bool in_standBy )

  • Deskripsyon: Fèmen kat entelijan ki konekte sou TDA
  • Paramèt:
    • [nan] tdaID: id nan plas tda yo dwe fèmen
  • Eksepsyon:
    • EMVCO_STATUS_INVALID_PARAMETER, si yo bay tdaID pa valab
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED lè karakteristik kat kontak la pa sipòte.
  • Retounen:
    • anile

dekouvriTDA()

ndk::ScopedAStatus discoverTDA
( std::vector<::aidl::vendor::nxp::emvco::NxpEmvcoTDAInfo > * emvcoTDAInfo )

Deskripsyon: discoverTDA bay tout detay sou kat entelijan ki konekte sou TDA

  • Paramèt:
    • [nan]*in_clientCallback: bay eta EMVCo ak eta TDA kòm rapèl
  • Eksepsyon:
    •  EMVCO_STATUS_FEATURE_NOT_SUPPORTED lè karakteristik kat kontak la pa sipòte.
  • Retounen:
    • NxpEmvcoTDAInfo[] retounen tout kat entelijan ki konekte sou TDA. yo resevwa emvcoTDAInfo valab sèlman lè estati a se EMVCO_STATUS_OK

openTDA()

ndk::ScopedAStatus openTDA ( int8_t in_tdaID, bool in_standBy, int8_t * out_connID )

Deskripsyon: ouvri kat entelijan ki konekte sou TDA

  • Paramèt:
    • [in]tdaID: id tda kat entelijan resevwa atravè discoverTDA
  • Eksepsyon:
    • EMVCO_STATUS_INVALID_PARAMETER, si yo bay tdaID pa valab
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED lè karakteristik kat kontak la pa sipòte.
  • Retounen:
    • byte retounen id koneksyon kat entelijan an. idantifikasyon koneksyon valab resevwa sèlman lè estati a se EMVCO_STATUS_OK

registerEMVCoCTListener() 

ndk::ScopedAStatus registerEMVCoCTListener (const std::shared_ptr<::aidl::vendor::nxp::emvco::INxpEmvcoTDACallback > & in_in_clientCallback, bool * _aidl_return)

  • Deskripsyon: anrejistre rappel EMVCoCT nan pil EMVCo a
  • Paramèt:
    • [nan]*in_in_clientCallback: bay eta EMVCo ak eta TDA kòm rapèl
  • Retounen:
    • anile 

transcevoir() 

ndk::ScopedAStatus transceive (const std::vector< uint8_t > & in_cmd_data, std::vector< uint8_t > * out_rsp_data )

  • Deskripsyon: voye done aplikasyon ak aparèy-kontwolè a epi li resevwa done repons nan men kontwolè a
  • Nòt: Yo ta dwe ajoute id koneksyon TDA a kòm yon pati nan header NCI la.
  • Paramèt:
    • [in]in_cmd_data: Tanpon done lòd aplikasyon an
  • Eksepsyon:
    • EMVCO_STATUS_INVALID_PARAMETER, si yo bay id koneksyon an pa valab
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED lè karakteristik kat kontak la pa sipòte.
  • Retounen:
    • Repons APDU te resevwa nan men kontwolè. Repons ki valab APDU te resevwa sèlman lè estati a se EMVCO_STATUS_OK

Pou EMVCo san kontak, yo ka rele API sa yo:

registerEMVCoEventListener()

ndk::ScopedAStatus registerEMVCoEventListener (const std::shared_ptr< INxpEmvcoClientCallback > & in_clientCallback, bool * _aidl_return )

  • Deskripsyon: Anrejistre yon fonksyon callback EMVCo pou resevwa evènman yo nan yon aparèy ki koute.
  • Nòt: Fonksyon sa a dwe rele anvan ou envoke nenpòt lòt api.
  • Paramèt:
    • [nan]*in_clientCallback: gen yon apèl HAL kliyan EMVCo
    • [in]*in_aidl_return: endike estati enskri an retou bay moun ki rele
  • Retounen:
    • boolean retounen vre, si siksè ak retounen fo, si echwe pou enskri

setEMVCoMode()

ndk::ScopedAStatus setEMVCoMode ( int8_t in_config, bool in_isStartEMVCo )

  • Deskripsyon: Kòmanse mòd EMVCo a ak aparèy-kontwolè a. Yon fwa ke Chanèl Done Aplikasyon an etabli, Aplikasyon an ka voye kòmanse mòd EMVCo a ak Aparèy-Kontwòl la.
  • Paramèt:
    • [in]in_config: Teknoloji biwo vòt EMVCo yo konfigirasyon atravè paramèt sa a
    • [nan]in_isStartEMVCo: presize pou kòmanse oswa sispann mòd EMVCo a
  • Retounen:
    • anile

StopRFDiscovery()

ndk::ScopedAStatus stopRFDisovery
( ::aidl::vendor::nxp::emvco::NxpDeactivationType in_deactivationType, ::aidl::vendor::nxp::emvco::NxpEmvcoStatus * emvco_status )

  • Deskripsyon: sispann jaden an RF epi li deplase nan eta a dezaktivasyon espesifye.
  • Paramèt:
    • [in]in_deactivationType: espesifye eta a nan apre dezaktivasyon RF
  • Retounen:
    • NxpEmvcoStatus retounen EMVCO_STATUS_OK si kòmandman trete avèk siksè epi li retounen EMVCO_STATUS_FAILED, si yo pa trete kòmandman akòz eta an valab. Mòd EMVCo ta dwe ON pou rele API sa a

transcevoir()

ndk::ScopedAStatus transceive (const std::vector< uint8_t > & in_data, int32_t * _aidl_return )

  • Deskripsyon: voye done aplikasyon ak aparèy-kontwolè a.
  • Nòt: Nan ka si voye done yo echwe, aplikasyon an dwe ankò envoke open() anvan yo envoke API sa a.
  • Paramèt:
    • (in]in_data: tanpon done aplikasyon an
  • Retounen:
    • NxpEmvcoStatus ki endike estati ekzekisyon an
Konfigirasyon filePN7160

Pou PN7160, gen de konfigirasyon diferan files.

  1. libnfc-nci.conf
  2. libnfc-nxp.conf

Nòt: Konfigirasyon fileNXP bay yo se ansyenamples ki gen rapò ak NFC kontwolè Demo tablo a. Sa yo files dwe adopte selon entegrasyon vize a.

Konfigirasyon fileYo dwe mete yo nan kote sib la (gade Tablo 8).

Tablo 8. Kote konfigirasyon files 

Non konfigirasyon file Kote nan aparèy la
libnfc-nci.conf sistèm / elatriye
libnfc-nxp.conf machann / elatriye

Pou jwenn plis enfòmasyon sou konfigirasyon an files, gade [9].

Konfigirasyon filePN7220

Pou PN7220, gen senk konfigirasyon diferan files.

  1. libemvco-nxp.conf
  2. libnfc-nci.conf
  3. libnfc-nxp.conf
  4. libnfc-nxp-eeprom.conf
  5. libnfc-nxp-rfExt.conf

Nòt: Konfigirasyon fileNXP bay yo se ansyenamples ki gen rapò ak NFC kontwolè Demo tablo a. Sa yo files dwe adopte selon entegrasyon vize a

Konfigirasyon fileYo bezwen mete yo nan kote sib la (gade Tablo 9).

Tablo 9. Kote konfigirasyon files 

Non konfigirasyon file Kote nan aparèy la
libemvco-nxp.conf machann / elatriye
libnfc-nci.conf sistèm / elatriye
libnfc-nxp.conf machann / elatriye
libnfc-nxp-eeprom.conf machann / elatriye
libnfc-nxprfExt.conf machann / elatriye

Pou jwenn plis enfòmasyon sou konfigirasyon an files, gade [9]. 

Aplikasyon DTA

Pou pèmèt tès sètifikasyon NFC Forum, yo bay yon aplikasyon tès aparèy. Li konpoze de plizyè konpozan nan diferan kouch android, ki dwe bati ak enkli nan imaj la android.

Pou pouse aplikasyon DTA a, etap sa yo dwe egzekite:

  1. Kopi tout DTA files nan yon sèl kote
    $cp -rf "soti/sib/pwodwi/hikey960/system/lib64/libosal.so" /DTA-PN7220
    $cp -rf "soti/sib/pwodwi/hikey960/system/lib64/libmwif.so" /DTA-PN7220
    $cp -rf "soti/sib/pwodwi/hikey960/system/lib64/libdta.so" /DTA-PN7220
    $cp -rf "soti/sib/pwodwi/hikey960/system/lib64/libdta_jni.so" /DTA-PN7220
    $cp -rf "soti/sib/pwodwi/hikey960/system/app/NxpDTA/NxpDTA.apk" /DTAPN7220
  2. Pouse binè yo nan aparèy la kòm anba a
    adb shell mkdir /system/app/NxpDTA/
    adb push libosal.so /system/lib64/
    adb pouse libdta.so /system/lib64/
    adb push libdta_jni.so /system/lib64/
    adb push libmwif.so /system/lib64/
    adb push NxpDTA.apk /system/app/NxpDTA/

Apre flache sib la, aplikasyon DTA a ta dwe prezan nan lis aplikasyon enstale yo. Gade [7] pou yon deskripsyon detaye sou fason pou itilize aplikasyon an.

Abreviyasyon yo

Tablo 10. Abreviyasyon yo 

Akwonim Deskripsyon
APDU inite done pwotokòl aplikasyon an
AOSP Android Open Source Pwojè
DH lame aparèy
HAL kouch abstrè pyès ki nan konpitè
FW firmwèr
I2C Awondisman entè-entegre
LPCD pi ba deteksyon kat pouvwa
NCI NFC kontwolè koòdone
NFC kominikasyon toupre jaden
MW middleware
PLL ofi-fèmen bouk
P2P kanmarad a kanmarad
RF frekans radyo
SDA done seri
SMCU mikrokontroleur an sekirite
SW lojisyèl

Referans

  1. Repozitwa GitHub - PN7160 ak PN7220 Komen MW: (lyen)
  2. Web paj – PN7160 – NFC Plug and Play Controller with Integrated Firmware and NCI Interface (lyen)
  3. Web paj – PN7220 – EMV L1 Konfòme NFC Kontwolè ak NCI Entèfas Sipòte Aplikasyon EMV ak NFC Forum (lyen)
  4. GitHub depo - PN7160 ak PN7220 chofè nwayo: (lyen)
  5. Resous - AOSP r2 tag (lyen)
  6. Resous - Zouti kontwòl sous (lyen)
  7. Gid itilizatè – UG10068 – PN7220 – Gid demaraj rapid (lyen)
  8. GitHub depo - PN7160 ak PN7220 FW kote: (lyen)
  9. Nòt aplikasyon - AN14431 - PN7160 / PN7220 konfigirasyon files (lyen)

Remak sou kòd sous la nan dokiman an

ExampKòd ki montre nan dokiman sa a gen dwa sa yo ak lisans BSD-3-Clause:

Copyright 2024 NXP Redistribisyon ak itilizasyon nan fòm sous ak binè, avèk oswa san modifikasyon, yo pèmèt si kondisyon sa yo satisfè.

  1. Redistribisyon nan kòd sous yo dwe kenbe avi dwadotè ki pi wo a, lis kondisyon sa a ak egzijans sa a.
  2. Redistribisyon yo nan fòm binè yo dwe repwodui avi sou dwadotè ki anwo yo, lis kondisyon sa a ak eksklizyon sa a nan dokiman an ak/oswa lòt materyèl yo dwe bay ak distribisyon an.
  3. Ni non moun ki gen dwadotè a ni non kontribitè li yo pa ka itilize pou andose oswa pwomouvwa pwodwi ki sòti nan lojisyèl sa a san otorizasyon espesifik alekri.

TITANÈ DWA DWA AK KONTRIBÈ YO KI BAY LOGISYISYÈ SA A "KÒM YO" AK NENPÒT GARANTI EXPRESS OSWA ENPLIKITE, KI ENKLI, MEN SE PA LIMIMITE A, GARANTI ENPLIKITE AK MARCHANDISITE AK APTITE POU YON OBJEKTIF PARTIKILÈ. NAN OKENN TITLÈ DWA DWA A OUBYEN KONTRIBÈ A PAP RESPONSYON POU NENPÒT DOmaj DIRÈK, ENDRÈK, AK ENSIDAN, ESPESYAL, EGZANPLÈ, OSWA KONSEKANS (KENKLI, MEN SE PA LIMITE A, ACHTE BAY RANPLÒN OSWA SÈVIS ; OSWA ENTÈRIPYON BIZNIS) KELTAN KOZE AK SOU NENPÒT TEORI RESPONSABILITE, KIT NAN KONTRA, RESPONSABILITÉ STRICT, OSWA OTÒT (KENKLI NEGLIJANS OSWA OTREMAN) KI DEVITE NAN NENPÒT FÒM KI SOTI DE ITILIZE LOGISYISYÈ SA A, MENM SI YO YO AVVISE POSSIBLITE SA A.

Istwa revizyon

Tablo 11. Istwa revizyon 

Dokiman ID Dat lage Deskripsyon
AN14430 v.1.0 03 septanm 2024 •   Premye vèsyon

Enfòmasyon legal

Definisyon

Draft — Yon estati bouyon sou yon dokiman endike ke kontni an toujou anba re entènview ak sijè a apwobasyon fòmèl, ki ka lakòz modifikasyon oswa adisyon. NXP Semiconductors pa bay okenn reprezantasyon oswa garanti sou presizyon oswa konplè enfòmasyon ki enkli nan yon vèsyon bouyon nan yon dokiman epi yo pa dwe gen okenn responsablite pou konsekans yo nan itilizasyon enfòmasyon sa yo.

Limit responsabilite yo

Garanti limite ak responsablite — Yo kwè enfòmasyon ki nan dokiman sa a yo egzat ak serye. Sepandan, NXP Semiconductors pa bay okenn reprezantasyon oswa garanti, eksprime oswa implicite, sou presizyon oswa konplè enfòmasyon sa yo epi yo pa dwe gen okenn responsablite pou konsekans yo nan itilizasyon enfòmasyon sa yo. NXP Semiconductors pa pran okenn responsablite pou kontni ki nan dokiman sa a si yon sous enfòmasyon andeyò NXP Semiconductors bay li.

Nan okenn ka NXP Semiconductors ta dwe responsab pou nenpòt domaj endirèk, aksidantèl, pinitif, espesyal oswa konsekan (ki gen ladan - san limitasyon - pèdi pwofi, pèdi ekonomi, entèripsyon biznis, depans ki gen rapò ak retire oswa ranplasman nenpòt pwodwi oswa chaj retravay) kit oswa ou pa domaj sa yo baze sou tort (ki gen ladan neglijans), garanti, vyolasyon kontra oswa nenpòt lòt teyori legal.

Malgre nenpòt domaj ke kliyan ta ka fè pou nenpòt ki rezon, responsablite total ak kimilatif NXP Semiconductors anvè kliyan pou pwodwi ki dekri la a ap limite an akò ak Tèm ak kondisyon pou vann komèsyal NXP Semiconductors.

Dwa pou fè chanjman — NXP Semiconductors rezève dwa pou fè chanjman nan enfòmasyon ki pibliye nan dokiman sa a, ki gen ladan espesifikasyon san limitasyon ak deskripsyon pwodwi yo, nenpòt ki lè epi san avètisman. Dokiman sa a ranplase ak ranplase tout enfòmasyon yo te bay anvan piblikasyon sa a.

Apwopriye pou itilize — Pwodwi NXP Semiconductors yo pa fèt, otorize oswa garanti yo dwe apwopriye pou itilize nan sipò lavi, sistèm oswa ekipman ki enpòtan pou lavi oswa sekirite, ni nan aplikasyon kote echèk oswa fonksyone byen nan yon pwodwi NXP Semiconductors ka rezonab. pou lakòz blesi pèsonèl, lanmò oswa domaj grav nan pwopriyete oswa anviwònman an. NXP Semiconductors ak founisè li yo pa aksepte okenn responsablite pou enklizyon ak/oswa itilizasyon pwodwi NXP Semiconductors nan ekipman oswa aplikasyon sa yo e se poutèt sa enklizyon ak/oswa itilizasyon sa yo se sou pwòp risk kliyan an.

Aplikasyon — Aplikasyon ki dekri la a pou nenpòt nan pwodwi sa yo se pou rezon ilistrasyon sèlman. NXP Semiconductors pa fè okenn reprezantasyon oswa garanti ke aplikasyon sa yo pral apwopriye pou itilizasyon an espesifye san plis tès oswa modifikasyon.

Kliyan yo responsab pou konsepsyon ak operasyon aplikasyon yo ak pwodwi yo lè l sèvi avèk pwodwi NXP Semiconductors, epi NXP Semiconductors pa aksepte okenn responsablite pou nenpòt asistans ak aplikasyon oswa konsepsyon pwodwi kliyan. Se sèl responsablite kliyan an pou detèmine si pwodwi NXP Semiconductors apwopriye ak anfòm pou aplikasyon kliyan an ak pwodwi ki planifye, osi byen ke pou aplikasyon an te planifye ak itilizasyon kliyan twazyèm pati kliyan an (yo). Kliyan yo ta dwe bay konsepsyon apwopriye ak pwoteksyon fonksyone pou minimize risk ki asosye ak aplikasyon yo ak pwodwi yo.

NXP Semiconductors pa aksepte okenn responsablite ki gen rapò ak nenpòt defo, domaj, depans oswa pwoblèm ki baze sou nenpòt feblès oswa defo nan aplikasyon oswa pwodwi kliyan an, oswa aplikasyon an oswa itilizasyon pa kliyan an twazyèm pati (yo). Kliyan responsab pou fè tout tès ki nesesè pou aplikasyon kliyan an ak pwodwi lè l sèvi avèk pwodwi NXP Semiconductors yo nan lòd yo evite yon default nan aplikasyon yo ak pwodwi yo oswa nan aplikasyon an oswa itilizasyon pa kliyan an twazyèm pati (yo). NXP pa aksepte okenn responsablite nan respè sa a.

Tèm ak kondisyon pou vann komèsyal yo — Pwodwi NXP Semiconductors yo vann sijè a tèm ak kondisyon jeneral lavant komèsyal yo, jan yo pibliye nan https://www.nxp.com/profile/terms, sòf si yo dakò nan yon akò endividyèl ekri ki valab. Nan ka yon akò endividyèl konkli sèlman tèm ak kondisyon yo nan akò respektif la ap aplike. NXP Semiconductors ekspreseman objè yo aplike tèm jeneral ak kondisyon kliyan an konsènan achte nan pwodwi NXP Semiconductors pa kliyan.

Kontwòl ekspòtasyon — Dokiman sa a ansanm ak atik ki dekri la a ka sijè a règleman kontwòl ekspòtasyon. Ekspòtasyon ta ka mande yon otorizasyon davans nan men otorite konpetan.

Apwopriye pou itilize nan pwodwi ki pa kalifye pou otomobil — Sòf si dokiman sa a di ekspreseman ke pwodwi espesifik NXP Semiconductors sa a kalifye pou otomobil, pwodwi a pa apwopriye pou itilizasyon otomobil. Li pa ni kalifye ni teste an akò ak tès otomobil oswa kondisyon aplikasyon an. NXP Semiconductors pa aksepte okenn responsablite pou enklizyon ak/oswa itilizasyon pwodwi ki kalifye ki pa otomobil nan ekipman oswa aplikasyon otomobil.

Nan ka kliyan itilize pwodwi a pou konsepsyon ak itilize nan aplikasyon otomobil nan espesifikasyon otomobil ak estanda, kliyan (a) dwe itilize pwodwi a san yo pa garanti NXP Semiconductors nan pwodwi a pou aplikasyon otomobil sa yo, itilizasyon ak espesifikasyon, ak ( b) chak fwa kliyan itilize pwodwi a pou aplikasyon pou otomobil ki depase espesifikasyon NXP Semiconductors, itilizasyon sa a dwe sèlman sou pwòp risk kliyan an, epi (c) kliyan an totalman dedomaje NXP Semiconductors pou nenpòt responsablite, domaj oswa reklamasyon pwodwi echwe ki soti nan konsepsyon kliyan ak itilizasyon pwodwi a pou aplikasyon pou otomobil pi lwen pase garanti estanda NXP Semiconductors ak espesifikasyon pwodwi NXP Semiconductors.

Piblikasyon HTML — Yo bay yon vèsyon HTML dokiman sa a, si sa disponib, kòm koutwazi. Enfòmasyon definitif yo genyen nan dokiman aplikab la nan fòma PDF. Si gen yon diferans ant dokiman HTML ak dokiman PDF, dokiman PDF la gen priyorite.

Tradiksyon — Yon vèsyon ki pa angle (tradwi) nan yon dokiman, ki gen ladan enfòmasyon legal ki nan dokiman sa a, se pou referans sèlman. Vèsyon anglè a va prévaloir si ta gen nenpòt diferans ant vèsyon tradui ak anglè.

Sekirite - Kliyan konprann ke tout pwodwi NXP yo ka sijè a frajilite yo pa idantifye oswa yo ka sipòte estanda sekirite etabli oswa espesifikasyon ak limit li te ye. Kliyan responsab pou konsepsyon ak operasyon aplikasyon li yo ak pwodwi pandan tout sik lavi yo pou diminye efè frajilite sa yo sou aplikasyon ak pwodwi kliyan yo. Responsablite Kliyan an pwolonje tou nan lòt teknoloji ouvè ak/oswa propriétaires sipòte pa pwodwi NXP pou itilize nan aplikasyon kliyan yo. NXP pa aksepte okenn responsablite pou nenpòt vilnerabilite. Kliyan ta dwe tcheke mizajou sekirite nan NXP regilyèman epi fè yon swivi apwopriye. Kliyan dwe chwazi pwodwi ki gen karakteristik sekirite ki pi byen satisfè règ, règleman, ak estanda aplikasyon ki gen entansyon an epi pran desizyon final konsepsyon konsènan pwodwi li yo epi li se sèl responsab pou konfòmite ak tout kondisyon legal, regilasyon, ak sekirite ki gen rapò ak pwodwi li yo, kèlkeswa. nenpòt enfòmasyon oswa sipò ke NXP ka bay.

NXP gen yon Ekip Repons pou Ensidan Sekirite Pwodui (PSIRT) (ki ka jwenn nan PSIRT@nxp.com) ki jere ankèt la, rapò, ak lage solisyon nan vilnerabilite sekirite nan pwodwi NXP.

NXP BV — NXP BV se pa yon konpayi opere epi li pa distribye oswa vann pwodwi yo.

Lisans

Achte NXP IC ak teknoloji NFC — Achte yon NXP Semiconductors IC ki konfòm ak youn nan estanda kominikasyon Near Field (NFC) ISO/IEC 18092 ak ISO/IEC 21481 pa transmèt yon lisans implicite anba okenn dwa patant vyole pa aplikasyon an. nenpòt nan estanda sa yo. Achte NXP Semiconductors IC pa enkli yon lisans pou okenn patant NXP (oswa lòt dwa IP) ki kouvri konbinezon pwodwi sa yo ak lòt pwodwi, kit pyès ki nan konpitè oswa lojisyèl.

Mak komèsyal yo

Avi: Tout mak referans, non pwodwi, non sèvis, ak mak komèsyal yo se pwopriyete pwopriyetè respektif yo. NXP — mak mo ak logo se mak komèsyal NXP BV I2C-bus — logo se yon mak komèsyal NXP BV.

Tanpri konnen byen ke avi enpòtan konsènan dokiman sa a ak pwodwi (yo) ki dekri la a, yo te enkli nan seksyon 'Enfòmasyon legal'.

© 2024 NXP BV Tout dwa rezève.
Pou plis enfòmasyon, tanpri vizite: https://www.nxp.com

 

Dokiman / Resous

NXP PN7160 NCI ki baze sou NFC contrôleur [pdfEnstriksyon yo
PN7160, PN7220, PN7160 NCI ki baze sou NFC contrôleur, PN7160, NCI ki baze sou NFC contrôleur, ki baze sou NFC contrôleur, NFC contrôleur, contrôleur

Referans

Kite yon kòmantè

Adrès imel ou p ap pibliye. Jaden obligatwa yo make *