Perintah NCI eksklusif Android

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