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

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

הגדרות של 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

מזהי קוד הפקודה שהוקצו ל-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_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

הפקודה Get capabilities

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

NCI_ANDROID_GET_CAPS_RSP

שדות של מטען ייעודי (payload) גודל ערך/תיאור
סטטוס 8 תווים קודי הסטטוס מפורטים בטבלה 140 במפרט של NCI.
Android_Version 2 אוקטטים מזהה את הגרסה של דרישות Android שמוטמעת על ידי NFCC.
0x0000 Android 15
מספר היכולות אוקטט אחד מספר (n) של היכולות הנתמכות
Capabilities[0..n] (m + 2) * n octets היכולות הנתמכות
סוג אוקטט אחד המזהה של היכולת
לן אוקטט אחד האורך (מ') של הערך
ערך m octets הערך של היכולת
יכולות קנייניות של Android
שם היכולת מזהה גודל ערך/תיאור
מצב תצפית 0x00 אוקטט אחד תמיכה במצב התבוננות.
0x00 (ברירת המחדל) – אין תמיכה בתכונה הזו.
0x01 – תמיכה בתכונה עם השבתת RF מהמארח (נדרשת ל-Android מגרסה 15 ואילך).
כל שאר הערכים הם RFU.
התראה על מסגרת הסקרים 0x01 8 תווים תמיכה בהתראות של מסגרת הקלפי. 0x01 אם האפשרות נתמכת, 0x00 (ברירת מחדל) אם לא נתמך. כל שאר הערכים הם RFU.
מצב חיסכון בסוללה 0x02 אוקטט אחד תמיכה במצב חיסכון בסוללה. 0x01 אם יש תמיכה, 0x00 (ברירת המחדל) אם אין תמיכה. כל שאר הערכים הם RFU.
מסנן לולאת דגימה Auotransact 0x03 8 תווים תמיכה במסננים של לולאות סקרים בקושחה כדי לעקוף את מצב התצפית בתבניות ספציפיות כשמצב התצפית מופעל באופן גלובלי.
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

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

NCI_ANDROID_POWER_SAVING_RSP

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

כדי שהעסקאות ב-SE יוכלו להמשיך, ה-NFCC צריך להשבית את מצב התצפית אם המארח מושבת מכל סיבה שהיא (לדוגמה, הסוללה ריקה או שהמשתמש ביצע כיבוי).

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

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

NCI_ANDROID_PASSIVE_OBSERVE_MODE_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) גודל ערך/תיאור
Polling Data[0..n] (m +3) * n octets רשימה של בקשות לסקרים שהתקבלו מאז ההודעה האחרונה. בכל תוצאה מוצגים הסוג (הטכנולוגיה) של הבקשות שהתקבלו ונתונים מזהים מהבקשה, בהתאם לטכנולוגיה.
סוג 8 תווים סוגי פריימים
דגלים אוקטט אחד flag byte
אורך אוקטט אחד האורך (מ') של דוח נתוני הסקרים, כולל שדות של חותמת זמן ורמת קליטה.
חותמת זמן 4 אוקטטים חותמת הזמן שנמדדת באלפיות השנייה של קבלת בקשות הקלפיות, אנדיאן גדול.
עלייה 8 תווים עוצמת הבקשה לבדיקה.
0xFF מציין שהערך לא זמין.
נתונים מ' - 5 אוקטטים פונקציה זו מחזירה את הנתונים המזהים שקיימים בבקשת הדגימה
סוגי פריימים
מסגרת תשאול סוג גודל ערך/תיאור
שדה מרוחק 0x00 8 תווים 0x00 השדה מושבת
0x01 השדה מופעל
0x02..0xFF RFU
NFC-A 0x01 n octets הערך חייב לכלול פקודת ISO 14443-3 (לדוגמה, REQ או WUP)
NFC-B 0x02 n אוקטטים הערך חייב לכלול בייט AIF ופקודת ISO 14443-3 (לדוגמה, REQ או WUP)
NFC-F 0x03 n octets הערך חייב לכלול פקודה של ISO 14443-3 (לדוגמה, REQ או WUP)
NFC-V 0x04 n אוקטטים הערך חייב לכלול פקודה של ISO 14443-3 (לדוגמה, REQ או WUP)
לא ידוע 0x07 n octets נתוני מסגרת גולמיים
הגדרת הבייט של הדגל
דגלים
B0 ב1 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

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

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

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