ה-AOSP
סטאק Ultra Wideband (UWB)
משתמשת ב
ממשק UCI בהגדרת FiRa
בפלטפורמת HAL. ממשק HAL משתמש בצינור אטום
(IUwbChip::sendUciMessage()
ו-IUwbClientCallback::onUciMessage()
) כדי לשלוח
ולקבל פקודות, תגובות והתראות של ממשק פקודת UWB (UCI).
כל ספקי Android UWB חייבים לתמוך בכל מפרט FiRa שהוגדר
הודעות. מסגרת UWB תואמת לאחור ופועלת עם כל UCI
הגרסה שהוטמעה על ידי ספק ה-UWB במכשיר. בגלל ש-AOSP UWB
framework הוא מודול,
הוא יכול גם להוסיף באופן סלקטיבי תמיכה בבקשות לשינויים (CR) שאושרו
טיוטה של מפרטים של UCI שמטורגטים לגרסאות גדולות של תקני FiRa. כל סוג כזה
טיוטות של תגובות מוכנות מראש שהוטמעו כפופות לשינויים.
הגדרת הממשק
ממשק UWB HAL מוגדר באמצעות
stable 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 framework
התמונות הבאות ממחישות את זרימת הקריאה ממסגרת 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 (בדיקה מקומית או אוטומטית).
- קוד המדינה של הטלפוניה: קוד המדינה מאוחזר באמצעות הרשת הסלולרית. אם המיקום יש כמה כרטיסי SIM שמחזירים קודים שונים, את קידומת המדינה שנבחר אינו קבוע.
- קוד מדינה של Wi-Fi: קוד המדינה מאוחזר באמצעות Wi-Fi (80211.ad).
- קוד המדינה הידוע האחרון של הטלפוניה: קוד המדינה הידוע האחרון אוחזר באמצעות הרשת הסלולרית. אם יש כמה כרטיסי SIM שמחזירים נתונים שונים קודים, קוד המדינה שנבחר אינו קבוע.
- קוד המדינה שבה נמצא המיקום: קוד המדינה שאוחזר מ-
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
. ה-framework משתמש בפקודות האלה כדי לאחזר
גרסת UCI של המכשיר ומשנים את ההתנהגות בהתאם.
רשימה של טיוטות של תגובות מוכנות מראש שנתמכות על ידי מודול ה-UWB
טיוטות התגובה המוכנה מראש הבאות עבור FiRa 2.0 נתמכות על ידי גרסה מס' 330810000 של מודול UWB:
ממשק Android UCI (החלק של ספק FiRa)
מפרט UCI מגדיר קבוצה של מזהי קבוצות (GID) וקוד תפעול מזהים (OID) של כל ההודעות לפי המפרט. המפרט שומרת גם קבוצה של מזהי GID שמיועדים לשימוש של הספק בלבד. שירות AOSP UWB משתמשים בחלק ממזהי GID ו-OID של הספקים האלה לפקודות ספציפיות ל-Android לא מוגדרים במפרט. פרטים נוספים זמינים במאמר סעיף 8.4 של ה-UCI המפרט.
ההודעות האלה לספקים שבהן נעשה שימוש ב-Android מוגדרות
חבילת HAL של android.hardware.uwb.fira_android
.
ניהול גרסאות של ממשק הספק
ספקי UWB חייבים לחשוף את הגרסה של android.hardware.uwb.fira_android
המכשיר תומך בחבילת HAL באמצעות
IUwbChip.getSupportedAndroidUciVersion()
. ה-framework משתמש
מידע על ניהול גרסאות לצורך טיפול בתאימות לאחור.
רשימת מזהי GID ו-OID של Android
בטבלה הבאה מפורטים מזהי GID ו-OID ל-Android. מזהי GID 0xE
ו-0xF
שמורות ליצרני ציוד מקורי של 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]
אלה ערכי האורך של הסוג (TLV) שמוגדרים על ידי סטאק AOSP ב
החלק השמור של הספק מדמי השירות (TLV) ב-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 בייט כדי להפעיל או להשבית את דיווח האבחון.
הגדרת הפרמטר הזה רק כאשר ערכים:
|
DIAGRAMS_FRAME_REPORTS_FIELDS |
1 או 4 | 0xE9 |
2 | מסכת ביט של 1 או 4 בייט להגדרת דיווח אבחון. הזה bitmask הוא בייט אחד ב-Android 14 ואילך 4 בייטים ב-Android מגרסה 13 ומטה. מגדירים את הפרמטר הזה רק כאשר
אפשרות החזרה במחיר הגדרות ביט:
|
CORE_GET_CAPS_INFO_RSP
אלה רכיבי ה-TLV שהוגדרו על ידי סטאק 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 ערכים.
Bitmask שבה כל ביט תואם לערכים שבהם נעשה שימוש
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 עקב מסיבה רגולטורית. |