رابط کنترل کننده NFC (NCI) برای تعامل با یک کنترل کننده NFC (NFCC) استفاده می شود. در این صفحه مشخصات دستورات NCI اختصاصی اندروید توضیح داده شده است.
تعاریف NCI
دستورات NCI اختصاصی Android از شناسه گروه اختصاصی (GID) 0xF
و فضای کد شناسه کد opcode Android (OID) 0xC
استفاده می کنند.
قالب بسته رایج
قالب بسته Android NCI از مشخصات NCI برای بسته های کنترلی با استفاده از Group_ID 0xF
و Opcode_ID 0x0C
پیروی می کند. برای هر پیام اختصاصی اندروید، اولین بایت بار بسته باید روی کد عملیاتی Android ( 0x0C
) تنظیم شود. بستههای کنترلی Android از 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 | |||||||
شناسه های اپکد اندروید اختصاص داده شده در جدول زیر فهرست شده اند. مشخصات هر بسته در بخش های بعدی آمده است.
اندروید 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_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
برای جستجو در لیست ویژگیهای اختصاصی Android که توسط NFCC پشتیبانی میشود، استفاده میکند. دستور 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 اکتت | کدهای وضعیت را در جدول 140 مشخصات NCI ببینید. | |||||
Android_Version | 2 اکتت | نسخه الزامات Android را که توسط NFCC پیاده سازی شده است را شناسایی می کند. | |||||
0x0000 | اندروید 15 | ||||||
تعداد قابلیت ها | 1 اکتت | تعداد (n) قابلیت های پشتیبانی شده | |||||
قابلیت ها[0..n] | (m + 2) * n هشت | قابلیت های پشتیبانی شده | |||||
تایپ کنید | 1 اکتت | شناسه قابلیت | |||||
لن | 1 اکتت | طول (m) مقدار | |||||
ارزش | متر هشت | ارزش توانایی |
قابلیت های اختصاصی اندروید
نام قابلیت | شناسه | اندازه | ارزش/توضیح | |||||
---|---|---|---|---|---|---|---|---|
حالت را مشاهده کنید | 0x00 | 1 اکتت | پشتیبانی از حالت مشاهده 0x00 (پیشفرض) - از این ویژگی پشتیبانی نمیکند. 0x01 - از ویژگی با غیرفعال کردن RF از میزبان (برای اندروید 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 اکتت | کدهای وضعیت را در جدول 140 مشخصات NCI ببینید، |
دستور مشاهده حالت را تنظیم کنید
برای فعال یا غیرفعال کردن حالت مشاهده، میزبان می تواند از دستور NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
استفاده کند. NFCC باید با NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
با یک کد وضعیت که نشان دهنده موفقیت یا شکست است پاسخ دهد.
هنگامی که حالت مشاهده غیرفعال است، NFCC باید فعالیت حالت استاندارد گوش را مطابق با مشخصات فنی فعالیت اجرا کند.
هنگامی که حالت مشاهده فعال است، NFCC نباید به هیچ درخواست نظرسنجی در طول حلقه نظرسنجی در حالت گوش دادن پاسخ دهد، تا زمانی که به صراحت توسط میزبان مجوز داده شود. NFCC باید اعلان RF_FIELD_INFO_NTF
را ارسال کند (همانطور که در بخش 5.3 مشخصات NCI تعریف شده است) زمانی که فعال سازی میدان را تشخیص دهد. اگر کشف حالت نظرسنجی فعال باشد، NFCC باید فعالیت حالت نظرسنجی را طبق مشخصات فنی فعالیت اجرا کند. NFCC می تواند اطلاعات نظرسنجی را ذخیره کند تا به محض غیرفعال شدن حالت مشاهده، بلافاصله فعال سازی دستگاه را ادامه دهد.
اگر میزبان به هر دلیلی خاموش شود (مثلاً شارژ باتری یا خاموش شدن توسط کاربر) NFCC باید حالت مشاهده را خاموش کند تا تراکنشهای SE ادامه یابد.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
فیلدهای بار | اندازه | ارزش/توضیح | |
---|---|---|---|
مشاهده حالت | 1 اکتت | 0x00 | غیرفعال کردن حالت مشاهده (پیشفرض) |
0x01 | حالت مشاهده را فعال کنید |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
فیلدهای بار | اندازه | ارزش/توضیح | |||||
---|---|---|---|---|---|---|---|
وضعیت | 1 اکتت | کدهای وضعیت را در جدول 140 مشخصات NCI ببینید. |
اطلاع رسانی حلقه نظرسنجی
NFCC باید پس از هر فریم حلقه نظرسنجی، اعلان NCI_ANDROID_POLLING_FRAME_NTF
را به میزبان ارسال کند. وقتی اعلانهای RF_FIELD_INFO_NTF
و NCI_ANDROID_POLLING_FRAME_NTF
هر دو تولید میشوند، NFCC باید NCI_ANDROID_POLLING_FRAME_NTF
بعد از RF_FIELD_INFO_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 نشان می دهد که مقدار در دسترس نیست. | |||||
داده ها | متر - 5 اکتت | داده های قابل شناسایی موجود در درخواست نظرسنجی را برمی گرداند |
انواع قاب
چارچوب نظرسنجی | تایپ کنید | اندازه | ارزش/توضیح | |
---|---|---|---|---|
میدان راه دور | 0x00 | 1 اکتت | 0x00 | میدان خاموش |
0x01 | فیلد در | |||
0x02..0xFF | RFU | |||
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 | قاب کوتاه | RFU | RFU | RFU | RFU | RFU | RFU | RFU |
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 اکتت | کدهای وضعیت را در جدول 140 مشخصات NCI ببینید، | |
حالت مشاهده | 1 اکتت | 0x00 | حالت مشاهده غیرفعال است |
0x01 | حالت مشاهده فعال است |