Interfejs kontrolera NFC (NCI) służy do interakcji z kontroler NFC (NFCC). Ta strona opisuje dane techniczne Androida zastrzeżonych poleceń NCI.
Definicje NCI
Zastrzeżone polecenia NCI na Androidzie używają zastrzeżonego identyfikatora grupy (GID) 0xF
i przestrzeń kodu identyfikatora operacji (OID) Androida 0xC
.
Popularny format pakietów
Format pakietów Android NCI jest zgodny ze specyfikacją NCI pakietów kontrolnych
przy użyciu zastrzeżonych właściwości Group_ID 0xF
i Opcode_ID 0x0C
. Dla każdego Androida
zastrzeżonego komunikatu, pierwszy bajt ładunku pakietu musi być ustawiony na
Kod operacji Androida (0x0C
). Pakiety kontrolne Androida używają Message_Type
i
PBF
do identyfikowania poleceń, odpowiedzi i powiadomień podobnych do
standardowych poleceń.
Format pakietów Androida znajduje się w tej tabeli:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
zarezerwowane do użycia w przyszłości (RFU) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
W tabeli poniżej znajdziesz przypisane identyfikatory kodu operacji Androida. dla każdego pakietu znajdziesz w kolejnych sekcjach.
Identyfikator OID Androida | Typ wiadomości | Nazwa wiadomości |
---|---|---|
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 |
Polecenie pobierania możliwości
Host używa zapytania NCI_ANDROID_GET_CAPS_CMD
do wysyłania zapytań dotyczących listy
zastrzeżonych funkcji Androida obsługiwanych przez NFCC.
Polecenie NCI_ANDROID_GET_CAPS_CMD
nie przyjmuje żadnych parametrów.
Komunikacja NFC musi przesłać odpowiedź NCI_ANDROID_GET_CAPS_RSP
ze stanem
STATUS_OK
oraz listę obsługiwanych funkcji.
Jeśli NFC nie obsługuje NCI_ANDROID_GET_CAPS_CMD
, host musi przyjąć:
aby poszczególne funkcje przyjmowały określoną wartość domyślną. Jeśli określony
nie zostanie zwrócona przez NFCC w odpowiedzi, host musi przyjąć,
możliwość ma określoną wartość domyślną.
NCI_ANDROID_GET_CAPS_CMD
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Nie dotyczy | 0 oktetów |
NCI_ANDROID_GET_CAPS_RSP
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Stan | 1 oktet | Kody stanu znajdziesz w tabeli 140 w specyfikacji NCI. | |||||
Android_Version
|
2 oktety | Określa wersję wymagań Androida wdrożonych przez NFCC. | |||||
0x0000 | Android 15 | ||||||
Liczba możliwości | 1 oktet | Liczba (n) obsługiwanych funkcji | |||||
Możliwości[0..n] | (m + 2) * n oktetów | Obsługiwane funkcje | |||||
Typ | 1 oktet | Identyfikator funkcji. | |||||
Len | 1 oktet | Długość wartości (m) | |||||
Wartość | m oktety | Wartość możliwości |
Zastrzeżone funkcje Androida
Nazwa funkcji | ID | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|---|
Tryb obserwacji | 0x00 | 1 oktet | Obsługa trybu obserwacji.
0x00 (domyślnie) – nie obsługuje tej funkcji. 0x01 – obsługuje funkcję z dezaktywacją częstotliwości radiowej z hosta (wymagane dla na urządzeniach z Androidem w wersji 15 lub nowszej). Pozostałe wartości to RFU. |
|||||
Powiadomienie dotyczące ramki odpytywania | 0x01 | 1 oktet | Obsługa powiadomień w ramkach odpytywania. 0x01, jeśli jest obsługiwany, 0x00 (domyślnie), jeśli nie jest obsługiwany. Pozostałe wartości to RFU. | |||||
Tryb oszczędzania energii | 0x02 | 1 oktet | Tryb oszczędzania energii. 0x01, jeśli jest obsługiwany, 0x00 (domyślnie), jeśli nie jest obsługiwany. Pozostałe wartości to RFU. | |||||
Filtr pętli odpytywania Auotransact | 0x03 | 1 oktet | Obsługa filtrów pętli odpytywania w oprogramowaniu układowym, które pozwalają pomijać tryb obserwacji określonych wzorców, gdy tryb obserwacji jest włączony globalnie.
0x00 (domyślnie) – nie obsługuje tej funkcji 0x01 – obsługuje filtry pętli odpytywania Wszystkie inne wartości to RFU |
|||||
0x04,0xFF | 0 oktetów | Zarezerwowany do użycia w przyszłości |
Polecenie oszczędzania energii
Aby przełączyć komunikację NFC w tryb oszczędzania energii, host może użyć funkcji
NCI_ANDROID_POWER_SAVING_CMD
. W odpowiedzi NFCC musi być podany komunikat
NCI_ANDROID_POWER_SAVING_RSP
z kodem stanu
z informacją o sukcesie lub porażce.
W trybie oszczędzania energii host nie może wysyłać żadnych poleceń do NFCC ani NFCC nie może wysyłać do hosta żadnych powiadomień ani odpowiedzi. NFCC lub osadzony bezpieczny element (eSE) może automatycznie akceptować przychodzące żądania płatności; zgodnie z konfiguracją routingu ustawioną przed włączeniem oszczędzania energii i trybu uzyskiwania zgody.
Aby powrócić do trybu pełnego zasilania, host może zresetować lub ponownie zainicjować NFC.
NCI_ANDROID_POWER_SAVING_CMD
Pola ładunku | Rozmiar | Wartość/opis | |
---|---|---|---|
Tryb oszczędzania energii | 1 oktet | 0x00 | Wyłącz tryb oszczędzania energii |
0x01 | Włącz tryb oszczędzania energii |
NCI_ANDROID_POWER_SAVING_RSP
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Stan | 1 oktet | Zapoznaj się z kodami stanu w tabeli 140 w specyfikacji NCI. |
Ustaw polecenie trybu obserwacji
Aby włączyć lub wyłączyć tryb obserwacji, host może używać funkcji
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
. W odpowiedzi NFCC musi znaleźć się ciąg
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
z kodem stanu wskazującym powodzenie lub
niepowodzenie.
Gdy tryb obserwacji jest wyłączony, NFCC musi zaimplementować metodę standardowej aktywności w trybie słuchania zgodnie z Specyfikacja techniczna aktywności.
Gdy tryb obserwacji jest aktywny, NFCC nie może odpowiadać na żadne ankiety
żądań w trakcie pętli odpytywania w trybie słuchania, dopóki nie zostanie wyraźnie uwierzytelniona przez
z serwera Google. Komunikacja NFC musi wysłać powiadomienie RF_FIELD_INFO_NTF
(zgodnie z definicją zawartą w zasadzie
sekcji 5.3
specyfikacja NCI)
po wykryciu aktywacji w terenie. Jeśli wykrywanie trybu ankiety jest aktywne, NFCC
musi zaimplementować aktywność w trybie ankiety zgodnie z
Specyfikacja techniczna aktywności.
Komunikacja NFC może zapisać dane ankiety w pamięci podręcznej, aby można było od razu kontynuować pracę z urządzeniem.
aktywacji zaraz po dezaktywacji trybu obserwacji.
Komunikacja NFC powinna wyłączyć tryb obserwacji, jeśli z jakiegoś powodu host się wyłączy. (na przykład rozładowanie baterii lub wyłączenie zainicjowane przez użytkownika), tak aby można kontynuować transakcje.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Pola ładunku | Rozmiar | Wartość/opis | |
---|---|---|---|
tryb obserwacji | 1 oktet | 0x00 | Wyłącz tryb obserwacji (domyślnie) |
0x01 | Włącz tryb obserwacji |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Stan | 1 oktet | Kody stanu znajdziesz w tabeli 140 w specyfikacji NCI. |
Powiadomienie o pętli odpytywania
NFCC musi wysłać powiadomienie NCI_ANDROID_POLLING_FRAME_NTF
do hosta
po każdej ramce pętli odpytywania. Gdy zarówno RF_FIELD_INFO_NTF
, jak i
Wygenerowanych powiadomień: NCI_ANDROID_POLLING_FRAME_NTF
, NFCC musi wysłać
NCI_ANDROID_POLLING_FRAME_NTF
po RF_FIELD_INFO_NTF
.
Powiadomienie NCI_ANDROID_POLLING_FRAME_NTF
jest niezależne od tego, czy
czy tryb obserwacji jest aktywny. Gdy włączony jest tryb obserwacji,
NFCC musi zawsze wysłać powiadomienie NCI_ANDROID_POLLING_FRAME_NTF
przed
z transakcjami.
NCI_ANDROID_POLLING_FRAME_NTF
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Dane ankiet[0.n] | (m +3) * n oktetów | Lista żądań sondowania otrzymanych od ostatniego powiadomienia. Każdy wynik określa typ (technologię) otrzymanych danych. oraz dane umożliwiające identyfikację z żądania w zależności od technologii. | |||||
Typ | 1 oktet | Zobacz typy ramek. | |||||
Flagi | 1 oktet | Zobacz bajt flagi. | |||||
Długość | 1 oktet | Długość (m) raportu z danymi ankietowymi wraz z polami sygnatury czasowej i wzmocnienia. | |||||
Sygnatura czasowa | 4 oktety | Sygnatura czasowa mierzona w milisekundach od otrzymania żądań odpytywania. | |||||
Przybrać | 1 oktet | Siła żądania odpytywania.
0xFF oznacza, że wartość jest niedostępna. |
|||||
Dane | m–5 oktetów | Zwraca dane możliwe do zidentyfikowania obecne w żądaniu odpytywania |
Typy klatek
Ramka odpytywania | Typ | Rozmiar | Wartość/opis | |
---|---|---|---|---|
Pole zdalne | 0x00 | 1 oktet | 0x00 | Pole wyłączone |
0x01 | Pole włączone | |||
0x02,0xFF | RFU | |||
NFC-A | 0x01 | n oktetów | Wartość musi zawierać polecenie ISO 14443-3 (np. REQ lub WUP) | |
NFC B | 0x02 | n oktetów | Wartość musi zawierać bajt AIF i polecenie ISO 14443-3 (na przykład REQ lub WUP) | |
NFC-F | 0x03 | n oktetów | Wartość musi zawierać polecenie ISO 14443-3 (np. REQ lub WUP) | |
NFC V | 0x04 | n oktetów | Wartość musi zawierać polecenie ISO 14443-3 (np. REQ lub WUP) | |
Nieznane | 0x07 | n oktetów | Nieprzetworzone dane ramki |
Definicja bajtów flagi
Flagi | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | |
0 | Krótka klatka | RFU | RFU | RFU | RFU | RFU | RFU | RFU |
1 | Długa ramka |
Polecenie stanu trybu obserwacji zapytań
Aby pobrać bieżący stan pasywnego trybu zamówienia, host może użyć polecenia
polecenie NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. Moduł NFCC musi
odpowiedz, używając NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
ze stanem
wskazujący powodzenie niepowodzenia.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Pola ładunku | Rozmiar | Wartość/opis | |||||
---|---|---|---|---|---|---|---|
Nie dotyczy | 0 oktetów |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Pola ładunku | Rozmiar | Wartość/opis | |
---|---|---|---|
Stan | 1 oktet | Zapoznaj się z kodami stanu w tabeli 140 w specyfikacji NCI. | |
tryb obserwacji | 1 oktet | 0x00 | Tryb obserwacji wyłączony |
0x01 | Tryb obserwacji włączony |