Zastrzeżone polecenia NCI na Androidzie

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 0xFi 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