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ı, özel grup kimliğini (GID) 0xF
ve Android kod komutu tanımlayıcısını (OID) 0xC
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 paketin spesifikasyonu sonraki bölümlerde verilmiştir.
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_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 |
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 bayt | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. | |||||
Android_Version
|
2 bayt | NFCC tarafından uygulanan Android şartlarının sürümünü tanımlar. | |||||
0x0000 | Android 15 | ||||||
Yetenek sayısı | 1 bayt | Desteklenen özelliklerin sayısı (n) | |||||
Capabilities[0..n] | (m + 2) * n bayt | 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) değerini alır. 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 sorgu 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 ev sahibi 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şik güvenli öğe (eSE), güç tasarrufu modu etkinleştirilmeden ö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 bayt | 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 bayt | NCI Spesifikasyonu'nun 140. tablosundaki durum kodlarına bakın. |
Gözlem modu komutunu ayarlama
Düzenleyen, gözlem modunu etkinleştirmek veya devre dışı bırakmak için NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
komutunu kullanabilir. NFCC, başarıyı 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şmesini 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ılır bırakılmaz cihaz etkinleştirme işlemine hemen devam etmek için anket bilgilerini önbelleğe alabilir.
NFCC, SE işlemlerinin devam edebilmesi için ana makine herhangi bir nedenle (ör. pil bittiyse veya kullanıcı tarafından başlatılan kapatma) 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ştirme |
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, RF_FIELD_INFO_NTF
'ten sonra NCI_ANDROID_POLLING_FRAME_NTF
göndermelidir.
NCI_ANDROID_POLLING_FRAME_NTF
bildirimi, gözlem modunun etkin olup olmadığından bağımsızdır. Gözlem modu etkinken NFCC, işleme devam etmeden önce her zaman bir NCI_ANDROID_POLLING_FRAME_NTF
bildirimi göndermelidir.
NCI_ANDROID_POLLING_FRAME_NTF
Yük alanları | Boyut | Değer/açıklama | |||||
---|---|---|---|---|---|---|---|
Anket Verileri[0..n] | (m +3) * n bayt | 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 bayt | İşaret baytı konusuna bakın. | |||||
Uzunluk | 1 bayt | Zaman damgası ve kazanç alanları dahil anket verileri raporunun uzunluğu (m). | |||||
Zaman damgası | 4 sekizlik | Anket isteklerinin alındığı andan itibaren milisaniye cinsinden ölçülen zaman damgası (büyük endian). | |||||
Kazanç | 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 |
Kare türleri
Anket çerçevesi | Tür | Boyut | Değer/Açıklama | |
---|---|---|---|---|
Uzak alan | 0x00 | 1 sekizlik | 0x00 | Alan kapalı |
0x01 | Alan açık | |||
0x02..0xFF | RFU | |||
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 bayt | 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 | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | |
0 | Kısa kare | RFU | 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 bayt |
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 |