Android-eigene NCI-Befehle

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