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 operasi (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 disetel ke opcode Android (0x0C
). Paket kontrol Android menggunakan Message_Type
dan PBF
untuk mengidentifikasi perintah, respons, dan notifikasi dengan cara yang sama 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. Spesifikasi untuk setiap paket akan dibahas di bagian berikutnya.
Perintah get capabilities
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 dengan respons NCI_ANDROID_GET_CAPS_RSP
dengan status
STATUS_OK
dan daftar kemampuan serta fitur yang didukung.
Jika NFCC tidak mendukung NCI_ANDROID_GET_CAPS_CMD
, host harus mengasumsikan bahwa setiap kemampuan mengambil nilai default yang ditentukan. Jika kemampuan yang ditentukan tidak ditampilkan oleh NFCC dalam respons, host harus mengasumsikan bahwa kemampuan tersebut memiliki nilai default 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 dalam tabel 140 Spesifikasi NCI. | |||||
Android_Version
|
2 oktet | Mengidentifikasi versi persyaratan Android yang diterapkan oleh NFCC. | |||||
0x0000 | Android 15 | ||||||
Jumlah kemampuan | 1 oktet | Jumlah (n) kemampuan yang didukung | |||||
Capabilities[0..n] | (m + 2) * n oktet | Kemampuan yang didukung | |||||
Jenis | 1 oktet | ID kemampuan | |||||
Len | 1 oktet | Panjang (m) nilai | |||||
Nilai | m octet | Nilai kemampuan |
Kemampuan eksklusif Android
Nama kemampuan | ID | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|---|
Mode pengamatan | 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). 0x02 - Mendukung fitur tanpa penonaktifan RF dari host (diperlukan untuk Android 16 dan 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 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 memfilter loop polling di firmware untuk melewati 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 |
|||||
Jumlah entri frame keluar yang didukung | 0x04 | 1 oktet | Jumlah entri frame keluar yang didukung. Diperlukan minimal lima entri frame keluar. | |||||
Anotasi mode pembaca | 0x05 | 1 oktet | Dukungan untuk anotasi mode Pembaca.
0x00 (default) - Tidak mendukung fitur ini. 0x01 - Mendukung fitur ini. Semua nilai lainnya adalah RFU. |
|||||
0x06..0xFF | 0 oktet | Dipesan 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 Secure Element (eSE) tersemat dapat otomatis menerima permintaan pembayaran masuk sesuai dengan konfigurasi perutean yang ditetapkan sebelum mengaktifkan mode hemat 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 oktet | 0x00 | Menonaktifkan mode hemat daya |
0x01 | Mengaktifkan mode hemat daya |
NCI_ANDROID_POWER_SAVING_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Status | 1 oktet | Lihat kode status dalam 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.
Saat mode pengamatan dinonaktifkan, NFCC harus menerapkan aktivitas mode dengarkan standar sesuai dengan Spesifikasi Teknis Aktivitas.
Saat mode pengamatan aktif, NFCC tidak boleh merespons permintaan polling apa pun selama loop polling dalam mode mendengarkan, hingga diizinkan 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 menyimpan informasi polling dalam cache sehingga dapat segera melanjutkan aktivasi perangkat setelah mode pengamatan dinonaktifkan.
NFCC harus menonaktifkan mode pengamatan jika host dimatikan karena alasan apa pun (misalnya, kehabisan baterai atau dimatikan oleh pengguna) sehingga transaksi SE dapat dilanjutkan.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
mode pengamatan | 1 oktet | 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 dalam 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 mengirimkan 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 notifikasi terakhir. Setiap hasil memberikan jenis (teknologi) permintaan yang diterima dan data yang dapat diidentifikasi dari permintaan, bergantung pada teknologi. | |||||
Jenis | 1 oktet | Lihat jenis frame. | |||||
Tanda | 1 oktet | Lihat byte tanda. | |||||
Panjang | 1 oktet | Panjang (m) laporan data polling termasuk kolom stempel waktu dan perolehan. | |||||
Stempel waktu | 4 oktet | Stempel waktu yang diukur dalam milidetik penerimaan permintaan polling, big endian. | |||||
Mendapatkan | 1 oktet | Kekuatan permintaan polling.
0xFF menunjukkan bahwa nilai tidak tersedia. |
|||||
Data | m - 5 oktet | Menampilkan data yang dapat diidentifikasi yang ada dalam permintaan polling |
Jenis frame
Polling frame | Jenis | Ukuran | Nilai/Deskripsi | |
---|---|---|---|---|
Kolom jarak jauh | 0x00 | 1 oktet | 0x00 | Kolom nonaktif |
0x01 | Kolom aktif | |||
0x02..0xFF | RFU | |||
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 |
Definisi byte tanda
Tanda | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | |
0 | Frame pendek | RFU | RFU | RFU | RFU | RFU | RFU | RFU |
1 | Frame panjang |
Perintah status mode pengamatan kueri
Untuk mengambil status mode pesanan 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 atau 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 dalam tabel 140 Spesifikasi NCI, | |
Masker Teknologi | 1 oktet | Masker bit yang menunjukkan teknologi mana yang mengaktifkan mode pengamatan:
|
Menetapkan perintah teknologi pengamat pasif
Untuk menyetel teknologi pengamat pasif, host dapat menggunakan perintah
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
. Perintah ini mengaktifkan atau menonaktifkan mode pengamatan untuk teknologi yang ditentukan tanpa memerlukan RF_DEACTIVATE_CMD
. NFCC harus merespons dengan
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
dengan kode status yang menunjukkan
keberhasilan atau kegagalan.
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Masker Teknologi | 1 oktet | Masker bit yang menunjukkan teknologi mana yang akan diaktifkan mode pengamatannya:
|
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI. |
Menetapkan perintah frame keluar pengamat pasif
Untuk mengonfigurasi tabel frame keluar mode pengamatan, host dapat menggunakan perintah
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. Perintah ini menentukan frame RF yang memicu keluar dari mode pengamatan. Perintah ini hanya dapat dikirim dalam RFST_IDLE
. NFCC harus merespons dengan
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
dengan kode status yang menunjukkan
keberhasilan atau kegagalan.
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Lainnya | 1 oktet | 0x00 - Pesan terakhir 0x01 - Pesan lainnya akan menyusul |
|||||
Waktu tunggu | 2 oktet | Waktu tunggu dalam ms untuk memulihkan mode pengamatan (little endian). | |||||
Jumlah entri Frame RF | 1 oktet | Jumlah kolom entri Frame RF yang akan diikuti (n). 0x00 mereset tabel. | |||||
Entri Frame RF [0..n] | (2+x)*n oktet | ||||||
Jenis-Penentu | 1 oktet | Menentukan jenis frame dan opsi pencocokan. | |||||
Panjang Nilai | 1 oktet | Panjang 'x' kolom Nilai. | |||||
Nilai | x octet | Status Daya (1), Data Referensi (n), Masker (n). 1 <= n <= 16. |
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, |
Mendapatkan perintah frame keluar pengamat pasif
Untuk mengambil konfigurasi saat ini dari tabel frame keluar mode pengamatan, host dapat menggunakan perintah NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. NFCC harus merespons dengan NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
, diikuti dengan NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
.
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Jumlah entri frame keluar mode pengamatan | 1 oktet | Jumlah kolom entri frame keluar mode pengamatan yang akan diikuti (n). | |
Entri [0..n] | x+2 oktet | Jenis-Penentu (1), Panjang (1), Nilai (x). |
Perintah NCI kosong
Untuk mengosongkan NCI, host dapat menggunakan perintah NCI_ANDROID_BLANK_NCI_CMD
. NFCC
harus merespons dengan NCI_ANDROID_BLANK_NCI_RSP
dengan kode status yang menunjukkan
keberhasilan atau kegagalan.
NCI_ANDROID_BLANK_NCI_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Panjang Rangka | 1 oktet | Panjang data frame | |||||
Data Frame | n oktet | Data frame |
NCI_ANDROID_BLANK_NCI_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, |
Menetapkan perintah anotasi loop polling
Untuk menyetel anotasi loop polling, host dapat menggunakan
perintah NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
untuk mengisi tabel frame polling
kustom. Tabel ini menentukan frame RF kustom yang akan disisipkan di dalam loop penemuan standar. Perintah ini hanya dapat dikirim di RFST_IDLE
. NFCC harus merespons dengan NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
dengan kode status yang menunjukkan keberhasilan atau kegagalan.
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
Kolom payload | Ukuran | Nilai/deskripsi | ||
---|---|---|---|---|
Jumlah entri frame RF | 1 oktet | Jumlah entri yang akan diikuti (n), antara 0 dan 4. n=0 menonaktifkan fitur ini. | ||
Entri frame RF [1..n] | 2+x oktet | |||
Jenis-Penentu | 1 oktet | Menentukan jenis frame, teknologi, dan posisi dalam loop penemuan. | ||
Panjang | 1 oktet | Panjang Nilai (x). | ||
Nilai | x octet | Waktu tunggu (1 byte) dan Frame RF (1-16 byte). |
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, |
Kueri perintah hemat daya
Untuk mengkueri mode hemat daya, host dapat menggunakan perintah
NCI_ANDROID_QUERY_POWER_SAVING_CMD
. NFCC harus merespons dengan
NCI_ANDROID_QUERY_POWER_SAVING_RSP
dengan kode status yang menunjukkan keberhasilan
atau kegagalan.
NCI_ANDROID_QUERY_POWER_SAVING_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
NCI_ANDROID_QUERY_POWER_SAVING_RSP
Kolom payload | Ukuran | Nilai/deskripsi | |
---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, |
Notifikasi penangguhan pengamat pasif
NFCC harus mengirimkan notifikasi NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
ke host saat frame keluar terdeteksi, sehingga mode pengamatan ditangguhkan.
NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
Jenis | 1 oktet | Jenis frame: 0x00=Type-A, 0x01=Type-B | |||||
Panjang | 1 oktet | Panjang Nilai (n) | |||||
Nilai | n oktet | Menerima frame yang cocok dengan entri frame keluar. |
Notifikasi pengamat pasif dilanjutkan
NFCC harus mengirim notifikasi NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
ke host saat pengamat pasif dilanjutkan setelah waktu tunggu atau kondisi lainnya.
NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
Mendapatkan perintah anotasi loop polling
Untuk membaca tabel frame polling kustom NFCC, host dapat menggunakan perintah
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
. Perintah ini hanya dapat
dikirim di RFST_IDLE
. NFCC harus merespons dengan
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
dengan kode status yang menunjukkan
keberhasilan atau kegagalan dan informasi frame polling kustom.
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
Kolom payload | Ukuran | Nilai/deskripsi | |||||
---|---|---|---|---|---|---|---|
T/A | 0 oktet |
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
Kolom payload | Ukuran | Nilai/deskripsi | ||
---|---|---|---|---|
Status | 1 oktet | Lihat kode status dalam tabel 140 Spesifikasi NCI, | ||
Jumlah entri frame RF | 1 oktet | Jumlah entri yang akan diikuti (n), antara 0 dan 4. n=0 menonaktifkan fitur ini. | ||
Entri frame RF [1..n] | 2+x oktet | Jenis-Penentu | 1 oktet | Menentukan jenis frame, teknologi, dan posisi dalam loop penemuan. |
Panjang | 1 oktet | Panjang Nilai (x). | ||
Nilai | x octet | Waktu tunggu (1 byte) dan Frame RF (1-16 byte). |
Implementasi
Untuk implementasi referensi, lihat berikut ini: