Android के मालिकाना हक वाले NCI के निर्देश

एनएफ़सी कंट्रोलर इंटरफ़ेस (एनसीआई) का इस्तेमाल, एनएफ़सी कंट्रोलर (एनएफ़सीसी) के साथ इंटरैक्ट करने के लिए किया जाता है. इस पेज पर Android के मालिकाना हक वाले NCI कमांड की खास बातें बताई गई हैं.

एनसीआई की परिभाषाएं

Android के मालिकाना हक वाले एनसीआई कमांड, मालिकाना हक वाले ग्रुप आईडी (जीआईडी) 0xF और 0xC के Android ऑपरेंड कोड आइडेंटिफ़ायर (ओआईडी) कोड स्पेस का इस्तेमाल करते हैं.

सामान्य पैकेट फ़ॉर्मैट

Android एनसीआई पैकेट फ़ॉर्मैट, एनसीआई स्पेसिफ़िकेशन का पालन करता है. यह Group_ID 0xFऔर Opcode_ID 0x0C का इस्तेमाल करके, कंट्रोल पैकेट के लिए एनसीआई स्पेसिफ़िकेशन का पालन करता है. Android के हर मालिकाना मैसेज के लिए, पैकेट पेलोड का पहला बाइट, Android ऑपरेंड कोड (0x0C) पर सेट होना चाहिए. Android कंट्रोल पैकेट, निर्देशों, जवाबों, और सूचनाओं की पहचान करने के लिए, स्टैंडर्ड निर्देशों की तरह ही Message_Type और PBF का इस्तेमाल करते हैं.

Android पैकेट फ़ॉर्मैट यहां दी गई टेबल में दिखाया गया है:

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया (आरएफ़यू) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

असाइन किए गए Android ऑपरेंड कोड आइडेंटिफ़ायर, नीचे दी गई टेबल में दिए गए हैं. अगले सेक्शन में, हर पैकेट के लिए स्पेसिफ़िकेशन दिया गया है.

Android OID मैसेज का टाइप मैसेज का नाम
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_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_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

सुविधाओं की जानकारी पाने का निर्देश

होस्ट, NFCC के साथ काम करने वाली Android की मालिकाना हक वाली सुविधाओं की सूची के बारे में क्वेरी करने के लिए, NCI_ANDROID_GET_CAPS_CMD का इस्तेमाल करता है. NCI_ANDROID_GET_CAPS_CMD कमांड में कोई पैरामीटर नहीं होता.

एनएफ़सीसी को NCI_ANDROID_GET_CAPS_RSP स्टेटस के साथ STATUS_OK जवाब देना होगा. साथ ही, काम करने वाली सुविधाओं और सुविधाओं की सूची भी देनी होगी.

अगर एनएफ़सीसी NCI_ANDROID_GET_CAPS_CMD के साथ काम नहीं करता है, तो होस्ट को यह मानना होगा कि हर एक सुविधा डिफ़ॉल्ट वैल्यू के हिसाब से काम करती है. अगर एनएफ़सी के जवाब में, किसी खास क्षमता के बारे में जानकारी नहीं दी जाती है, तो होस्ट को यह मानकर चलना चाहिए कि उस सुविधा में डिफ़ॉल्ट तौर पर तय की गई वैल्यू है.

NCI_ANDROID_GET_CAPS_CMD

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
लागू नहीं 0 ऑक्टेट

NCI_ANDROID_GET_CAPS_RSP

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
स्थिति 1 ऑक्टेट एनसीआई स्पेसिफ़िकेशन की टेबल 140 में स्टेटस कोड देखें.
Android_Version दो ऑक्टेट इससे, Android की उन ज़रूरी शर्तों के वर्शन की पहचान होती है जिन्हें एनएफ़सीसी लागू करता है.
0x0000 Android 15
सुविधाओं की संख्या 1 ऑक्टेट काम करने वाली सुविधाओं की संख्या (n)
Capabilities[0..n] (m + 2) * n ऑक्टेट इस्तेमाल की जा सकने वाली सुविधाएं
टाइप 1 ऑक्टेट क्षमता का आइडेंटिफ़ायर
लेन 1 ऑक्टेट वैल्यू की लंबाई (मीटर)
वैल्यू m ऑक्टेट सुविधा की वैल्यू
Android के मालिकाना हक वाली क्षमताएं
क्षमता का नाम आईडी साइज़ वैल्यू/ब्यौरा
ऑब्ज़र्व मोड 0x00 1 ऑक्टेट निगरानी मोड के लिए सहायता.
0x00 (डिफ़ॉल्ट) - इस सुविधा के साथ काम नहीं करता.
0x01 - होस्ट से आरएफ बंद करने की सुविधा के साथ काम करता है (Android 15 या उसके बाद के वर्शन के लिए ज़रूरी है).
अन्य सभी वैल्यू, आरएफ़यू हैं.
पोलिंग फ़्रेम की सूचना 0x01 1 ऑक्टेट पोलिंग फ़्रेम की सूचनाओं के लिए सहायता. अगर यह सुविधा काम करती है, तो 0x01. अगर यह सुविधा काम नहीं करती है, तो 0x00 (डिफ़ॉल्ट). अन्य सभी वैल्यू, आरएफ़यू हैं.
बैटरी सेव करने वाला मोड 0x02 1 ऑक्टेट बैटरी सेव करने वाले मोड के साथ काम करना. अगर यह सुविधा काम करती है, तो 0x01. अगर यह सुविधा काम नहीं करती है, तो 0x00 (डिफ़ॉल्ट). अन्य सभी वैल्यू, आरएफ़यू हैं.
Auotransact polling loop filter 0x03 1 ऑक्टेट फ़र्मवेयर में पोलिंग लूप फ़िल्टर के लिए सहायता, ताकि निगरानी मोड को दुनिया भर में चालू होने पर, खास पैटर्न के लिए निगरानी मोड को बायपास किया जा सके.
0x00 (डिफ़ॉल्ट) - इस सुविधा के साथ काम नहीं करता
0x01 - पोलिंग लूप फ़िल्टर के साथ काम करता है
अन्य सभी वैल्यू, आरएफ़यू हैं
0x04..0xFF 0 ऑक्टेट आने वाले समय में इस्तेमाल के लिए रिज़र्व किया गया

बैटरी बचाने का कमांड

एनएफ़सीसी को पावर सेविंग मोड में ट्रांज़िशन करने के लिए, होस्ट NCI_ANDROID_POWER_SAVING_CMD कमांड का इस्तेमाल कर सकता है. एनएफ़सीसी को NCI_ANDROID_POWER_SAVING_RSP के साथ जवाब देना चाहिए. साथ ही, इसमें स्टेटस कोड देकर यह बताना चाहिए कि अनुरोध पूरा हो गया है या नहीं.

पावर सेविंग मोड में, होस्ट को एनएफ़सीसी को कोई निर्देश नहीं भेजना चाहिए और एनएफ़सीसी को होस्ट को कोई सूचना या जवाब नहीं भेजना चाहिए. एनएफ़सीसी या एम्बेड किया गया सुरक्षित एलिमेंट (eSE), पावर सेविंग मोड चालू करने से पहले सेट किए गए रूटिंग कॉन्फ़िगरेशन के हिसाब से, पेमेंट के आने वाले अनुरोधों को अपने-आप स्वीकार कर सकता है.

फ़ुल पावर मोड पर वापस जाने के लिए, होस्ट एनएफ़सीसी को रीसेट या फिर से शुरू कर सकता है.

NCI_ANDROID_POWER_SAVING_CMD

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
बैटरी सेव करने वाला मोड 1 ऑक्टेट 0x00 बैटरी सेव करने वाला मोड बंद करना
0x01 बैटरी सेव करने वाला मोड चालू करें

NCI_ANDROID_POWER_SAVING_RSP

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
स्थिति 1 ऑक्टेट एनसीआई स्पेसिफ़िकेशन की टेबल 140 में स्टेटस कोड देखें,

निगरानी मोड सेट करने का निर्देश

निगरानी मोड को चालू या बंद करने के लिए, होस्ट NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD कमांड का इस्तेमाल कर सकता है. एनएफ़सीसी को जवाब में, स्टेटस कोड के साथ NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP का इस्तेमाल करना होगा. इससे यह पता चलेगा कि खरीदारी पूरी नहीं हो पाई.

निगरानी मोड बंद होने पर, एनएफ़सीसी को गतिविधि की तकनीकी जानकारी के मुताबिक, स्टैंडर्ड सुनने के मोड की गतिविधि को लागू करना होगा.

जब निगरानी मोड चालू होता है, तो NFCC को सुनने के मोड में पोल करने के दौरान, किसी भी पोल अनुरोध का जवाब नहीं देना चाहिए. ऐसा तब तक नहीं करना चाहिए, जब तक होस्ट से साफ़ तौर पर अनुमति न मिल जाए. फ़ील्ड ऐक्टिवेशन का पता चलने पर, एनएफ़सी को RF_FIELD_INFO_NTF सूचना भेजनी चाहिए, जैसा कि एनसीआई स्पेसिफ़िकेशन के सेक्शन 5.3 में बताया गया है. अगर पोल मोड डिस्कवरी चालू है, तो एनएफ़सीसी को गतिविधि की तकनीकी जानकारी के मुताबिक, पोल मोड गतिविधि को लागू करना होगा. एनएफ़सीसी, पोल की जानकारी को कैश मेमोरी में सेव कर सकता है, ताकि निगरानी मोड के बंद होते ही डिवाइस को तुरंत चालू किया जा सके.

अगर होस्ट किसी वजह से बंद हो जाता है, तो NFCC को निगरानी मोड बंद कर देना चाहिए. उदाहरण के लिए, बैटरी खत्म होने या उपयोगकर्ता के बंद करने की वजह से. इससे SE लेन-देन जारी रह सकते हैं.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
ऑब्ज़र्व मोड 1 ऑक्टेट 0x00 निगरानी मोड बंद करना (डिफ़ॉल्ट)
0x01 निगरानी मोड चालू करना

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
स्थिति 1 ऑक्टेट एनसीआई स्पेसिफ़िकेशन की टेबल 140 में स्टेटस कोड देखें.

पोलिंग लूप की सूचना

हर पोलिंग लूप फ़्रेम के बाद, एनएफ़सीसी को होस्ट को NCI_ANDROID_POLLING_FRAME_NTF सूचना भेजनी चाहिए. जब RF_FIELD_INFO_NTF और NCI_ANDROID_POLLING_FRAME_NTF, दोनों सूचनाएं जनरेट होती हैं, तो एनएफ़सीसी को RF_FIELD_INFO_NTF के बाद NCI_ANDROID_POLLING_FRAME_NTF भेजनी होगी.

NCI_ANDROID_POLLING_FRAME_NTF की सूचना, इस बात पर निर्भर नहीं करती कि निगरानी मोड चालू है या नहीं. निगरानी मोड चालू होने पर, लेन-देन शुरू करने से पहले, एनएफ़सीसी को हमेशा NCI_ANDROID_POLLING_FRAME_NTF सूचना भेजनी होगी.

NCI_ANDROID_POLLING_FRAME_NTF

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
Polling Data[0..n] (m +3) * n ऑक्टेट पिछली सूचना के बाद से मिले, पोलिंग के अनुरोधों की सूची. हर नतीजा, अनुरोध किए गए अनुरोधों के टाइप (टेक्नोलॉजी) और अनुरोध से पहचान करने लायक डेटा देता है. यह डेटा टेक्नोलॉजी पर निर्भर करता है.
टाइप 1 ऑक्टेट फ़्रेम के टाइप देखें.
झंडे 1 ऑक्टेट फ़्लैग बाइट देखें.
लंबाई 1 ऑक्टेट पोलिंग डेटा रिपोर्ट की लंबाई (मी॰) जिसमें टाइमस्टैंप और गेन फ़ील्ड शामिल हैं.
टाइमस्टैंप 4 ऑक्टेट पोलिंग अनुरोध मिलने के मिलीसेकंड में मेज़र किया गया टाइमस्टैंप, बिग एंडियन.
गेन 1 ऑक्टेट पोलिंग के अनुरोध की ज़रूरत.
0xFF से पता चलता है कि वैल्यू उपलब्ध नहीं है.
डेटा मी॰ - 5 ऑक्टेट पोलिंग अनुरोध में मौजूद, पहचान से जुड़ा डेटा दिखाता है
फ़्रेम के टाइप
पोल फ़्रेम टाइप साइज़ वैल्यू/ब्यौरा
रिमोट फ़ील्ड 0x00 1 ऑक्टेट 0x00 फ़ील्ड बंद है
0x01 फ़ील्ड चालू है
0x02..0xFF आरएफ़यू
एनएफ़सी-ए 0x01 n ऑक्टेट वैल्यू में ISO 14443-3 कमांड शामिल होना चाहिए. उदाहरण के लिए, REQ या WUP
एनएफ़सी-बी 0x02 n ऑक्टेट वैल्यू में AIF बाइट और ISO 14443-3 कमांड शामिल होना चाहिए (उदाहरण के लिए, REQ या WUP)
एनएफ़सी-एफ़ 0x03 एन ऑक्टेट वैल्यू में ISO 14443-3 कमांड शामिल होना चाहिए. उदाहरण के लिए, REQ या WUP
एनएफ़सी-वी 0x04 n ऑक्टेट वैल्यू में ISO 14443-3 कमांड शामिल होना चाहिए. उदाहरण के लिए, REQ या WUP
कोई जानकारी नहीं है 0x07 n ऑक्टेट रॉ फ़्रेम डेटा
फ़्लैग बाइट की परिभाषा
झंडे
b0 b1 बी2 b3 बी4 b5 b6 b7
0 छोटा फ़्रेम आरएफ़यू आरएफ़यू आरएफ़यू आरएफ़यू आरएफ़यू आरएफ़यू आरएफ़यू
1 लंबा फ़्रेम

'निगरानी मोड की स्थिति' क्वेरी करने का निर्देश

पैसिव ऑर्डर मोड की मौजूदा स्थिति देखने के लिए, होस्ट NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD कमांड का इस्तेमाल कर सकता है. एनएफ़सीसी को NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP के साथ जवाब देना चाहिए. साथ ही, स्टेटस कोड से यह बताना चाहिए कि अनुरोध पूरा हुआ या नहीं.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
लागू नहीं 0 ऑक्टेट

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

पेलोड फ़ील्ड साइज़ वैल्यू/ब्यौरा
स्थिति 1 ऑक्टेट एनसीआई स्पेसिफ़िकेशन की टेबल 140 में स्टेटस कोड देखें,
निगरानी मोड 1 ऑक्टेट 0x00 ऑब्ज़र्व मोड बंद किया गया
0x01 निगरानी मोड चालू है