NFC Controller Interface (NCI) digunakan untuk berinteraksi dengan Pengontrol NFC (NFCC). Halaman ini menjelaskan spesifikasi Android perintah NCI eksklusif.
Definisi NCI
Perintah NCI eksklusif Android menggunakan ID grup eksklusif (GID) 0xF
dan ruang kode ID opcode (OID) Android dari 0xC
.
Format paket yang umum
Format paket Android NCI mengikuti spesifikasi NCI untuk paket kontrol
menggunakan Group_ID 0xF
dan Opcode_ID 0x0C
eksklusif. Untuk setiap Android
pesan eksklusif, byte pertama dari payload paket harus diatur ke
Opcode Android (0x0C
). Paket kontrol Android menggunakan Message_Type
dan
PBF
untuk mengidentifikasi perintah, respons, dan notifikasi seperti
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. Tujuan spesifikasi untuk setiap paket berikutnya 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. Tujuan
Perintah NCI_ANDROID_GET_CAPS_CMD
tidak mengambil parameter apa pun.
NFCC harus merespons dengan respons NCI_ANDROID_GET_CAPS_RSP
dengan status
dari STATUS_OK
serta daftar kemampuan dan fitur yang didukung.
Jika NFCC tidak mendukung NCI_ANDROID_GET_CAPS_CMD
, host harus mengasumsikan
bahwa masing-masing kemampuan mengambil
nilai {i>default<i} yang telah ditentukan. Jika ditentukan
tidak ditunjukkan oleh NFCC sebagai respon, {i>host<i} harus mengasumsikan bahwa
kemampuan memiliki nilai {i>
default<i} yang ditentukan.
NCI_ANDROID_GET_CAPS_CMD
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
NCI_ANDROID_GET_CAPS_RSP
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 oktet | Lihat kode status di tabel 140 dalam Spesifikasi NCI. | |||||
Android_Version
|
2 oktet | Mengidentifikasi versi persyaratan Android yang diimplementasikan oleh NFCC. | |||||
0x0.000 | Android 15 | ||||||
Jumlah kemampuan | 1 oktet | Jumlah (n) kemampuan yang didukung | |||||
Kemampuan[0..n] | (m + 2) * n oktet | Kemampuan yang didukung | |||||
Jenis | 1 oktet | ID kemampuan | |||||
Len | 1 oktet | Panjang (m) nilai | |||||
Nilai | m oktet | Nilai kemampuan |
Kemampuan eksklusif Android
Nama kemampuan | ID | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|---|
Mode Amati | 0x00 | 1 oktet | 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 baru). 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 oktet | 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 oktet | Dicadangkan untuk penggunaan pada masa mendatang |
Perintah hemat daya
Untuk mengalihkan NFCC ke mode hemat daya, {i>host<i} 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, {i>host<i} tidak boleh mengirimkan perintah apa pun ke NFCC dan NFCC tidak boleh mengirim pemberitahuan atau tanggapan apa pun kepada {i>host<i}. NFCC atau Elemen Pengaman yang disematkan (eSE) dapat otomatis menerima permintaan pembayaran masuk sesuai dengan konfigurasi perutean yang ditetapkan sebelum mengaktifkan mode hemat daya mode.
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 oktet | 0x00 | Nonaktifkan mode hemat daya |
0x01 | Aktifkan mode hemat daya |
NCI_ANDROID_POWER_SAVING_RSP
Kolom Payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 oktet | Lihat kode status di tabel 140 dalam Spesifikasi NCI, |
Menetapkan perintah mode amati
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
gagal.
Saat mode pengamatan dinonaktifkan, NFCC harus mengimplementasikan aktivitas mode pemrosesan standar sesuai Spesifikasi Teknis Aktivitas.
Saat mode pengamatan aktif, NFCC tidak boleh merespons polling apa pun
permintaan selama loop polling dalam mode pemrosesan, hingga diizinkan secara eksplisit oleh
{i>host<i}. 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 menyimpan informasi polling ke dalam cache sehingga dapat segera melanjutkan dengan perangkat
aktivasi segera setelah
mode amati dinonaktifkan.
NFCC akan menonaktifkan mode pengamatan jika host dimatikan karena alasan apa pun (misalnya, kehabisan baterai atau penonaktifan yang dimulai pengguna) sehingga SE transaksi dapat dilanjutkan.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Kolom Payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
mode amati | 1 oktet | 0x00 | Nonaktifkan mode amati (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 dalam Spesifikasi NCI. |
Notifikasi loop polling
NFCC harus mengirimkan notifikasi NCI_ANDROID_POLLING_FRAME_NTF
ke host
setelah setiap {i>frame<i} loop polling. Jika RF_FIELD_INFO_NTF
dan
Notifikasi 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 amati aktif atau tidak. Saat mode amati 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 oktet | Daftar permintaan polling yang diterima sejak terakhir notifikasi. Setiap hasil memberikan jenis (teknologi) yang diterima dan data yang dapat diidentifikasi dari permintaan tergantung pada teknologinya. | |||||
Jenis | 1 oktet | Lihat jenis bingkai. | |||||
Tanda | 1 oktet | Lihat byte flag. | |||||
Panjang | 1 oktet | Panjang (m) laporan data polling termasuk stempel waktu dan kolom keuntungan. | |||||
Stempel waktu | 4 oktet | Stempel waktu yang diukur dalam milidetik penerimaan permintaan polling, big endian. | |||||
Bertambah | 1 oktet | Kekuatan permintaan polling.
0xFF menunjukkan bahwa nilai tidak tersedia. |
|||||
Data | m - 5 oktet | Menampilkan data identitas yang ada di permintaan polling |
Jenis frame
Frame polling | Jenis | Ukuran | Nilai/Deskripsi | |
---|---|---|---|---|
Kolom jarak jauh | 0x00 | 1 oktet | 0x00 | Kolom nonaktif |
0x01 | Kolom di | |||
0x02..0xFF | UU | |||
NFC-A | 0x01 | n oktet | 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 oktet | Nilai harus menyertakan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
NFC-V | 0x04 | n oktet | Nilai harus menyertakan perintah ISO 14443-3 (misalnya, REQ atau WUP) | |
Tidak diketahui | 0x07 | n oktet | Data frame mentah |
Flag definisi byte
Tanda | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | {i>b1<i} | b2 | b3 | b4 | {i>b5<i} | B6 | {i>b7<i} | |
0 | Frame pendek | UU | UU | UU | UU | UU | UU | UU |
1 | Frame panjang |
Mengkueri perintah status mode pengamatan
Untuk mengambil status mode urutan pasif saat ini, {i>host<i} dapat menggunakan
menggunakan perintah NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. NFCC harus
respons dengan NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
dengan status
kode 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 oktet | Lihat kode status di tabel 140 dalam Spesifikasi NCI, | |
mode amati | 1 oktet | 0x00 | Mode pengamatan dinonaktifkan |
0x01 | Mode pengamatan diaktifkan |