ממשק בקר 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 | מצב התבוננות מופעל |