NFC কন্ট্রোলার ইন্টারফেস (NCI) একটি NFC কন্ট্রোলার (NFCC) এর সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত হয়। এই পৃষ্ঠাটি অ্যান্ড্রয়েডের মালিকানাধীন NCI কমান্ডের স্পেসিফিকেশন বর্ণনা করে।
NCI সংজ্ঞা
অ্যান্ড্রয়েডের মালিকানাধীন NCI কমান্ডগুলি মালিকানা গ্রুপ আইডি (GID) 0xF
এবং 0xC
এর Android অপকোড শনাক্তকারী (OID) কোড স্পেস ব্যবহার করে।
সাধারণ প্যাকেট বিন্যাস
অ্যান্ড্রয়েড NCI প্যাকেট বিন্যাস মালিকানাধীন Group_ID 0xF
এবং Opcode_ID 0x0C
ব্যবহার করে নিয়ন্ত্রণ প্যাকেটগুলির জন্য NCI স্পেসিফিকেশন অনুসরণ করে। প্রতিটি অ্যান্ড্রয়েড মালিকানাধীন বার্তার জন্য, প্যাকেট পেলোডের প্রথম বাইটটি অবশ্যই অ্যান্ড্রয়েড অপকোড ( 0x0C
) সেট করতে হবে। অ্যান্ড্রয়েড কন্ট্রোল প্যাকেটগুলি স্ট্যান্ডার্ড কমান্ডের অনুরূপ কমান্ড, প্রতিক্রিয়া এবং বিজ্ঞপ্তিগুলি সনাক্ত করার জন্য Message_Type
এবং PBF
ব্যবহার করে।
অ্যান্ড্রয়েড প্যাকেট বিন্যাস নিম্নলিখিত টেবিলে দেখানো হয়েছে:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type | PBF | Group_ID = 0xF (PROPRIETARY) | |||||
ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত (RFU) | Opcode_ID = 0x0C (ANDROID) | ||||||
Payload_Length | |||||||
Android_Opcode_ID | |||||||
Android_Payload | |||||||
অ্যাসাইন করা অ্যান্ড্রয়েড অপকোড শনাক্তকারী নিম্নলিখিত সারণীতে তালিকাভুক্ত করা হয়েছে। প্রতিটি প্যাকেটের স্পেসিফিকেশন পরবর্তী বিভাগে অনুসরণ করা হয়েছে।
অ্যান্ড্রয়েড ওআইডি | বার্তার ধরন | বার্তার নাম |
---|---|---|
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 |
ক্ষমতা কমান্ড পান
হোস্ট NCI_ANDROID_GET_CAPS_CMD
ব্যবহার করে NFCC দ্বারা সমর্থিত Android মালিকানাধীন বৈশিষ্ট্যগুলির তালিকা অনুসন্ধান করতে। NCI_ANDROID_GET_CAPS_CMD
কমান্ড কোনো প্যারামিটার নেয় না।
NFCC অবশ্যই NCI_ANDROID_GET_CAPS_RSP
প্রতিক্রিয়া সহ STATUS_OK
স্ট্যাটাস এবং সমর্থিত ক্ষমতা এবং বৈশিষ্ট্যগুলির তালিকা সহ সাড়া দিতে হবে।
যদি NFCC NCI_ANDROID_GET_CAPS_CMD
সমর্থন না করে, তাহলে হোস্টকে অবশ্যই ধরে নিতে হবে যে প্রতিটি ক্ষমতাগুলি ডিফল্ট নির্দিষ্ট মান গ্রহণ করে। যদি উত্তরে NFCC দ্বারা একটি নির্দিষ্ট ক্ষমতা ফেরত না দেওয়া হয়, তাহলে হোস্টকে অবশ্যই ধরে নিতে হবে যে ক্ষমতাটির ডিফল্ট নির্দিষ্ট মান রয়েছে।
NCI_ANDROID_GET_CAPS_CMD
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
N/A | 0 অক্টেট |
NCI_ANDROID_GET_CAPS_RSP
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
স্ট্যাটাস | 1 অক্টেট | NCI স্পেসিফিকেশনের 140 সারণীতে স্ট্যাটাস কোড দেখুন। | |||||
Android_Version | 2 অক্টেট | NFCC দ্বারা প্রয়োগ করা Android প্রয়োজনীয়তার সংস্করণ সনাক্ত করে৷ | |||||
0x0000 | অ্যান্ড্রয়েড 15 | ||||||
ক্ষমতার সংখ্যা | 1 অক্টেট | সমর্থিত ক্ষমতার সংখ্যা (n) | |||||
ক্ষমতা[0..n] | (m + 2) * n অক্টেট | সমর্থিত ক্ষমতা | |||||
টাইপ | 1 অক্টেট | সক্ষমতার শনাক্তকারী | |||||
লেন | 1 অক্টেট | মানের দৈর্ঘ্য (মি) | |||||
মান | মি অক্টেটস | সামর্থ্যের মান |
অ্যান্ড্রয়েড মালিকানা ক্ষমতা
ক্ষমতার নাম | আইডি | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|---|
পর্যবেক্ষণ মোড | 0x00 | 1 অক্টেট | পর্যবেক্ষণ মোড জন্য সমর্থন. 0x00 (ডিফল্ট) - এই বৈশিষ্ট্যটি সমর্থন করে না। 0x01 - হোস্ট থেকে RF নিষ্ক্রিয়করণের সাথে বৈশিষ্ট্যটিকে সমর্থন করে (Android 15 বা উচ্চতর সংস্করণের জন্য প্রয়োজনীয়)। অন্য সব মান হল RFU. | |||||
পোলিং ফ্রেম বিজ্ঞপ্তি | 0x01 | 1 অক্টেট | পোলিং ফ্রেম বিজ্ঞপ্তির জন্য সমর্থন। সমর্থিত হলে 0x01, সমর্থিত না হলে 0x00 (ডিফল্ট)। অন্য সব মান হল RFU. | |||||
পাওয়ার সেভিং মোড | 0x02 | 1 অক্টেট | পাওয়ার সেভিং মোডের জন্য সমর্থন। সমর্থিত হলে 0x01, সমর্থিত না হলে 0x00 (ডিফল্ট)। অন্য সব মান হল RFU. | |||||
অটোট্রান্স্যাক্ট পোলিং লুপ ফিল্টার | 0x03 | 1 অক্টেট | যখন পর্যবেক্ষণ মোড বিশ্বব্যাপী সক্রিয় থাকে তখন নির্দিষ্ট প্যাটার্নের জন্য পর্যবেক্ষণ মোড বাইপাস করতে ফার্মওয়্যারে পোলিং লুপ ফিল্টারগুলির জন্য সমর্থন। 0x00 (ডিফল্ট) - এই বৈশিষ্ট্যটি সমর্থন করে না 0x01 - পোলিং লুপ ফিল্টার সমর্থন করে অন্য সব মান হল RFU | |||||
0x04..0xFF | 0 অক্টেট | ভবিষ্যতে ব্যবহারের জন্য সংরক্ষিত |
পাওয়ার সেভিং কমান্ড
NFCC কে পাওয়ার সেভিং মোডে রূপান্তর করতে, হোস্ট NCI_ANDROID_POWER_SAVING_CMD
কমান্ড ব্যবহার করতে পারে। NFCC কে অবশ্যই NCI_ANDROID_POWER_SAVING_RSP
সাথে একটি স্ট্যাটাস কোড সহ উত্তর দিতে হবে যা সাফল্য বা ব্যর্থতা নির্দেশ করে৷
পাওয়ার সেভিং মোডে থাকাকালীন, হোস্ট অবশ্যই NFCC-কে কোনো কমান্ড পাঠাবে না এবং NFCC অবশ্যই হোস্টকে কোনো বিজ্ঞপ্তি বা প্রতিক্রিয়া পাঠাবে না। NFCC বা এমবেডেড সিকিউর এলিমেন্ট (eSE) পাওয়ার সেভিং মোড সক্রিয় করার আগে সেট করা রাউটিং কনফিগারেশন অনুযায়ী ইনকামিং পেমেন্টের অনুরোধ স্বয়ংক্রিয়ভাবে গ্রহণ করতে পারে।
সম্পূর্ণ পাওয়ার মোডে ফিরে আসতে, হোস্ট NFCC রিসেট বা পুনরায় চালু করতে পারে।
NCI_ANDROID_POWER_SAVING_CMD
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |
---|---|---|---|
পাওয়ার সেভিং মোড | 1 অক্টেট | 0x00 | পাওয়ার সেভিং মোড অক্ষম করুন |
0x01 | পাওয়ার সেভিং মোড চালু করুন |
NCI_ANDROID_POWER_SAVING_RSP
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
স্ট্যাটাস | 1 অক্টেট | NCI স্পেসিফিকেশনের 140 সারণীতে স্ট্যাটাস কোড দেখুন, |
পর্যবেক্ষণ মোড কমান্ড সেট করুন
পর্যবেক্ষণ মোড সক্রিয় বা নিষ্ক্রিয় করতে, হোস্ট NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
কমান্ড ব্যবহার করতে পারে। NFCC কে অবশ্যই NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
সাথে একটি স্ট্যাটাস কোড সহ উত্তর দিতে হবে যা সাফল্য বা ব্যর্থতা নির্দেশ করে৷
যখন পর্যবেক্ষণ মোড অক্ষম করা হয়, তখন NFCC কে অবশ্যই অ্যাক্টিভিটি টেকনিক্যাল স্পেসিফিকেশন অনুযায়ী স্ট্যান্ডার্ড লিসেন মোড অ্যাক্টিভিটি বাস্তবায়ন করতে হবে।
যখন পর্যবেক্ষণ মোড সক্রিয় থাকে, তখন হোস্ট দ্বারা স্পষ্টভাবে অনুমোদিত না হওয়া পর্যন্ত NFCC অবশ্যই লিসেন মোডে পোলিং লুপের সময় কোনো পোল অনুরোধের জবাব দেবে না। NFCC অবশ্যই RF_FIELD_INFO_NTF
বিজ্ঞপ্তি পাঠাতে হবে ( NCI স্পেসিফিকেশনের সেকশন 5.3 দ্বারা সংজ্ঞায়িত) যখন এটি ফিল্ড অ্যাক্টিভেশন সনাক্ত করে। পোল মোড আবিষ্কার সক্রিয় থাকলে, NFCC অবশ্যই অ্যাক্টিভিটি টেকনিক্যাল স্পেসিফিকেশন অনুযায়ী পোল মোড কার্যকলাপ বাস্তবায়ন করবে। NFCC ভোটের তথ্য ক্যাশে করতে পারে যাতে পর্যবেক্ষণ মোড নিষ্ক্রিয় হওয়ার সাথে সাথে ডিভাইস সক্রিয়করণের সাথে সাথে সাথে এগিয়ে যেতে পারে।
কোনো কারণে হোস্ট বন্ধ হয়ে গেলে NFCC-এর পর্যবেক্ষণ মোড বন্ধ করা উচিত (উদাহরণস্বরূপ, ব্যাটারি শেষ বা ব্যবহারকারীর দ্বারা শুরু করা শাটডাউন) যাতে SE লেনদেনগুলি এগিয়ে যেতে পারে।
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |
---|---|---|---|
মোড পর্যবেক্ষণ করুন | 1 অক্টেট | 0x00 | পর্যবেক্ষণ মোড অক্ষম করুন (ডিফল্ট) |
0x01 | পর্যবেক্ষণ মোড সক্ষম করুন |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
স্ট্যাটাস | 1 অক্টেট | NCI স্পেসিফিকেশনের 140 সারণীতে স্ট্যাটাস কোড দেখুন। |
পোলিং লুপ বিজ্ঞপ্তি
NFCC অবশ্যই প্রতিটি পোলিং লুপ ফ্রেমের পরে হোস্টকে NCI_ANDROID_POLLING_FRAME_NTF
বিজ্ঞপ্তি পাঠাতে হবে৷ যখন RF_FIELD_INFO_NTF
এবং NCI_ANDROID_POLLING_FRAME_NTF
উভয় বিজ্ঞপ্তিই তৈরি হয়, তখন NFCC অবশ্যই RF_FIELD_INFO_NTF
এর পরে NCI_ANDROID_POLLING_FRAME_NTF
পাঠাবে।
NCI_ANDROID_POLLING_FRAME_NTF
বিজ্ঞপ্তিটি পর্যবেক্ষন মোড সক্রিয় কি না তার উপর নির্ভরশীল। যখন পর্যবেক্ষণ মোড সক্রিয় থাকে, লেনদেনের সাথে এগিয়ে যাওয়ার আগে NFCC সর্বদা একটি NCI_ANDROID_POLLING_FRAME_NTF
বিজ্ঞপ্তি পাঠাতে হবে৷
NCI_ANDROID_POLLING_FRAME_NTF
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
পোলিং ডেটা[0..n] | (m +3) * n অক্টেট | শেষ বিজ্ঞপ্তির পর থেকে প্রাপ্ত ভোটের অনুরোধের তালিকা। প্রতিটি ফলাফল প্রযুক্তির উপর নির্ভর করে প্রাপ্ত অনুরোধের ধরন (প্রযুক্তি) এবং অনুরোধ থেকে শনাক্তযোগ্য ডেটা দেয়। | |||||
টাইপ | 1 অক্টেট | ফ্রেমের ধরন দেখুন। | |||||
পতাকা | 1 অক্টেট | পতাকা বাইট দেখুন। | |||||
দৈর্ঘ্য | 1 অক্টেট | টাইমস্ট্যাম্প এবং লাভ ক্ষেত্র সহ পোলিং ডেটা রিপোর্টের দৈর্ঘ্য (মি)। | |||||
টাইমস্ট্যাম্প | 4 অক্টেট | টাইমস্ট্যাম্প মিলিসেকেন্ডে পরিমাপ করা হয়েছে ভোটের অনুরোধের রিসেপশন, বড় এন্ডিয়ান। | |||||
লাভ | 1 অক্টেট | ভোটের অনুরোধের শক্তি। 0xFF নির্দেশ করে যে মান উপলব্ধ নয়। | |||||
ডেটা | m - 5 অক্টেট | পোলিং অনুরোধে উপস্থিত শনাক্তযোগ্য ডেটা প্রদান করে |
ফ্রেমের প্রকার
পোলিং ফ্রেম | টাইপ | আকার | মান/বর্ণনা | |
---|---|---|---|---|
দূরবর্তী ক্ষেত্র | 0x00 | 1 অক্টেট | 0x00 | ফিল্ড অফ |
0x01 | ফিল্ড অন | |||
0x02..0xFF | আরএফইউ | |||
NFC-A | 0x01 | n অক্টেটস | মান অবশ্যই একটি ISO 14443-3 কমান্ড অন্তর্ভুক্ত করতে হবে (উদাহরণস্বরূপ, REQ বা WUP) | |
NFC-B | 0x02 | n অক্টেটস | মান অবশ্যই একটি AIF বাইট এবং একটি ISO 14443-3 কমান্ড অন্তর্ভুক্ত করতে হবে (উদাহরণস্বরূপ, REQ বা WUP) | |
NFC-F | 0x03 | n অক্টেটস | মান অবশ্যই একটি ISO 14443-3 কমান্ড অন্তর্ভুক্ত করতে হবে (উদাহরণস্বরূপ, REQ বা WUP) | |
NFC-V | 0x04 | n অক্টেটস | মান অবশ্যই একটি ISO 14443-3 কমান্ড অন্তর্ভুক্ত করতে হবে (উদাহরণস্বরূপ, REQ বা WUP) | |
অজানা | 0x07 | n অক্টেটস | কাঁচা ফ্রেম ডেটা |
ফ্ল্যাগ বাইট সংজ্ঞা
পতাকা | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | |
0 | ছোট ফ্রেম | আরএফইউ | আরএফইউ | আরএফইউ | আরএফইউ | আরএফইউ | আরএফইউ | আরএফইউ |
1 | লম্বা ফ্রেম |
কোয়েরি মোড স্ট্যাটাস কমান্ড পর্যবেক্ষণ করুন
প্যাসিভ অর্ডার মোডের বর্তমান অবস্থা পুনরুদ্ধার করতে, হোস্ট NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
কমান্ড ব্যবহার করতে পারে। NFCC কে অবশ্যই NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
সাথে একটি স্ট্যাটাস কোডের সাথে প্রতিক্রিয়া জানাতে হবে যা ব্যর্থতার সাফল্য নির্দেশ করে৷
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |||||
---|---|---|---|---|---|---|---|
N/A | 0 অক্টেট |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
পেলোড ক্ষেত্র | আকার | মান/বর্ণনা | |
---|---|---|---|
স্ট্যাটাস | 1 অক্টেট | NCI স্পেসিফিকেশনের 140 সারণীতে স্ট্যাটাস কোড দেখুন, | |
মোড পর্যবেক্ষণ করুন | 1 অক্টেট | 0x00 | পর্যবেক্ষণ মোড নিষ্ক্রিয় |
0x01 | পর্যবেক্ষণ মোড সক্ষম |