Antarmuka Pengontrol NFC (NCI) digunakan untuk berinteraksi dengan pengontrol NFC (NFCC). Halaman ini menjelaskan spesifikasi perintah NCI eksklusif Android.
Definisi NCI
Perintah NCI eksklusif Android menggunakan ID grup (GID) eksklusif 0xF
dan ruang kode ID opcode (OID) Android 0xC
.
Format paket umum
Format paket NCI Android mengikuti spesifikasi NCI untuk paket kontrol
menggunakan Group_ID 0xF
dan Opcode_ID 0x0C
eksklusif. Untuk setiap pesan
eksklusif Android, byte pertama payload paket harus ditetapkan ke
opcode Android (0x0C
). Paket kontrol Android menggunakan Message_Type
dan
PBF
untuk mengidentifikasi perintah, respons, dan notifikasi yang serupa dengan
perintah standar.
Format paket Android ditampilkan dalam tabel berikut:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
dicadangkan untuk penggunaan di masa mendatang (RFU) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
ID opcode Android yang ditetapkan tercantum dalam tabel berikut. Spesifikasi untuk setiap paket akan dijelaskan di bagian berikutnya.
OID Android | Jenis pesan | Nama pesan |
---|---|---|
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 |
Mendapatkan perintah kemampuan
Host menggunakan NCI_ANDROID_GET_CAPS_CMD
untuk membuat kueri daftar
fitur eksklusif Android yang didukung oleh NFCC. Perintah
NCI_ANDROID_GET_CAPS_CMD
tidak menggunakan parameter apa pun.
NFCC harus merespons menggunakan respons NCI_ANDROID_GET_CAPS_RSP
dengan status
STATUS_OK
serta daftar kemampuan dan fitur yang didukung.
Jika NFCC tidak mendukung NCI_ANDROID_GET_CAPS_CMD
, host harus mengasumsikan
bahwa setiap kemampuan menggunakan nilai default yang ditentukan. Jika kemampuan
yang ditentukan tidak ditampilkan oleh NFCC dalam respons, host harus berasumsi bahwa
kemampuan tersebut memiliki nilai default yang ditentukan.
NCI_ANDROID_GET_CAPS_CMD
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 octet |
NCI_ANDROID_GET_CAPS_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 octet | Lihat kode status di tabel 140 Spesifikasi NCI. | |||||
Android_Version
|
2 octet | Mengidentifikasi versi persyaratan Android yang diimplementasikan oleh NFCC. | |||||
0x0000 | Android 15 | ||||||
Jumlah kemampuan | 1 octet | Jumlah (n) kemampuan yang didukung | |||||
Capabilities[0..n] | (m + 2) * n octet | Kemampuan yang didukung | |||||
Jenis | 1 octet | ID kemampuan | |||||
Len | 1 octet | Panjang (m) nilai | |||||
Nilai | m octet | Nilai kemampuan |
Kemampuan eksklusif Android
Nama kemampuan | ID | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|---|
Mode amati | 0x00 | 1 octet | Dukungan untuk mode pengamatan.
0x00 (default) - Tidak mendukung fitur ini. 0x01 - Mendukung fitur dengan penonaktifan RF dari host (diperlukan untuk Android 15 atau yang lebih tinggi). Semua nilai lainnya adalah RFU. |
|||||
Notifikasi frame polling | 0x01 | 1 oktet | Dukungan untuk notifikasi frame polling. 0x01 jika didukung, 0x00 (default) jika tidak didukung. Semua nilai lainnya adalah RFU. | |||||
Mode hemat baterai | 0x02 | 1 octet | Dukungan untuk mode hemat daya. 0x01 jika didukung, 0x00 (default) jika tidak didukung. Semua nilai lainnya adalah RFU. | |||||
Filter loop polling Auotransact | 0x03 | 1 oktet | Dukungan untuk filter loop polling di firmware guna mengabaikan mode pengamatan untuk pola tertentu saat mode pengamatan diaktifkan secara global.
0x00 (default) - Tidak mendukung fitur ini 0x01 - Mendukung filter loop polling Semua nilai lainnya adalah RFU |
|||||
0x04..0xFF | 0 octet | Disimpan untuk penggunaan di masa mendatang |
Perintah hemat daya
Untuk mengalihkan NFCC ke mode hemat daya, host dapat menggunakan
perintah NCI_ANDROID_POWER_SAVING_CMD
. NFCC harus merespons dengan
NCI_ANDROID_POWER_SAVING_RSP
dengan kode status
yang menunjukkan keberhasilan atau kegagalan.
Saat dalam mode hemat daya, host tidak boleh mengirim perintah apa pun ke NFCC dan NFCC tidak boleh mengirim notifikasi atau respons apa pun ke host. NFCC atau Elemen Pengaman Tersemat (eSE) dapat otomatis menerima permintaan pembayaran masuk sesuai dengan konfigurasi pemilihan rute yang ditetapkan sebelum mengaktifkan mode penghematan daya.
Untuk kembali ke mode daya penuh, host dapat mereset atau menginisialisasi ulang NFCC.
NCI_ANDROID_POWER_SAVING_CMD
Kolom Payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Mode hemat baterai | 1 octet | 0x00 | Nonaktifkan mode hemat daya |
0x01 | Mengaktifkan mode hemat daya |
NCI_ANDROID_POWER_SAVING_RSP
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 octet | Lihat kode status di tabel 140 Spesifikasi NCI, |
Menetapkan perintah mode pengamatan
Untuk mengaktifkan atau menonaktifkan mode pengamatan, host dapat menggunakan
perintah NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
. NFCC harus merespons dengan
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
dengan kode status yang menunjukkan keberhasilan atau
kegagalan.
Jika mode pengamatan dinonaktifkan, NFCC harus menerapkan aktivitas mode pemrosesan standar sesuai dengan Spesifikasi Teknis Aktivitas.
Saat mode pengamatan aktif, NFCC tidak boleh merespons permintaan polling
selama loop polling dalam mode pemrosesan, hingga diberi otorisasi secara eksplisit oleh
host. NFCC harus mengirim notifikasi RF_FIELD_INFO_NTF
(seperti yang ditentukan oleh
bagian 5.3 dari
spesifikasi NCI)
saat mendeteksi aktivasi kolom. Jika penemuan mode polling aktif, NFCC
harus menerapkan aktivitas mode polling sesuai dengan
Spesifikasi Teknis Aktivitas.
NFCC dapat meng-cache informasi polling sehingga dapat segera melanjutkan aktivasi
perangkat segera setelah mode pengamatan dinonaktifkan.
NFCC harus menonaktifkan mode pengamatan jika host dimatikan karena alasan apa pun (misalnya, kehabisan baterai atau penonaktifan yang dimulai pengguna) agar transaksi SE dapat dilanjutkan.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
mode amati | 1 octet | 0x00 | Menonaktifkan mode pengamatan (default) |
0x01 | Mengaktifkan mode pengamatan |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 oktet | Lihat kode status di tabel 140 Spesifikasi NCI. |
Notifikasi loop polling
NFCC harus mengirimkan notifikasi NCI_ANDROID_POLLING_FRAME_NTF
ke host
setelah setiap frame loop polling. Saat notifikasi RF_FIELD_INFO_NTF
dan
NCI_ANDROID_POLLING_FRAME_NTF
dibuat, NFCC harus mengirim
NCI_ANDROID_POLLING_FRAME_NTF
setelah RF_FIELD_INFO_NTF
.
Notifikasi NCI_ANDROID_POLLING_FRAME_NTF
tidak bergantung pada apakah
mode pengamatan aktif atau tidak. Saat mode pengamatan aktif,
NFCC harus selalu mengirim notifikasi NCI_ANDROID_POLLING_FRAME_NTF
sebelum
melanjutkan transaksi.
NCI_ANDROID_POLLING_FRAME_NTF
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Data Polling[0..n] | (m +3) * n octet | Daftar permintaan polling yang diterima sejak notifikasi terakhir. Setiap hasil memberikan jenis (teknologi) permintaan yang diterima dan data yang dapat diidentifikasi dari permintaan, bergantung pada teknologi. | |||||
Jenis | 1 octet | Lihat jenis frame. | |||||
Tanda | 1 oktet | Lihat byte flag. | |||||
Panjang | 1 octet | Panjang (m) laporan data polling termasuk kolom stempel waktu dan gain. | |||||
Stempel waktu | 4 octet | Stempel waktu yang diukur dalam milidetik sejak penerimaan permintaan polling, big endian. | |||||
Penguatan | 1 octet | Kekuatan permintaan polling.
0xFF menunjukkan bahwa nilai tidak tersedia. |
|||||
Data | m - 5 oktet | Menampilkan data yang dapat diidentifikasi yang ada dalam permintaan polling |
Jenis bingkai
Frame polling | Jenis | Ukuran | Nilai/Deskripsi | |
---|---|---|---|---|
Kolom jarak jauh | 0x00 | 1 octet | 0x00 | Kolom nonaktif |
0x01 | Kolom aktif | |||
0x02..0xFF | RFU | |||
NFC-A | 0x01 | n octet | Nilai harus menyertakan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
NFC-B | 0x02 | n oktet | Nilai harus menyertakan byte AIF dan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
NFC-F | 0x03 | n octet | Nilai harus menyertakan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
NFC-V | 0x04 | n octet | Nilai harus menyertakan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
Tidak diketahui | 0x07 | n oktet | Data frame mentah |
Definisi byte flag
Tanda | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | |
0 | Frame pendek | RFU | UU | UU | UU | UU | UU | RFU |
1 | Frame panjang |
Kueri perintah status mode pengamatan
Untuk mengambil status mode urutan pasif saat ini, host dapat menggunakan
perintah NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. NFCC harus merespons dengan NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
dengan kode status yang menunjukkan keberhasilan kegagalan.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 octet | Lihat kode status di tabel 140 Spesifikasi NCI, | |
mode amati | 1 octet | 0x00 | Mode amati dinonaktifkan |
0x01 | Mode pengamatan diaktifkan |