Zastrzeżone polecenia NCI na Androidzie

Interfejs sterownika NFC (NCI) służy do interakcji ze sterownikiem NFC (NFCC). Ta strona zawiera specyfikacje zastrzeżonych poleceń NCI na Androida.

Definicje NCI

Własne polecenia NCI na Androidzie używają własnego identyfikatora grupy (GID) 0xFi identyfikatora kodu operacji (OID) Androida 0xC.

Popularny format pakietów

Format pakietów NCI na Androidzie jest zgodny ze specyfikacją NCI dla pakietów sterujących, która wykorzystuje zastrzeżone elementy Group_ID 0xFOpcode_ID 0x0C. W przypadku każdego zastrzeżonego komunikatu Androida pierwszy bajt danych pakietu musi być ustawiony na kod operacji Androida (0x0C). Pakiety sterujące Androida używają wartości Message_TypePBF do identyfikowania poleceń, odpowiedzi i powiadomień w sposób podobny do poleceń standardowych.

Format pakietów Androida przedstawiono w tabeli poniżej:

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
zarezerwowany do użycia w przyszłości (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

Przypisane identyfikatory instrukcji kodu źródłowego Androida zostały wymienione w tabeli poniżej. Specyfikacje poszczególnych pakietów znajdziesz w następnych sekcjach.

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 Get capabilities

Użytkownik korzysta z funkcji NCI_ANDROID_GET_CAPS_CMD, aby zapytać o listę zastrzeżonych funkcji Androida obsługiwanych przez NFCC. Polecenie NCI_ANDROID_GET_CAPS_CMD nie przyjmuje żadnych parametrów.

NFCC musi odpowiedzieć za pomocą odpowiedzi NCI_ANDROID_GET_CAPS_RSP ze stanem STATUS_OK i listą obsługiwanych funkcji.

Jeśli NFCC nie obsługuje właściwości NCI_ANDROID_GET_CAPS_CMD, host musi założyć, że każda z tych właściwości przyjmuje wartość domyślną. Jeśli NFCC nie zwróci określonej możliwości w odpowiedzi, host musi założyć, że ta możliwość ma wartość domyślną.

NCI_ANDROID_GET_CAPS_CMD

Pola ładunku Rozmiar Wartość/opis
Nie dotyczy 0 oktetów

NCI_ANDROID_GET_CAPS_RSP

Pola danych Rozmiar Wartość/opis
Stan 1 oktet Kody stanu znajdziesz w tabeli 140 w specyfikacji NCI.
Android_Version 2 oktety Określa wersję wymagań Androida, która jest implementowana przez NFCC.
0x0000 Android 15
Liczba funkcji 1 oktet Liczba (n) obsługiwanych funkcji
Capabilities[0..n] (m + 2) * n oktetów Obsługiwane funkcje
Typ 1 oktet Identyfikator możliwości
Len 1 oktet Długość (m) wartości
Wartość m bajtów Wartość tej funkcji
Własne funkcje Androida
Nazwa możliwości ID Rozmiar Wartość/opis
Tryb obserwacji 0x00 1 oktet Obsługa trybu obserwacji.
0x00 (domyślnie) – ta funkcja nie jest obsługiwana.
0x01 – obsługa funkcji z wykorzystaniem dezaktywacji RF na hoście (wymagane w przypadku Androida 15 lub nowszego).
Wszystkie pozostałe wartości są opcjonalne.
Powiadomienie o ramce ankiety 0x01 1 oktet Obsługa powiadomień o ramce ankiety. 0x01, jeśli jest obsługiwana, 0x00 (domyślnie), jeśli nie jest obsługiwana. Pozostałe wartości to RFU.
Tryb oszczędzania energii 0x02 1 oktet Obsługa trybu oszczędzania energii. 0x01, jeśli jest obsługiwana, 0x00 (domyślnie), jeśli nie jest obsługiwana. Pozostałe wartości to RFU.
Filtr pętli zapytań Auotransact 0x03 1 oktet Obsługa filtrów pętli zapytań w oprogramowaniu układowym, aby pomijać tryb obserwacji w przypadku określonych wzorców, gdy tryb obserwacji jest włączony globalnie.
0x00 (domyślnie) – ta funkcja nie jest obsługiwana
0x01 – obsługa filtrów pętli zapytania
Inne wartości są opcjonalne
0x04,0xFF 0 oktetów Zarezerwowany do użycia w przyszłości

Polecenie oszczędzania energii

Aby przełączyć NFCC w tryb oszczędzania energii, gospodarz może użyć polecenia NCI_ANDROID_POWER_SAVING_CMD. NFCC musi odpowiedzieć, przesyłając kod stanu NCI_ANDROID_POWER_SAVING_RSP wskazujący na powodzenie lub niepowodzenie.

W trybie oszczędzania energii host nie może wysyłać żadnych poleceń do NFCC, a NFCC nie może wysyłać żadnych powiadomień ani odpowiedzi do hosta. NFCC lub wbudowany element zabezpieczeń (eSE) może automatycznie akceptować przychodzące żądania płatności zgodnie z konfiguracją routingu ustawioną przed włączeniem trybu oszczędzania energii.

Aby powrócić do trybu pełnej mocy, host może zresetować lub ponownie zainicjować NFCC.

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łączanie trybu oszczędzania energii

NCI_ANDROID_POWER_SAVING_RSP

Pola danych Rozmiar Wartość/opis
Stan 1 oktet kody stanu w tabeli 140 w specyfikacji NCI,

Polecenie ustawiania trybu obserwacji

Aby włączyć lub wyłączyć tryb obserwacji, gospodarz może użyć polecenia NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. NFCC musi odpowiedzieć kodem NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP z kodem stanu wskazującym na powodzenie lub niepowodzenie.

Gdy tryb obserwacji jest wyłączony, NFCC musi wdrożyć standardowe działanie w trybie nasłuchiwania zgodnie ze specyfikacją techniczną aktywności.

Gdy tryb obserwacji jest aktywny, NFCC nie może odpowiadać na żadne żądania ankiety podczas pętli ankiety w trybie słuchania, dopóki host nie zezwoli na to wyraźnie. NFCC musi wysłać powiadomienie RF_FIELD_INFO_NTF (zgodnie z sekcją 5.3 specyfikacji NCI), gdy wykryje aktywację w polu. Jeśli wykrywanie w trybie ankiety jest aktywne, NFCC musi zaimplementować aktywność w trybie ankiety zgodnie z specyfikacją techniczną aktywności. NFCC może zapisać informacje o ankiecie w pamięci podręcznej, aby można było rozpocząć aktywację urządzenia od razu po wyłączeniu trybu obserwacji.

NFCC powinien wyłączyć tryb obserwacji, jeśli host zostanie wyłączony z dowolnego powodu (np. z powodu wyczerpania baterii lub wyłączenia przez użytkownika), aby transakcje SE mogły być kontynuowane.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Pola danych Rozmiar Wartość/opis
tryb obserwacji 1 oktet 0x00 Wyłącz tryb obserwacji (domyślnie),
0x01 Włączanie trybu obserwacji

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

Pola danych 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żdym cyklu ankiety. Gdy zostaną wygenerowane powiadomienia RF_FIELD_INFO_NTF i NCI_ANDROID_POLLING_FRAME_NTF, NFCC będzie musiało wysłać NCI_ANDROID_POLLING_FRAME_NTF po RF_FIELD_INFO_NTF.

Powiadomienie NCI_ANDROID_POLLING_FRAME_NTF jest wysyłane niezależnie od tego, czy tryb obserwacji jest aktywny. Gdy tryb obserwacji jest aktywny, NFCC musi zawsze wysłać powiadomienie NCI_ANDROID_POLLING_FRAME_NTF, zanim przejdzie do transakcji.

NCI_ANDROID_POLLING_FRAME_NTF

Pola danych Rozmiar Wartość/opis
Polling Data[0..n] (m + 3) * n oktetów Lista próśb o głosowanie otrzymanych od ostatniego powiadomienia. Każdy wynik zawiera typ (technologię) otrzymanych żądań 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 danych ankiety, w tym pola sygnatury czasowej i wzmocnienia.
Sygnatura czasowa 4 oktety Znak czasu zliczany w milisekundach od momentu otrzymania żądań sondowania (big endian).
Wzmocnienie 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 ramek
Ramka ankiety 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 (np. 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 o ramkach
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

Zapytanie o stan trybu obserwacji

Aby pobrać bieżący stan trybu biernego zamówienia, host może użyć polecenia NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD. NFCC musi odpowiedzieć za pomocą NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP z kodem stanu wskazującym na powodzenie lub niepowodzenie.

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 danych Rozmiar Wartość/opis
Stan 1 oktet Zapoznaj się z kodami stanu w tabeli 140 w specyfikacji NCI.
tryb obserwacji 1 oktet 0x00 Tryb obserwacji jest wyłączony
0x01 Tryb obserwacji włączony