פקודות NCI בבעלות Android

NFC Controller Interface (NCI) משמש לאינטראקציה עם בקר NFC (NFCC). בדף הזה מתואר המפרט של Android פקודות NCI הקנייניות.

הגדרות של NCI

פקודות NCI שבבעלות Android משתמשות במזהה הקבוצה הקניינית (GID) 0xF ומרחב הקוד של מזהה הקוד (OID) של Android הוא 0xC.

פורמט מנות נפוץ

פורמט המנות Android NCI תואם למפרט NCI של מנות בקרה באמצעות 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)
שמור לשימוש עתידי (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

מזהי opcode של Android שהוקצו מפורטים בטבלה הבאה. המפרט של כל חבילה מופיע בסעיפים הבאים.

OID של Android סוג ההודעה שם ההודעה
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

שדות מטען ייעודי (payload) גודל ערך/תיאור
לא רלוונטי אפס אוקטטים

NCI_ANDROID_GET_CAPS_RSP

שדות מטען ייעודי (payload) גודל ערך/תיאור
סטטוס אוקטט אחד קודי הסטטוס מוצגים בטבלה 140 במפרט NCI.
Android_Version 2 אוקטטים מזהה את גרסת הדרישות של Android שמוטמעת על ידי NFCC.
0x0,000 15 Android
מספר היכולות אוקטט אחד מספר (n) של היכולות הנתמכות
יכולות[0..n] (m + 2) * n octets היכולות הנתמכות
סוג אוקטט אחד המזהה של היכולת.
Len אוקטט אחד אורך (מ') של הערך
ערך מ' אוקטטים הערך של היכולת
יכולות קנייניות של Android
שם היכולת מזהה גודל ערך/תיאור
מצב צפייה 0x00 אוקטט אחד תמיכה במצב הצפייה.
0x00 (ברירת מחדל) – התכונה לא תומכת בתכונה הזו.
0x01 - תמיכה בתכונה באמצעות השבתת תדרי רדיו מהמארח (נדרש עבור Android מגרסה 15 ואילך).
כל שאר הערכים הם RFU.
הודעה על מסגרת הדגימה 0x01 אוקטט אחד תמיכה בהתראות של מסגרת הקלפי. 0x01 אם האפשרות נתמכת, 0x00 (ברירת מחדל) אם לא נתמך. כל שאר הערכים הם RFU.
מצב חיסכון בסוללה 0x02 אוקטט אחד תמיכה במצב חיסכון בסוללה. 0x01 אם האפשרות נתמכת, 0x00 (ברירת מחדל) אם לא נתמך. כל שאר הערכים הם RFU.
מסנן לולאת דגימה Auotransact 0x03 אוקטט אחד תמיכה במסננים של לולאת דגימה בקושחה לעקוף את מצב הצפייה בדפוסים ספציפיים כשמצב הצפייה מופעל בכל העולם.
0x00 (ברירת מחדל) – לא תומך בתכונה הזו
0x01 – תמיכה במסננים של לולאת דגימה
כל שאר הערכים הם RFU
0x04..0xFF אפס אוקטטים שמור לשימוש בעתיד

פקודה לחיסכון בסוללה

כדי להעביר את NFCC למצב חיסכון בסוללה, המארח יכול להשתמש הפקודה NCI_ANDROID_POWER_SAVING_CMD. ה-NFCC חייב להגיב עם NCI_ANDROID_POWER_SAVING_RSP עם קוד סטטוס שמצביע על הצלחה או כישלון.

במצב חיסכון בסוללה, המארח לא יכול לשלוח פקודות ל-NFCC וגם אסור ל-NFCC לשלוח התראות או תגובות למארח. NFCC או רכיב מאובטח מוטמע (eSE) יכול לקבל באופן אוטומטי בקשות תשלום נכנסות בהתאם להגדרות הניתוב שנקבעו לפני הפעלת החיסכון באנרגיה במצב 'סינון תוכן'.

כדי לחזור למצב אספקת חשמל מלאה, המארח יכול לאפס או לאתחל את ה-NFCC.

NCI_ANDROID_POWER_SAVING_CMD

שדות מטען ייעודי (payload) גודל ערך/תיאור
מצב חיסכון בסוללה אוקטט אחד 0x00 השבתת מצב חיסכון בסוללה
0x01 הפעלת מצב חיסכון בסוללה

NCI_ANDROID_POWER_SAVING_RSP

שדות מטען ייעודי (payload) גודל ערך/תיאור
סטטוס אוקטט אחד קודי הסטטוס מוצגים בטבלה 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 אמור להשבית את מצב הצפייה אם המארח נכבה מסיבה כלשהי (לדוגמה, כשהסוללה נגמרה או כיבוי ביוזמת המשתמש), כדי שהצפנות העסקאות יכולות להמשיך.

NCI_ANDROID_PASSIVE_OBSERVE_מצב_CMD

שדות מטען ייעודי (payload) גודל ערך/תיאור
מצב תצפית אוקטט אחד 0x00 השבתת מצב ניראות (ברירת מחדל)
0x01 הפעלת מצב 'תצפית'

NCI_ANDROID_PASSIVE_OBSERVE_מצב_RSP

שדות מטען ייעודי (payload) גודל ערך/תיאור
סטטוס אוקטט אחד קודי הסטטוס מוצגים בטבלה 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

שדות מטען ייעודי (payload) גודל ערך/תיאור
נתוני סקרים[0..n] (m +3) * n octets רשימת בקשות לקלפיות שהתקבלו מאז הפעם האחרונה התראה. כל תוצאה מציגה את הסוג (טכנולוגיה) של של הבקשות ונתונים שניתנים לזיהוי, בהתאם לטכנולוגיה.
סוג אוקטט אחד לעיון בסוגי תמונות
דגלים אוקטט אחד ראו בייט סימון.
אורך אוקטט אחד אורך (מ') של דוח נתוני הדגימה, כולל חותמת זמן ושדות קבלה.
חותמת זמן 4 אוקטטים חותמת הזמן שנמדדת באלפיות השנייה של קבלת בקשות הקלפיות, אנדיאן גדול.
הוספה אוקטט אחד עוצמת הבקשה של ההצבעה.
0xFF מציין שהערך לא זמין.
נתונים מ' - 5 אוקטטים פונקציה זו מחזירה את הנתונים המזהים שקיימים בבקשת הדגימה
סוגי הפריימים
מסגרת הצבעה סוג גודל ערך/תיאור
שדה מרוחק 0x00 אוקטט אחד 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 ב1 ב2 ב-3 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_OBproxy_STATUS_CMD

שדות מטען ייעודי (payload) גודל ערך/תיאור
לא רלוונטי אפס אוקטטים

NCI_ANDROID_QUERY_PASSIVE_OBproxy_STATUS_RSP

שדות מטען ייעודי (payload) גודל ערך/תיאור
סטטוס אוקטט אחד קודי הסטטוס מוצגים בטבלה 140 במפרט NCI.
מצב תצפית אוקטט אחד 0x00 מצב 'צפייה' מושבת
0x01 מצב 'צפייה' מופעל