ערימת ה-AOSP ultra-wideband (UWB) משתמשת בממשק UCI המוגדר על ידי FiRa כמשטח HAL. ממשק HAL משתמש בצינור אטום ( IUwbChip::sendUciMessage()
ו- IUwbClientCallback::onUciMessage()
) כדי לשלוח ולקבל פקודות, תגובות והתראות של ממשק UWB (UCI). כל ספקי UWB של Android חייבים לתמוך בכל ההודעות שהוגדרו במפרט FiRa. מסגרת UWB תואמת לאחור ועובדת עם כל גרסת UCI המיושמת על ידי ספק ה-UWB במכשיר. מכיוון שמסגרת UWB של AOSP היא מודול , היא יכולה גם להוסיף באופן סלקטיבי תמיכה עבור בקשות שינוי מאושרות (CRs) מטיוטת מפרטי UCI המיועדים למהדורות גדולות של תקני FiRa. כל טיוטת CRs כזו המיושמת כפופה לשינויים.
הגדרת ממשק
ממשק UWB HAL מוגדר באמצעות AIDL יציב . הממשק הראשי משתמש בחבילת android.hardware.uwb
.
להלן שני הממשקים העיקריים בחבילת android.hardware.uwb
.
IUwbChip.aidl
package android.hardware.uwb;
interface IUwbChip {
String getName();
void open(in android.hardware.uwb.IUwbClientCallback clientCallback);
void close();
void coreInit();
void sessionInit(int sessionId);
int getSupportedAndroidUciVersion();
int sendUciMessage(in byte[] data);
}
IUwbClientCallback.aidl
package android.hardware.uwb;
interface IUwbClientCallback {
oneway void onUciMessage(in byte[] data);
oneway void onHalEvent(in android.hardware.uwb.UwbEvent event, in android.hardware.uwb.UwbStatus status);
}
זרימת שיחות HAL ממסגרת UWB
התמונות הבאות ממחישות את זרימת השיחה ממסגרת UWB עבור אתחול מחסנית UWB, ביטול אתחול מחסנית UWB ותהליכי התחלה ועצירה של הפעלה של UWB.
איור 1. זרימת קריאת אתחול מחסנית UWB (החלפת UWB פועלת)
איור 2. זרימת שיחות דה-אתחול מחסנית UWB (החלפת UWB כבויה)
איור 3. זרימת התחלה/עצירה של הפעלת UWB
תצורת קוד מדינה UWB
כפי שמוצג באיור 1, מסגרת UWB מגדירה את קוד המדינה של UWB במהלך אתחול מחסנית UWB באמצעות פקודת UCI של ספק-מרחב ANDROID_SET_COUNTRY_CODE
(GID= 0xC
, OID= 0x1
). מסגרת UWB מנסה לקבוע את קוד המדינה של UWB באמצעות המקורות הבאים (המפורטים בסדר עדיפות). מסגרת UWB נעצרת במקור הראשון שבו נקבע קוד המדינה.
- עוקף קוד מדינה: קוד מדינה שנאלץ באמצעות פקודת adb shell (בדיקה מקומית או אוטומטית).
- קוד מדינה טלפונית: קוד מדינה מאוחזר באמצעות סלולר. אם יש מספר סים שמחזירים קודים שונים, קוד המדינה שנבחר אינו דטרמיניסטי.
- קוד מדינה של Wi-Fi: קוד מדינה מאוחזר באמצעות Wi-Fi (80211.ad).
- קוד מדינה אחרון ידוע של טלפוניה: קוד המדינה הידוע האחרון מאוחזר דרך הסלולר. אם יש מספר סים שמחזירים קודים שונים, קוד המדינה שנבחר אינו דטרמיניסטי.
- קוד מדינה של מיקום: קוד מדינה מאוחזר מספק המיקום הממוזג
LocationManager
. - קוד מדינה ברירת מחדל של OEM: קוד מדינה שהוגדר על ידי יצרן המכשיר.
אם מסגרת UWB אינה מסוגלת לקבוע קוד מדינה של UWB, היא קוראת לפקודת ANDROID_SET_COUNTRY_CODE
UCI עם הערך של DEFAULT_COUNTRY_CODE ("00")
ומודיעה לאפליקציות UWB שמצב מחסנית UWB DISABLED
. מאוחר יותר, כאשר המסגרת של UWB מסוגלת לקבוע קוד מדינה חוקי, היא מגדירה את קוד המדינה החדש באמצעות הפקודה ANDROID_SET_COUNTRY_CODE
ומודיעה לאפליקציות UWB שמחסנית ה-UWB READY
.
אם לא ניתן להשתמש ב-UWB עקב תקנות מקומיות במדינה, בקר UWB מחזיר את קוד המצב STATUS_CODE_ANDROID_REGULATION_UWB_OFF
. לאחר מכן, מסגרת UWB מודיעה לאפליקציות UWB שמצב המחסנית של UWB DISABLED
.
כאשר משתמש נוסע לארץ אחרת, מסגרת UWB מגדירה קוד מדינה חדש באמצעות פקודת ANDROID_SET_COUNTRY_CODE
UCI. בהתאם לקוד המצב המוחזר על ידי בקר ה-UWB (בהתבסס על תקנות ה-UWB במדינה החדשה), הדבר עשוי להוביל לשינוי במצב המחסנית של UWB.
פורמט פקודה המוגדר במפרט FIRA UCI
לפורמט של מנות בקרת UCI, ראה סעיף 4.4.2 של מפרט UCI .
גירסאות ממשק
מפרט UCI מאפשר לספקי UWB לחשוף את הגרסה של מחסנית UCI המיושמת על ידי המכשיר באמצעות הפקודות UCI_GET_DEVICE_INFO_RSP
ו- UCI_GET_CAPS_INFO_RSP
. המסגרת משתמשת בפקודות אלו כדי להביא את גרסת ה-UCI של המכשיר ולשנות את התנהגותו בהתאם.
רשימת טיוטות CRs הנתמכים על ידי מודול UWB
טיוטות ה-CRs הבאות עבור FiRa 2.0 נתמכות על ידי גירסת מודול UWB #330810000:
ממשק UCI של אנדרואיד (חלק של ספק FiRa)
מפרט UCI מגדיר קבוצה של מזהי קבוצה (GIDs) ומזהי opcode (OIDs) עבור כל ההודעות המוגדרות במפרט. המפרט שומר גם קבוצה של GIDs השמורה בלעדית לשימוש של ספקים. מחסנית AOSP UWB משתמשת בחלק מה-GIDs וה-OID של הספקים הללו עבור פקודות ספציפיות לאנדרואיד שאינן מוגדרות במפרט. לפרטים, ראה סעיף 8.4 של מפרט UCI .
הודעות ספק אלו המשמשות את אנדרואיד מוגדרות בחבילת android.hardware.uwb.fira_android
HAL.
ניהול גרסאות של ממשק הספק
ספקי UWB חייבים לחשוף את הגרסה של חבילת android.hardware.uwb.fira_android
HAL הנתמכת במכשיר דרך IUwbChip.getSupportedAndroidUciVersion()
. המסגרת משתמשת במידע גירסה זה כדי לטפל בתאימות לאחור.
רשימה של GIDs ו-OIDs של אנדרואיד
הטבלה הבאה מפרטת את ה-GIDs וה-OIDs עבור Android. GIDs 0xE
ו 0xF
שמורים לשימוש יצרני OEM של Android.
GID | OID | הַגדָרָה |
---|---|---|
ANDROID = 0xC | ANDROID_GET_POWER_STATS = 0x0 | משמש את הפקודה והתגובה כדי לקבל נתונים סטטיסטיים הקשורים לכוח UWB. נתמך רק אם UwbVendorCapabilityTlvTypes.SUPPORTED_POWER_STATS_QUERY מוגדר ל 1 . |
ANDROID_SET_COUNTRY_CODE = 0x1 | משמש להגדרת קוד המדינה הרגולטורי הנוכחי (נקבע באמצעות SIM או Wi-Fi, או מקודד קשה על ידי ה-OEM). קוד המדינה נשלח כערך של 2 בתים המתאים לקוד המדינה ISO-3166. ערך של | |
ANDROID_RANGE_DIAGNOSTICS = 0x2 | משמש על ידי ההודעה כדי לקבל נתונים סטטיסטיים של אבחון UWB. נתמך רק אם UwbVendorCapabilityTlvTypes.SUPPORTED_DIAGNOSTICS מוגדר ל 1 . | |
OEM = 0xE,0xF | 0x00 - 0x3F | שמור לשימוש OEM. |
הרחבות ספקים להודעות מוגדרות במפרט UCI
סעיף זה מתאר פרטים של הרחבות ספקים להודעות המוגדרות במפרט UCI.
SESSION_SET_APP_CONFIG_[CMD|RSP] ו-SESSION_GET_APP_CONFIG_[CMD|RSP]
להלן ערכי אורך הסוג (TLVs) שהוגדרו על ידי מחסנית AOSP בחלק השמור של הספק של TLVs ב- APP_CONFIG
:
- GID: 0001b (קבוצת תצורת הפעלה של UWB)
- OID: 000011b (
SESSION_SET_APP_CONFIG_CMD
) - OID: 000100b (
SESSION_GET_APP_CONFIG_CMD
)
הטבלה הבאה מפרטת את הפרמטרים עבור הודעות תצורת הפעלה של UWB.
שם פרמטר | אורך (אוקטטים) | תָג (תעודות זהות) | גרסת ממשק הספק | תיאור |
---|---|---|---|---|
NB_OF_RANGE_MEASUREMENTS | 1 | 0xE3 | 1 | יחס השזירה אם AOA_RESULT_REQ מוגדר ל 0xF0 . נתמך רק אם UwbVendorCapabilityTlvTypes.SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING מוגדר ל 1 . |
NB_OF_AZIMUTH_MEASUREMENTS | 1 | 0xE4 | 1 | |
NB_OF_ELEVATION_MEASUREMENTS | 1 | 0xE5 | 1 | |
ENABLE_DIAGNOSTICS | 1 | 0xE8 | 2 | ערך של 1-byte כדי להפעיל או להשבית דיווח אבחון. הגדר פרמטר זה רק כאשר ערכים:
|
DIAGRAMS_FRAME_REPORTS_FIELDS | 1 או 4 | 0xE9 | 2 | מסכת סיביות של 1 או 4 בתים להגדרת דיווח אבחון. מסיכת סיביות זו היא בת אחד באנדרואיד 14 ומעלה ו-4 בתים באנדרואיד 13 ומטה. הגדר פרמטר זה רק כאשר ה- הגדרות ביט:
|
CORE_GET_CAPS_INFO_RSP
להלן ה-TLVs שהוגדרו על-ידי מחסנית ה-AOSP בחלק השמור של הספק של ה-TLV ב- CAPS_INFO
:
- GID: 0000b (קבוצת ליבה UWB)
- OID: 000011b (
CORE_GET_CAPS_INFO_RSP
)
הטבלה הבאה מפרטת את הפרמטרים עבור הודעות יכולת UWB.
שם פרמטר | אורך (אוקטטים) | תָג (תעודות זהות) | גרסת ממשק הספק | תיאור |
---|---|---|---|---|
SUPPORTED_POWER_STATS_QUERY | 1 | 0xC0 | 1 | ערך בתים 1 המציין תמיכה בשאילתת סטטיסטיקת כוח. ערכים:
|
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING | 1 | 0xE3 | 1 | ערך בתים 1 המציין תמיכה בתכונת השזירה של האנטנה. ערכים:
|
SUPPORTED_MIN_RANGING_INTERVAL_MS | 4 | 0xE4 | 2 | ערך של 4 בתים המציין את מרווח הטווח המינימלי הנתמך באלפיות שניות. |
SUPPORTED_RANGE_DATA_NTF_CONFIG | 4 | 0xE5 | 2 | מסיכת סיביות של 4 בתים המציינת את ערכי RANGE_DATA_NTF_CONFIG הנתמכים. מסיכת סיביות שבה כל סיביות מתאימה לערכים המשמשים ב- RANGE_DATA_NTF_CONFIG ב- SET_APP_CFG_CMD . |
SUPPORTED_RSSI_REPORTING | 1 | 0xE6 | 2 | ערך בתים 1 המציין תמיכה בדיווח RSSI. ערכים:
|
SUPPORTED_DIAGNOSTICS | 1 | 0xE7 | 2 | ערך בתים 1 המציין תמיכה בדיווח אבחון. ערכים:
|
SUPPORTED_MIN_SLOT_DURATION_RSTU | 4 | 0xE8 | 2 | ערך של 4 בתים המציין את משך המשבצת המינימלי הנתמך ב-RSTU. |
SUPPORTED_MAX_RANGING_SESSION_NUMBER | 4 | 0xE9 | 2 | ערך של 4 בתים המציין את המספר המרבי הנתמך של הפעלות טווח FiRa. |
SUPPORTED_CHANNELS_AOA | 2 | 0xEA | 2 | מסיכת סיביות של 2 בתים לציון הערוצים התומכים ב-AoA. כל ערכים:
|
קודי סטטוס
להלן קודי המצב במרחב הספק. אלה מוחזרים בתגובות UCI (כגון SESSION_START_RSP
) על ידי תת-מערכת UWB (UWBS).
קוד סטטוס | ערך | תיאור |
---|---|---|
STATUS_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT | 0x52 | קוד סטטוס הוחזר כאשר לא ניתן להתחיל את הפעלת הטווח הנוכחי עקב התנגשות עם הפעלות אחרות של CCC או FiRa. |
STATUS_REGULATION_UWB_OFF | 0x53 | קוד סטטוס הוחזר כאשר לא ניתן להתחיל את הפעלת הטווח הנוכחית מסיבות רגולטוריות של UWB. |
קוד הסיבה לשינוי מצב ב-SESSION_STATUS_NTF
להלן קודי הסיבה לשינוי המצב שהוגדרו במרחב הספק עבור שדה המצב המוחזר על ידי UWBS ב- SESSION_STATUS_NTF
. הודעה זו נשלחת על ידי UWBS כאשר המצב של הפעלת טווח משתנה (לדוגמה, מ- ACTIVE
ל- IDLE
).
קוד סיבה לשינוי מדינה | ערך | תיאור |
---|---|---|
REASON_ERROR_INVALID_CHANNEL_WITH_AOA | 0x80 | מצב ההפעלה השתנה מכיוון שהערוץ המוגדר אינו תומך בטווחי AoA. |
REASON_ERROR_STOPPED_DUE_TO_OTHER_SESSION_CONFLICT | 0x81 | מצב ההפעלה השתנה בגלל התנגשות עם הפעלות אחרות של CCC או FiRa. |
REASON_REGULATION_UWB_OFF | 0x82 | מצב ההפעלה השתנה בגלל שה-UWB חייב להיות מושבת מסיבה רגולטורית. |