ממשק הבקר של 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) | גודל | ערך/תיאור | |||||
---|---|---|---|---|---|---|---|
סטטוס | אוקטט אחד | קודי הסטטוס מפורטים בטבלה 140 במפרט של NCI. | |||||
Android_Version
|
2 אוקטטים | מזהה את הגרסה של דרישות Android שמוטמעת על ידי NFCC. | |||||
0x0000 | Android 15 | ||||||
מספר היכולות | אוקטט אחד | מספר (n) היכולות הנתמכות | |||||
Capabilities[0..n] | (m + 2) * n octets | היכולות הנתמכות | |||||
סוג | אוקטט אחד | המזהה של היכולת | |||||
Len | אוקטט אחד | האורך (מ') של הערך | |||||
ערך | m octets | הערך של היכולת |
יכולות קנייניות של Android
שם היכולת | מזהה | גודל | ערך/תיאור | |||||
---|---|---|---|---|---|---|---|---|
מצב תצפית | 0x00 | אוקטט אחד | תמיכה במצב התבוננות.
0x00 (ברירת המחדל) – אין תמיכה בתכונה הזו. 0x01 – תמיכה בתכונה עם השבתת RF מהמארח (נדרשת ל-Android מגרסה 15 ואילך). כל שאר הערכים הם RFU. |
|||||
התראה על מסגרת הסקרים | 0x01 | אוקטט אחד | תמיכה בהתראות על מסגרת הסקרים. 0x01 אם יש תמיכה, 0x00 (ברירת המחדל) אם אין תמיכה. כל שאר הערכים הם RFU. | |||||
מצב חיסכון בסוללה | 0x02 | אוקטט אחד | תמיכה במצב חיסכון בסוללה. 0x01 אם יש תמיכה, 0x00 (ברירת המחדל) אם אין תמיכה. כל שאר הערכים הם RFU. | |||||
מסנן לולאת הסקרים של Autotransact | 0x03 | אוקטט אחד | תמיכה במסננים של לולאות סקרים בקושחה כדי לעקוף את מצב התצפית בתבניות ספציפיות כשמצב התצפית מופעל באופן גלובלי.
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) | גודל | ערך/תיאור | |||||
---|---|---|---|---|---|---|---|
סטטוס | אוקטט אחד | קודי הסטטוס מפורטים בטבלה 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 | רשימת בקשות הסקרים שהתקבלו מאז ההתראה האחרונה. בכל תוצאה מוצגים הסוג (הטכנולוגיה) של הבקשות שהתקבלו ופרטים מזהים מהבקשה, בהתאם לטכנולוגיה. | |||||
סוג | אוקטט אחד | סוגי פריימים | |||||
דגלים | אוקטט אחד | flag byte | |||||
אורך | אוקטט אחד | האורך (מ') של דוח נתוני הסקרים, כולל שדות של חותמת זמן ורמת קליטה. | |||||
חותמת זמן | 4 אוקטטים | חותמת זמן שנמדדת באלפיות שנייה מקבלת בקשות הסקרים, big endian. | |||||
תוספת | אוקטט אחד | עוצמת הבקשה לבדיקה.
הערך 0xFF מציין שהערך לא זמין. |
|||||
נתונים | m – 5 אוקטטים | הפונקציה מחזירה את הנתונים המזהים שנמצאים בבקשת הסקרים |
סוגי פריימים
מסגרת סקרים | סוג | גודל | ערך/תיאור | |
---|---|---|---|---|
שדה מרוחק | 0x00 | אוקטט אחד | 0x00 | השדה מושבת |
0x01 | השדה מופעל | |||
0x02..0xFF | RFU | |||
NFC-A | 0x01 | n octets | הערך חייב לכלול פקודה של ISO 14443-3 (לדוגמה, REQ או WUP) | |
NFC-B | 0x02 | n octets | הערך חייב לכלול בייט AIF ופקודת ISO 14443-3 (לדוגמה, REQ או WUP) | |
NFC-F | 0x03 | n octets | הערך חייב לכלול פקודה של ISO 14443-3 (לדוגמה, REQ או WUP) | |
NFC-V | 0x04 | n octets | הערך חייב לכלול פקודה של ISO 14443-3 (לדוגמה, REQ או WUP) | |
לא ידוע | 0x07 | n octets | נתוני פריים גולמיים |
הגדרת הבייט של הדגל
דגלים | ||||||||
---|---|---|---|---|---|---|---|---|
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
שדות של מטען ייעודי (payload) | גודל | ערך/תיאור | |||||
---|---|---|---|---|---|---|---|
לא רלוונטי | 0 אוקטטים |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
שדות של מטען ייעודי (payload) | גודל | ערך/תיאור | |
---|---|---|---|
סטטוס | אוקטט אחד | קודי הסטטוס מפורטים בטבלה 140 במפרט NCI, | |
מצב תצפית | אוקטט אחד | 0x00 | מצב התצפית מושבת |
0x01 | מצב התבוננות מופעל |