ממשק UWB HAL

ערימת ה-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.

אתחול מחסנית UWB

איור 1. זרימת קריאת אתחול מחסנית UWB (החלפת UWB פועלת)

דה-אתחול מחסנית UWB

איור 2. זרימת שיחות דה-אתחול מחסנית UWB (החלפת UWB כבויה)

הפעלה ועצירה של הפעלת UWB

איור 3. זרימת התחלה/עצירה של הפעלת UWB

תצורת קוד מדינה UWB

כפי שמוצג באיור 1, מסגרת UWB מגדירה את קוד המדינה של UWB במהלך אתחול מחסנית UWB באמצעות פקודת UCI של ספק-מרחב ANDROID_SET_COUNTRY_CODE (GID= 0xC , OID= 0x1 ). מסגרת UWB מנסה לקבוע את קוד המדינה של UWB באמצעות המקורות הבאים (המפורטים בסדר עדיפות). מסגרת UWB נעצרת במקור הראשון שבו נקבע קוד המדינה.

  1. עוקף קוד מדינה: קוד מדינה שנאלץ באמצעות פקודת adb shell (בדיקה מקומית או אוטומטית).
  2. קוד מדינה טלפונית: קוד מדינה מאוחזר באמצעות סלולר. אם יש מספר סים שמחזירים קודים שונים, קוד המדינה שנבחר אינו דטרמיניסטי.
  3. קוד מדינה של Wi-Fi: קוד מדינה מאוחזר באמצעות Wi-Fi (80211.ad).
  4. קוד מדינה אחרון ידוע של טלפוניה: קוד המדינה הידוע האחרון מאוחזר דרך הסלולר. אם יש מספר סים שמחזירים קודים שונים, קוד המדינה שנבחר אינו דטרמיניסטי.
  5. קוד מדינה של מיקום: קוד מדינה מאוחזר מספק המיקום הממוזג LocationManager .
  6. קוד מדינה ברירת מחדל של 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. ערך של 00 משמש כדי לציין שקוד המדינה אינו ידוע.

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 כדי להפעיל או להשבית דיווח אבחון. הגדר פרמטר זה רק כאשר CORE_GET_CAPS_INFO_RSP מחזיר SUPPORTED_DIAGNOSTICS עם ערך של 1 המציין שתכונת דיווח האבחון נתמכת.

ערכים:

  • 1 : התכונה מופעלת
  • 0 : התכונה מושבתת

DIAGRAMS_FRAME_REPORTS_FIELDS 1 או 4 0xE9 2

מסכת סיביות של 1 או 4 בתים להגדרת דיווח אבחון. מסיכת סיביות זו היא בת אחד באנדרואיד 14 ומעלה ו-4 בתים באנדרואיד 13 ומטה.

הגדר פרמטר זה רק כאשר ה- CORE_GET_CAPS_INFO_RSP מחזיר SUPPORTED_DIAGNOSTICS עם ערך של 1 המציין שתכונת דיווח האבחון נתמכת.

הגדרות ביט:

  • b0 (0x01) : הפעל שדות RSSI
  • b1 (0x02) : הפעל שדות AoA
  • b2 (0x04) : הפעל שדות CIR

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 המציין תמיכה בשאילתת סטטיסטיקת כוח.

ערכים:

  • 1 : תכונה נתמכת
  • 0 : תכונה לא נתמכת
SUPPORTED_AOA_RESULT_REQ_ANTENNA_INTERLEAVING 1 0xE3 1

ערך בתים 1 המציין תמיכה בתכונת השזירה של האנטנה.

ערכים:

  • 1 : תכונה נתמכת
  • 0 : תכונה לא נתמכת
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.

ערכים:

  • 1 : תכונה נתמכת
  • 0 : תכונה לא נתמכת
SUPPORTED_DIAGNOSTICS 1 0xE7 2

ערך בתים 1 המציין תמיכה בדיווח אבחון.

ערכים:

  • 1 : תכונה נתמכת
  • 0 : תכונה לא נתמכת
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. כל 1 במסכת הסיביות מתאים לערוץ UWB ספציפי.

ערכים:

  • 0x01 : ערוץ 5 נתמך
  • 0x02 : ערוץ 6 נתמך
  • 0x04 : ערוץ 8 נתמך
  • 0x08 : ערוץ 9 נתמך
  • 0x10 : ערוץ 10 נתמך
  • 0x20 : ערוץ 12 נתמך
  • 0x40 : ערוץ 13 נתמך
  • 0x80 : ערוץ 14 נתמך

קודי סטטוס

להלן קודי המצב במרחב הספק. אלה מוחזרים בתגובות 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 חייב להיות מושבת מסיבה רגולטורית.