NXP PN7160 NCI-põhiste NFC-kontrollerite juhised

Dokumendi teave 

Teave Sisu
Märksõnad PN7160, PN7220, NCI, EMVCo, NFC foorum, Android, NFC
Abstraktne Selles dokumendis kirjeldatakse, kuidas portida PN7160/PN7220 levinud vahetarkvara versiooni Android 14.

See juhend sisaldab üksikasjalikke juhiseid NXP NCI-põhiste NFC-kontrollerite PN7160 ja PN7220 integreerimiseks Androidi keskkonda. Protsess hõlmab vajaliku kerneli draiveri installimist ja MW konfigureerimist (vt [1]). Lisateabe saamiseks vaadake PN7160 [2] ja PN7220 [3] tootelehte. Androidi avatud lähtekoodiga projekti (AOSP) on värskendatud, et see hõlmaks nii PN7160 kui ka PN7220 NFC-kontrollerite tuge.

PN7220 on kahes konfiguratsioonis: ühe ja kahe hostiga. Virn on üldiselt mõlema jaoks sama. Kahe hosti režiimis lisatakse SMCU, mis tähendab, et kõik EMVCo-ga seotud ülesanded täidetakse SMCU-s. Ühes hostis käivitatakse EMVCo spetsiaalses EMVCo MW-virnas

Android MW stack

Joonis 1 illustreerib PN7220 Androidi NFC-pinu arhitektuuri.

  • NXP I2C draiver on kerneli moodul, mis võimaldab juurdepääsu PN7220 riistvararessurssidele.
  • HAL-moodul on NXP NFC kontrollerispetsiifilise riistvaraabstraktsioonikihi rakendus.
  • LibNfc-Nci on algteek, mis pakub NFC-funktsioone.
  • NFC JNI toimib sillana Java ja Native klasside vahel.
  • NFC ja EMVCo Framework on rakendusraamistiku moodul, mis võimaldab juurdepääsu NFC ja EMVCo funktsioonidele.

Joonisel 2 on näidatud PN7160 Androidi NFC-pinu arhitektuur. 


Joonis 2. PN7160 Android MW pinu 

  • NXP I2C draiver on kerneli moodul, mis võimaldab juurdepääsu PN7160 riistvararessurssidele.
  • HAL-moodul on NXP NFC kontrollerispetsiifilise riistvaraabstraktsioonikihi rakendus.
  • LibNfc-nci on algteek, mis pakub NFC-funktsioone.
  • NFC JNI toimib sillana Java ja Native klasside vahel.
  • NFC on rakendusraamistiku moodul, mis võimaldab juurdepääsu NFC funktsioonidele.
  • MW lähtekood on PN7160 ja PN7220 puhul sama, kuid sellel on mõned piirangud.

Tabelis 1 on näidatud iga NFC-kontrolleri toetamata funktsioonid. 

Tabel 1. Toetamata funktsioonid 

NFC kontroller Toetamata funktsioonid
PN7160
  • EMVCo MW virn
  • SMCU
  • CT funktsioon
PN7220
  • NFCEE_NDEF

Märkus. Alates Android 14-st ei toetata ka PN2 P7160P-d.

Kerneli draiver

PN7220 või PN7160-ga ühenduse loomiseks kasutab Androidi virn nxpnfc kerneli draiverit. Selle leiate jaotisest [4].

Juhi andmed

PN7220 toetab I2C füüsilist liidest, samas kui PN7160 toetab I2C või SPI füüsilist liidest. Kernelisse installimisel avaldatakse draiverit /dev/nxpnfc seadmesõlme kaudu.

Märkus. PN7160 ja PN7220 kasutavad kahte erinevat draiverit, õige draiveri valimine on vajalik kiibi tüübi alusel.

PN7160 draiveri lähtekoodi hankimine

Kopeerige nfcandroid_platform_drivers/drivers/pn7160/nfc draiverite hoidla kerneli kataloogi, asendades olemasoleva rakenduse. Tuuma leiate jaotisest [4] files.

$rm -rf draiverid/nfc
$git kloon “https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git” -b
br_ar_14_comm_infra_dev

Selle tulemuseks on kaustadraiverid/nfc, mis sisaldavad järgmist files:

  • README.md: hoidla teave
  • Teefile: juhi rubriik markfile
  • Kconfig: draiveri konfiguratsioon file
  • Litsents: juhilubade tingimused
  • nfc alamkaust, mis sisaldab:
    • commoc.c: draiveri üldine juurutamine
    • common.h: üldine draiveri liidese määratlus
    • i2c_drv.c: i2c spetsiifiline draiveri rakendamine
    • – i2c_drv.h: i2c spetsiifilise draiveri liidese määratlus
    • spi_drv.c: spi spetsiifiline draiveri rakendamine
    • spi_drv.h: spi spetsiifilise draiveri liidese määratlus
    • Teefile: tegemafile mis on tootes kaasasfile juhist
    • Kbuild => ehitamine file
    • Kconfig => draiveri konfiguratsioon file
PN7220 draiveri lähtekoodi hankimine

Kopeerige nfcandroid_platform_drivers/drivers/pn7220cs/nfc (ühe hosti kasutusjuht) või nfcandroid_platform_ drivers/drivers/pn7220cms/nfc (kahe hosti kasutusjuhtum) tuuma kataloogi draiverid/nfc, asendades olemasoleva draiveri. Tuuma leiate jaotisest [4] files.

$rm -rf drivers/nfc$git kloon “https://github.com/nxp-nfc-infra/nfcandroid_platform_drivers.git” -bbr_ar_14_comm_infra_dev

Selle käsu järel sisaldab kausta draiverid/nfc järgmist files:

  • README.md: hoidla teave
  • Teefile: juhi rubriik markfile
  • Kconfig: draiveri konfiguratsioon file
  • Litsents: juhilubade tingimused
  • nfc alamkaust, mis sisaldab:
    • commoc.c: draiveri üldine juurutamine
    • common.h: üldine draiveri liidese määratlus
    • i2c_drv.c: i2 c spetsiifiline draiveri rakendamine
    • i2c_drv.h: i2 c spetsiifilise draiveri liidese määratlus
    • Teefile: tegemafile mis on tootes kaasasfile juhist
    • Kbuild => ehitamine file
    • Kconfig => draiveri konfiguratsioon file
Juhi ehitamine

Seadmepuu vastutab draiveri kernelile lisamise ja seadme alglaadimisel laadimise eest.

Pärast seadmepuu spetsifikatsiooni uuendamist tuleb platvormiga seotud seadmepuu uuesti üles ehitada. NXP soovitab kasutada kerneli versiooni 5.10, kuna see pakub igakülgset valideerimist.

Draiveri koostamiseks tuleb teha järgmised toimingud:

  1. Hankige kerneli draiver
  2. Hankige draiveri lähtekood
  3. Muutke seadmepuu määratlust, mis on kasutatava seadme jaoks ainulaadne.
  4. Ehitage draiver:

a. Menüükonfiguratsiooni protseduuri kaudu lisage järgmisse sihtdraiver.

Pärast valmis kerneli ümberehitamist lisatakse draiver tuuma kujutisele. Kõik uued kerneli kujutised tuleb kopeerida AOSP järgmisse.

AOSP kohandamine

NXP lisab AOSP koodi muudatusi. See tähendab, et AOSP koodi kasutatakse alusena, kuid seda laiendatakse NXP-spetsiifiliste funktsioonide jaoks. [5] on praegune AOSP tag mida kasutab NXP. Pärast AOSP järgu saamist tuleb olemasolev AOSP kood välja vahetada ja rakendada mitmeid plaastreid.

Märkus. Võib kasutada ka teistsugust AOSP-koodi versiooni, kuid tuleb teha täiendavaid muudatusi.

AOSP ehitamine

Hankige AOSP lähtekood.

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

Märkus. Repo tööriist peab olema süsteemi installitud. Juhiste saamiseks vaadake [6].

Ehitage lähtekood.

$cd Android_AROOT
$source build/envsetup.sh
$lõunas select_target #sihtmärk on DH, mida tahame kasutada ntample: evk_8mn-userdebug
$make -j

Kopeerige kõik NXP hoidlad sihtkohta.

Tabel 2. Teatud Androidi versiooni haru

Androidi versioon Filiaal
Android 14 br_ar_14_comm_infra_dev

Märkus. Kloonimisel on oluline valida õige haru.

Tabel 3. Kloonide hoidlad

AOSP reposid NXP GitHubi reposid
"$ANDROID_ROOT"/paketid/ rakendused/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"/riistvara/ nxp/nfc https://github.com/nxp-nfc-infra/nfcandroid_nfc_hidlimpl/tree/br_ar_14_comm_infra_dev
"$ANDROID_ROOT"/vendor/nxp/ raamistikud https://github.com/nxp-nfc-infra/nfcandroid_frameworks/tree/br_ar_14_comm_infra_dev
"$ANDROID_ROOT"/riistvara/ 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

Tabel 4. Testrakenduste ja TDA toe kloonimise hoidlad 

GitHubi kaust AOSP reposid NXP GitHub IC toetatud
test_apps/SMCU_Switch "$ANDROID_ROOT"/

paketid/rakendused/

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

nfcandroid_infra_test_apps

PN7220
test_apps/EMVCoMode SwitchApp "$ANDROID_ROOT"/

paketid/rakendused/Nfc/

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

nfcandroid_infra_test_apps

PN7220
test_apps/Cockpit "$ANDROID_ROOT"/

riistvara/nxp/nfc/

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

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTest "$ANDROID_ROOT"/

riistvara/nxp/nfc/

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

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTest_pn7160 "$ANDROID_ROOT"/

riistvara/nxp/nfc/

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

nfcandroid_infra_test_apps

PN7160
test_apps/load_unload "$ANDROID_ROOT"/

riistvara/nxp/nfc/

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

nfcandroid_infra_test_apps

PN7220
test_apps/SelfTestAidl "$ANDROID_ROOT"/

riistvara/nxp/nfc/

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

nfcandroid_infra_test_apps

PN7220
nfc_tda "$ANDROID_ROOT"/süsteem/ https://github.com/ nxp-nfc-infra/

nfcandroid_infra_comm_libs

PN7220
emvco_tda "$ANDROID_ROOT"/

riistvara/nxp/emvco/

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

nfcandroid_infra_comm_libs

PN7220
emvco_tda_test "$ANDROID_ROOT"/

riistvara/nxp/emvco/

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

nfcandroid_infra_comm_libs

PN7220
NfcTdaTestApp "$ANDROID_ROOT"/

paketid/rakendused/Nfc/

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

Asetage plaastrid

Tabel 5. Asetage plaastrid

Taotlemise koht Plaaster pealekandmiseks Plaastri asukoht
"$ANDROID_ROOT"/ehitamine/ bazel/ AROOT_build_bazel. plaaster https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/ehitamine/ teha/ AROOT_build_make. plaaster https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/ehitamine/ varsti/ AROOT_build_soon. plaaster https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

raamistikud/base/

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

raamistikud/native/

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

system/logging/

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

paketid/moodulid/ Bluetooth/

AROOT_paketid_ moodulid_Bluethooth. plaaster https://github.com/nxp-nfc-infra/nfcandroid_platform_reference/ tree/br_ar_14_comm_infra_dev/build_cfg/build_pf_patches/
"$ANDROID_ROOT"/

framework/proto_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/

Märkus. Kontrollige väljundit pärast plaastri paigaldamist, kui plaastri ajal ilmnes mõni probleem.

Lisage FW teegid. FW kohta vaadake [8].

Märkus. Ei ole kohustuslik. FW-d saab alati värskendada.

PN7160 puhul: 

$git kloon 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

PN7220 puhul: 

$git kloon 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

NFC lisamine konstruktsioonile

Seadmes.mk makefile (ntample, device/brand/platform/device.mk), lisage konkreetne markfiles:

$(helista inherit-product, vendor/nxp/nfc/device-nfc.mk) 

Rakenduses BoardConfig.mk makefile (ntample, seade/bränd/platvorm/BoardConfig.mk), sisaldama konkreetset markifile:

-include vendor/nxp/nfc/BoardConfigNfc.mk 

DTA rakenduse lisamine

$git kloon https://github.com/NXPNFCProject/NXPAndroidDTA.git $patch -p1 nfc-dta.patch #located https://github.com/nxp-nfc-infra/ nfcandroid_platform_reference/tree/br_ar_14_dev/commfbuildfra build_mw_patches/db845c $ cp -r nfc-dta /system/nfc-dta $/system/nfc-dta/$ mm -j

Ehitage AOSP muudatustega:

$cd raamistik/baas
$mm
$cd ../..
$cd tarnija/nxp/frameworks
$mm #pärast seda peaksid com.nxp.emvco.jar ja com.nxp.nfc.jar olema pahupidi/
target/product/xxxx/system/framwework/
$cd ../../..
$cd riistvara/nxp/nfc
$mm
$cd ../../..
$make -j

Nüüd välgutage seadet uute Androidi piltidega.

Androidi NFC rakendused ja Lib sihtmärkidel

Pärast ehitamist tuleb loodud teegid sihtseadmesse installida. Jaotis 4.2 määrab projekti asukoha, vastava teegi ja sihtseadme asukoha, kuhu installida.

Märkus. EMVCo kahendfailid on rakendatavad ainult PN7220 puhul.

Tabel 6. Koostatud files seadme sihtmärgiga 

Projekti asukoht Koostatud Files Kommentaarid Asukoht sihtseadmes
"$ANDROID_ROOT"/

paketid/rakendused/Nfc

NfcNci.odex NfcNci.vdex lib/NfcNci.apk oat/libnfc_nci_jni.so   /system/app/NfcNci/ oat/arm64/

/system/app/NfcNci/ oat/arm64/

/system/app/NfcNci/

/system/lib64/

"$ANDROID_ROOT"/

süsteem/nfc

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

system/nfc_tda”

nfc_tda.so Kehtib ainult CT funktsiooni jaoks. /system/lib64/
"$ANDROID_ROOT"/

riistvara/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 müüja.nxp.nxpnfc@2.0.so müüja.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/

riistvara/liidesed/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   /süsteem\/ib64/

/system/lib64/

/system/lib64/

/system/lib64/

/vendor/lib64/

/vendor/lib64/

/vendor/lib64/

"$ANDROID_ROOT"/

vendor/nxp/frameworks

com.nxp.emvco.jar (PN7220) com.nxp.nfc.jar   /süsteem/raamistik

/süsteem/raamistik

"$ANDROID_ROOT"/

riistvara/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 Kehtib ainult CT funktsiooni jaoks. /vendor/lib64/
Plokkide kaardistamine

Sektsiooni 1 ploki nime vastendamine sihtasukohaga AOSP-koodis.

Tabel 7. Plaastri asukoht NFC-virnas 

Blokeeri nimi Asukoht AOSP koodis
NFC HAL ja EMVCo HAL riistvara/liidesed/
NFC virn riistvara/nxp/nfc/
EMVCo L1 andmevahetuskiht = EMVCo virn riistvara/nxp/emvco/
LibNfc-Nci system/nfc/
NFC JNI paketid/rakendused/nfc/
NFC teenus paketid/rakendused/nfc/
NFC raamistik raamistikud/base/
EMVCo raamistik vendor/nxp/frameworks/
EMVCo AP

PN7220 MW pinu laiendab AOSP koodi EMVCo MW virnaga. See jaotis kirjeldab EMVCo API-sid.

Märkus. API-sid saab kutsuda ainult PN7220 IC kasutamisel. Kui helistate sellele PN7160 IC-ga, API ei tööta. EMVCo Profile Avastus. Neid API-sid saab kasutada kontakt- ja kontaktivaba professionaaligafiles.

registerEMVCoEventListener()

  • ndk::ScopedAStatus registerEMVCoEventListener ( const std::shared_ptr< INxpEmvcoClientCallback > & in_clientCallback, bool * in_aidl_return)
  • Kirjeldus: Sündmuste kuulajaseadmelt vastuvõtmiseks registreerige EMVCo tagasihelistamisfunktsioon
  • Märkus. See funktsioon tuleb enne mis tahes muu API väljakutsumist läbi viia.
  • Parameetrid:
    • [in] *in_clientCallback: omab EMVCo kliendi HAL-i tagasihelistamist
    • [in] *in_aidl_return: näitab registri olekut tagasi helistajale
  • Tagastab
    • Boolean tagastab tõene, kui see õnnestus, ja tagastab vale, kui registreerimine ebaõnnestus

hankige praegune avastamisrežiim () 

  • ndk::ScopedAStatus getCurrentDiscoveryMode(::aidl::vendor::nxp::emvco::NxpDiscoveryMode * _aidl_return)
  • Kirjeldus: tagastab praeguse aktiivse profile tüüp.
  • Tagastab
    • NxpDiscoveryMode – NFC/EMVCo/Unknown

onNfcStateChange() 

  • ndk::ScopedAStatus onNfcStateChange(NxpNfcState in_nfcState)
  • Kirjeldus: värskendas NFC olekut EMVCo HAL-ile.
  • Parameetrid:
    • [in] in_nfcState: määrab NFC oleku
  • Tagastab:
    • tühine

registerNFCStateChangeCallback()

  • ndk::ScopedAStatus registerNFCStateChangeCallback ( const std::shared_ptr< ::aidl::vendor::nxp::emvco::INxpNfcStateChangeRequestCallback > & in_nfcStateChangeRequestCallback, bootturolre
  • Kirjeldus: Sündmuste kuulajaseadmelt vastuvõtmiseks registreerige NFC tagasihelistamise funktsioon.
  • Märkus. See funktsioon peab helistama enne mis tahes muu API kutsumist.
  • Parameetrid:
    • [in] in_nfcStateChangeCallback: INxpNfcStateChangeRequestCallback sündmuse tagasihelistamise funktsioon, mille helistaja edastab. See peaks NFC sisse/välja lülitama saadud päringu alusel.
  • Tagastab: tõeväärtus tagastab tõene, kui see õnnestus, ja tagastab vale, kui registreerimine ebaõnnestus.

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 )

  • Kirjeldus: Käivitab EMVCo režiimi Device-Controlleriga. Kui rakenduse andmekanal on loodud, võib rakendus saata EMVCo-režiimi käivitamise koos seadmekontrolleriga.
  • Parameetrid:
    • [in] in_disc_mask EMVCo: küsitlustehnoloogiad konfigureeritakse selle parameetri kaudu
    • [in]in_isStartEMVCo: määrab EMVCo režiimi käivitamise või peatamise
  • Tagastab:
    • tühine

setLed()

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

Contact EMVCo jaoks saab eelmiste API-de kõrval kasutada järgmisi API-sid.

closeTDA()

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

  • Kirjeldus: Sulgeb TDA kaudu ühendatud kiipkaardi
  • Parameetrid:
    • [in] tdaID: suletava tda-pesa ID
  • Erandid:
    • EMVCO_STATUS_INVALID_PARAMETER, kui antud tdaID on vale
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED, kui kontaktikaardi funktsiooni ei toetata.
  • Tagastab:
    • tühine

discoverTDA()

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

Kirjeldus: discoverTDA pakub kõiki TDA kaudu ühendatud kiipkaardi üksikasju

  • Parameetrid:
    • [in]*in_clientCallback: pakub EMVCo olekut ja TDA olekut tagasihelistamisena
  • Erandid:
    •  EMVCO_STATUS_FEATURE_NOT_SUPPORTED, kui kontaktikaardi funktsiooni ei toetata.
  • Tagastab:
    • NxpEmvcoTDAInfo[] tagastab kogu TDA kaudu ühendatud kiipkaardi. kehtiv emvcoTDAInfo võetakse vastu ainult siis, kui olek on EMVCO_STATUS_OK

openTDA()

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

Kirjeldus: avab TDA kaudu ühendatud kiipkaardi

  • Parameetrid:
    • [in]tdaID: discoverTDA kaudu saadud kiipkaardi tda ID
  • Erandid:
    • EMVCO_STATUS_INVALID_PARAMETER, kui antud tdaID on vale
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED, kui kontaktikaardi funktsiooni ei toetata.
  • Tagastab:
    • bait tagastab kiipkaardi ühenduse ID. kehtiv ühenduse ID saadi ainult siis, kui olek on EMVCO_STATUS_OK

registerEMVCoCTListener() 

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

  • Kirjeldus: registreerib EMVCoCT tagasihelistamise EMVCo virna
  • Parameetrid:
    • [in]*in_clientCallback: pakub EMVCo olekut ja TDA olekut tagasihelistamisena
  • Tagastab:
    • tühine 

transceive () 

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

  • Kirjeldus: saadab Device-Controlleriga rakenduse andmed ja saab kontrollerilt vastusandmeid
  • Märkus. TDA ühenduse ID tuleks lisada NCI päisesse.
  • Parameetrid:
    • [in]in_cmd_data: rakenduse käsu andmepuhver
  • Erandid:
    • EMVCO_STATUS_INVALID_PARAMETER, kui antud ühenduse ID on vale
    • EMVCO_STATUS_FEATURE_NOT_SUPPORTED, kui kontaktikaardi funktsiooni ei toetata.
  • Tagastab:
    • Kontrollerilt saadud vastus APDU. kehtiv vastus APDU võeti vastu ainult siis, kui olek on EMVCO_STATUS_OK

EMVCo kontaktivaba puhul saab kutsuda järgmisi API-sid:

registerEMVCoEventListener()

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

  • Kirjeldus: Sündmuste kuulajaseadmelt vastuvõtmiseks registreerige EMVCo tagasihelistamise funktsioon.
  • Märkus. See funktsioon peab helistama enne mis tahes muu API kutsumist.
  • Parameetrid:
    • [in]*in_clientCallback: omab EMVCo kliendi HAL-i tagasihelistamist
    • [in]*in_aidl_return: näitab helistajale vastutasuks registri olekut
  • Tagastab:
    • Boolean tagastab tõene, kui see õnnestus, ja tagastab vale, kui registreerimine ebaõnnestus

setEMVCoMode()

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

  • Kirjeldus: Käivitab EMVCo režiimi Device-Controlleriga. Kui rakenduse andmekanal on loodud, võib rakendus saata EMVCo-režiimi käivitamise koos seadmekontrolleriga.
  • Parameetrid:
    • [in]in_config: EMVCo küsitlustehnoloogiad konfigureeritakse selle parameetri kaudu
    • [in]in_isStartEMVCo: määrab EMVCo režiimi käivitamise või peatamise
  • Tagastab:
    • tühine

StopRFDisovery()

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

  • Kirjeldus: peatab RF-välja ja liigub määratud deaktiveerimisolekusse.
  • Parameetrid:
    • [in]in_deactivationType: määrab oleku, mis on pärast raadiosagedusliku desaktiveerimist
  • Tagastab:
    • NxpEmvcoStatus tagastab EMVCO_STATUS_OK, kui käsk on edukalt töödeldud, ja tagastab EMVCO_STATUS_FAILED, kui käsku ei töödelda kehtetu oleku tõttu. Selle API kutsumiseks peab EMVCo režiim olema SEES

transceive ()

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

  • Kirjeldus: saata rakenduse andmeid Device-Controlleriga.
  • Märkus. Kui andmete saatmine ebaõnnestub, kutsub rakendus enne selle API käivitamist uuesti välja open().
  • Parameetrid:
    • (in]in_data: rakenduse andmepuhver
  • Tagastab:
    • NxpEmvcoStatus, mis näitab täitmise olekut
Seadistamine files PN7160

PN7160 puhul on kaks erinevat konfiguratsiooni files.

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

Märkus. Seadistamine fileNXP pakutavad s on ntampvähem seotud NFC-kontrolleri demoplaadiga. Need files tuleb vastu võtta vastavalt sihipärasele integratsioonile.

Seadistamine files tuleb paigutada sihtasukohta (vt tabel 8).

Tabel 8. Konfiguratsiooni asukohad files 

Konfiguratsiooni nimi file Asukoht seadmes
libnfc-nci.conf süsteem / jne
libnfc-nxp.conf müüja/jne

Konfiguratsiooni kohta lisateabe saamiseks files, vt [9].

Seadistamine files PN7220

PN7220 jaoks on viis erinevat konfiguratsiooni files.

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

Märkus. Seadistamine fileNXP pakutavad s on ntampvähem seotud NFC-kontrolleri demoplaadiga. Need files tuleb vastu võtta vastavalt sihipärasele integratsioonile

Seadistamine files tuleb paigutada sihtasukohta (vt tabel 9).

Tabel 9. Konfiguratsiooni asukohad files 

Konfiguratsiooni nimi file Asukoht seadmes
libemvco-nxp.conf müüja/jne
libnfc-nci.conf süsteem / jne
libnfc-nxp.conf müüja/jne
libnfc-nxp-eeprom.conf müüja/jne
libnfc-nxprfExt.conf müüja/jne

Konfiguratsiooni kohta lisateabe saamiseks files, vt [9]. 

DTA rakendus

NFC foorumi sertifitseerimise testimise lubamiseks pakutakse seadme testimise rakendust. See koosneb mitmest komponendist erinevates Androidi kihtides, mis tuleb üles ehitada ja lisada Androidi kujutisele.

DTA-rakenduse tõukamiseks tuleb teha järgmised toimingud:

  1. Kopeerige kogu DTA files ühte kohta
    $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
  2. Lükake binaarfailid seadme külge nagu allpool
    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/

Pärast sihtmärgi vilkumist peaks DTA rakendus olema installitud rakenduste loendis. Rakenduse kasutamise üksikasjalikku kirjeldust leiate jaotisest [7].

Lühendid

Tabel 10. Lühendid 

Akronüüm Kirjeldus
APDU rakendusprotokolli andmeüksus
AOSP Android avatud lähtekoodiga projekt
DH seadme host
HAL riistvara abstraktsioonikiht
FW püsivara
I2C Integreeritud vooluahel
LPCD madalama võimsusega kaardi tuvastamine
NCI NFC kontrolleri liides
NFC lähivälja side
MW vahevara
PLL faasilukku
P2P peer to peer
RF raadiosagedus
SDA jadaandmed
SMCU turvaline mikrokontroller
SW tarkvara

Viited

  1. GitHubi hoidla – PN7160 ja PN7220 ühine MW: (link)
  2. Web leht – PN7160 – NFC Plug and Play kontroller integreeritud püsivara ja NCI liidesega (link)
  3. Web leht – PN7220 – EMV L1-ga ühilduv NFC-kontroller koos NCI-liidesega, mis toetab EMV- ja NFC-foorumirakendusi (link)
  4. GitHubi hoidla – PN7160 ja PN7220 kerneli draiver: (link)
  5. Vahendid – AOSP r2 tag (link)
  6. Ressursid – allika kontrolli tööriistad (link)
  7. Kasutusjuhend – UG10068 – PN7220 – Kiirjuhend (link)
  8. GitHubi hoidla – PN7160 ja PN7220 FW asukoht: (link)
  9. Rakenduse märkus – AN14431 – PN7160/PN7220 konfiguratsioon files (link)

Märkus dokumendi lähtekoodi kohta

ExampSelles dokumendis näidatud koodil on järgmised autoriõigused ja BSD-3-klausli litsents:

Autoriõigus 2024 NXP Edasilevitamine ja kasutamine lähte- ja kahendvormingus, muudatustega või ilma, on lubatud tingimusel, et järgmised tingimused on täidetud

  1. Lähtekoodi edasilevitamisel tuleb säilitada ülaltoodud autoriõiguse teatis, käesolev tingimuste loend ja järgmine lahtiütlus.
  2. Binaarses vormis levitamisel tuleb reprodutseerida ülaltoodud autoriõiguse teatis, käesolev tingimuste loend ja järgmine dokumentatsioonis ja/või muudes materjalides sisalduv lahtiütlemine tuleb levitamisega kaasas olla.
  3. Sellest tarkvarast tuletatud toodete toetamiseks või reklaamimiseks ei tohi ilma eelneva kirjaliku loata kasutada ei autoriõiguste omaniku ega selle kaastöötajate nimesid.

SELLE TARKVARA PAKKUAVAD AUTORIÕIGUSE OMAJAD JA KAASAJAD „NAGU ON” NING MIS TAHES OTSESELT VÕI KAUDSE GARANTIID, KAASAALSETE, KUID MITTE PIIRATUD, KAUBANDUSVÕIME JA KAUBANDUSVAHENDUSE SOOVITUSE GARANTIID. MITTE JUHUL EI VASTUTA AUTORIÕIGUSE OMAJA VÕI KAASAJAD MISGI OTSESE, KAUDSE, JUHUSLIKU, ERI-, EESMÄRGISTE VÕI JÄLJENDUSLIKU KAHJU EEST (SEALHULGAS, KUID MITTE PIIRATUD, TEENUSED, KASUTAMISED; KAUPADE ASENDUSTE HANKED; VÕI KASUM; VÕI ÄRITEGEVUSE KATKESTUS), MIS PÕHJUSINUD JA MIS TAHES VASTUTUSE TEOORIA, KAS LEPINGU, RANGE VASTUTUS VÕI DEKTASTUS (KAASA arvatud HOOLETUS VÕI MUUL MUUL), MIS ON TEKINUD MIS TAHES SELLEST KASUTAMISEKS SELLISTE KAHJUSTUSTE VÕIMALUS.

Läbivaatamise ajalugu

Tabel 11. Redaktsioonide ajalugu 

Dokumendi ID Väljalaske kuupäev Kirjeldus
AN14430 v.1.0 03. september 2024 • Esialgne versioon

Juriidiline teave

Definitsioonid

Mustand – dokumendi mustandi olek näitab, et sisu on endiselt sisemise ümberkorraldamise allview ja see tuleb ametlikult heaks kiita, mis võib kaasa tuua muudatusi või täiendusi. NXP Semiconductors ei anna mingeid kinnitusi ega garantiisid dokumendi mustandi versioonis sisalduva teabe täpsuse või täielikkuse kohta ega vastuta sellise teabe kasutamise tagajärgede eest.

Kohustustest loobumine

Piiratud garantii ja vastutus – selles dokumendis sisalduvat teavet peetakse täpseks ja usaldusväärseks. Siiski ei anna NXP Semiconductors mingeid otseseid ega kaudseid kinnitusi ega garantiisid sellise teabe täpsuse või täielikkuse kohta ega vastuta sellise teabe kasutamise tagajärgede eest. NXP Semiconductors ei vastuta selle dokumendi sisu eest, kui see on pärit NXP Semiconductori-välisest teabeallikast.

NXP Semiconductors ei vastuta ühelgi juhul kaudsete, juhuslike, karistuslike, eri- ega kaudsete kahjude eest (sealhulgas – kuid mitte ainult – saamata jäänud kasum, saamata jäänud säästud, ärikatkestused, mis tahes toodete eemaldamise või asendamisega seotud kulud või ümbertöötlemistasud) või ei põhine sellised kahjud deliktil (sh hooletus), garantiil, lepingu rikkumisel või mis tahes muul õiguslikul teoorial.

Olenemata kahjudest, mida klient võib mis tahes põhjusel kanda, on NXP Semiconductorsi koond- ja kumulatiivne vastutus kliendi ees siin kirjeldatud toodete eest piiratud vastavalt NXP Semiconductorsi kaubandusliku müügi tingimuste ja tingimustega.

Õigus teha muudatusi — NXP Semiconductors jätab endale õiguse muuta selles dokumendis avaldatud teavet, sealhulgas ilma piiranguteta tehnilisi andmeid ja tootekirjeldusi, igal ajal ja ette teatamata. See dokument asendab ja asendab kogu teabe, mis on esitatud enne selle avaldamist.

Kasutussobivus – NXP Semiconductors tooted ei ole kavandatud, volitatud ega garanteeritud nii, et need sobiksid kasutamiseks elu toetavates, elutähtsates või ohutuskriitilistes süsteemides või seadmetes ega rakendustes, kus võib mõistlikult eeldada NXP Semiconductors toote riket või talitlushäireid. põhjustada kehavigastusi, surma või raskeid vara- või keskkonnakahjustusi. NXP Semiconductors ja selle tarnijad ei vastuta NXP Semiconductorsi toodete lisamise ja/või kasutamise eest sellistesse seadmetesse või rakendustesse ning seetõttu toimub lisamine ja/või kasutamine kliendi enda riisikol.

Rakendused – siin kirjeldatud mis tahes nende toodete rakendused on ainult illustratiivsed. NXP Semiconductors ei kinnita ega garanteeri, et sellised rakendused sobivad kindlaksmääratud kasutuseks ilma täiendava testimise või muutmiseta.

Kliendid vastutavad oma NXP Semiconductorsi tooteid kasutavate rakenduste ja toodete disaini ja toimimise eest ning NXP Semiconductors ei vastuta mis tahes abi eest, mis on seotud rakenduste või kliendi tootekujundusega. Klient vastutab ainuisikuliselt selle eest, kas NXP Semiconductors toode sobib ja sobib kliendi rakenduste ja kavandatud toodete jaoks, samuti kliendi kolmandast isikust kliendi(te) kavandatud rakenduseks ja kasutamiseks. Kliendid peaksid oma rakenduste ja toodetega seotud riskide minimeerimiseks pakkuma asjakohaseid projekteerimis- ja töökaitsemeetmeid.

NXP Semiconductors ei võta endale vastutust mis tahes vaikete, kahjustuste, kulude või probleemidega, mis põhinevad kliendi rakenduste või toodete või kliendi kolmandast isikust kliendi(te) rakenduse või kasutuse nõrkustel või vaiketel. Klient vastutab NXP Semiconductorsi tooteid kasutavate kliendi rakenduste ja toodete jaoks kõigi vajalike testimiste tegemise eest, et vältida rakenduste ja toodete või rakenduse või kliendi kolmandast isikust kliendi(te) poolt kasutuse vaikimisi. NXP ei võta sellega seoses mingit vastutust.

Kaubandusmüügi tingimused — NXP Semiconductors tooteid müüakse kommertsmüügi üldtingimuste alusel, mis on avaldatud aadressil https://www.nxp.com/profile/tingimused, kui kehtivas kirjalikus individuaallepingus ei ole kokku lepitud teisiti. Individuaalse lepingu sõlmimisel kehtivad ainult vastava lepingu tingimused. NXP Semiconductors on käesolevaga sõnaselgelt vastu kliendi üldiste tingimuste kohaldamisele seoses NXP Semiconductorsi toodete ostmisega kliendi poolt.

Ekspordi kontroll — Selle dokumendi ja siin kirjeldatud kauba(de) suhtes võivad kehtida ekspordikontrolli eeskirjad. Eksport võib nõuda pädevate asutuste eelnevat luba.

Sobivus kasutamiseks mittekvalifitseeruvates toodetes – kui selles dokumendis ei ole sõnaselgelt öeldud, et see konkreetne NXP Semiconductors toode on autotööstuse jaoks kvalifitseeritud, ei sobi toode autotööstuses kasutamiseks. See ei ole kvalifitseeritud ega testitud vastavalt autode testimise või rakenduse nõuetele. NXP Semiconductors ei vastuta mootorsõidukitööstusele mittevastavate toodete lisamise ja/või kasutamise eest autotööstuse seadmetesse või rakendustesse.

Juhul, kui klient kasutab toodet autotööstuses kasutatavate rakenduste projekteerimiseks ja kasutamiseks autotööstuse spetsifikatsioonide ja standardite kohaselt, peab klient (a) kasutama toodet ilma NXP Semiconductors'i garantiita tootele selliste autotööstuse rakenduste, kasutuse ja spetsifikatsioonide jaoks ning ( b) kui klient kasutab toodet autotööstuses väljaspool NXP Semiconductorsi spetsifikatsioone, on selline kasutamine ainult kliendi enda riisikol ja (c) klient kannab täielikult hüvitab ettevõttele NXP Semiconductors igasuguse vastutuse, kahjud või ebaõnnestunud tootenõuded, mis tulenevad kliendi disainist ja toote kasutamisest autotööstuses väljaspool NXP Semiconductorsi standardgarantii ja NXP Semiconductorsi toote spetsifikatsioone.

HTML-väljaanded — Selle dokumendi HTML-versioon, kui see on saadaval, on viisakas. Lõplik teave sisaldub asjakohases dokumendis PDF-vormingus. Kui HTML-dokumendi ja PDF-dokumendi vahel esineb lahknevusi, on PDF-dokumendil prioriteet.

Tõlked — Dokumendi mitteingliskeelne (tõlgitud) versioon, sealhulgas selles dokumendis sisalduv juriidiline teave, on ainult viitamiseks. Ingliskeelne versioon on ülimuslik, kui tõlgitud ja ingliskeelse versiooni vahel esineb lahknevusi.

Turvalisus – klient mõistab, et kõigi NXP toodete puhul võivad esineda tuvastamata haavatavused või need võivad toetada kehtestatud turvastandardeid või spetsifikatsioone teadaolevate piirangutega. Klient vastutab oma rakenduste ja toodete kavandamise ja töötamise eest kogu nende elutsükli jooksul, et vähendada nende haavatavuste mõju kliendi rakendustele ja toodetele. Kliendi vastutus laieneb ka muudele avatud ja/või patenteeritud tehnoloogiatele, mida NXP tooted toetavad kliendi rakendustes kasutamiseks. NXP ei vastuta haavatavuse eest. Klient peaks regulaarselt kontrollima NXP turvavärskendusi ja võtma asjakohaseid järelmeetmeid. Klient valib välja turvafunktsioonidega tooted, mis vastavad kõige paremini kavandatud rakenduse reeglitele, määrustele ja standarditele ning teeb oma toodete osas lõplikud disainiotsused ning vastutab ainuisikuliselt kõigi oma tooteid puudutavate juriidiliste, regulatiivsete ja turvalisusega seotud nõuete järgimise eest, olenemata mis tahes teabe või toe kohta, mida NXP võib pakkuda.

NXP-l on tooteturbe intsidentidele reageerimise meeskond (PSIRT) (saadaval aadressil PSIRT@nxp.com), mis haldab NXP toodete turvaaukude uurimist, aruandlust ja lahenduste väljalaskmist.

NXP BV — NXP BV ei ole tegutsev ettevõte ning ta ei levita ega müü tooteid.

Litsentsid

NFC-tehnoloogiaga NXP IC-de ostmine – ühele lähiväljaside (NFC) standardile ISO/IEC 18092 ja ISO/IEC 21481 vastava NXP Semiconductors IC ostmine ei anna kaudset litsentsi mis tahes patendiõiguse alusel, mida on rikutud mõni neist standarditest. NXP Semiconductors IC ostmine ei sisalda litsentsi ühelegi NXP patendile (või muule IP õigusele), mis hõlmab nende toodete kombinatsioone teiste toodetega, olgu see riist- või tarkvara.

Kaubamärgid

Märkus: Kõik viidatud kaubamärgid, tootenimed, teenuste nimed ja kaubamärgid on nende vastavate omanike omand. NXP — sõnamärk ja logo on NXP BV I2C-busi kaubamärgid — logo on NXP BV kaubamärk

Pidage meeles, et olulised märkused selle dokumendi ja siin kirjeldatud toote(de) kohta on lisatud jaotisesse „Juriidiline teave”.

© 2024 NXP BV Kõik õigused kaitstud.
Lisateabe saamiseks külastage: https://www.nxp.com

 

Dokumendid / Ressursid

NXP PN7160 NCI-põhised NFC-kontrollerid [pdfJuhised
PN7160, PN7220, PN7160 NCI-põhised NFC-kontrollerid, PN7160, NCI-põhised NFC-kontrollerid, NFC-põhised kontrollerid, NFC-kontrollerid, kontrollerid

Viited

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *