NFC denetleyici arayüzü (NCI), NFC denetleyiciyle (NFCC) etkileşim kurmak için kullanılır. Bu sayfada, Android'e özel NCI komutlarının özellikleri açıklanmaktadır.
NCI tanımları
Android'e özel NCI komutları, 0xC
özel grup kimliği (GID) 0xF
ve Android işlem kodu tanımlayıcısı (OID) kod alanını kullanır.
Ortak paket biçimi
Android NCI paket biçimi, özel Group_ID 0xF
ve Opcode_ID 0x0C
kullanarak kontrol paketleri için NCI spesifikasyonuna uyar. Her Android özel mesajı için paket yükünün ilk baytı Android kod komutuna (0x0C
) ayarlanmalıdır. Android kontrol paketleri, standart komutlara benzer şekilde komutları, yanıtları ve bildirimleri tanımlamak için Message_Type
ve PBF
kullanır.
Android paket biçimi aşağıdaki tabloda gösterilmektedir:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
gelecekte kullanılmak üzere ayrılmıştır (RFU) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
Atanmış Android kod komutu tanımlayıcıları aşağıdaki tabloda listelenmiştir. Her paketle ilgili teknik özellikler sonraki bölümlerde açıklanmıştır.
Android OID | Mesaj türü | Mesaj adı |
---|---|---|
0x00 | NCI_MT_CMD | NCI_ANDROID_GET_CAPS_CMD |
NCI_MT_RSP | NCI_ANDROID_GET_CAPS_RSP
|
|
0x01 | NCI_ÇMY_CMD | NCI_ANDROID_POWER_SAVING_CMD
|
NCI_MT_RSP | NCI_ANDROID_POWER_SAVING_RSP
|
|
0x02 | NCI_ÇMY_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 |
Get capabilities komutu
Barındırıcı, NFCC tarafından desteklenen Android özel özelliklerinin listesini sorgulamak için NCI_ANDROID_GET_CAPS_CMD
'ü kullanır. NCI_ANDROID_GET_CAPS_CMD
komutu parametre almaz.
NFCC, STATUS_OK
durumuna sahip NCI_ANDROID_GET_CAPS_RSP
yanıtını ve desteklenen özelliklerin listesini göndermelidir.
NFCC, NCI_ANDROID_GET_CAPS_CMD
özelliğini desteklemiyorsa ana makine, özelliklerin her birinin varsayılan olarak belirtilen değeri aldığını varsaymalıdır. NFCC, yanıtta belirtilen bir özelliği döndürmezse ana makine, özelliğin varsayılan olarak belirtilen değere sahip olduğunu varsaymalıdır.
NCI_ANDROID_GET_CAPS_CMD
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Yok | 0 bayt |
NCI_ANDROID_GET_CAPS_RSP
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Durum | 1 sekizlik | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. | |||||
Android_Version
|
2 sekizlik | NFCC tarafından uygulanan Android şartlarının sürümünü tanımlar. | |||||
0x0000 | Android 15 | ||||||
Yetenek sayısı | 1 sekizlik | Desteklenen özelliklerin sayısı (n) | |||||
Capabilities[0..n] | (m + 2) * n sekizlik | Desteklenen özellikler | |||||
Tür | 1 sekizlik | Yeteneğin tanımlayıcısıdır. | |||||
Len | 1 bayt | Değerin uzunluğu (m) | |||||
Değer | m bayt | Özelliğin değeri |
Android'e özel özellikler
Kapasite adı | Kimlik | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|---|
Gözlemleme modu | 0x00 | 1 bayt | Gözlem modu desteği.
0x00 (varsayılan) - Bu özellik desteklenmez. 0x01 - Ana makineden RF devre dışı bırakma özelliğini destekler (Android 15 veya sonraki sürümler için gereklidir). Diğer tüm değerler RFU'dur. |
|||||
Anket çerçevesi bildirimi | 0x01 | 1 bayt | Anket çerçevesi bildirimleri için destek. Destekleniyorsa 0x01, desteklenmiyorsa 0x00 (varsayılan). Diğer tüm değerler RFU'dur. | |||||
Güç tasarrufu modu | 0x02 | 1 bayt | Güç tasarrufu modu desteği. Destekleniyorsa 0x01, desteklenmiyorsa 0x00 (varsayılan) değerini alır. Diğer tüm değerler RFU'dur. | |||||
Otomatik işleme anket döngüsü filtresi | 0x03 | 1 bayt | Gözlem modu global olarak etkinleştirildiğinde belirli kalıplar için gözlem modunu atlamak üzere donanım yazılımında anket döngüsü filtreleri desteği.
0x00 (varsayılan) - Bu özelliği desteklemez 0x01 - Anket döngüsü filtrelerini destekler Diğer tüm değerler RFU'dur |
|||||
0x04..0xFF | 0 bayt | Gelecekte kullanılmak üzere ayrılmıştır |
Güç tasarrufu komutu
NFCC'yi güç tasarrufu moduna geçirmek için ana makine NCI_ANDROID_POWER_SAVING_CMD
komutunu kullanabilir. NFCC, başarıyı veya başarısızlığı belirten bir durum koduyla NCI_ANDROID_POWER_SAVING_RSP
ile yanıt vermelidir.
Güç tasarrufu modundayken ana cihaz NFCC'ye herhangi bir komut göndermemelidir ve NFCC ana cihaza herhangi bir bildirim veya yanıt göndermemelidir. NFCC veya yerleştirilmiş Güvenlik Unsuru (eSE), güç tasarrufu modunu etkinleştirmeden önce ayarlanan yönlendirme yapılandırmasına göre gelen ödeme isteklerini otomatik olarak kabul edebilir.
Ana makine, tam güç moduna dönmek için NFCC'yi sıfırlayabilir veya yeniden başlatabilir.
NCI_ANDROID_POWER_SAVING_CMD
Yük alanları | Boyut | Değer/açıklama | |
---|---|---|---|
Güç tasarrufu modu | 1 sekizlik | 0x00 | Güç tasarrufu modunu devre dışı bırakma |
0x01 | Güç tasarrufu modunu etkinleştirme |
NCI_ANDROID_POWER_SAVING_RSP
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Durum | 1 sekizlik | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. |
Gözlem modu komutunu ayarlama
Gözlem modunu etkinleştirmek veya devre dışı bırakmak için ana makine NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
komutunu kullanabilir. NFCC, başarı veya başarısızlığı belirten bir durum koduyla NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
ile yanıt vermelidir.
Gözlemleme modu devre dışı bırakıldığında NFCC, Etkinlik Teknik Şartnamesi'ne göre standart dinleme modu etkinliğini uygulamalıdır.
Gözlem modu etkinken NFCC, ana makine tarafından açıkça yetki verilmediği sürece dinleme modundaki anket döngüsü sırasında herhangi bir anket isteğine yanıt vermemelidir. NFCC, alan etkinleştirmesini algıladığında RF_FIELD_INFO_NTF
bildirimini (NCI spesifikasyonunun 5.3 numaralı bölümünde tanımlandığı şekilde) göndermelidir. Anket modu keşfi etkinse NFCC, anket modu etkinliğini Etkinlik Teknik Şartnamesi'ne göre uygulamalıdır.
NFCC, gözlem modu devre dışı bırakıldığında cihaz etkinleştirme işlemine hemen devam edebilmek için anket bilgilerini önbelleğe alabilir.
SE işlemlerinin devam edebilmesi için NFCC, ana makine herhangi bir nedenle (örneğin, pil bitmesi veya kullanıcı tarafından başlatılan kapatma işlemi) kapanırsa gözlem modunu kapatmalıdır.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Yük alanları | Boyut | Değer/açıklama | |
---|---|---|---|
gözlem modu | 1 bayt | 0x00 | İzleme modunu devre dışı bırakma (varsayılan) |
0x01 | Gözlem modunu etkinleştir |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Durum | 1 bayt | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. |
Anket döngüsü bildirimi
NFCC, her anket döngüsü çerçevesinden sonra NCI_ANDROID_POLLING_FRAME_NTF
bildirimini ana makineye göndermelidir. Hem RF_FIELD_INFO_NTF
hem de NCI_ANDROID_POLLING_FRAME_NTF
bildirimleri oluşturulduğunda NFCC'nin RF_FIELD_INFO_NTF
tarihinden sonra NCI_ANDROID_POLLING_FRAME_NTF
göndermesi gerekir.
NCI_ANDROID_POLLING_FRAME_NTF
bildirimi, gözlem modunun etkin olup olmadığından bağımsızdır. Gözlem modu etkinken NFCC'nin işleme devam etmeden önce her zaman NCI_ANDROID_POLLING_FRAME_NTF
bildirimi göndermesi gerekir.
NCI_ANDROID_POLLING_FRAME_NTF
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Anket Verileri[0..n] | (m +3) * n sekizlik | Son bildirimden bu yana alınan anket isteklerinin listesi. Her sonuçta, alınan isteklerin türü (teknoloji) ve teknolojiye bağlı olarak istekteki kimliği tanımlayabilecek veriler gösterilir. | |||||
Tür | 1 bayt | Kare türlerini inceleyin. | |||||
Bayraklar | 1 sekizlik | İşaret baytı konusuna bakın. | |||||
Uzunluk | 1 sekizlik | Zaman damgası ve kazanç alanları dahil olmak üzere yoklama veri raporunun uzunluğu (m). | |||||
Zaman damgası | 4 sekizlik | Yoklama isteklerinin alındığını milisaniye cinsinden ölçülen zaman damgası (büyük endian). | |||||
Yoğunluk | 1 bayt | Anket isteği gücü.
0xFF, değerin kullanılamadığını gösterir. |
|||||
Veri | m: 5 bayt | Anket isteğinde bulunan kimliği tanımlayabilecek verileri döndürür |
Çerçeve türleri
Anket çerçevesi | Tür | Boyut | Değer/Açıklama | |
---|---|---|---|---|
Uzak alan | 0x00 | 1 bayt | 0x00 | Alan kapalı |
0x01 | Açık alan | |||
0x02..0xFF | KFU | |||
NFC-A | 0x01 | n bayt | Değer, bir ISO 14443-3 komutu (ör. REQ veya WUP) içermelidir. | |
NFC-B | 0x02 | n bayt | Değer, bir AIF baytı ve ISO 14443-3 komutu (ör. REQ veya WUP) içermelidir. | |
NFC-F | 0x03 | n bayt | Değer, bir ISO 14443-3 komutu (ör. REQ veya WUP) içermelidir. | |
NFC-V | 0x04 | n sekizlik | Değer, bir ISO 14443-3 komutu (ör. REQ veya WUP) içermelidir. | |
Bilinmiyor | 0x07 | n bayt | Ham çerçeve verileri |
İşaret baytı tanımı
Bayraklar | ||||||||
---|---|---|---|---|---|---|---|---|
CANNOT TRANSLATE | b1 | b2 | b3 | b4 | b5 | b6 | b7 | |
0 | Kısa çerçeve | KFU | RFU | RFU | RFU | RFU | RFU | RFU |
1 | Uzun çerçeve |
Gözlem modu durum sorgusu komutu
Barındırıcı, pasif sipariş modunun mevcut durumunu almak için NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
komutunu kullanabilir. NFCC, başarı veya başarısızlığı belirten bir durum koduyla NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
ile yanıt vermelidir.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Yok | 0 oktet |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Yük alanları | Boyut | Değer/açıklama | |
---|---|---|---|
Durum | 1 bayt | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. | |
gözlem modu | 1 bayt | 0x00 | Gözlem modu devre dışı bırakıldı |
0x01 | Gözlem modu etkin |