دستورات NCI اختصاصی اندروید

رابط کنترل کننده 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 حالت مشاهده فعال است