Die NFC Controller Interface (NCI) wird für die Interaktion mit einer NFC-Controller (NFCC). Auf dieser Seite werden die Spezifikationen von Android beschrieben. proprietäre NCI-Befehle.
NCI-Definitionen
Die proprietären NCI-Befehle von Android verwenden die proprietäre Gruppen-ID (GID) 0xF
und der OID-Codebereich (Android OID) von 0xC
.
Gängiges Paketformat
Das Android NCI-Paketformat folgt der NCI-Spezifikation für Kontrollpakete
mit den proprietären Group_ID 0xF
und Opcode_ID 0x0C
. Für jedes Android-Gerät
proprietärer Nachricht handelt, muss das erste Byte der Paketnutzlast auf den
Android-Opcode (0x0C
) Die Android-Kontrollpakete verwenden Message_Type
und
PBF
zum Identifizieren von Befehlen, Antworten und Benachrichtigungen ähnlich wie
Standardbefehle
Das Android-Paketformat ist in der folgenden Tabelle dargestellt:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
Für zukünftige Verwendung reserviert (für zukünftige Verwendung reserviert) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
Die zugewiesenen Android-Opcode-IDs sind in der folgenden Tabelle aufgeführt. Die für jedes Paket wird in den nächsten Abschnitten beschrieben.
Android-OID | Mitteilungstyp | Name der Mitteilung |
---|---|---|
0x00 | NCI_MT_CMD | NCI_ANDROID_GET_CAPS_CMD |
NCI_MT_RSP | NCI_ANDROID_GET_CAPS_RSP
|
|
0x01 | NCI_MT_CMD | NCI_ANDROID_POWER_SAVING_CMD
|
NCI_MT_RSP | NCI_ANDROID_POWER_SAVING_RSP
|
|
0x02 | NCI_MT_CMD | NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD |
NCI_MT_RSP | NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
|
|
0x03 | NCI_MT_NTF | NCI_ANDROID_POLLING_FRAME_NTF
|
0x04 | NCI_MT_CMD | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD |
NCI_MT_RSP | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP |
Befehl zum Abrufen von Funktionen
Der Host verwendet NCI_ANDROID_GET_CAPS_CMD
, um die Liste abzufragen
der von der NFCC unterstützten proprietären Android-Funktionen. Die
Der Befehl NCI_ANDROID_GET_CAPS_CMD
akzeptiert keine Parameter.
Die NFCC muss mit der NCI_ANDROID_GET_CAPS_RSP
-Antwort mit einem Status antworten
STATUS_OK
und eine Liste der unterstützten Funktionen und Features.
Wenn die NFCC-Funktion NCI_ANDROID_GET_CAPS_CMD
nicht unterstützt, muss der Host davon ausgehen,
dass die Funktionen jeweils den angegebenen Standardwert annehmen. Wenn eine angegebene
nicht in der Antwort zurückgegeben wird, muss der Host davon ausgehen,
die Capability den Standardwert hat.
NCI_ANDROID_GET_CAPS_CMD
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
– | 0 Oktette |
NCI_ANDROID_GET_CAPS_RSP
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
Status | 1 Oktett | Siehe Statuscodes in Tabelle 140 der NCI-Spezifikation. | |||||
Android_Version
|
2 Oktette | Gibt die Version der Android-Anforderungen an, die von der NFCC implementiert wird. | |||||
0x0000 | Android 15 | ||||||
Anzahl der Funktionen | 1 Oktett | Anzahl (n) der unterstützten Funktionen | |||||
Capabilities[0..n] | (m + 2) * n Oktette | Unterstützte Funktionen | |||||
Typ | 1 Oktett | Die Kennung der Fähigkeit | |||||
Len | 1 Oktett | Länge (m) des Werts | |||||
Wert | M-Oktette | Der Wert der Fähigkeit |
Proprietäre Android-Funktionen
Funktionsname | ID | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|---|
Beobachtungsmodus | 0x00 | 1 Oktett | Unterstützung für den Beobachtungsmodus
0x00 (Standardeinstellung): Diese Funktion wird nicht unterstützt. 0x01 – Unterstützt die Funktion mit HF-Deaktivierung durch den Host (erforderlich für Android 15 oder höher). Alle anderen Werte sind für die zukünftige Verwendung reserviert. |
|||||
Benachrichtigung zum Abfrageframe | 0x01 | 1 Oktett | Unterstützung für Benachrichtigungen zu Abfrageframes. 0x01, wenn unterstützt, 0x00 (Standardeinstellung), wenn nicht unterstützt. Alle anderen Werte sind für die zukünftige Verwendung reserviert. | |||||
Energiesparmodus | 0x02 | 1 Oktett | Unterstützung für den Energiesparmodus 0x01, wenn unterstützt, 0x00 (Standardeinstellung), wenn nicht unterstützt. Alle anderen Werte sind für die zukünftige Verwendung reserviert. | |||||
Filter für Auotransact-Abfrageschleife | 0x03 | 1 Oktett | Unterstützung für Abfrageschleifenfilter in der Firmware, um den Beobachtungsmodus für bestimmte Muster zu umgehen, wenn der Beobachtungsmodus global aktiviert ist.
0x00 (Standardeinstellung): Diese Funktion wird nicht unterstützt. 0x01 – unterstützt Abfrageschleifenfilter Alle anderen Werte sind für die zukünftige Verwendung reserviert |
|||||
0x04..0xFF | 0 Oktette | Für zukünftige Verwendung reserviert |
Energiesparmodus
Um von der NFCC in den Energiesparmodus zu wechseln, kann der Host die Funktion
NCI_ANDROID_POWER_SAVING_CMD
-Befehl. Die NFCC muss mit
NCI_ANDROID_POWER_SAVING_RSP
mit einem Statuscode
um Erfolg oder Misserfolg anzuzeigen.
Im Energiesparmodus darf der Host keine Befehle an die NFCC- und Die NFCC darf keine Benachrichtigung oder Antwort an den Host senden. Die NFCC- oder Eingebettetes Secure Element (eSE) kann eingehende Zahlungsanforderungen automatisch akzeptieren gemäß der Routingkonfiguration vor dem Aktivieren des Energiesparmodus .
Um in den vollen Strommodus zurückzukehren, kann der Host die NFCC-Funktion zurücksetzen oder neu initialisieren.
NCI_ANDROID_POWER_SAVING_CMD
Nutzlastfelder | Größe | Wert/Beschreibung | |
---|---|---|---|
Energiesparmodus | 1 Oktett | 0x00 | Energiesparmodus deaktivieren |
0x01 | Energiesparmodus aktivieren |
NCI_ANDROID_POWER_SAVING_RSP
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
Status | 1 Oktett | Siehe Statuscodes in Tabelle 140 der NCI-Spezifikation, |
Befehl für den Beobachtungsmodus festlegen
Um den Beobachtungsmodus zu aktivieren oder zu deaktivieren, kann der Host die Funktion
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
-Befehl. Die NFCC muss mit
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
durch einen Statuscode, der eine erfolgreiche Nutzung oder
Fehler.
Wenn der Beobachtungsmodus deaktiviert ist, muss die NFCC die im Modus „Standard-Wiedergabemodus“ Technische Daten zur Aktivität
Wenn der Beobachtungsmodus aktiv ist, darf die NFCC auf keine Abfrage antworten
Anfragen während der Polling-Schleife im Überwachungsmodus, bis die explizite Autorisierung durch
den Organisator. Die NFCC muss die RF_FIELD_INFO_NTF
-Benachrichtigung senden (gemäß Definition durch
Abschnitt 5.3 der
NCI-Spezifikation)
wenn eine Feldaktivierung erkannt wird. Wenn die Erkennung des Abfragemodus aktiv ist,
muss die Abfragemodusaktivität gemäß
Technische Daten zur Aktivität
Die NFCC kann die Umfragedaten zwischenspeichern, um sofort mit dem Gerät fortzufahren.
aktiviert werden, sobald der Beobachtungsmodus deaktiviert ist.
Die NFCC sollte den Beobachtungsmodus deaktivieren, wenn der Host aus irgendeinem Grund heruntergefahren wird (z. B. ein leerer Akku oder ein vom Nutzer initiiertes Herunterfahren), damit SE Transaktionen fortgesetzt werden können.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD (NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD)
Nutzlastfelder | Größe | Wert/Beschreibung | |
---|---|---|---|
Beobachtungsmodus | 1 Oktett | 0x00 | Beobachtungsmodus deaktivieren (Standardeinstellung) |
0x01 | Beobachtungsmodus aktivieren |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
Status | 1 Oktett | Siehe Statuscodes in Tabelle 140 der NCI-Spezifikation. |
Benachrichtigung in Abfrageschleife
Die NFCC muss die NCI_ANDROID_POLLING_FRAME_NTF
-Benachrichtigung an den Host senden
nach jedem Polling-Loop-Frame. Wenn sowohl RF_FIELD_INFO_NTF
als auch
NCI_ANDROID_POLLING_FRAME_NTF
Benachrichtigungen werden generiert, die NFCC muss
NCI_ANDROID_POLLING_FRAME_NTF
nach RF_FIELD_INFO_NTF
.
Die NCI_ANDROID_POLLING_FRAME_NTF
-Benachrichtigung ist unabhängig davon,
ob der Beobachtungsmodus aktiv ist oder nicht. Wenn der Beobachtungsmodus aktiv ist,
muss die NFCC immer eine NCI_ANDROID_POLLING_FRAME_NTF
-Benachrichtigung senden,
mit der Transaktion fortfahren.
NCI_ANDROID_POLLING_FRAME_NTF
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
Abfragedaten[0..n] | (m +3) * n Oktette | Liste der Umfrageanfragen, die seit der letzten Anfrage eingegangen sind Benachrichtigung. Jedes Ergebnis gibt den Typ (Technologie) der empfangenen und identifizierbare Daten aus der Anfrage gesendet werden. | |||||
Typ | 1 Oktett | Weitere Informationen finden Sie unter Frame-Typen. | |||||
Flaggen | 1 Oktett | Siehe Flag-Byte. | |||||
Länge | 1 Oktett | Länge (m) des Umfragedatenberichts, einschließlich Zeitstempel- und Gewinnfeldern. | |||||
Zeitstempel | 4 Oktette | Zeitstempel des Empfangs der Abfrageanfragen in Millisekunden, Big Endian. | |||||
Zunehmen | 1 Oktett | Stärke der Abfrageanfrage.
0xFF zeigt an, dass der Wert nicht verfügbar ist. |
|||||
Daten | m – 5 Oktette | Gibt die identifizierbaren Daten in der Abfrageanfrage zurück |
Frametypen
Abfrageframe | Typ | Größe | Wert/Beschreibung | |
---|---|---|---|---|
Remote-Feld | 0x00 | 1 Oktett | 0x00 | Feld aus |
0x01 | Feld an | |||
0x02..0xFF | Für zukünftige Verwendung reserviert | |||
NFC-A | 0x01 | n-Oktette | Der Wert muss einen ISO 14443-3-Befehl enthalten (z. B. REQ oder WUP) | |
NFC-B | 0x02 | n-Oktette | Der Wert muss ein AIF-Byte und einen ISO 14443-3-Befehl enthalten (z. B. REQ oder WUP) | |
NFC-F | 0x03 | n-Oktette | Der Wert muss einen ISO 14443-3-Befehl enthalten (z. B. REQ oder WUP) | |
NFC-V | 0x04 | n-Oktette | Der Wert muss einen ISO 14443-3-Befehl enthalten (z. B. REQ oder WUP) | |
Unbekannt | 0x07 | n-Oktette | Frame-Rohdaten |
Flag-Byte-Definition
Flaggen | ||||||||
---|---|---|---|---|---|---|---|---|
B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | |
0 | Kurzer Frame | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert | Für zukünftige Verwendung reserviert |
1 | Langer Frame |
Befehl zum Abfragen des Beobachtungsmodus
Um den aktuellen Status des passiven Bestellmodus abzurufen, kann der Host Folgendes verwenden:
den Befehl NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. Die NFCC muss
Mit NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
mit einem Status antworten
-Code, der den Erfolg des Fehlers anzeigt.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Nutzlastfelder | Größe | Wert/Beschreibung | |||||
---|---|---|---|---|---|---|---|
– | 0 Oktette |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Nutzlastfelder | Größe | Wert/Beschreibung | |
---|---|---|---|
Status | 1 Oktett | Siehe Statuscodes in Tabelle 140 der NCI-Spezifikation, | |
Beobachtungsmodus | 1 Oktett | 0x00 | Beobachtungsmodus deaktiviert |
0x01 | Beobachtungsmodus aktiviert |