Perintah NCI eksklusif Android

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

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
0x05 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
0x06 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x07 NCI_MT_CMD NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x08 NCI_MT_CMD NCI_ANDROID_BLANK_NCI_CMD
NCI_MT_RSP NCI_ANDROID_BLANK_NCI_RSP
0x09 NCI_MT_CMD NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
0x0A NCI_MT_CMD NCI_ANDROID_QUERY_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_POWER_SAVING_RSP
0x0B NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
0x0C NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
0x0D NCI_MT_CMD NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP

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:
  • Bit 0: NFC-A
  • Bit 1: NFC-B
  • Bit 2: NFC-F
  • Bit 3: NFC-V

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:
  • Bit 0: NFC-A
  • Bit 1: NFC-B
  • Bit 2: NFC-F
  • Bit 3: NFC-V
Teknologi yang tidak disetel dalam mask harus terus beroperasi dalam mode dengarkan.

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: